@arbitrum/nitro-contracts 2.1.0 → 3.0.0-alpha.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- 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 -499
- 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 -535
- 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 +15 -5
- 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 -3
- 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 +35 -72
- 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 -644
- 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 -1332
- package/build/contracts/src/rollup/IRollupLogic.sol/IRollupUserERC20.dbg.json +0 -4
- package/build/contracts/src/rollup/IRollupLogic.sol/IRollupUserERC20.json +0 -1466
- 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 -1614
- package/build/contracts/src/rollup/RollupUserLogic.sol/ERC20RollupUserLogic.dbg.json +0 -4
- package/build/contracts/src/rollup/RollupUserLogic.sol/ERC20RollupUserLogic.json +0 -1748
- 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);
|