@arbitrum/nitro-contracts 2.0.0 → 3.0.0-alpha.0
Sign up to get free protection for your applications and to get access to all the features.
- package/build/contracts/@openzeppelin/contracts/access/Ownable.sol/Ownable.dbg.json +1 -1
- package/build/contracts/@openzeppelin/contracts/interfaces/draft-IERC1822.sol/IERC1822Proxiable.dbg.json +1 -1
- package/build/contracts/@openzeppelin/contracts/proxy/ERC1967/ERC1967Proxy.sol/ERC1967Proxy.dbg.json +1 -1
- package/build/contracts/@openzeppelin/contracts/proxy/ERC1967/ERC1967Proxy.sol/ERC1967Proxy.json +2 -2
- package/build/contracts/@openzeppelin/contracts/proxy/ERC1967/ERC1967Upgrade.sol/ERC1967Upgrade.dbg.json +1 -1
- package/build/contracts/@openzeppelin/contracts/proxy/Proxy.sol/Proxy.dbg.json +1 -1
- package/build/contracts/@openzeppelin/contracts/proxy/beacon/IBeacon.sol/IBeacon.dbg.json +1 -1
- package/build/contracts/@openzeppelin/contracts/proxy/beacon/UpgradeableBeacon.sol/UpgradeableBeacon.dbg.json +1 -1
- package/build/contracts/@openzeppelin/contracts/proxy/beacon/UpgradeableBeacon.sol/UpgradeableBeacon.json +2 -2
- package/build/contracts/@openzeppelin/contracts/proxy/transparent/ProxyAdmin.sol/ProxyAdmin.dbg.json +1 -1
- package/build/contracts/@openzeppelin/contracts/proxy/transparent/ProxyAdmin.sol/ProxyAdmin.json +2 -2
- package/build/contracts/@openzeppelin/contracts/proxy/transparent/TransparentUpgradeableProxy.sol/TransparentUpgradeableProxy.dbg.json +1 -1
- package/build/contracts/@openzeppelin/contracts/proxy/transparent/TransparentUpgradeableProxy.sol/TransparentUpgradeableProxy.json +2 -2
- package/build/contracts/@openzeppelin/contracts/proxy/utils/UUPSUpgradeable.sol/UUPSUpgradeable.dbg.json +1 -1
- package/build/contracts/@openzeppelin/contracts/security/ReentrancyGuard.sol/ReentrancyGuard.dbg.json +1 -1
- package/build/contracts/@openzeppelin/contracts/token/ERC20/ERC20.sol/ERC20.dbg.json +1 -1
- package/build/contracts/@openzeppelin/contracts/token/ERC20/ERC20.sol/ERC20.json +2 -2
- package/build/contracts/@openzeppelin/contracts/token/ERC20/IERC20.sol/IERC20.dbg.json +1 -1
- package/build/contracts/@openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata.sol/IERC20Metadata.dbg.json +1 -1
- package/build/contracts/@openzeppelin/contracts/token/ERC20/extensions/draft-IERC20Permit.sol/IERC20Permit.dbg.json +4 -0
- package/build/contracts/@openzeppelin/contracts/token/ERC20/extensions/draft-IERC20Permit.sol/IERC20Permit.json +86 -0
- package/build/contracts/@openzeppelin/contracts/token/ERC20/utils/SafeERC20.sol/SafeERC20.dbg.json +1 -1
- package/build/contracts/@openzeppelin/contracts/token/ERC20/utils/SafeERC20.sol/SafeERC20.json +2 -2
- package/build/contracts/@openzeppelin/contracts/utils/Address.sol/Address.dbg.json +1 -1
- package/build/contracts/@openzeppelin/contracts/utils/Address.sol/Address.json +2 -2
- package/build/contracts/@openzeppelin/contracts/utils/Context.sol/Context.dbg.json +1 -1
- package/build/contracts/@openzeppelin/contracts/utils/Create2.sol/Create2.dbg.json +4 -0
- package/build/contracts/@openzeppelin/contracts/utils/Create2.sol/Create2.json +10 -0
- package/build/contracts/@openzeppelin/contracts/utils/StorageSlot.sol/StorageSlot.dbg.json +1 -1
- package/build/contracts/@openzeppelin/contracts/utils/StorageSlot.sol/StorageSlot.json +2 -2
- package/build/contracts/@openzeppelin/contracts/utils/Strings.sol/Strings.dbg.json +1 -1
- package/build/contracts/@openzeppelin/contracts/utils/Strings.sol/Strings.json +2 -2
- package/build/contracts/@openzeppelin/contracts-upgradeable/access/AccessControlUpgradeable.sol/AccessControlUpgradeable.dbg.json +1 -1
- package/build/contracts/@openzeppelin/contracts-upgradeable/access/AccessControlUpgradeable.sol/AccessControlUpgradeable.json +13 -0
- package/build/contracts/@openzeppelin/contracts-upgradeable/access/IAccessControlUpgradeable.sol/IAccessControlUpgradeable.dbg.json +1 -1
- package/build/contracts/@openzeppelin/contracts-upgradeable/access/OwnableUpgradeable.sol/OwnableUpgradeable.dbg.json +1 -1
- package/build/contracts/@openzeppelin/contracts-upgradeable/access/OwnableUpgradeable.sol/OwnableUpgradeable.json +13 -0
- package/build/contracts/@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol/Initializable.dbg.json +1 -1
- package/build/contracts/@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol/Initializable.json +15 -1
- package/build/contracts/@openzeppelin/contracts-upgradeable/security/PausableUpgradeable.sol/PausableUpgradeable.dbg.json +1 -1
- package/build/contracts/@openzeppelin/contracts-upgradeable/security/PausableUpgradeable.sol/PausableUpgradeable.json +13 -0
- package/build/contracts/@openzeppelin/contracts-upgradeable/utils/AddressUpgradeable.sol/AddressUpgradeable.dbg.json +1 -1
- package/build/contracts/@openzeppelin/contracts-upgradeable/utils/AddressUpgradeable.sol/AddressUpgradeable.json +2 -2
- package/build/contracts/@openzeppelin/contracts-upgradeable/utils/ContextUpgradeable.sol/ContextUpgradeable.dbg.json +1 -1
- package/build/contracts/@openzeppelin/contracts-upgradeable/utils/ContextUpgradeable.sol/ContextUpgradeable.json +15 -1
- package/build/contracts/@openzeppelin/contracts-upgradeable/utils/Create2Upgradeable.sol/Create2Upgradeable.dbg.json +4 -0
- package/build/contracts/@openzeppelin/contracts-upgradeable/utils/Create2Upgradeable.sol/Create2Upgradeable.json +10 -0
- package/build/contracts/@openzeppelin/contracts-upgradeable/utils/StorageSlotUpgradeable.sol/StorageSlotUpgradeable.dbg.json +1 -1
- package/build/contracts/@openzeppelin/contracts-upgradeable/utils/StorageSlotUpgradeable.sol/StorageSlotUpgradeable.json +2 -2
- package/build/contracts/@openzeppelin/contracts-upgradeable/utils/StringsUpgradeable.sol/StringsUpgradeable.dbg.json +1 -1
- package/build/contracts/@openzeppelin/contracts-upgradeable/utils/StringsUpgradeable.sol/StringsUpgradeable.json +2 -2
- package/build/contracts/@openzeppelin/contracts-upgradeable/utils/introspection/ERC165Upgradeable.sol/ERC165Upgradeable.dbg.json +1 -1
- package/build/contracts/@openzeppelin/contracts-upgradeable/utils/introspection/ERC165Upgradeable.sol/ERC165Upgradeable.json +13 -0
- package/build/contracts/@openzeppelin/contracts-upgradeable/utils/introspection/IERC165Upgradeable.sol/IERC165Upgradeable.dbg.json +1 -1
- package/build/contracts/@openzeppelin/contracts-upgradeable/utils/structs/EnumerableSetUpgradeable.sol/EnumerableSetUpgradeable.dbg.json +4 -0
- package/build/contracts/@openzeppelin/contracts-upgradeable/utils/structs/EnumerableSetUpgradeable.sol/EnumerableSetUpgradeable.json +10 -0
- package/build/contracts/src/assertionStakingPool/AbsBoldStakingPool.sol/AbsBoldStakingPool.dbg.json +4 -0
- package/build/contracts/{@openzeppelin/contracts-upgradeable/token/ERC20/IERC20Upgradeable.sol/IERC20Upgradeable.json → src/assertionStakingPool/AbsBoldStakingPool.sol/AbsBoldStakingPool.json} +41 -95
- package/build/contracts/src/assertionStakingPool/AssertionStakingPool.sol/AssertionStakingPool.dbg.json +4 -0
- package/build/contracts/src/assertionStakingPool/AssertionStakingPool.sol/AssertionStakingPool.json +340 -0
- package/build/contracts/src/assertionStakingPool/AssertionStakingPoolCreator.sol/AssertionStakingPoolCreator.dbg.json +4 -0
- package/build/contracts/src/assertionStakingPool/AssertionStakingPoolCreator.sol/AssertionStakingPoolCreator.json +89 -0
- package/build/contracts/src/assertionStakingPool/EdgeStakingPool.sol/EdgeStakingPool.dbg.json +4 -0
- package/build/contracts/src/assertionStakingPool/EdgeStakingPool.sol/EdgeStakingPool.json +248 -0
- package/build/contracts/src/assertionStakingPool/EdgeStakingPoolCreator.sol/EdgeStakingPoolCreator.dbg.json +4 -0
- package/build/contracts/src/assertionStakingPool/EdgeStakingPoolCreator.sol/EdgeStakingPoolCreator.json +83 -0
- package/build/contracts/src/assertionStakingPool/StakingPoolCreatorUtils.sol/StakingPoolCreatorUtils.dbg.json +4 -0
- package/build/contracts/src/assertionStakingPool/StakingPoolCreatorUtils.sol/StakingPoolCreatorUtils.json +16 -0
- package/build/contracts/src/assertionStakingPool/interfaces/IAbsBoldStakingPool.sol/IAbsBoldStakingPool.dbg.json +4 -0
- package/build/contracts/src/assertionStakingPool/interfaces/IAbsBoldStakingPool.sol/IAbsBoldStakingPool.json +140 -0
- package/build/contracts/src/assertionStakingPool/interfaces/IAssertionStakingPool.sol/IAssertionStakingPool.dbg.json +4 -0
- package/build/contracts/src/assertionStakingPool/interfaces/IAssertionStakingPool.sol/IAssertionStakingPool.json +324 -0
- package/build/contracts/src/assertionStakingPool/interfaces/IAssertionStakingPoolCreator.sol/IAssertionStakingPoolCreator.dbg.json +4 -0
- package/build/contracts/src/assertionStakingPool/interfaces/IAssertionStakingPoolCreator.sol/IAssertionStakingPoolCreator.json +84 -0
- package/build/contracts/src/assertionStakingPool/interfaces/IEdgeStakingPool.sol/IEdgeStakingPool.dbg.json +4 -0
- package/build/contracts/src/assertionStakingPool/interfaces/IEdgeStakingPool.sol/IEdgeStakingPool.json +232 -0
- package/build/contracts/src/assertionStakingPool/interfaces/IEdgeStakingPoolCreator.sol/IEdgeStakingPoolCreator.dbg.json +4 -0
- package/build/contracts/src/assertionStakingPool/interfaces/IEdgeStakingPoolCreator.sol/IEdgeStakingPoolCreator.json +78 -0
- package/build/contracts/src/bridge/AbsBridge.sol/AbsBridge.dbg.json +1 -1
- package/build/contracts/src/bridge/AbsBridge.sol/AbsBridge.json +13 -0
- package/build/contracts/src/bridge/AbsInbox.sol/AbsInbox.dbg.json +1 -1
- package/build/contracts/src/bridge/AbsInbox.sol/AbsInbox.json +20 -7
- package/build/contracts/src/bridge/AbsOutbox.sol/AbsOutbox.dbg.json +1 -1
- package/build/contracts/src/bridge/Bridge.sol/Bridge.dbg.json +1 -1
- package/build/contracts/src/bridge/Bridge.sol/Bridge.json +15 -2
- package/build/contracts/src/bridge/DelayBuffer.sol/DelayBuffer.dbg.json +4 -0
- package/build/contracts/src/bridge/DelayBuffer.sol/DelayBuffer.json +24 -0
- package/build/contracts/src/bridge/ERC20Bridge.sol/ERC20Bridge.dbg.json +1 -1
- package/build/contracts/src/bridge/ERC20Bridge.sol/ERC20Bridge.json +15 -2
- package/build/contracts/src/bridge/ERC20Inbox.sol/ERC20Inbox.dbg.json +1 -1
- package/build/contracts/src/bridge/ERC20Inbox.sol/ERC20Inbox.json +22 -9
- package/build/contracts/src/bridge/ERC20Outbox.sol/ERC20Outbox.dbg.json +1 -1
- package/build/contracts/src/bridge/ERC20Outbox.sol/ERC20Outbox.json +2 -2
- package/build/contracts/src/bridge/GasRefunder.sol/GasRefunder.dbg.json +1 -1
- package/build/contracts/src/bridge/GasRefunder.sol/GasRefunder.json +2 -2
- package/build/contracts/src/bridge/IBridge.sol/IBridge.dbg.json +1 -1
- package/build/contracts/src/bridge/IDelayedMessageProvider.sol/IDelayedMessageProvider.dbg.json +1 -1
- package/build/contracts/src/bridge/IERC20Bridge.sol/IERC20Bridge.dbg.json +1 -1
- package/build/contracts/src/bridge/IERC20Inbox.sol/IERC20Inbox.dbg.json +1 -1
- package/build/contracts/src/bridge/IERC20Inbox.sol/IERC20Inbox.json +1 -1
- package/build/contracts/src/bridge/IEthBridge.sol/IEthBridge.dbg.json +1 -1
- package/build/contracts/src/bridge/IInbox.sol/IInbox.dbg.json +1 -1
- package/build/contracts/src/bridge/IInbox.sol/IInbox.json +1 -1
- package/build/contracts/src/bridge/IInboxBase.sol/IInboxBase.dbg.json +1 -1
- package/build/contracts/src/bridge/IInboxBase.sol/IInboxBase.json +1 -1
- package/build/contracts/src/bridge/IOutbox.sol/IOutbox.dbg.json +1 -1
- package/build/contracts/src/bridge/IOwnable.sol/IOwnable.dbg.json +1 -1
- package/build/contracts/src/bridge/ISequencerInbox.sol/ISequencerInbox.dbg.json +1 -1
- package/build/contracts/src/bridge/ISequencerInbox.sol/ISequencerInbox.json +441 -0
- package/build/contracts/src/bridge/Inbox.sol/Inbox.dbg.json +1 -1
- package/build/contracts/src/bridge/Inbox.sol/Inbox.json +22 -4
- package/build/contracts/src/bridge/Messages.sol/Messages.dbg.json +1 -1
- package/build/contracts/src/bridge/Messages.sol/Messages.json +2 -2
- package/build/contracts/src/bridge/Outbox.sol/Outbox.dbg.json +1 -1
- package/build/contracts/src/bridge/Outbox.sol/Outbox.json +2 -2
- package/build/contracts/src/bridge/SequencerInbox.sol/SequencerInbox.dbg.json +1 -1
- package/build/contracts/src/bridge/SequencerInbox.sol/SequencerInbox.json +564 -7
- package/build/contracts/src/chain/CacheManager.sol/CacheManager.dbg.json +1 -1
- package/build/contracts/src/chain/CacheManager.sol/CacheManager.json +15 -2
- package/build/contracts/src/challengeV2/EdgeChallengeManager.sol/EdgeChallengeManager.dbg.json +4 -0
- package/build/contracts/src/challengeV2/EdgeChallengeManager.sol/EdgeChallengeManager.json +1631 -0
- package/build/contracts/src/challengeV2/EdgeChallengeManager.sol/IEdgeChallengeManager.dbg.json +4 -0
- package/build/contracts/src/challengeV2/EdgeChallengeManager.sol/IEdgeChallengeManager.json +762 -0
- package/build/contracts/src/challengeV2/IAssertionChain.sol/IAssertionChain.dbg.json +4 -0
- package/build/contracts/src/challengeV2/IAssertionChain.sol/IAssertionChain.json +247 -0
- package/build/contracts/src/challengeV2/libraries/ArrayUtilsLib.sol/ArrayUtilsLib.dbg.json +4 -0
- package/build/contracts/src/challengeV2/libraries/ArrayUtilsLib.sol/ArrayUtilsLib.json +10 -0
- package/build/contracts/src/challengeV2/libraries/ChallengeEdgeLib.sol/ChallengeEdgeLib.dbg.json +4 -0
- package/build/contracts/src/challengeV2/libraries/ChallengeEdgeLib.sol/ChallengeEdgeLib.json +10 -0
- package/build/contracts/src/challengeV2/libraries/EdgeChallengeManagerLib.sol/EdgeChallengeManagerLib.dbg.json +4 -0
- package/build/contracts/src/challengeV2/libraries/EdgeChallengeManagerLib.sol/EdgeChallengeManagerLib.json +24 -0
- package/build/contracts/src/challengeV2/libraries/MerkleTreeAccumulatorLib.sol/MerkleTreeAccumulatorLib.dbg.json +4 -0
- package/build/contracts/src/challengeV2/libraries/MerkleTreeAccumulatorLib.sol/MerkleTreeAccumulatorLib.json +24 -0
- package/build/contracts/src/challengeV2/libraries/UintUtilsLib.sol/UintUtilsLib.dbg.json +4 -0
- package/build/contracts/src/challengeV2/libraries/UintUtilsLib.sol/UintUtilsLib.json +10 -0
- package/build/contracts/src/libraries/AddressAliasHelper.sol/AddressAliasHelper.dbg.json +1 -1
- package/build/contracts/src/libraries/AddressAliasHelper.sol/AddressAliasHelper.json +2 -2
- package/build/contracts/src/libraries/AdminFallbackProxy.sol/AdminFallbackProxy.dbg.json +1 -1
- package/build/contracts/src/libraries/AdminFallbackProxy.sol/AdminFallbackProxy.json +2 -2
- package/build/contracts/src/libraries/AdminFallbackProxy.sol/DoubleLogicERC1967Upgrade.dbg.json +1 -1
- package/build/contracts/src/libraries/ArbitrumChecker.sol/ArbitrumChecker.dbg.json +1 -1
- package/build/contracts/src/libraries/ArbitrumChecker.sol/ArbitrumChecker.json +2 -2
- package/build/contracts/src/libraries/CryptographyPrimitives.sol/CryptographyPrimitives.dbg.json +1 -1
- package/build/contracts/src/libraries/CryptographyPrimitives.sol/CryptographyPrimitives.json +2 -2
- package/build/contracts/src/libraries/DecimalsConverterHelper.sol/DecimalsConverterHelper.dbg.json +1 -1
- package/build/contracts/src/libraries/DecimalsConverterHelper.sol/DecimalsConverterHelper.json +2 -2
- package/build/contracts/src/libraries/DelegateCallAware.sol/DelegateCallAware.dbg.json +1 -1
- package/build/contracts/src/libraries/DoubleLogicUUPSUpgradeable.sol/DoubleLogicUUPSUpgradeable.dbg.json +1 -1
- package/build/contracts/src/libraries/GasRefundEnabled.sol/GasRefundEnabled.dbg.json +1 -1
- package/build/contracts/src/libraries/IGasRefunder.sol/IGasRefunder.dbg.json +1 -1
- package/build/contracts/src/libraries/IReader4844.sol/IReader4844.dbg.json +1 -1
- package/build/contracts/src/libraries/MerkleLib.sol/MerkleLib.dbg.json +1 -1
- package/build/contracts/src/libraries/MerkleLib.sol/MerkleLib.json +2 -2
- package/build/contracts/src/libraries/UUPSNotUpgradeable.sol/UUPSNotUpgradeable.dbg.json +1 -1
- package/build/contracts/src/mocks/Benchmarks.sol/Benchmarks.dbg.json +1 -1
- package/build/contracts/src/mocks/Benchmarks.sol/Benchmarks.json +2 -2
- package/build/contracts/src/mocks/BridgeStub.sol/BridgeStub.dbg.json +1 -1
- package/build/contracts/src/mocks/BridgeStub.sol/BridgeStub.json +8 -8
- package/build/contracts/src/mocks/BridgeUnproxied.sol/BridgeUnproxied.dbg.json +1 -1
- package/build/contracts/src/mocks/BridgeUnproxied.sol/BridgeUnproxied.json +28 -2
- package/build/contracts/src/mocks/InboxStub.sol/InboxStub.dbg.json +1 -1
- package/build/contracts/src/mocks/InboxStub.sol/InboxStub.json +2 -2
- package/build/contracts/src/mocks/MerkleTreeAccess.sol/MerkleTreeAccess.dbg.json +4 -0
- package/build/contracts/src/mocks/MerkleTreeAccess.sol/MerkleTreeAccess.json +227 -0
- package/build/contracts/src/mocks/MockRollupEventInbox.sol/MockRollupEventInbox.dbg.json +4 -0
- package/build/contracts/src/mocks/MockRollupEventInbox.sol/MockRollupEventInbox.json +133 -0
- package/build/contracts/src/mocks/MultiCallTest.sol/MultiCallTest.dbg.json +1 -1
- package/build/contracts/src/mocks/MultiCallTest.sol/MultiCallTest.json +2 -2
- package/build/contracts/src/mocks/PendingBlkTimeAndNrAdvanceCheck.sol/PendingBlkTimeAndNrAdvanceCheck.dbg.json +1 -1
- package/build/contracts/src/mocks/PendingBlkTimeAndNrAdvanceCheck.sol/PendingBlkTimeAndNrAdvanceCheck.json +2 -2
- package/build/contracts/src/mocks/Program.sol/ProgramTest.dbg.json +1 -1
- package/build/contracts/src/mocks/Program.sol/ProgramTest.json +2 -2
- package/build/contracts/src/mocks/ProxyAdminForBinding.sol/ProxyAdminForBinding.dbg.json +1 -1
- package/build/contracts/src/mocks/ProxyAdminForBinding.sol/ProxyAdminForBinding.json +2 -2
- package/build/contracts/src/mocks/SdkStorage.sol/SdkStorage.dbg.json +1 -1
- package/build/contracts/src/mocks/SdkStorage.sol/SdkStorage.json +2 -2
- package/build/contracts/src/mocks/SequencerInboxBlobMock.sol/SequencerInboxBlobMock.dbg.json +4 -0
- package/build/contracts/src/mocks/SequencerInboxBlobMock.sol/SequencerInboxBlobMock.json +1632 -0
- package/build/contracts/src/mocks/SequencerInboxStub.sol/SequencerInboxStub.dbg.json +1 -1
- package/build/contracts/src/mocks/SequencerInboxStub.sol/SequencerInboxStub.json +564 -7
- package/build/contracts/src/mocks/Simple.sol/Simple.dbg.json +1 -1
- package/build/contracts/src/mocks/Simple.sol/Simple.json +2 -2
- package/build/contracts/src/mocks/SimpleCacheManager.sol/SimpleCacheManager.dbg.json +1 -1
- package/build/contracts/src/mocks/SimpleCacheManager.sol/SimpleCacheManager.json +2 -2
- package/build/contracts/src/mocks/SimpleOneStepProofEntry.sol/SimpleOneStepProofEntry.dbg.json +4 -0
- package/build/contracts/src/mocks/SimpleOneStepProofEntry.sol/SimpleOneStepProofEntry.json +142 -0
- package/build/contracts/src/mocks/SimpleProxy.sol/SimpleProxy.dbg.json +1 -1
- package/build/contracts/src/mocks/SimpleProxy.sol/SimpleProxy.json +2 -2
- package/build/contracts/src/mocks/TestWETH9.sol/IWETH9.dbg.json +4 -0
- package/build/contracts/src/mocks/TestWETH9.sol/IWETH9.json +31 -0
- package/build/contracts/src/mocks/TestWETH9.sol/TestWETH9.dbg.json +4 -0
- package/build/contracts/src/mocks/TestWETH9.sol/TestWETH9.json +317 -0
- package/build/contracts/src/mocks/UpgradeExecutorMock.sol/UpgradeExecutorMock.dbg.json +1 -1
- package/build/contracts/src/mocks/UpgradeExecutorMock.sol/UpgradeExecutorMock.json +15 -2
- package/build/contracts/src/node-interface/NodeInterface.sol/NodeInterface.dbg.json +1 -1
- package/build/contracts/src/node-interface/NodeInterfaceDebug.sol/NodeInterfaceDebug.dbg.json +1 -1
- package/build/contracts/src/osp/HashProofHelper.sol/HashProofHelper.dbg.json +1 -1
- package/build/contracts/src/osp/HashProofHelper.sol/HashProofHelper.json +2 -2
- package/build/contracts/src/osp/IOneStepProofEntry.sol/IOneStepProofEntry.dbg.json +1 -1
- package/build/contracts/src/osp/IOneStepProofEntry.sol/IOneStepProofEntry.json +33 -9
- package/build/contracts/src/osp/IOneStepProofEntry.sol/OneStepProofEntryLib.dbg.json +1 -1
- package/build/contracts/src/osp/IOneStepProofEntry.sol/OneStepProofEntryLib.json +2 -2
- package/build/contracts/src/osp/IOneStepProver.sol/IOneStepProver.dbg.json +1 -1
- package/build/contracts/src/osp/IOneStepProver.sol/IOneStepProver.json +5 -0
- package/build/contracts/src/osp/OneStepProofEntry.sol/OneStepProofEntry.dbg.json +1 -1
- package/build/contracts/src/osp/OneStepProofEntry.sol/OneStepProofEntry.json +35 -11
- package/build/contracts/src/osp/OneStepProver0.sol/OneStepProver0.dbg.json +1 -1
- package/build/contracts/src/osp/OneStepProver0.sol/OneStepProver0.json +7 -2
- package/build/contracts/src/osp/OneStepProverHostIo.sol/OneStepProverHostIo.dbg.json +1 -1
- package/build/contracts/src/osp/OneStepProverHostIo.sol/OneStepProverHostIo.json +7 -2
- package/build/contracts/src/osp/OneStepProverMath.sol/OneStepProverMath.dbg.json +1 -1
- package/build/contracts/src/osp/OneStepProverMath.sol/OneStepProverMath.json +7 -2
- package/build/contracts/src/osp/OneStepProverMemory.sol/OneStepProverMemory.dbg.json +1 -1
- package/build/contracts/src/osp/OneStepProverMemory.sol/OneStepProverMemory.json +7 -2
- package/build/contracts/src/precompiles/ArbAddressTable.sol/ArbAddressTable.dbg.json +1 -1
- package/build/contracts/src/precompiles/ArbAggregator.sol/ArbAggregator.dbg.json +1 -1
- package/build/contracts/src/precompiles/ArbBLS.sol/ArbBLS.dbg.json +1 -1
- package/build/contracts/src/precompiles/ArbDebug.sol/ArbDebug.dbg.json +1 -1
- package/build/contracts/src/precompiles/ArbFunctionTable.sol/ArbFunctionTable.dbg.json +1 -1
- package/build/contracts/src/precompiles/ArbGasInfo.sol/ArbGasInfo.dbg.json +1 -1
- package/build/contracts/src/precompiles/ArbInfo.sol/ArbInfo.dbg.json +1 -1
- package/build/contracts/src/precompiles/ArbOwner.sol/ArbOwner.dbg.json +1 -1
- package/build/contracts/src/precompiles/ArbOwnerPublic.sol/ArbOwnerPublic.dbg.json +1 -1
- package/build/contracts/src/precompiles/ArbRetryableTx.sol/ArbRetryableTx.dbg.json +1 -1
- package/build/contracts/src/precompiles/ArbStatistics.sol/ArbStatistics.dbg.json +1 -1
- package/build/contracts/src/precompiles/ArbSys.sol/ArbSys.dbg.json +1 -1
- package/build/contracts/src/precompiles/ArbWasm.sol/ArbWasm.dbg.json +1 -1
- package/build/contracts/src/precompiles/ArbWasmCache.sol/ArbWasmCache.dbg.json +1 -1
- package/build/contracts/src/precompiles/ArbosActs.sol/ArbosActs.dbg.json +1 -1
- package/build/contracts/src/precompiles/ArbosTest.sol/ArbosTest.dbg.json +1 -1
- package/build/contracts/src/rollup/AbsRollupEventInbox.sol/AbsRollupEventInbox.dbg.json +1 -1
- package/build/contracts/src/rollup/Assertion.sol/AssertionNodeLib.dbg.json +4 -0
- package/build/contracts/src/rollup/{Node.sol/NodeLib.json → Assertion.sol/AssertionNodeLib.json} +4 -4
- package/build/contracts/src/rollup/AssertionState.sol/AssertionStateLib.dbg.json +4 -0
- package/build/contracts/src/{challenge/ChallengeLib.sol/ChallengeLib.json → rollup/AssertionState.sol/AssertionStateLib.json} +4 -4
- package/build/contracts/src/rollup/BOLDUpgradeAction.sol/BOLDUpgradeAction.dbg.json +4 -0
- package/build/contracts/src/rollup/BOLDUpgradeAction.sol/BOLDUpgradeAction.json +807 -0
- package/build/contracts/src/rollup/BOLDUpgradeAction.sol/ConstantArrayStorage.dbg.json +4 -0
- package/build/contracts/src/rollup/BOLDUpgradeAction.sol/ConstantArrayStorage.json +35 -0
- package/build/contracts/src/rollup/BOLDUpgradeAction.sol/IOldRollup.dbg.json +4 -0
- package/build/contracts/src/rollup/BOLDUpgradeAction.sol/IOldRollup.json +361 -0
- package/build/contracts/src/rollup/BOLDUpgradeAction.sol/IOldRollupAdmin.dbg.json +4 -0
- package/build/contracts/src/rollup/BOLDUpgradeAction.sol/IOldRollupAdmin.json +38 -0
- package/build/contracts/src/rollup/BOLDUpgradeAction.sol/ISeqInboxPostUpgradeInit.dbg.json +4 -0
- package/build/contracts/src/rollup/BOLDUpgradeAction.sol/ISeqInboxPostUpgradeInit.json +41 -0
- package/build/contracts/src/rollup/BOLDUpgradeAction.sol/RollupReader.dbg.json +4 -0
- package/build/contracts/src/rollup/BOLDUpgradeAction.sol/RollupReader.json +385 -0
- package/build/contracts/src/rollup/BOLDUpgradeAction.sol/StateHashPreImageLookup.dbg.json +4 -0
- package/build/contracts/src/rollup/BOLDUpgradeAction.sol/StateHashPreImageLookup.json +203 -0
- package/build/contracts/src/rollup/BridgeCreator.sol/BridgeCreator.dbg.json +1 -1
- package/build/contracts/src/rollup/BridgeCreator.sol/BridgeCreator.json +62 -10
- package/build/contracts/src/rollup/DeployHelper.sol/DeployHelper.dbg.json +1 -1
- package/build/contracts/src/rollup/DeployHelper.sol/DeployHelper.json +2 -2
- package/build/contracts/src/rollup/ERC20RollupEventInbox.sol/ERC20RollupEventInbox.dbg.json +1 -1
- package/build/contracts/src/rollup/ERC20RollupEventInbox.sol/ERC20RollupEventInbox.json +2 -2
- package/build/contracts/src/rollup/FactoryDeployerHelper.sol/FactoryDeployerHelper.dbg.json +1 -1
- package/build/contracts/src/rollup/FactoryDeployerHelper.sol/FactoryDeployerHelper.json +2 -2
- package/build/contracts/src/rollup/FactoryDeployerHelper.sol/IDeployHelper.dbg.json +1 -1
- package/build/contracts/src/rollup/FactoryDeployerHelper.sol/IERC20.dbg.json +1 -1
- package/build/contracts/src/rollup/FactoryDeployerHelper.sol/IERC20Bridge.dbg.json +1 -1
- package/build/contracts/src/rollup/FactoryDeployerHelper.sol/IInboxBase.dbg.json +1 -1
- package/build/contracts/src/rollup/IRollupAdmin.sol/IRollupAdmin.dbg.json +1 -1
- package/build/contracts/src/rollup/IRollupAdmin.sol/IRollupAdmin.json +473 -99
- package/build/contracts/src/rollup/IRollupCore.sol/IRollupCore.dbg.json +1 -1
- package/build/contracts/src/rollup/IRollupCore.sol/IRollupCore.json +315 -221
- package/build/contracts/src/rollup/IRollupEventInbox.sol/IRollupEventInbox.dbg.json +1 -1
- package/build/contracts/src/rollup/IRollupLogic.sol/IRollupUser.dbg.json +1 -1
- package/build/contracts/src/rollup/IRollupLogic.sol/IRollupUser.json +678 -494
- package/build/contracts/src/rollup/RollupAdminLogic.sol/RollupAdminLogic.dbg.json +1 -1
- package/build/contracts/src/rollup/RollupAdminLogic.sol/RollupAdminLogic.json +806 -435
- package/build/contracts/src/rollup/RollupCore.sol/RollupCore.dbg.json +1 -1
- package/build/contracts/src/rollup/RollupCore.sol/RollupCore.json +323 -235
- package/build/contracts/src/rollup/RollupCreator.sol/RollupCreator.dbg.json +1 -1
- package/build/contracts/src/rollup/RollupCreator.sol/RollupCreator.json +98 -36
- package/build/contracts/src/rollup/RollupEventInbox.sol/RollupEventInbox.dbg.json +1 -1
- package/build/contracts/src/rollup/RollupEventInbox.sol/RollupEventInbox.json +2 -2
- package/build/contracts/src/rollup/RollupLib.sol/RollupLib.dbg.json +1 -1
- package/build/contracts/src/rollup/RollupLib.sol/RollupLib.json +2 -2
- package/build/contracts/src/rollup/RollupProxy.sol/RollupProxy.dbg.json +1 -1
- package/build/contracts/src/rollup/RollupProxy.sol/RollupProxy.json +97 -16
- package/build/contracts/src/rollup/RollupUserLogic.sol/RollupUserLogic.dbg.json +1 -1
- package/build/contracts/src/rollup/RollupUserLogic.sol/RollupUserLogic.json +924 -530
- package/build/contracts/src/rollup/ValidatorWallet.sol/ValidatorWallet.dbg.json +1 -1
- package/build/contracts/src/rollup/ValidatorWallet.sol/ValidatorWallet.json +15 -43
- package/build/contracts/src/rollup/ValidatorWalletCreator.sol/ValidatorWalletCreator.dbg.json +1 -1
- package/build/contracts/src/rollup/ValidatorWalletCreator.sol/ValidatorWalletCreator.json +2 -2
- package/build/contracts/src/state/Deserialize.sol/Deserialize.dbg.json +1 -1
- package/build/contracts/src/state/Deserialize.sol/Deserialize.json +2 -2
- package/build/contracts/src/state/GlobalState.sol/GlobalStateLib.dbg.json +1 -1
- package/build/contracts/src/state/GlobalState.sol/GlobalStateLib.json +2 -2
- package/build/contracts/src/state/Instructions.sol/Instructions.dbg.json +1 -1
- package/build/contracts/src/state/Instructions.sol/Instructions.json +2 -2
- package/build/contracts/src/state/Machine.sol/MachineLib.dbg.json +1 -1
- package/build/contracts/src/state/Machine.sol/MachineLib.json +2 -2
- package/build/contracts/src/state/MerkleProof.sol/MerkleProofLib.dbg.json +1 -1
- package/build/contracts/src/state/MerkleProof.sol/MerkleProofLib.json +2 -2
- package/build/contracts/src/state/Module.sol/ModuleLib.dbg.json +1 -1
- package/build/contracts/src/state/Module.sol/ModuleLib.json +2 -2
- package/build/contracts/src/state/ModuleMemory.sol/ModuleMemoryLib.dbg.json +1 -1
- package/build/contracts/src/state/ModuleMemory.sol/ModuleMemoryLib.json +2 -2
- package/build/contracts/src/state/ModuleMemoryCompact.sol/ModuleMemoryCompactLib.dbg.json +1 -1
- package/build/contracts/src/state/ModuleMemoryCompact.sol/ModuleMemoryCompactLib.json +2 -2
- package/build/contracts/src/state/MultiStack.sol/MultiStackLib.dbg.json +1 -1
- package/build/contracts/src/state/MultiStack.sol/MultiStackLib.json +2 -2
- package/build/contracts/src/state/PcArray.sol/PcArrayLib.dbg.json +1 -1
- package/build/contracts/src/state/PcArray.sol/PcArrayLib.json +2 -2
- package/build/contracts/src/state/StackFrame.sol/StackFrameLib.dbg.json +1 -1
- package/build/contracts/src/state/StackFrame.sol/StackFrameLib.json +2 -2
- package/build/contracts/src/state/Value.sol/ValueLib.dbg.json +1 -1
- package/build/contracts/src/state/Value.sol/ValueLib.json +2 -2
- package/build/contracts/src/state/ValueArray.sol/ValueArrayLib.dbg.json +1 -1
- package/build/contracts/src/state/ValueArray.sol/ValueArrayLib.json +2 -2
- package/build/contracts/src/state/ValueStack.sol/ValueStackLib.dbg.json +1 -1
- package/build/contracts/src/state/ValueStack.sol/ValueStackLib.json +2 -2
- package/build/contracts/src/test-helpers/BridgeTester.sol/BridgeTester.dbg.json +1 -1
- package/build/contracts/src/test-helpers/BridgeTester.sol/BridgeTester.json +15 -2
- package/build/contracts/src/test-helpers/CryptographyPrimitivesTester.sol/CryptographyPrimitivesTester.dbg.json +1 -1
- package/build/contracts/src/test-helpers/CryptographyPrimitivesTester.sol/CryptographyPrimitivesTester.json +2 -2
- package/build/contracts/src/test-helpers/EthVault.sol/EthVault.dbg.json +1 -1
- package/build/contracts/src/test-helpers/EthVault.sol/EthVault.json +2 -2
- package/build/contracts/src/test-helpers/MessageTester.sol/MessageTester.dbg.json +1 -1
- package/build/contracts/src/test-helpers/MessageTester.sol/MessageTester.json +2 -2
- package/build/contracts/src/test-helpers/OutboxWithoutOptTester.sol/OutboxWithoutOptTester.dbg.json +1 -1
- package/build/contracts/src/test-helpers/OutboxWithoutOptTester.sol/OutboxWithoutOptTester.json +2 -2
- package/build/contracts/src/test-helpers/RollupMock.sol/RollupMock.dbg.json +1 -1
- package/build/contracts/src/test-helpers/RollupMock.sol/RollupMock.json +2 -15
- package/build/contracts/src/test-helpers/TestToken.sol/TestToken.dbg.json +1 -1
- package/build/contracts/src/test-helpers/TestToken.sol/TestToken.json +2 -2
- package/build/contracts/src/test-helpers/ValueArrayTester.sol/ValueArrayTester.dbg.json +1 -1
- package/build/contracts/src/test-helpers/ValueArrayTester.sol/ValueArrayTester.json +2 -2
- package/out/yul/Reader4844.yul/Reader4844.json +1 -1
- package/package.json +16 -6
- package/src/assertionStakingPool/AbsBoldStakingPool.sol +66 -0
- package/src/assertionStakingPool/AssertionStakingPool.sol +70 -0
- package/src/assertionStakingPool/AssertionStakingPoolCreator.sol +35 -0
- package/src/assertionStakingPool/EdgeStakingPool.sol +57 -0
- package/src/assertionStakingPool/EdgeStakingPoolCreator.sol +34 -0
- package/src/assertionStakingPool/StakingPoolCreatorUtils.sol +25 -0
- package/src/assertionStakingPool/interfaces/IAbsBoldStakingPool.sol +41 -0
- package/src/assertionStakingPool/interfaces/IAssertionStakingPool.sol +36 -0
- package/src/assertionStakingPool/interfaces/IAssertionStakingPoolCreator.sol +31 -0
- package/src/assertionStakingPool/interfaces/IEdgeStakingPool.sol +27 -0
- package/src/assertionStakingPool/interfaces/IEdgeStakingPoolCreator.sol +28 -0
- package/src/bridge/AbsBridge.sol +38 -48
- package/src/bridge/AbsInbox.sol +88 -97
- package/src/bridge/AbsOutbox.sol +23 -37
- package/src/bridge/Bridge.sol +6 -4
- package/src/bridge/DelayBuffer.sol +123 -0
- package/src/bridge/DelayBufferTypes.sol +38 -0
- package/src/bridge/ERC20Bridge.sol +8 -4
- package/src/bridge/ERC20Inbox.sol +46 -53
- package/src/bridge/ERC20Outbox.sol +7 -3
- package/src/bridge/GasRefunder.sol +38 -24
- package/src/bridge/IBridge.sol +30 -21
- package/src/bridge/IERC20Bridge.sol +1 -1
- package/src/bridge/IERC20Inbox.sol +4 -2
- package/src/bridge/IEthBridge.sol +4 -2
- package/src/bridge/IInbox.sol +4 -2
- package/src/bridge/IInboxBase.sol +17 -13
- package/src/bridge/IOutbox.sol +13 -8
- package/src/bridge/ISequencerInbox.sol +118 -13
- package/src/bridge/Inbox.sol +131 -151
- package/src/bridge/Messages.sol +48 -18
- package/src/bridge/Outbox.sol +6 -2
- package/src/bridge/SequencerInbox.sol +339 -274
- package/src/chain/CacheManager.sol +49 -18
- package/src/challengeV2/EdgeChallengeManager.sol +783 -0
- package/src/challengeV2/IAssertionChain.sol +39 -0
- package/src/challengeV2/libraries/ArrayUtilsLib.sol +61 -0
- package/src/challengeV2/libraries/ChallengeEdgeLib.sol +333 -0
- package/src/challengeV2/libraries/ChallengeErrors.sol +108 -0
- package/src/challengeV2/libraries/EdgeChallengeManagerLib.sol +930 -0
- package/src/challengeV2/libraries/Enums.sol +26 -0
- package/src/challengeV2/libraries/MerkleTreeAccumulatorLib.sol +390 -0
- package/src/challengeV2/libraries/UintUtilsLib.sol +74 -0
- package/src/libraries/AddressAliasHelper.sol +6 -2
- package/src/libraries/AdminFallbackProxy.sol +8 -4
- package/src/libraries/ArbitrumChecker.sol +3 -4
- package/src/libraries/CryptographyPrimitives.sol +39 -46
- package/src/libraries/DecimalsConverterHelper.sol +2 -4
- package/src/libraries/DoubleLogicUUPSUpgradeable.sol +10 -7
- package/src/libraries/Error.sol +18 -12
- package/src/libraries/GasRefundEnabled.sol +3 -4
- package/src/libraries/MerkleLib.sol +6 -5
- package/src/libraries/UUPSNotUpgradeable.sol +2 -4
- package/src/mocks/BridgeStub.sol +50 -48
- package/src/mocks/BridgeUnproxied.sol +2 -0
- package/src/mocks/InboxStub.sol +22 -17
- package/src/mocks/MerkleTreeAccess.sol +72 -0
- package/src/mocks/MockRollupEventInbox.sol +59 -0
- package/src/mocks/MultiCallTest.sol +3 -1
- package/src/mocks/PendingBlkTimeAndNrAdvanceCheck.sol +3 -1
- package/src/mocks/Program.sol +9 -7
- package/src/mocks/SequencerInboxBlobMock.sol +38 -0
- package/src/mocks/SequencerInboxStub.sol +9 -12
- package/src/mocks/Simple.sol +13 -25
- package/src/mocks/SimpleCacheManager.sol +10 -3
- package/src/mocks/SimpleOneStepProofEntry.sol +60 -0
- package/src/mocks/SimpleProxy.sol +3 -1
- package/src/mocks/TestWETH9.sol +30 -0
- package/src/mocks/UpgradeExecutorMock.sol +10 -17
- package/src/node-interface/NodeInterface.sol +23 -22
- package/src/node-interface/NodeInterfaceDebug.sol +5 -3
- package/src/osp/HashProofHelper.sol +9 -10
- package/src/osp/IOneStepProofEntry.sol +14 -9
- package/src/osp/IOneStepProver.sol +1 -0
- package/src/osp/OneStepProofEntry.sol +63 -54
- package/src/osp/OneStepProver0.sol +14 -27
- package/src/osp/OneStepProverHostIo.sol +31 -58
- package/src/osp/OneStepProverMath.sol +15 -23
- package/src/osp/OneStepProverMemory.sol +9 -23
- package/src/precompiles/ArbAddressTable.sol +19 -9
- package/src/precompiles/ArbAggregator.sol +12 -4
- package/src/precompiles/ArbBLS.sol +1 -3
- package/src/precompiles/ArbDebug.sol +5 -11
- package/src/precompiles/ArbFunctionTable.sol +7 -10
- package/src/precompiles/ArbGasInfo.sol +9 -43
- package/src/precompiles/ArbInfo.sol +6 -2
- package/src/precompiles/ArbOwner.sol +101 -34
- package/src/precompiles/ArbOwnerPublic.sol +6 -2
- package/src/precompiles/ArbRetryableTx.sol +15 -5
- package/src/precompiles/ArbStatistics.sol +1 -8
- package/src/precompiles/ArbSys.sol +16 -18
- package/src/precompiles/ArbWasm.sol +24 -14
- package/src/precompiles/ArbWasmCache.sol +15 -5
- package/src/precompiles/ArbosTest.sol +3 -1
- package/src/rollup/AbsRollupEventInbox.sol +15 -16
- package/src/rollup/Assertion.sol +100 -0
- package/src/rollup/AssertionState.sol +29 -0
- package/src/rollup/BOLDUpgradeAction.sol +631 -0
- package/src/rollup/BridgeCreator.sol +42 -15
- package/src/rollup/Config.sol +15 -7
- package/src/rollup/DeployHelper.sol +12 -31
- package/src/rollup/ERC20RollupEventInbox.sol +8 -9
- package/src/rollup/FactoryDeployerHelper.sol +8 -10
- package/src/rollup/IRollupAdmin.sol +127 -45
- package/src/rollup/IRollupCore.sol +64 -84
- package/src/rollup/IRollupEventInbox.sol +3 -1
- package/src/rollup/IRollupLogic.sol +36 -69
- package/src/rollup/RollupAdminLogic.sol +224 -203
- package/src/rollup/RollupCore.sol +407 -428
- package/src/rollup/RollupCreator.sol +88 -75
- package/src/rollup/RollupEventInbox.sol +7 -7
- package/src/rollup/RollupLib.sol +50 -86
- package/src/rollup/RollupProxy.sol +8 -12
- package/src/rollup/RollupUserLogic.sol +279 -642
- package/src/rollup/ValidatorUtils.sol +0 -242
- package/src/rollup/ValidatorWallet.sol +22 -38
- package/src/rollup/ValidatorWalletCreator.sol +8 -8
- package/src/state/Deserialize.sol +74 -96
- package/src/state/GlobalState.sol +74 -20
- package/src/state/Instructions.sol +4 -3
- package/src/state/Machine.sol +18 -19
- package/src/state/Module.sol +14 -13
- package/src/state/ModuleMemory.sol +6 -25
- package/src/state/ModuleMemoryCompact.sol +3 -1
- package/src/state/MultiStack.sol +16 -20
- package/src/state/PcArray.sol +7 -7
- package/src/state/StackFrame.sol +21 -14
- package/src/state/Value.sol +18 -6
- package/src/state/ValueArray.sol +7 -7
- package/src/state/ValueStack.sol +9 -3
- package/src/test-helpers/BridgeTester.sol +32 -42
- package/src/test-helpers/CryptographyPrimitivesTester.sol +12 -13
- package/src/test-helpers/EthVault.sol +4 -2
- package/src/test-helpers/InterfaceCompatibilityTester.sol +1 -1
- package/src/test-helpers/MessageTester.sol +3 -10
- package/src/test-helpers/OutboxWithoutOptTester.sol +12 -19
- package/src/test-helpers/RollupMock.sol +3 -7
- package/src/test-helpers/TestToken.sol +4 -2
- package/build/contracts/@openzeppelin/contracts-upgradeable/token/ERC20/IERC20Upgradeable.sol/IERC20Upgradeable.dbg.json +0 -4
- package/build/contracts/src/challenge/ChallengeLib.sol/ChallengeLib.dbg.json +0 -4
- package/build/contracts/src/challenge/ChallengeManager.sol/ChallengeManager.dbg.json +0 -4
- package/build/contracts/src/challenge/ChallengeManager.sol/ChallengeManager.json +0 -746
- package/build/contracts/src/challenge/IChallengeManager.sol/IChallengeManager.dbg.json +0 -4
- package/build/contracts/src/challenge/IChallengeManager.sol/IChallengeManager.json +0 -441
- package/build/contracts/src/challenge/IChallengeResultReceiver.sol/IChallengeResultReceiver.dbg.json +0 -4
- package/build/contracts/src/challenge/IChallengeResultReceiver.sol/IChallengeResultReceiver.json +0 -34
- package/build/contracts/src/mocks/MockResultReceiver.sol/MockResultReceiver.dbg.json +0 -4
- package/build/contracts/src/mocks/MockResultReceiver.sol/MockResultReceiver.json +0 -188
- package/build/contracts/src/mocks/SingleExecutionChallenge.sol/SingleExecutionChallenge.dbg.json +0 -4
- package/build/contracts/src/mocks/SingleExecutionChallenge.sol/SingleExecutionChallenge.json +0 -797
- package/build/contracts/src/mocks/TimedOutChallengeManager.sol/TimedOutChallengeManager.dbg.json +0 -4
- package/build/contracts/src/mocks/TimedOutChallengeManager.sol/TimedOutChallengeManager.json +0 -746
- package/build/contracts/src/rollup/IRollupLogic.sol/IRollupUserAbs.dbg.json +0 -4
- package/build/contracts/src/rollup/IRollupLogic.sol/IRollupUserAbs.json +0 -1327
- package/build/contracts/src/rollup/IRollupLogic.sol/IRollupUserERC20.dbg.json +0 -4
- package/build/contracts/src/rollup/IRollupLogic.sol/IRollupUserERC20.json +0 -1461
- package/build/contracts/src/rollup/Node.sol/NodeLib.dbg.json +0 -4
- package/build/contracts/src/rollup/RollupUserLogic.sol/AbsRollupUserLogic.dbg.json +0 -4
- package/build/contracts/src/rollup/RollupUserLogic.sol/AbsRollupUserLogic.json +0 -1609
- package/build/contracts/src/rollup/RollupUserLogic.sol/ERC20RollupUserLogic.dbg.json +0 -4
- package/build/contracts/src/rollup/RollupUserLogic.sol/ERC20RollupUserLogic.json +0 -1743
- package/build/contracts/src/rollup/ValidatorUtils.sol/ValidatorUtils.dbg.json +0 -4
- package/build/contracts/src/rollup/ValidatorUtils.sol/ValidatorUtils.json +0 -379
- package/src/challenge/ChallengeLib.sol +0 -88
- package/src/challenge/ChallengeManager.sol +0 -375
- package/src/challenge/IChallengeManager.sol +0 -86
- package/src/challenge/IChallengeResultReceiver.sol +0 -13
- package/src/mocks/MockResultReceiver.sol +0 -59
- package/src/mocks/SingleExecutionChallenge.sol +0 -41
- package/src/mocks/TimedOutChallengeManager.sol +0 -13
- package/src/rollup/Node.sol +0 -113
@@ -7,13 +7,11 @@ pragma solidity ^0.8.0;
|
|
7
7
|
import {
|
8
8
|
AlreadyInit,
|
9
9
|
HadZeroInit,
|
10
|
-
BadPostUpgradeInit,
|
11
10
|
NotOrigin,
|
12
11
|
DataTooLarge,
|
13
12
|
DelayedBackwards,
|
14
13
|
DelayedTooFar,
|
15
14
|
ForceIncludeBlockTooSoon,
|
16
|
-
ForceIncludeTimeTooSoon,
|
17
15
|
IncorrectMessagePreimage,
|
18
16
|
NotBatchPoster,
|
19
17
|
BadSequencerNumber,
|
@@ -29,7 +27,13 @@ import {
|
|
29
27
|
InvalidHeaderFlag,
|
30
28
|
NativeTokenMismatch,
|
31
29
|
BadMaxTimeVariation,
|
32
|
-
Deprecated
|
30
|
+
Deprecated,
|
31
|
+
NotDelayBufferable,
|
32
|
+
InvalidDelayedAccPreimage,
|
33
|
+
DelayProofRequired,
|
34
|
+
BadBufferConfig,
|
35
|
+
ExtraGasNotUint64,
|
36
|
+
KeysetTooLarge
|
33
37
|
} from "../libraries/Error.sol";
|
34
38
|
import "./IBridge.sol";
|
35
39
|
import "./IInboxBase.sol";
|
@@ -40,12 +44,12 @@ import "../precompiles/ArbGasInfo.sol";
|
|
40
44
|
import "../precompiles/ArbSys.sol";
|
41
45
|
import "../libraries/IReader4844.sol";
|
42
46
|
|
43
|
-
import {L1MessageType_batchPostingReport} from "../libraries/MessageTypes.sol";
|
44
47
|
import "../libraries/DelegateCallAware.sol";
|
45
48
|
import {IGasRefunder} from "../libraries/IGasRefunder.sol";
|
46
49
|
import {GasRefundEnabled} from "../libraries/GasRefundEnabled.sol";
|
47
50
|
import "../libraries/ArbitrumChecker.sol";
|
48
51
|
import {IERC20Bridge} from "./IERC20Bridge.sol";
|
52
|
+
import "./DelayBuffer.sol";
|
49
53
|
|
50
54
|
/**
|
51
55
|
* @title Accepts batches from the sequencer and adds them to the rollup inbox.
|
@@ -124,11 +128,18 @@ contract SequencerInbox is DelegateCallAware, GasRefundEnabled, ISequencerInbox
|
|
124
128
|
bool internal immutable hostChainIsArbitrum = ArbitrumChecker.runningOnArbitrum();
|
125
129
|
// True if the chain this SequencerInbox is deployed on uses custom fee token
|
126
130
|
bool public immutable isUsingFeeToken;
|
131
|
+
// True if the SequencerInbox is delay bufferable
|
132
|
+
bool public immutable isDelayBufferable;
|
133
|
+
|
134
|
+
using DelayBuffer for BufferData;
|
135
|
+
|
136
|
+
BufferData public buffer;
|
127
137
|
|
128
138
|
constructor(
|
129
139
|
uint256 _maxDataSize,
|
130
140
|
IReader4844 reader4844_,
|
131
|
-
bool _isUsingFeeToken
|
141
|
+
bool _isUsingFeeToken,
|
142
|
+
bool _isDelayBufferable
|
132
143
|
) {
|
133
144
|
maxDataSize = _maxDataSize;
|
134
145
|
if (hostChainIsArbitrum) {
|
@@ -138,47 +149,31 @@ contract SequencerInbox is DelegateCallAware, GasRefundEnabled, ISequencerInbox
|
|
138
149
|
}
|
139
150
|
reader4844 = reader4844_;
|
140
151
|
isUsingFeeToken = _isUsingFeeToken;
|
152
|
+
isDelayBufferable = _isDelayBufferable;
|
141
153
|
}
|
142
154
|
|
143
155
|
function _chainIdChanged() internal view returns (bool) {
|
144
156
|
return deployTimeChainId != block.chainid;
|
145
157
|
}
|
146
158
|
|
147
|
-
function postUpgradeInit(
|
148
|
-
|
159
|
+
function postUpgradeInit(
|
160
|
+
BufferConfig memory bufferConfig_
|
161
|
+
) external onlyDelegated onlyProxyOwner {
|
162
|
+
if (!isDelayBufferable) revert NotDelayBufferable();
|
163
|
+
|
164
|
+
// Assuming we would not upgrade from a version that does not have the buffer initialized
|
149
165
|
// If that is the case, postUpgradeInit do not need to be called
|
150
|
-
if (
|
151
|
-
__LEGACY_MAX_TIME_VARIATION.delayBlocks == 0 &&
|
152
|
-
__LEGACY_MAX_TIME_VARIATION.futureBlocks == 0 &&
|
153
|
-
__LEGACY_MAX_TIME_VARIATION.delaySeconds == 0 &&
|
154
|
-
__LEGACY_MAX_TIME_VARIATION.futureSeconds == 0
|
155
|
-
) {
|
166
|
+
if (buffer.bufferBlocks != 0) {
|
156
167
|
revert AlreadyInit();
|
157
168
|
}
|
158
169
|
|
159
|
-
|
160
|
-
__LEGACY_MAX_TIME_VARIATION.delayBlocks > type(uint64).max ||
|
161
|
-
__LEGACY_MAX_TIME_VARIATION.futureBlocks > type(uint64).max ||
|
162
|
-
__LEGACY_MAX_TIME_VARIATION.delaySeconds > type(uint64).max ||
|
163
|
-
__LEGACY_MAX_TIME_VARIATION.futureSeconds > type(uint64).max
|
164
|
-
) {
|
165
|
-
revert BadPostUpgradeInit();
|
166
|
-
}
|
167
|
-
|
168
|
-
delayBlocks = uint64(__LEGACY_MAX_TIME_VARIATION.delayBlocks);
|
169
|
-
futureBlocks = uint64(__LEGACY_MAX_TIME_VARIATION.futureBlocks);
|
170
|
-
delaySeconds = uint64(__LEGACY_MAX_TIME_VARIATION.delaySeconds);
|
171
|
-
futureSeconds = uint64(__LEGACY_MAX_TIME_VARIATION.futureSeconds);
|
172
|
-
|
173
|
-
__LEGACY_MAX_TIME_VARIATION.delayBlocks = 0;
|
174
|
-
__LEGACY_MAX_TIME_VARIATION.futureBlocks = 0;
|
175
|
-
__LEGACY_MAX_TIME_VARIATION.delaySeconds = 0;
|
176
|
-
__LEGACY_MAX_TIME_VARIATION.futureSeconds = 0;
|
170
|
+
_setBufferConfig(bufferConfig_);
|
177
171
|
}
|
178
172
|
|
179
173
|
function initialize(
|
180
174
|
IBridge bridge_,
|
181
|
-
ISequencerInbox.MaxTimeVariation calldata maxTimeVariation_
|
175
|
+
ISequencerInbox.MaxTimeVariation calldata maxTimeVariation_,
|
176
|
+
BufferConfig memory bufferConfig_
|
182
177
|
) external onlyDelegated {
|
183
178
|
if (bridge != IBridge(address(0))) revert AlreadyInit();
|
184
179
|
if (bridge_ == IBridge(address(0))) revert HadZeroInit();
|
@@ -199,12 +194,17 @@ contract SequencerInbox is DelegateCallAware, GasRefundEnabled, ISequencerInbox
|
|
199
194
|
rollup = bridge_.rollup();
|
200
195
|
|
201
196
|
_setMaxTimeVariation(maxTimeVariation_);
|
197
|
+
|
198
|
+
if (isDelayBufferable) {
|
199
|
+
_setBufferConfig(bufferConfig_);
|
200
|
+
}
|
202
201
|
}
|
203
202
|
|
204
203
|
/// @notice Allows the rollup owner to sync the rollup address
|
205
204
|
function updateRollupAddress() external {
|
206
|
-
if (msg.sender != IOwnable(rollup).owner())
|
205
|
+
if (msg.sender != IOwnable(rollup).owner()) {
|
207
206
|
revert NotOwner(msg.sender, IOwnable(rollup).owner());
|
207
|
+
}
|
208
208
|
IOwnable newRollup = bridge.rollup();
|
209
209
|
if (rollup == newRollup) revert RollupNotChanged();
|
210
210
|
rollup = newRollup;
|
@@ -212,12 +212,8 @@ contract SequencerInbox is DelegateCallAware, GasRefundEnabled, ISequencerInbox
|
|
212
212
|
|
213
213
|
function getTimeBounds() internal view virtual returns (IBridge.TimeBounds memory) {
|
214
214
|
IBridge.TimeBounds memory bounds;
|
215
|
-
(
|
216
|
-
|
217
|
-
uint64 futureBlocks_,
|
218
|
-
uint64 delaySeconds_,
|
219
|
-
uint64 futureSeconds_
|
220
|
-
) = maxTimeVariationInternal();
|
215
|
+
(uint64 delayBlocks_, uint64 futureBlocks_, uint64 delaySeconds_, uint64 futureSeconds_) =
|
216
|
+
maxTimeVariationInternal();
|
221
217
|
if (block.timestamp > delaySeconds_) {
|
222
218
|
bounds.minTimestamp = uint64(block.timestamp) - delaySeconds_;
|
223
219
|
}
|
@@ -238,22 +234,9 @@ contract SequencerInbox is DelegateCallAware, GasRefundEnabled, ISequencerInbox
|
|
238
234
|
futureSeconds = 1;
|
239
235
|
}
|
240
236
|
|
241
|
-
function maxTimeVariation()
|
242
|
-
|
243
|
-
|
244
|
-
returns (
|
245
|
-
uint256,
|
246
|
-
uint256,
|
247
|
-
uint256,
|
248
|
-
uint256
|
249
|
-
)
|
250
|
-
{
|
251
|
-
(
|
252
|
-
uint64 delayBlocks_,
|
253
|
-
uint64 futureBlocks_,
|
254
|
-
uint64 delaySeconds_,
|
255
|
-
uint64 futureSeconds_
|
256
|
-
) = maxTimeVariationInternal();
|
237
|
+
function maxTimeVariation() external view returns (uint256, uint256, uint256, uint256) {
|
238
|
+
(uint64 delayBlocks_, uint64 futureBlocks_, uint64 delaySeconds_, uint64 futureSeconds_) =
|
239
|
+
maxTimeVariationInternal();
|
257
240
|
|
258
241
|
return (
|
259
242
|
uint256(delayBlocks_),
|
@@ -263,16 +246,7 @@ contract SequencerInbox is DelegateCallAware, GasRefundEnabled, ISequencerInbox
|
|
263
246
|
);
|
264
247
|
}
|
265
248
|
|
266
|
-
function maxTimeVariationInternal()
|
267
|
-
internal
|
268
|
-
view
|
269
|
-
returns (
|
270
|
-
uint64,
|
271
|
-
uint64,
|
272
|
-
uint64,
|
273
|
-
uint64
|
274
|
-
)
|
275
|
-
{
|
249
|
+
function maxTimeVariationInternal() internal view returns (uint64, uint64, uint64, uint64) {
|
276
250
|
if (_chainIdChanged()) {
|
277
251
|
return (1, 1, 1, 1);
|
278
252
|
} else {
|
@@ -299,9 +273,16 @@ contract SequencerInbox is DelegateCallAware, GasRefundEnabled, ISequencerInbox
|
|
299
273
|
baseFeeL1,
|
300
274
|
messageDataHash
|
301
275
|
);
|
276
|
+
|
277
|
+
uint256 delayBlocks_ = delayBlocks;
|
278
|
+
|
279
|
+
if (isDelayBufferable) {
|
280
|
+
// proactively apply any pending delay buffer updates before the force included message l1BlockAndTime
|
281
|
+
buffer.update(l1BlockAndTime[0]);
|
282
|
+
delayBlocks_ = delayBufferableBlocks(buffer.bufferBlocks);
|
283
|
+
}
|
302
284
|
// Can only force-include after the Sequencer-only window has expired.
|
303
|
-
if (l1BlockAndTime[0] +
|
304
|
-
if (l1BlockAndTime[1] + delaySeconds >= block.timestamp) revert ForceIncludeTimeTooSoon();
|
285
|
+
if (l1BlockAndTime[0] + delayBlocks_ >= block.number) revert ForceIncludeBlockTooSoon();
|
305
286
|
|
306
287
|
// Verify that message hash represents the last message sequence of delayed message to be included
|
307
288
|
bytes32 prevDelayedAcc = 0;
|
@@ -309,28 +290,19 @@ contract SequencerInbox is DelegateCallAware, GasRefundEnabled, ISequencerInbox
|
|
309
290
|
prevDelayedAcc = bridge.delayedInboxAccs(_totalDelayedMessagesRead - 2);
|
310
291
|
}
|
311
292
|
if (
|
312
|
-
bridge.delayedInboxAccs(_totalDelayedMessagesRead - 1)
|
313
|
-
|
293
|
+
bridge.delayedInboxAccs(_totalDelayedMessagesRead - 1)
|
294
|
+
!= Messages.accumulateInboxMessage(prevDelayedAcc, messageHash)
|
314
295
|
) revert IncorrectMessagePreimage();
|
315
296
|
|
316
|
-
(bytes32 dataHash, IBridge.TimeBounds memory timeBounds) =
|
317
|
-
_totalDelayedMessagesRead
|
318
|
-
);
|
297
|
+
(bytes32 dataHash, IBridge.TimeBounds memory timeBounds) =
|
298
|
+
formEmptyDataHash(_totalDelayedMessagesRead);
|
319
299
|
uint256 __totalDelayedMessagesRead = _totalDelayedMessagesRead;
|
320
300
|
uint256 prevSeqMsgCount = bridge.sequencerReportedSubMessageCount();
|
321
301
|
uint256 newSeqMsgCount = prevSeqMsgCount; // force inclusion should not modify sequencer message count
|
322
|
-
(
|
323
|
-
|
324
|
-
|
325
|
-
|
326
|
-
bytes32 afterAcc
|
327
|
-
) = addSequencerL2BatchImpl(
|
328
|
-
dataHash,
|
329
|
-
__totalDelayedMessagesRead,
|
330
|
-
0,
|
331
|
-
prevSeqMsgCount,
|
332
|
-
newSeqMsgCount
|
333
|
-
);
|
302
|
+
(uint256 seqMessageIndex, bytes32 beforeAcc, bytes32 delayedAcc, bytes32 afterAcc) =
|
303
|
+
addSequencerL2BatchImpl(
|
304
|
+
dataHash, __totalDelayedMessagesRead, 0, prevSeqMsgCount, newSeqMsgCount
|
305
|
+
);
|
334
306
|
emit SequencerBatchDelivered(
|
335
307
|
seqMessageIndex,
|
336
308
|
beforeAcc,
|
@@ -342,7 +314,7 @@ contract SequencerInbox is DelegateCallAware, GasRefundEnabled, ISequencerInbox
|
|
342
314
|
);
|
343
315
|
}
|
344
316
|
|
345
|
-
/// @
|
317
|
+
/// @inheritdoc ISequencerInbox
|
346
318
|
function addSequencerL2BatchFromOrigin(
|
347
319
|
uint256,
|
348
320
|
bytes calldata,
|
@@ -352,6 +324,7 @@ contract SequencerInbox is DelegateCallAware, GasRefundEnabled, ISequencerInbox
|
|
352
324
|
revert Deprecated();
|
353
325
|
}
|
354
326
|
|
327
|
+
/// @inheritdoc ISequencerInbox
|
355
328
|
function addSequencerL2BatchFromOrigin(
|
356
329
|
uint256 sequenceNumber,
|
357
330
|
bytes calldata data,
|
@@ -363,47 +336,14 @@ contract SequencerInbox is DelegateCallAware, GasRefundEnabled, ISequencerInbox
|
|
363
336
|
// solhint-disable-next-line avoid-tx-origin
|
364
337
|
if (msg.sender != tx.origin) revert NotOrigin();
|
365
338
|
if (!isBatchPoster[msg.sender]) revert NotBatchPoster();
|
366
|
-
(
|
367
|
-
data,
|
368
|
-
afterDelayedMessagesRead
|
369
|
-
);
|
370
|
-
// Reformat the stack to prevent "Stack too deep"
|
371
|
-
uint256 sequenceNumber_ = sequenceNumber;
|
372
|
-
IBridge.TimeBounds memory timeBounds_ = timeBounds;
|
373
|
-
bytes32 dataHash_ = dataHash;
|
374
|
-
uint256 dataLength = data.length;
|
375
|
-
uint256 afterDelayedMessagesRead_ = afterDelayedMessagesRead;
|
376
|
-
uint256 prevMessageCount_ = prevMessageCount;
|
377
|
-
uint256 newMessageCount_ = newMessageCount;
|
378
|
-
(
|
379
|
-
uint256 seqMessageIndex,
|
380
|
-
bytes32 beforeAcc,
|
381
|
-
bytes32 delayedAcc,
|
382
|
-
bytes32 afterAcc
|
383
|
-
) = addSequencerL2BatchImpl(
|
384
|
-
dataHash_,
|
385
|
-
afterDelayedMessagesRead_,
|
386
|
-
dataLength,
|
387
|
-
prevMessageCount_,
|
388
|
-
newMessageCount_
|
389
|
-
);
|
390
|
-
|
391
|
-
// ~uint256(0) is type(uint256).max, but ever so slightly cheaper
|
392
|
-
if (seqMessageIndex != sequenceNumber_ && sequenceNumber_ != ~uint256(0)) {
|
393
|
-
revert BadSequencerNumber(seqMessageIndex, sequenceNumber_);
|
394
|
-
}
|
339
|
+
if (isDelayProofRequired(afterDelayedMessagesRead)) revert DelayProofRequired();
|
395
340
|
|
396
|
-
|
397
|
-
|
398
|
-
beforeAcc,
|
399
|
-
afterAcc,
|
400
|
-
delayedAcc,
|
401
|
-
totalDelayedMessagesRead,
|
402
|
-
timeBounds_,
|
403
|
-
IBridge.BatchDataLocation.TxInput
|
341
|
+
addSequencerL2BatchFromCalldataImpl(
|
342
|
+
sequenceNumber, data, afterDelayedMessagesRead, prevMessageCount, newMessageCount, true
|
404
343
|
);
|
405
344
|
}
|
406
345
|
|
346
|
+
/// @inheritdoc ISequencerInbox
|
407
347
|
function addSequencerL2BatchFromBlobs(
|
408
348
|
uint256 sequenceNumber,
|
409
349
|
uint256 afterDelayedMessagesRead,
|
@@ -412,37 +352,76 @@ contract SequencerInbox is DelegateCallAware, GasRefundEnabled, ISequencerInbox
|
|
412
352
|
uint256 newMessageCount
|
413
353
|
) external refundsGas(gasRefunder, reader4844) {
|
414
354
|
if (!isBatchPoster[msg.sender]) revert NotBatchPoster();
|
415
|
-
(
|
416
|
-
|
417
|
-
|
418
|
-
|
419
|
-
)
|
355
|
+
if (isDelayProofRequired(afterDelayedMessagesRead)) revert DelayProofRequired();
|
356
|
+
|
357
|
+
addSequencerL2BatchFromBlobsImpl(
|
358
|
+
sequenceNumber, afterDelayedMessagesRead, prevMessageCount, newMessageCount
|
359
|
+
);
|
360
|
+
}
|
361
|
+
|
362
|
+
/// @inheritdoc ISequencerInbox
|
363
|
+
function addSequencerL2BatchFromBlobsDelayProof(
|
364
|
+
uint256 sequenceNumber,
|
365
|
+
uint256 afterDelayedMessagesRead,
|
366
|
+
IGasRefunder gasRefunder,
|
367
|
+
uint256 prevMessageCount,
|
368
|
+
uint256 newMessageCount,
|
369
|
+
DelayProof calldata delayProof
|
370
|
+
) external refundsGas(gasRefunder, reader4844) {
|
371
|
+
if (!isBatchPoster[msg.sender]) revert NotBatchPoster();
|
372
|
+
if (!isDelayBufferable) revert NotDelayBufferable();
|
373
|
+
|
374
|
+
delayProofImpl(afterDelayedMessagesRead, delayProof);
|
375
|
+
addSequencerL2BatchFromBlobsImpl(
|
376
|
+
sequenceNumber, afterDelayedMessagesRead, prevMessageCount, newMessageCount
|
377
|
+
);
|
378
|
+
}
|
379
|
+
|
380
|
+
/// @inheritdoc ISequencerInbox
|
381
|
+
function addSequencerL2BatchFromOriginDelayProof(
|
382
|
+
uint256 sequenceNumber,
|
383
|
+
bytes calldata data,
|
384
|
+
uint256 afterDelayedMessagesRead,
|
385
|
+
IGasRefunder gasRefunder,
|
386
|
+
uint256 prevMessageCount,
|
387
|
+
uint256 newMessageCount,
|
388
|
+
DelayProof calldata delayProof
|
389
|
+
) external refundsGas(gasRefunder, IReader4844(address(0))) {
|
390
|
+
// solhint-disable-next-line avoid-tx-origin
|
391
|
+
if (msg.sender != tx.origin) revert NotOrigin();
|
392
|
+
if (!isBatchPoster[msg.sender]) revert NotBatchPoster();
|
393
|
+
if (!isDelayBufferable) revert NotDelayBufferable();
|
394
|
+
|
395
|
+
delayProofImpl(afterDelayedMessagesRead, delayProof);
|
396
|
+
addSequencerL2BatchFromCalldataImpl(
|
397
|
+
sequenceNumber, data, afterDelayedMessagesRead, prevMessageCount, newMessageCount, true
|
398
|
+
);
|
399
|
+
}
|
400
|
+
|
401
|
+
function addSequencerL2BatchFromBlobsImpl(
|
402
|
+
uint256 sequenceNumber,
|
403
|
+
uint256 afterDelayedMessagesRead,
|
404
|
+
uint256 prevMessageCount,
|
405
|
+
uint256 newMessageCount
|
406
|
+
) internal {
|
407
|
+
(bytes32 dataHash, IBridge.TimeBounds memory timeBounds, uint256 blobGas) =
|
408
|
+
formBlobDataHash(afterDelayedMessagesRead);
|
420
409
|
|
421
410
|
// we use addSequencerL2BatchImpl for submitting the message
|
422
411
|
// normally this would also submit a batch spending report but that is skipped if we pass
|
423
412
|
// an empty call data size, then we submit a separate batch spending report later
|
424
|
-
(
|
425
|
-
|
426
|
-
|
427
|
-
|
428
|
-
bytes32 afterAcc
|
429
|
-
) = addSequencerL2BatchImpl(
|
430
|
-
dataHash,
|
431
|
-
afterDelayedMessagesRead,
|
432
|
-
0,
|
433
|
-
prevMessageCount,
|
434
|
-
newMessageCount
|
435
|
-
);
|
436
|
-
|
437
|
-
uint256 _sequenceNumber = sequenceNumber; // stack workaround
|
413
|
+
(uint256 seqMessageIndex, bytes32 beforeAcc, bytes32 delayedAcc, bytes32 afterAcc) =
|
414
|
+
addSequencerL2BatchImpl(
|
415
|
+
dataHash, afterDelayedMessagesRead, 0, prevMessageCount, newMessageCount
|
416
|
+
);
|
438
417
|
|
439
418
|
// ~uint256(0) is type(uint256).max, but ever so slightly cheaper
|
440
|
-
if (seqMessageIndex !=
|
441
|
-
revert BadSequencerNumber(seqMessageIndex,
|
419
|
+
if (seqMessageIndex != sequenceNumber && sequenceNumber != ~uint256(0)) {
|
420
|
+
revert BadSequencerNumber(seqMessageIndex, sequenceNumber);
|
442
421
|
}
|
443
422
|
|
444
423
|
emit SequencerBatchDelivered(
|
445
|
-
|
424
|
+
sequenceNumber,
|
446
425
|
beforeAcc,
|
447
426
|
afterAcc,
|
448
427
|
delayedAcc,
|
@@ -465,6 +444,48 @@ contract SequencerInbox is DelegateCallAware, GasRefundEnabled, ISequencerInbox
|
|
465
444
|
}
|
466
445
|
}
|
467
446
|
|
447
|
+
function addSequencerL2BatchFromCalldataImpl(
|
448
|
+
uint256 sequenceNumber,
|
449
|
+
bytes calldata data,
|
450
|
+
uint256 afterDelayedMessagesRead,
|
451
|
+
uint256 prevMessageCount,
|
452
|
+
uint256 newMessageCount,
|
453
|
+
bool isFromOrigin
|
454
|
+
) internal {
|
455
|
+
(bytes32 dataHash, IBridge.TimeBounds memory timeBounds) =
|
456
|
+
formCallDataHash(data, afterDelayedMessagesRead);
|
457
|
+
(uint256 seqMessageIndex, bytes32 beforeAcc, bytes32 delayedAcc, bytes32 afterAcc) =
|
458
|
+
addSequencerL2BatchImpl(
|
459
|
+
dataHash,
|
460
|
+
afterDelayedMessagesRead,
|
461
|
+
isFromOrigin ? data.length : 0,
|
462
|
+
prevMessageCount,
|
463
|
+
newMessageCount
|
464
|
+
);
|
465
|
+
|
466
|
+
// ~uint256(0) is type(uint256).max, but ever so slightly cheaper
|
467
|
+
if (seqMessageIndex != sequenceNumber && sequenceNumber != ~uint256(0)) {
|
468
|
+
revert BadSequencerNumber(seqMessageIndex, sequenceNumber);
|
469
|
+
}
|
470
|
+
|
471
|
+
emit SequencerBatchDelivered(
|
472
|
+
seqMessageIndex,
|
473
|
+
beforeAcc,
|
474
|
+
afterAcc,
|
475
|
+
delayedAcc,
|
476
|
+
totalDelayedMessagesRead,
|
477
|
+
timeBounds,
|
478
|
+
isFromOrigin
|
479
|
+
? IBridge.BatchDataLocation.TxInput
|
480
|
+
: IBridge.BatchDataLocation.SeparateBatchEvent
|
481
|
+
);
|
482
|
+
|
483
|
+
if (!isFromOrigin) {
|
484
|
+
emit SequencerBatchData(seqMessageIndex, data);
|
485
|
+
}
|
486
|
+
}
|
487
|
+
|
488
|
+
/// @inheritdoc ISequencerInbox
|
468
489
|
function addSequencerL2Batch(
|
469
490
|
uint256 sequenceNumber,
|
470
491
|
bytes calldata data,
|
@@ -474,55 +495,66 @@ contract SequencerInbox is DelegateCallAware, GasRefundEnabled, ISequencerInbox
|
|
474
495
|
uint256 newMessageCount
|
475
496
|
) external override refundsGas(gasRefunder, IReader4844(address(0))) {
|
476
497
|
if (!isBatchPoster[msg.sender] && msg.sender != address(rollup)) revert NotBatchPoster();
|
477
|
-
(
|
478
|
-
|
479
|
-
|
498
|
+
if (isDelayProofRequired(afterDelayedMessagesRead)) revert DelayProofRequired();
|
499
|
+
|
500
|
+
addSequencerL2BatchFromCalldataImpl(
|
501
|
+
sequenceNumber, data, afterDelayedMessagesRead, prevMessageCount, newMessageCount, false
|
480
502
|
);
|
481
|
-
|
482
|
-
{
|
483
|
-
// Reformat the stack to prevent "Stack too deep"
|
484
|
-
uint256 sequenceNumber_ = sequenceNumber;
|
485
|
-
IBridge.TimeBounds memory timeBounds_ = timeBounds;
|
486
|
-
bytes32 dataHash_ = dataHash;
|
487
|
-
uint256 afterDelayedMessagesRead_ = afterDelayedMessagesRead;
|
488
|
-
uint256 prevMessageCount_ = prevMessageCount;
|
489
|
-
uint256 newMessageCount_ = newMessageCount;
|
490
|
-
// we set the calldata length posted to 0 here since the caller isn't the origin
|
491
|
-
// of the tx, so they might have not paid tx input cost for the calldata
|
492
|
-
bytes32 beforeAcc;
|
493
|
-
bytes32 delayedAcc;
|
494
|
-
bytes32 afterAcc;
|
495
|
-
(seqMessageIndex, beforeAcc, delayedAcc, afterAcc) = addSequencerL2BatchImpl(
|
496
|
-
dataHash_,
|
497
|
-
afterDelayedMessagesRead_,
|
498
|
-
0,
|
499
|
-
prevMessageCount_,
|
500
|
-
newMessageCount_
|
501
|
-
);
|
502
|
-
|
503
|
-
// ~uint256(0) is type(uint256).max, but ever so slightly cheaper
|
504
|
-
if (seqMessageIndex != sequenceNumber_ && sequenceNumber_ != ~uint256(0)) {
|
505
|
-
revert BadSequencerNumber(seqMessageIndex, sequenceNumber_);
|
506
|
-
}
|
503
|
+
}
|
507
504
|
|
508
|
-
|
509
|
-
|
510
|
-
|
511
|
-
|
512
|
-
|
513
|
-
|
514
|
-
|
515
|
-
|
516
|
-
|
505
|
+
/// @inheritdoc ISequencerInbox
|
506
|
+
function addSequencerL2BatchDelayProof(
|
507
|
+
uint256 sequenceNumber,
|
508
|
+
bytes calldata data,
|
509
|
+
uint256 afterDelayedMessagesRead,
|
510
|
+
IGasRefunder gasRefunder,
|
511
|
+
uint256 prevMessageCount,
|
512
|
+
uint256 newMessageCount,
|
513
|
+
DelayProof calldata delayProof
|
514
|
+
) external refundsGas(gasRefunder, IReader4844(address(0))) {
|
515
|
+
if (!isBatchPoster[msg.sender] && msg.sender != address(rollup)) revert NotBatchPoster();
|
516
|
+
if (!isDelayBufferable) revert NotDelayBufferable();
|
517
|
+
|
518
|
+
delayProofImpl(afterDelayedMessagesRead, delayProof);
|
519
|
+
addSequencerL2BatchFromCalldataImpl(
|
520
|
+
sequenceNumber, data, afterDelayedMessagesRead, prevMessageCount, newMessageCount, false
|
521
|
+
);
|
522
|
+
}
|
523
|
+
|
524
|
+
function delayProofImpl(
|
525
|
+
uint256 afterDelayedMessagesRead,
|
526
|
+
DelayProof memory delayProof
|
527
|
+
) internal {
|
528
|
+
// buffer update depends on new delayed messages. if none are read, no buffer update is proccessed
|
529
|
+
if (afterDelayedMessagesRead > totalDelayedMessagesRead) {
|
530
|
+
if (buffer.isUpdatable()) {
|
531
|
+
// delayedAcc of the 1st new delayed message
|
532
|
+
bytes32 delayedAcc = bridge.delayedInboxAccs(totalDelayedMessagesRead);
|
533
|
+
// validate delayProof against the delayed accumulator
|
534
|
+
if (
|
535
|
+
!Messages.isValidDelayedAccPreimage(
|
536
|
+
delayedAcc, delayProof.beforeDelayedAcc, delayProof.delayedMessage
|
537
|
+
)
|
538
|
+
) {
|
539
|
+
revert InvalidDelayedAccPreimage();
|
540
|
+
}
|
541
|
+
buffer.update(delayProof.delayedMessage.blockNumber);
|
542
|
+
}
|
517
543
|
}
|
518
|
-
emit SequencerBatchData(seqMessageIndex, data);
|
519
544
|
}
|
520
545
|
|
521
|
-
function
|
522
|
-
|
523
|
-
|
524
|
-
|
525
|
-
|
546
|
+
function isDelayProofRequired(
|
547
|
+
uint256 afterDelayedMessagesRead
|
548
|
+
) internal view returns (bool) {
|
549
|
+
// if no new delayed messages are read, no buffer updates can be applied, so no proof required
|
550
|
+
// if the buffer is synced, the buffer cannot be depleted, so no proof is required
|
551
|
+
return isDelayBufferable && afterDelayedMessagesRead > totalDelayedMessagesRead
|
552
|
+
&& !buffer.isSynced();
|
553
|
+
}
|
554
|
+
|
555
|
+
function packHeader(
|
556
|
+
uint256 afterDelayedMessagesRead
|
557
|
+
) internal view returns (bytes memory, IBridge.TimeBounds memory) {
|
526
558
|
IBridge.TimeBounds memory timeBounds = getTimeBounds();
|
527
559
|
bytes memory header = abi.encodePacked(
|
528
560
|
timeBounds.minTimestamp,
|
@@ -540,14 +572,11 @@ contract SequencerInbox is DelegateCallAware, GasRefundEnabled, ISequencerInbox
|
|
540
572
|
/// @param afterDelayedMessagesRead The delayed messages count read up to
|
541
573
|
/// @return The data hash
|
542
574
|
/// @return The timebounds within which the message should be processed
|
543
|
-
function formEmptyDataHash(
|
544
|
-
|
545
|
-
|
546
|
-
|
547
|
-
|
548
|
-
(bytes memory header, IBridge.TimeBounds memory timeBounds) = packHeader(
|
549
|
-
afterDelayedMessagesRead
|
550
|
-
);
|
575
|
+
function formEmptyDataHash(
|
576
|
+
uint256 afterDelayedMessagesRead
|
577
|
+
) internal view returns (bytes32, IBridge.TimeBounds memory) {
|
578
|
+
(bytes memory header, IBridge.TimeBounds memory timeBounds) =
|
579
|
+
packHeader(afterDelayedMessagesRead);
|
551
580
|
return (keccak256(header), timeBounds);
|
552
581
|
}
|
553
582
|
|
@@ -556,12 +585,12 @@ contract SequencerInbox is DelegateCallAware, GasRefundEnabled, ISequencerInbox
|
|
556
585
|
/// therefore we restrict which flags can be provided as a header in this field
|
557
586
|
/// This also safe guards unused flags for future use, as we know they would have been disallowed up until this point
|
558
587
|
/// @param headerByte The first byte in the calldata
|
559
|
-
function isValidCallDataFlag(
|
560
|
-
|
561
|
-
|
562
|
-
|
563
|
-
(headerByte == (DAS_MESSAGE_HEADER_FLAG | TREE_DAS_MESSAGE_HEADER_FLAG))
|
564
|
-
headerByte == ZERO_HEAVY_MESSAGE_HEADER_FLAG;
|
588
|
+
function isValidCallDataFlag(
|
589
|
+
bytes1 headerByte
|
590
|
+
) internal pure returns (bool) {
|
591
|
+
return headerByte == BROTLI_MESSAGE_HEADER_FLAG || headerByte == DAS_MESSAGE_HEADER_FLAG
|
592
|
+
|| (headerByte == (DAS_MESSAGE_HEADER_FLAG | TREE_DAS_MESSAGE_HEADER_FLAG))
|
593
|
+
|| headerByte == ZERO_HEAVY_MESSAGE_HEADER_FLAG;
|
565
594
|
}
|
566
595
|
|
567
596
|
/// @dev Form a hash of the data taken from the calldata
|
@@ -569,17 +598,15 @@ contract SequencerInbox is DelegateCallAware, GasRefundEnabled, ISequencerInbox
|
|
569
598
|
/// @param afterDelayedMessagesRead The delayed messages count read up to
|
570
599
|
/// @return The data hash
|
571
600
|
/// @return The timebounds within which the message should be processed
|
572
|
-
function formCallDataHash(
|
573
|
-
|
574
|
-
|
575
|
-
|
576
|
-
{
|
601
|
+
function formCallDataHash(
|
602
|
+
bytes calldata data,
|
603
|
+
uint256 afterDelayedMessagesRead
|
604
|
+
) internal view returns (bytes32, IBridge.TimeBounds memory) {
|
577
605
|
uint256 fullDataLen = HEADER_LENGTH + data.length;
|
578
606
|
if (fullDataLen > maxDataSize) revert DataTooLarge(fullDataLen, maxDataSize);
|
579
607
|
|
580
|
-
(bytes memory header, IBridge.TimeBounds memory timeBounds) =
|
581
|
-
afterDelayedMessagesRead
|
582
|
-
);
|
608
|
+
(bytes memory header, IBridge.TimeBounds memory timeBounds) =
|
609
|
+
packHeader(afterDelayedMessagesRead);
|
583
610
|
|
584
611
|
// the batch poster is allowed to submit an empty batch, they can use this to progress the
|
585
612
|
// delayed inbox without providing extra batch data
|
@@ -606,21 +633,14 @@ contract SequencerInbox is DelegateCallAware, GasRefundEnabled, ISequencerInbox
|
|
606
633
|
/// @return The data hash
|
607
634
|
/// @return The timebounds within which the message should be processed
|
608
635
|
/// @return The normalized amount of gas used for blob posting
|
609
|
-
function formBlobDataHash(
|
610
|
-
|
611
|
-
|
612
|
-
returns (
|
613
|
-
bytes32,
|
614
|
-
IBridge.TimeBounds memory,
|
615
|
-
uint256
|
616
|
-
)
|
617
|
-
{
|
636
|
+
function formBlobDataHash(
|
637
|
+
uint256 afterDelayedMessagesRead
|
638
|
+
) internal view virtual returns (bytes32, IBridge.TimeBounds memory, uint256) {
|
618
639
|
bytes32[] memory dataHashes = reader4844.getDataHashes();
|
619
640
|
if (dataHashes.length == 0) revert MissingDataHashes();
|
620
641
|
|
621
|
-
(bytes memory header, IBridge.TimeBounds memory timeBounds) =
|
622
|
-
afterDelayedMessagesRead
|
623
|
-
);
|
642
|
+
(bytes memory header, IBridge.TimeBounds memory timeBounds) =
|
643
|
+
packHeader(afterDelayedMessagesRead);
|
624
644
|
|
625
645
|
uint256 blobCost = reader4844.getBlobBaseFee() * GAS_PER_BLOB * dataHashes.length;
|
626
646
|
return (
|
@@ -653,20 +673,12 @@ contract SequencerInbox is DelegateCallAware, GasRefundEnabled, ISequencerInbox
|
|
653
673
|
uint256 l1Fees = ArbGasInfo(address(0x6c)).getCurrentTxL1GasFees();
|
654
674
|
extraGas += l1Fees / block.basefee;
|
655
675
|
}
|
656
|
-
|
676
|
+
if (extraGas > type(uint64).max) revert ExtraGasNotUint64();
|
657
677
|
bytes memory spendingReportMsg = abi.encodePacked(
|
658
|
-
block.timestamp,
|
659
|
-
batchPoster,
|
660
|
-
dataHash,
|
661
|
-
seqMessageIndex,
|
662
|
-
gasPrice,
|
663
|
-
uint64(extraGas)
|
678
|
+
block.timestamp, batchPoster, dataHash, seqMessageIndex, gasPrice, uint64(extraGas)
|
664
679
|
);
|
665
680
|
|
666
|
-
uint256 msgNum = bridge.submitBatchSpendingReport(
|
667
|
-
batchPoster,
|
668
|
-
keccak256(spendingReportMsg)
|
669
|
-
);
|
681
|
+
uint256 msgNum = bridge.submitBatchSpendingReport(batchPoster, keccak256(spendingReportMsg));
|
670
682
|
// this is the same event used by Inbox.sol after including a message to the delayed message accumulator
|
671
683
|
emit InboxMessageDelivered(msgNum, spendingReportMsg);
|
672
684
|
}
|
@@ -679,21 +691,13 @@ contract SequencerInbox is DelegateCallAware, GasRefundEnabled, ISequencerInbox
|
|
679
691
|
uint256 newMessageCount
|
680
692
|
)
|
681
693
|
internal
|
682
|
-
returns (
|
683
|
-
uint256 seqMessageIndex,
|
684
|
-
bytes32 beforeAcc,
|
685
|
-
bytes32 delayedAcc,
|
686
|
-
bytes32 acc
|
687
|
-
)
|
694
|
+
returns (uint256 seqMessageIndex, bytes32 beforeAcc, bytes32 delayedAcc, bytes32 acc)
|
688
695
|
{
|
689
696
|
if (afterDelayedMessagesRead < totalDelayedMessagesRead) revert DelayedBackwards();
|
690
697
|
if (afterDelayedMessagesRead > bridge.delayedMessageCount()) revert DelayedTooFar();
|
691
698
|
|
692
699
|
(seqMessageIndex, beforeAcc, delayedAcc, acc) = bridge.enqueueSequencerMessage(
|
693
|
-
dataHash,
|
694
|
-
afterDelayedMessagesRead,
|
695
|
-
prevMessageCount,
|
696
|
-
newMessageCount
|
700
|
+
dataHash, afterDelayedMessagesRead, prevMessageCount, newMessageCount
|
697
701
|
);
|
698
702
|
|
699
703
|
totalDelayedMessagesRead = afterDelayedMessagesRead;
|
@@ -704,7 +708,9 @@ contract SequencerInbox is DelegateCallAware, GasRefundEnabled, ISequencerInbox
|
|
704
708
|
}
|
705
709
|
}
|
706
710
|
|
707
|
-
function inboxAccs(
|
711
|
+
function inboxAccs(
|
712
|
+
uint256 index
|
713
|
+
) external view returns (bytes32) {
|
708
714
|
return bridge.sequencerInboxAccs(index);
|
709
715
|
}
|
710
716
|
|
@@ -712,14 +718,55 @@ contract SequencerInbox is DelegateCallAware, GasRefundEnabled, ISequencerInbox
|
|
712
718
|
return bridge.sequencerMessageCount();
|
713
719
|
}
|
714
720
|
|
715
|
-
|
716
|
-
|
717
|
-
|
721
|
+
/// @inheritdoc ISequencerInbox
|
722
|
+
function forceInclusionDeadline(
|
723
|
+
uint64 blockNumber
|
724
|
+
) external view returns (uint64) {
|
725
|
+
uint64 _delayBlocks = delayBlocks;
|
726
|
+
if (isDelayBufferable) {
|
727
|
+
uint64 _buffer = buffer.calcPendingBuffer(blockNumber);
|
728
|
+
_delayBlocks = delayBufferableBlocks(_buffer);
|
729
|
+
}
|
730
|
+
return blockNumber + _delayBlocks;
|
731
|
+
}
|
732
|
+
|
733
|
+
/// @notice Calculates the buffer dependent delay blocks
|
734
|
+
function delayBufferableBlocks(
|
735
|
+
uint64 _buffer
|
736
|
+
) internal view returns (uint64) {
|
737
|
+
return _buffer < delayBlocks ? _buffer : delayBlocks;
|
738
|
+
}
|
739
|
+
|
740
|
+
function _setBufferConfig(
|
741
|
+
BufferConfig memory bufferConfig_
|
742
|
+
) internal {
|
743
|
+
if (!isDelayBufferable) revert NotDelayBufferable();
|
744
|
+
if (!DelayBuffer.isValidBufferConfig(bufferConfig_)) revert BadBufferConfig();
|
745
|
+
|
746
|
+
if (buffer.bufferBlocks == 0 || buffer.bufferBlocks > bufferConfig_.max) {
|
747
|
+
buffer.bufferBlocks = bufferConfig_.max;
|
748
|
+
}
|
749
|
+
if (buffer.bufferBlocks < bufferConfig_.threshold) {
|
750
|
+
buffer.bufferBlocks = bufferConfig_.threshold;
|
751
|
+
}
|
752
|
+
buffer.max = bufferConfig_.max;
|
753
|
+
buffer.threshold = bufferConfig_.threshold;
|
754
|
+
buffer.replenishRateInBasis = bufferConfig_.replenishRateInBasis;
|
755
|
+
|
756
|
+
// if all delayed messages are read, the buffer is considered synced
|
757
|
+
if (bridge.delayedMessageCount() == totalDelayedMessagesRead) {
|
758
|
+
buffer.update(uint64(block.number));
|
759
|
+
}
|
760
|
+
}
|
761
|
+
|
762
|
+
function _setMaxTimeVariation(
|
763
|
+
ISequencerInbox.MaxTimeVariation memory maxTimeVariation_
|
764
|
+
) internal {
|
718
765
|
if (
|
719
|
-
maxTimeVariation_.delayBlocks > type(uint64).max
|
720
|
-
|
721
|
-
|
722
|
-
|
766
|
+
maxTimeVariation_.delayBlocks > type(uint64).max
|
767
|
+
|| maxTimeVariation_.futureBlocks > type(uint64).max
|
768
|
+
|| maxTimeVariation_.delaySeconds > type(uint64).max
|
769
|
+
|| maxTimeVariation_.futureSeconds > type(uint64).max
|
723
770
|
) {
|
724
771
|
revert BadMaxTimeVariation();
|
725
772
|
}
|
@@ -730,44 +777,47 @@ contract SequencerInbox is DelegateCallAware, GasRefundEnabled, ISequencerInbox
|
|
730
777
|
}
|
731
778
|
|
732
779
|
/// @inheritdoc ISequencerInbox
|
733
|
-
function setMaxTimeVariation(
|
734
|
-
|
735
|
-
|
736
|
-
{
|
780
|
+
function setMaxTimeVariation(
|
781
|
+
ISequencerInbox.MaxTimeVariation memory maxTimeVariation_
|
782
|
+
) external onlyRollupOwner {
|
737
783
|
_setMaxTimeVariation(maxTimeVariation_);
|
784
|
+
emit MaxTimeVariationSet(maxTimeVariation_);
|
738
785
|
emit OwnerFunctionCalled(0);
|
739
786
|
}
|
740
787
|
|
741
788
|
/// @inheritdoc ISequencerInbox
|
742
|
-
function setIsBatchPoster(
|
743
|
-
|
744
|
-
|
745
|
-
{
|
789
|
+
function setIsBatchPoster(
|
790
|
+
address addr,
|
791
|
+
bool isBatchPoster_
|
792
|
+
) external onlyRollupOwnerOrBatchPosterManager {
|
746
793
|
isBatchPoster[addr] = isBatchPoster_;
|
794
|
+
emit BatchPosterSet(addr, isBatchPoster_);
|
747
795
|
emit OwnerFunctionCalled(1);
|
748
796
|
}
|
749
797
|
|
750
798
|
/// @inheritdoc ISequencerInbox
|
751
|
-
function setValidKeyset(
|
799
|
+
function setValidKeyset(
|
800
|
+
bytes calldata keysetBytes
|
801
|
+
) external onlyRollupOwner {
|
752
802
|
uint256 ksWord = uint256(keccak256(bytes.concat(hex"fe", keccak256(keysetBytes))));
|
753
803
|
bytes32 ksHash = bytes32(ksWord ^ (1 << 255));
|
754
|
-
|
804
|
+
if (keysetBytes.length >= 64 * 1024) revert KeysetTooLarge();
|
755
805
|
|
756
806
|
if (dasKeySetInfo[ksHash].isValidKeyset) revert AlreadyValidDASKeyset(ksHash);
|
757
807
|
uint256 creationBlock = block.number;
|
758
808
|
if (hostChainIsArbitrum) {
|
759
809
|
creationBlock = ArbSys(address(100)).arbBlockNumber();
|
760
810
|
}
|
761
|
-
dasKeySetInfo[ksHash] =
|
762
|
-
isValidKeyset: true,
|
763
|
-
creationBlock: uint64(creationBlock)
|
764
|
-
});
|
811
|
+
dasKeySetInfo[ksHash] =
|
812
|
+
DasKeySetInfo({isValidKeyset: true, creationBlock: uint64(creationBlock)});
|
765
813
|
emit SetValidKeyset(ksHash, keysetBytes);
|
766
814
|
emit OwnerFunctionCalled(2);
|
767
815
|
}
|
768
816
|
|
769
817
|
/// @inheritdoc ISequencerInbox
|
770
|
-
function invalidateKeysetHash(
|
818
|
+
function invalidateKeysetHash(
|
819
|
+
bytes32 ksHash
|
820
|
+
) external onlyRollupOwner {
|
771
821
|
if (!dasKeySetInfo[ksHash].isValidKeyset) revert NoSuchKeyset(ksHash);
|
772
822
|
// we don't delete the block creation value since its used to fetch the SetValidKeyset
|
773
823
|
// event efficiently. The event provides the hash preimage of the key.
|
@@ -778,26 +828,41 @@ contract SequencerInbox is DelegateCallAware, GasRefundEnabled, ISequencerInbox
|
|
778
828
|
}
|
779
829
|
|
780
830
|
/// @inheritdoc ISequencerInbox
|
781
|
-
function setIsSequencer(
|
782
|
-
|
783
|
-
|
784
|
-
{
|
831
|
+
function setIsSequencer(
|
832
|
+
address addr,
|
833
|
+
bool isSequencer_
|
834
|
+
) external onlyRollupOwnerOrBatchPosterManager {
|
785
835
|
isSequencer[addr] = isSequencer_;
|
786
|
-
emit
|
836
|
+
emit SequencerSet(addr, isSequencer_);
|
837
|
+
emit OwnerFunctionCalled(4);
|
787
838
|
}
|
788
839
|
|
789
840
|
/// @inheritdoc ISequencerInbox
|
790
|
-
function setBatchPosterManager(
|
841
|
+
function setBatchPosterManager(
|
842
|
+
address newBatchPosterManager
|
843
|
+
) external onlyRollupOwner {
|
791
844
|
batchPosterManager = newBatchPosterManager;
|
845
|
+
emit BatchPosterManagerSet(newBatchPosterManager);
|
792
846
|
emit OwnerFunctionCalled(5);
|
793
847
|
}
|
794
848
|
|
795
|
-
function
|
849
|
+
function setBufferConfig(
|
850
|
+
BufferConfig memory bufferConfig_
|
851
|
+
) external onlyRollupOwner {
|
852
|
+
_setBufferConfig(bufferConfig_);
|
853
|
+
emit BufferConfigSet(bufferConfig_);
|
854
|
+
}
|
855
|
+
|
856
|
+
function isValidKeysetHash(
|
857
|
+
bytes32 ksHash
|
858
|
+
) external view returns (bool) {
|
796
859
|
return dasKeySetInfo[ksHash].isValidKeyset;
|
797
860
|
}
|
798
861
|
|
799
862
|
/// @inheritdoc ISequencerInbox
|
800
|
-
function getKeysetCreationBlock(
|
863
|
+
function getKeysetCreationBlock(
|
864
|
+
bytes32 ksHash
|
865
|
+
) external view returns (uint256) {
|
801
866
|
DasKeySetInfo memory ksInfo = dasKeySetInfo[ksHash];
|
802
867
|
if (ksInfo.creationBlock == 0) revert NoSuchKeyset(ksHash);
|
803
868
|
return uint256(ksInfo.creationBlock);
|