@arbitrum/nitro-contracts 2.1.1-beta.0 → 3.0.0-alpha.1
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/{src/express-lane-auction/ELCRound.sol/LatestELCRoundsLib.json → @openzeppelin/contracts/utils/Create2.sol/Create2.json} +4 -4
- 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 +1 -1
- package/build/contracts/@openzeppelin/contracts-upgradeable/utils/structs/EnumerableSetUpgradeable.sol/EnumerableSetUpgradeable.json +2 -2
- 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/{@openzeppelin/contracts-upgradeable/token/ERC20/extensions/IERC20MetadataUpgradeable.sol/IERC20MetadataUpgradeable.json → src/assertionStakingPool/interfaces/IEdgeStakingPool.sol/IEdgeStakingPool.json} +109 -110
- 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 +14 -1
- 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 +16 -3
- 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/IEthBridge.sol/IEthBridge.dbg.json +1 -1
- package/build/contracts/src/bridge/IInbox.sol/IInbox.dbg.json +1 -1
- package/build/contracts/src/bridge/IInboxBase.sol/IInboxBase.dbg.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 +20 -2
- 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 +566 -9
- 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/IAssertionChain.sol/IAssertionChain.dbg.json +4 -0
- package/build/contracts/src/challengeV2/IAssertionChain.sol/IAssertionChain.json +247 -0
- package/build/contracts/src/challengeV2/IEdgeChallengeManager.sol/IEdgeChallengeManager.dbg.json +4 -0
- package/build/contracts/src/challengeV2/IEdgeChallengeManager.sol/IEdgeChallengeManager.json +762 -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/{@openzeppelin/contracts/utils/cryptography/ECDSA.sol/ECDSA.json → src/challengeV2/libraries/ChallengeEdgeLib.sol/ChallengeEdgeLib.json} +4 -4
- 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/CallerChecker.sol/CallerChecker.dbg.json +4 -0
- package/build/contracts/src/{challenge/ChallengeLib.sol/ChallengeLib.json → libraries/CallerChecker.sol/CallerChecker.json} +4 -4
- 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 +15 -2
- package/build/contracts/src/mocks/CreateTest.sol/CreateTest.dbg.json +1 -1
- package/build/contracts/src/mocks/CreateTest.sol/CreateTest.json +2 -2
- package/build/contracts/src/mocks/HostioTest.sol/HostioTest.dbg.json +1 -1
- package/build/contracts/src/mocks/HostioTest.sol/HostioTest.json +2 -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 +566 -9
- 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/{express-lane-auction/Balance.sol/BalanceLib.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 +11 -4
- 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 +89 -92
- 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 +16 -8
- package/src/bridge/IOutbox.sol +13 -8
- package/src/bridge/ISequencerInbox.sol +118 -13
- package/src/bridge/Inbox.sol +134 -151
- package/src/bridge/Messages.sol +48 -18
- package/src/bridge/Outbox.sol +6 -2
- package/src/bridge/SequencerInbox.sol +343 -279
- package/src/chain/CacheManager.sol +49 -18
- package/src/challengeV2/EdgeChallengeManager.sol +559 -0
- package/src/challengeV2/IAssertionChain.sol +39 -0
- package/src/challengeV2/IEdgeChallengeManager.sol +233 -0
- package/src/challengeV2/libraries/ArrayUtilsLib.sol +61 -0
- package/src/challengeV2/libraries/ChallengeEdgeLib.sol +277 -0
- package/src/challengeV2/libraries/ChallengeErrors.sol +108 -0
- package/src/challengeV2/libraries/EdgeChallengeManagerLib.sol +819 -0
- package/src/challengeV2/libraries/Enums.sol +26 -0
- package/src/challengeV2/libraries/MerkleTreeAccumulatorLib.sol +390 -0
- package/src/challengeV2/libraries/Structs.sol +176 -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/CallerChecker.sol +18 -0
- 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 +21 -3
- package/src/libraries/GasRefundEnabled.sol +5 -6
- package/src/libraries/MerkleLib.sol +6 -5
- package/src/libraries/UUPSNotUpgradeable.sol +2 -4
- package/src/mocks/BridgeStub.sol +50 -48
- package/src/mocks/CreateTest.sol +3 -1
- package/src/mocks/HostioTest.sol +20 -16
- 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 +84 -71
- 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/utils/cryptography/ECDSA.sol/ECDSA.dbg.json +0 -4
- package/build/contracts/@openzeppelin/contracts-upgradeable/access/AccessControlEnumerableUpgradeable.sol/AccessControlEnumerableUpgradeable.dbg.json +0 -4
- package/build/contracts/@openzeppelin/contracts-upgradeable/access/AccessControlEnumerableUpgradeable.sol/AccessControlEnumerableUpgradeable.json +0 -258
- package/build/contracts/@openzeppelin/contracts-upgradeable/access/IAccessControlEnumerableUpgradeable.sol/IAccessControlEnumerableUpgradeable.dbg.json +0 -4
- package/build/contracts/@openzeppelin/contracts-upgradeable/access/IAccessControlEnumerableUpgradeable.sol/IAccessControlEnumerableUpgradeable.json +0 -226
- package/build/contracts/@openzeppelin/contracts-upgradeable/token/ERC20/ERC20Upgradeable.sol/ERC20Upgradeable.dbg.json +0 -4
- package/build/contracts/@openzeppelin/contracts-upgradeable/token/ERC20/ERC20Upgradeable.sol/ERC20Upgradeable.json +0 -281
- package/build/contracts/@openzeppelin/contracts-upgradeable/token/ERC20/IERC20Upgradeable.sol/IERC20Upgradeable.dbg.json +0 -4
- package/build/contracts/@openzeppelin/contracts-upgradeable/token/ERC20/extensions/ERC20BurnableUpgradeable.sol/ERC20BurnableUpgradeable.dbg.json +0 -4
- package/build/contracts/@openzeppelin/contracts-upgradeable/token/ERC20/extensions/ERC20BurnableUpgradeable.sol/ERC20BurnableUpgradeable.json +0 -312
- package/build/contracts/@openzeppelin/contracts-upgradeable/token/ERC20/extensions/IERC20MetadataUpgradeable.sol/IERC20MetadataUpgradeable.dbg.json +0 -4
- package/build/contracts/@openzeppelin/contracts-upgradeable/utils/cryptography/ECDSAUpgradeable.sol/ECDSAUpgradeable.dbg.json +0 -4
- package/build/contracts/@openzeppelin/contracts-upgradeable/utils/cryptography/ECDSAUpgradeable.sol/ECDSAUpgradeable.json +0 -10
- package/build/contracts/@openzeppelin/contracts-upgradeable/utils/cryptography/draft-EIP712Upgradeable.sol/EIP712Upgradeable.dbg.json +0 -4
- package/build/contracts/@openzeppelin/contracts-upgradeable/utils/cryptography/draft-EIP712Upgradeable.sol/EIP712Upgradeable.json +0 -10
- 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/express-lane-auction/Balance.sol/BalanceLib.dbg.json +0 -4
- package/build/contracts/src/express-lane-auction/Burner.sol/Burner.dbg.json +0 -4
- package/build/contracts/src/express-lane-auction/Burner.sol/Burner.json +0 -47
- package/build/contracts/src/express-lane-auction/ELCRound.sol/LatestELCRoundsLib.dbg.json +0 -4
- package/build/contracts/src/express-lane-auction/ExpressLaneAuction.sol/ExpressLaneAuction.dbg.json +0 -4
- package/build/contracts/src/express-lane-auction/ExpressLaneAuction.sol/ExpressLaneAuction.json +0 -1588
- package/build/contracts/src/express-lane-auction/IExpressLaneAuction.sol/IExpressLaneAuction.dbg.json +0 -4
- package/build/contracts/src/express-lane-auction/IExpressLaneAuction.sol/IExpressLaneAuction.json +0 -1296
- package/build/contracts/src/express-lane-auction/RoundTimingInfo.sol/RoundTimingInfoLib.dbg.json +0 -4
- package/build/contracts/src/express-lane-auction/RoundTimingInfo.sol/RoundTimingInfoLib.json +0 -10
- 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/express-lane-auction/Balance.sol +0 -142
- package/src/express-lane-auction/Burner.sol +0 -25
- package/src/express-lane-auction/ELCRound.sol +0 -73
- package/src/express-lane-auction/Errors.sol +0 -31
- package/src/express-lane-auction/ExpressLaneAuction.sol +0 -565
- package/src/express-lane-auction/IExpressLaneAuction.sol +0 -421
- package/src/express-lane-auction/RoundTimingInfo.sol +0 -115
- 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,
|
|
@@ -21,6 +19,7 @@ import {
|
|
|
21
19
|
NoSuchKeyset,
|
|
22
20
|
NotForked,
|
|
23
21
|
NotBatchPosterManager,
|
|
22
|
+
NotCodelessOrigin,
|
|
24
23
|
RollupNotChanged,
|
|
25
24
|
DataBlobsNotSupported,
|
|
26
25
|
InitParamZero,
|
|
@@ -29,7 +28,13 @@ import {
|
|
|
29
28
|
InvalidHeaderFlag,
|
|
30
29
|
NativeTokenMismatch,
|
|
31
30
|
BadMaxTimeVariation,
|
|
32
|
-
Deprecated
|
|
31
|
+
Deprecated,
|
|
32
|
+
NotDelayBufferable,
|
|
33
|
+
InvalidDelayedAccPreimage,
|
|
34
|
+
DelayProofRequired,
|
|
35
|
+
BadBufferConfig,
|
|
36
|
+
ExtraGasNotUint64,
|
|
37
|
+
KeysetTooLarge
|
|
33
38
|
} from "../libraries/Error.sol";
|
|
34
39
|
import "./IBridge.sol";
|
|
35
40
|
import "./IInboxBase.sol";
|
|
@@ -38,14 +43,15 @@ import "../rollup/IRollupLogic.sol";
|
|
|
38
43
|
import "./Messages.sol";
|
|
39
44
|
import "../precompiles/ArbGasInfo.sol";
|
|
40
45
|
import "../precompiles/ArbSys.sol";
|
|
46
|
+
import "../libraries/CallerChecker.sol";
|
|
41
47
|
import "../libraries/IReader4844.sol";
|
|
42
48
|
|
|
43
|
-
import {L1MessageType_batchPostingReport} from "../libraries/MessageTypes.sol";
|
|
44
49
|
import "../libraries/DelegateCallAware.sol";
|
|
45
50
|
import {IGasRefunder} from "../libraries/IGasRefunder.sol";
|
|
46
51
|
import {GasRefundEnabled} from "../libraries/GasRefundEnabled.sol";
|
|
47
52
|
import "../libraries/ArbitrumChecker.sol";
|
|
48
53
|
import {IERC20Bridge} from "./IERC20Bridge.sol";
|
|
54
|
+
import "./DelayBuffer.sol";
|
|
49
55
|
|
|
50
56
|
/**
|
|
51
57
|
* @title Accepts batches from the sequencer and adds them to the rollup inbox.
|
|
@@ -124,11 +130,18 @@ contract SequencerInbox is DelegateCallAware, GasRefundEnabled, ISequencerInbox
|
|
|
124
130
|
bool internal immutable hostChainIsArbitrum = ArbitrumChecker.runningOnArbitrum();
|
|
125
131
|
// True if the chain this SequencerInbox is deployed on uses custom fee token
|
|
126
132
|
bool public immutable isUsingFeeToken;
|
|
133
|
+
// True if the SequencerInbox is delay bufferable
|
|
134
|
+
bool public immutable isDelayBufferable;
|
|
135
|
+
|
|
136
|
+
using DelayBuffer for BufferData;
|
|
137
|
+
|
|
138
|
+
BufferData public buffer;
|
|
127
139
|
|
|
128
140
|
constructor(
|
|
129
141
|
uint256 _maxDataSize,
|
|
130
142
|
IReader4844 reader4844_,
|
|
131
|
-
bool _isUsingFeeToken
|
|
143
|
+
bool _isUsingFeeToken,
|
|
144
|
+
bool _isDelayBufferable
|
|
132
145
|
) {
|
|
133
146
|
maxDataSize = _maxDataSize;
|
|
134
147
|
if (hostChainIsArbitrum) {
|
|
@@ -138,47 +151,31 @@ contract SequencerInbox is DelegateCallAware, GasRefundEnabled, ISequencerInbox
|
|
|
138
151
|
}
|
|
139
152
|
reader4844 = reader4844_;
|
|
140
153
|
isUsingFeeToken = _isUsingFeeToken;
|
|
154
|
+
isDelayBufferable = _isDelayBufferable;
|
|
141
155
|
}
|
|
142
156
|
|
|
143
157
|
function _chainIdChanged() internal view returns (bool) {
|
|
144
158
|
return deployTimeChainId != block.chainid;
|
|
145
159
|
}
|
|
146
160
|
|
|
147
|
-
function postUpgradeInit(
|
|
148
|
-
|
|
161
|
+
function postUpgradeInit(
|
|
162
|
+
BufferConfig memory bufferConfig_
|
|
163
|
+
) external onlyDelegated onlyProxyOwner {
|
|
164
|
+
if (!isDelayBufferable) revert NotDelayBufferable();
|
|
165
|
+
|
|
166
|
+
// Assuming we would not upgrade from a version that does not have the buffer initialized
|
|
149
167
|
// 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
|
-
) {
|
|
168
|
+
if (buffer.bufferBlocks != 0) {
|
|
156
169
|
revert AlreadyInit();
|
|
157
170
|
}
|
|
158
171
|
|
|
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;
|
|
172
|
+
_setBufferConfig(bufferConfig_);
|
|
177
173
|
}
|
|
178
174
|
|
|
179
175
|
function initialize(
|
|
180
176
|
IBridge bridge_,
|
|
181
|
-
ISequencerInbox.MaxTimeVariation calldata maxTimeVariation_
|
|
177
|
+
ISequencerInbox.MaxTimeVariation calldata maxTimeVariation_,
|
|
178
|
+
BufferConfig memory bufferConfig_
|
|
182
179
|
) external onlyDelegated {
|
|
183
180
|
if (bridge != IBridge(address(0))) revert AlreadyInit();
|
|
184
181
|
if (bridge_ == IBridge(address(0))) revert HadZeroInit();
|
|
@@ -199,12 +196,17 @@ contract SequencerInbox is DelegateCallAware, GasRefundEnabled, ISequencerInbox
|
|
|
199
196
|
rollup = bridge_.rollup();
|
|
200
197
|
|
|
201
198
|
_setMaxTimeVariation(maxTimeVariation_);
|
|
199
|
+
|
|
200
|
+
if (isDelayBufferable) {
|
|
201
|
+
_setBufferConfig(bufferConfig_);
|
|
202
|
+
}
|
|
202
203
|
}
|
|
203
204
|
|
|
204
205
|
/// @notice Allows the rollup owner to sync the rollup address
|
|
205
206
|
function updateRollupAddress() external {
|
|
206
|
-
if (msg.sender != IOwnable(rollup).owner())
|
|
207
|
+
if (msg.sender != IOwnable(rollup).owner()) {
|
|
207
208
|
revert NotOwner(msg.sender, IOwnable(rollup).owner());
|
|
209
|
+
}
|
|
208
210
|
IOwnable newRollup = bridge.rollup();
|
|
209
211
|
if (rollup == newRollup) revert RollupNotChanged();
|
|
210
212
|
rollup = newRollup;
|
|
@@ -212,12 +214,8 @@ contract SequencerInbox is DelegateCallAware, GasRefundEnabled, ISequencerInbox
|
|
|
212
214
|
|
|
213
215
|
function getTimeBounds() internal view virtual returns (IBridge.TimeBounds memory) {
|
|
214
216
|
IBridge.TimeBounds memory bounds;
|
|
215
|
-
(
|
|
216
|
-
|
|
217
|
-
uint64 futureBlocks_,
|
|
218
|
-
uint64 delaySeconds_,
|
|
219
|
-
uint64 futureSeconds_
|
|
220
|
-
) = maxTimeVariationInternal();
|
|
217
|
+
(uint64 delayBlocks_, uint64 futureBlocks_, uint64 delaySeconds_, uint64 futureSeconds_) =
|
|
218
|
+
maxTimeVariationInternal();
|
|
221
219
|
if (block.timestamp > delaySeconds_) {
|
|
222
220
|
bounds.minTimestamp = uint64(block.timestamp) - delaySeconds_;
|
|
223
221
|
}
|
|
@@ -238,22 +236,9 @@ contract SequencerInbox is DelegateCallAware, GasRefundEnabled, ISequencerInbox
|
|
|
238
236
|
futureSeconds = 1;
|
|
239
237
|
}
|
|
240
238
|
|
|
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();
|
|
239
|
+
function maxTimeVariation() external view returns (uint256, uint256, uint256, uint256) {
|
|
240
|
+
(uint64 delayBlocks_, uint64 futureBlocks_, uint64 delaySeconds_, uint64 futureSeconds_) =
|
|
241
|
+
maxTimeVariationInternal();
|
|
257
242
|
|
|
258
243
|
return (
|
|
259
244
|
uint256(delayBlocks_),
|
|
@@ -263,16 +248,7 @@ contract SequencerInbox is DelegateCallAware, GasRefundEnabled, ISequencerInbox
|
|
|
263
248
|
);
|
|
264
249
|
}
|
|
265
250
|
|
|
266
|
-
function maxTimeVariationInternal()
|
|
267
|
-
internal
|
|
268
|
-
view
|
|
269
|
-
returns (
|
|
270
|
-
uint64,
|
|
271
|
-
uint64,
|
|
272
|
-
uint64,
|
|
273
|
-
uint64
|
|
274
|
-
)
|
|
275
|
-
{
|
|
251
|
+
function maxTimeVariationInternal() internal view returns (uint64, uint64, uint64, uint64) {
|
|
276
252
|
if (_chainIdChanged()) {
|
|
277
253
|
return (1, 1, 1, 1);
|
|
278
254
|
} else {
|
|
@@ -299,9 +275,16 @@ contract SequencerInbox is DelegateCallAware, GasRefundEnabled, ISequencerInbox
|
|
|
299
275
|
baseFeeL1,
|
|
300
276
|
messageDataHash
|
|
301
277
|
);
|
|
278
|
+
|
|
279
|
+
uint256 delayBlocks_ = delayBlocks;
|
|
280
|
+
|
|
281
|
+
if (isDelayBufferable) {
|
|
282
|
+
// proactively apply any pending delay buffer updates before the force included message l1BlockAndTime
|
|
283
|
+
buffer.update(l1BlockAndTime[0]);
|
|
284
|
+
delayBlocks_ = delayBufferableBlocks(buffer.bufferBlocks);
|
|
285
|
+
}
|
|
302
286
|
// Can only force-include after the Sequencer-only window has expired.
|
|
303
|
-
if (l1BlockAndTime[0] +
|
|
304
|
-
if (l1BlockAndTime[1] + delaySeconds >= block.timestamp) revert ForceIncludeTimeTooSoon();
|
|
287
|
+
if (l1BlockAndTime[0] + delayBlocks_ >= block.number) revert ForceIncludeBlockTooSoon();
|
|
305
288
|
|
|
306
289
|
// Verify that message hash represents the last message sequence of delayed message to be included
|
|
307
290
|
bytes32 prevDelayedAcc = 0;
|
|
@@ -309,28 +292,19 @@ contract SequencerInbox is DelegateCallAware, GasRefundEnabled, ISequencerInbox
|
|
|
309
292
|
prevDelayedAcc = bridge.delayedInboxAccs(_totalDelayedMessagesRead - 2);
|
|
310
293
|
}
|
|
311
294
|
if (
|
|
312
|
-
bridge.delayedInboxAccs(_totalDelayedMessagesRead - 1)
|
|
313
|
-
|
|
295
|
+
bridge.delayedInboxAccs(_totalDelayedMessagesRead - 1)
|
|
296
|
+
!= Messages.accumulateInboxMessage(prevDelayedAcc, messageHash)
|
|
314
297
|
) revert IncorrectMessagePreimage();
|
|
315
298
|
|
|
316
|
-
(bytes32 dataHash, IBridge.TimeBounds memory timeBounds) =
|
|
317
|
-
_totalDelayedMessagesRead
|
|
318
|
-
);
|
|
299
|
+
(bytes32 dataHash, IBridge.TimeBounds memory timeBounds) =
|
|
300
|
+
formEmptyDataHash(_totalDelayedMessagesRead);
|
|
319
301
|
uint256 __totalDelayedMessagesRead = _totalDelayedMessagesRead;
|
|
320
302
|
uint256 prevSeqMsgCount = bridge.sequencerReportedSubMessageCount();
|
|
321
303
|
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
|
-
);
|
|
304
|
+
(uint256 seqMessageIndex, bytes32 beforeAcc, bytes32 delayedAcc, bytes32 afterAcc) =
|
|
305
|
+
addSequencerL2BatchImpl(
|
|
306
|
+
dataHash, __totalDelayedMessagesRead, 0, prevSeqMsgCount, newSeqMsgCount
|
|
307
|
+
);
|
|
334
308
|
emit SequencerBatchDelivered(
|
|
335
309
|
seqMessageIndex,
|
|
336
310
|
beforeAcc,
|
|
@@ -342,7 +316,7 @@ contract SequencerInbox is DelegateCallAware, GasRefundEnabled, ISequencerInbox
|
|
|
342
316
|
);
|
|
343
317
|
}
|
|
344
318
|
|
|
345
|
-
/// @
|
|
319
|
+
/// @inheritdoc ISequencerInbox
|
|
346
320
|
function addSequencerL2BatchFromOrigin(
|
|
347
321
|
uint256,
|
|
348
322
|
bytes calldata,
|
|
@@ -352,6 +326,7 @@ contract SequencerInbox is DelegateCallAware, GasRefundEnabled, ISequencerInbox
|
|
|
352
326
|
revert Deprecated();
|
|
353
327
|
}
|
|
354
328
|
|
|
329
|
+
/// @inheritdoc ISequencerInbox
|
|
355
330
|
function addSequencerL2BatchFromOrigin(
|
|
356
331
|
uint256 sequenceNumber,
|
|
357
332
|
bytes calldata data,
|
|
@@ -360,50 +335,16 @@ contract SequencerInbox is DelegateCallAware, GasRefundEnabled, ISequencerInbox
|
|
|
360
335
|
uint256 prevMessageCount,
|
|
361
336
|
uint256 newMessageCount
|
|
362
337
|
) external refundsGas(gasRefunder, IReader4844(address(0))) {
|
|
363
|
-
|
|
364
|
-
if (msg.sender != tx.origin) revert NotOrigin();
|
|
338
|
+
if (!CallerChecker.isCallerCodelessOrigin()) revert NotCodelessOrigin();
|
|
365
339
|
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
|
-
);
|
|
340
|
+
if (isDelayProofRequired(afterDelayedMessagesRead)) revert DelayProofRequired();
|
|
390
341
|
|
|
391
|
-
|
|
392
|
-
|
|
393
|
-
revert BadSequencerNumber(seqMessageIndex, sequenceNumber_);
|
|
394
|
-
}
|
|
395
|
-
|
|
396
|
-
emit SequencerBatchDelivered(
|
|
397
|
-
seqMessageIndex,
|
|
398
|
-
beforeAcc,
|
|
399
|
-
afterAcc,
|
|
400
|
-
delayedAcc,
|
|
401
|
-
totalDelayedMessagesRead,
|
|
402
|
-
timeBounds_,
|
|
403
|
-
IBridge.BatchDataLocation.TxInput
|
|
342
|
+
addSequencerL2BatchFromCalldataImpl(
|
|
343
|
+
sequenceNumber, data, afterDelayedMessagesRead, prevMessageCount, newMessageCount, true
|
|
404
344
|
);
|
|
405
345
|
}
|
|
406
346
|
|
|
347
|
+
/// @inheritdoc ISequencerInbox
|
|
407
348
|
function addSequencerL2BatchFromBlobs(
|
|
408
349
|
uint256 sequenceNumber,
|
|
409
350
|
uint256 afterDelayedMessagesRead,
|
|
@@ -412,37 +353,75 @@ contract SequencerInbox is DelegateCallAware, GasRefundEnabled, ISequencerInbox
|
|
|
412
353
|
uint256 newMessageCount
|
|
413
354
|
) external refundsGas(gasRefunder, reader4844) {
|
|
414
355
|
if (!isBatchPoster[msg.sender]) revert NotBatchPoster();
|
|
415
|
-
(
|
|
416
|
-
|
|
417
|
-
|
|
418
|
-
|
|
419
|
-
)
|
|
356
|
+
if (isDelayProofRequired(afterDelayedMessagesRead)) revert DelayProofRequired();
|
|
357
|
+
|
|
358
|
+
addSequencerL2BatchFromBlobsImpl(
|
|
359
|
+
sequenceNumber, afterDelayedMessagesRead, prevMessageCount, newMessageCount
|
|
360
|
+
);
|
|
361
|
+
}
|
|
362
|
+
|
|
363
|
+
/// @inheritdoc ISequencerInbox
|
|
364
|
+
function addSequencerL2BatchFromBlobsDelayProof(
|
|
365
|
+
uint256 sequenceNumber,
|
|
366
|
+
uint256 afterDelayedMessagesRead,
|
|
367
|
+
IGasRefunder gasRefunder,
|
|
368
|
+
uint256 prevMessageCount,
|
|
369
|
+
uint256 newMessageCount,
|
|
370
|
+
DelayProof calldata delayProof
|
|
371
|
+
) external refundsGas(gasRefunder, reader4844) {
|
|
372
|
+
if (!isBatchPoster[msg.sender]) revert NotBatchPoster();
|
|
373
|
+
if (!isDelayBufferable) revert NotDelayBufferable();
|
|
374
|
+
|
|
375
|
+
delayProofImpl(afterDelayedMessagesRead, delayProof);
|
|
376
|
+
addSequencerL2BatchFromBlobsImpl(
|
|
377
|
+
sequenceNumber, afterDelayedMessagesRead, prevMessageCount, newMessageCount
|
|
378
|
+
);
|
|
379
|
+
}
|
|
380
|
+
|
|
381
|
+
/// @inheritdoc ISequencerInbox
|
|
382
|
+
function addSequencerL2BatchFromOriginDelayProof(
|
|
383
|
+
uint256 sequenceNumber,
|
|
384
|
+
bytes calldata data,
|
|
385
|
+
uint256 afterDelayedMessagesRead,
|
|
386
|
+
IGasRefunder gasRefunder,
|
|
387
|
+
uint256 prevMessageCount,
|
|
388
|
+
uint256 newMessageCount,
|
|
389
|
+
DelayProof calldata delayProof
|
|
390
|
+
) external refundsGas(gasRefunder, IReader4844(address(0))) {
|
|
391
|
+
if (!CallerChecker.isCallerCodelessOrigin()) revert NotCodelessOrigin();
|
|
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,
|
|
@@ -457,14 +436,55 @@ contract SequencerInbox is DelegateCallAware, GasRefundEnabled, ISequencerInbox
|
|
|
457
436
|
if (hostChainIsArbitrum) revert DataBlobsNotSupported();
|
|
458
437
|
|
|
459
438
|
// submit a batch spending report to refund the entity that produced the blob batch data
|
|
460
|
-
// same as using calldata, we only submit spending report if the caller is the origin
|
|
439
|
+
// same as using calldata, we only submit spending report if the caller is the origin and is codeless
|
|
461
440
|
// such that one cannot "double-claim" batch posting refund in the same tx
|
|
462
|
-
|
|
463
|
-
if (msg.sender == tx.origin && !isUsingFeeToken) {
|
|
441
|
+
if (CallerChecker.isCallerCodelessOrigin() && !isUsingFeeToken) {
|
|
464
442
|
submitBatchSpendingReport(dataHash, seqMessageIndex, block.basefee, blobGas);
|
|
465
443
|
}
|
|
466
444
|
}
|
|
467
445
|
|
|
446
|
+
function addSequencerL2BatchFromCalldataImpl(
|
|
447
|
+
uint256 sequenceNumber,
|
|
448
|
+
bytes calldata data,
|
|
449
|
+
uint256 afterDelayedMessagesRead,
|
|
450
|
+
uint256 prevMessageCount,
|
|
451
|
+
uint256 newMessageCount,
|
|
452
|
+
bool isFromCodelessOrigin
|
|
453
|
+
) internal {
|
|
454
|
+
(bytes32 dataHash, IBridge.TimeBounds memory timeBounds) =
|
|
455
|
+
formCallDataHash(data, afterDelayedMessagesRead);
|
|
456
|
+
(uint256 seqMessageIndex, bytes32 beforeAcc, bytes32 delayedAcc, bytes32 afterAcc) =
|
|
457
|
+
addSequencerL2BatchImpl(
|
|
458
|
+
dataHash,
|
|
459
|
+
afterDelayedMessagesRead,
|
|
460
|
+
isFromCodelessOrigin ? data.length : 0,
|
|
461
|
+
prevMessageCount,
|
|
462
|
+
newMessageCount
|
|
463
|
+
);
|
|
464
|
+
|
|
465
|
+
// ~uint256(0) is type(uint256).max, but ever so slightly cheaper
|
|
466
|
+
if (seqMessageIndex != sequenceNumber && sequenceNumber != ~uint256(0)) {
|
|
467
|
+
revert BadSequencerNumber(seqMessageIndex, sequenceNumber);
|
|
468
|
+
}
|
|
469
|
+
|
|
470
|
+
emit SequencerBatchDelivered(
|
|
471
|
+
seqMessageIndex,
|
|
472
|
+
beforeAcc,
|
|
473
|
+
afterAcc,
|
|
474
|
+
delayedAcc,
|
|
475
|
+
totalDelayedMessagesRead,
|
|
476
|
+
timeBounds,
|
|
477
|
+
isFromCodelessOrigin
|
|
478
|
+
? IBridge.BatchDataLocation.TxInput
|
|
479
|
+
: IBridge.BatchDataLocation.SeparateBatchEvent
|
|
480
|
+
);
|
|
481
|
+
|
|
482
|
+
if (!isFromCodelessOrigin) {
|
|
483
|
+
emit SequencerBatchData(seqMessageIndex, data);
|
|
484
|
+
}
|
|
485
|
+
}
|
|
486
|
+
|
|
487
|
+
/// @inheritdoc ISequencerInbox
|
|
468
488
|
function addSequencerL2Batch(
|
|
469
489
|
uint256 sequenceNumber,
|
|
470
490
|
bytes calldata data,
|
|
@@ -474,55 +494,66 @@ contract SequencerInbox is DelegateCallAware, GasRefundEnabled, ISequencerInbox
|
|
|
474
494
|
uint256 newMessageCount
|
|
475
495
|
) external override refundsGas(gasRefunder, IReader4844(address(0))) {
|
|
476
496
|
if (!isBatchPoster[msg.sender] && msg.sender != address(rollup)) revert NotBatchPoster();
|
|
477
|
-
(
|
|
478
|
-
|
|
479
|
-
|
|
497
|
+
if (isDelayProofRequired(afterDelayedMessagesRead)) revert DelayProofRequired();
|
|
498
|
+
|
|
499
|
+
addSequencerL2BatchFromCalldataImpl(
|
|
500
|
+
sequenceNumber, data, afterDelayedMessagesRead, prevMessageCount, newMessageCount, false
|
|
480
501
|
);
|
|
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
|
-
}
|
|
502
|
+
}
|
|
507
503
|
|
|
508
|
-
|
|
509
|
-
|
|
510
|
-
|
|
511
|
-
|
|
512
|
-
|
|
513
|
-
|
|
514
|
-
|
|
515
|
-
|
|
516
|
-
|
|
504
|
+
/// @inheritdoc ISequencerInbox
|
|
505
|
+
function addSequencerL2BatchDelayProof(
|
|
506
|
+
uint256 sequenceNumber,
|
|
507
|
+
bytes calldata data,
|
|
508
|
+
uint256 afterDelayedMessagesRead,
|
|
509
|
+
IGasRefunder gasRefunder,
|
|
510
|
+
uint256 prevMessageCount,
|
|
511
|
+
uint256 newMessageCount,
|
|
512
|
+
DelayProof calldata delayProof
|
|
513
|
+
) external refundsGas(gasRefunder, IReader4844(address(0))) {
|
|
514
|
+
if (!isBatchPoster[msg.sender] && msg.sender != address(rollup)) revert NotBatchPoster();
|
|
515
|
+
if (!isDelayBufferable) revert NotDelayBufferable();
|
|
516
|
+
|
|
517
|
+
delayProofImpl(afterDelayedMessagesRead, delayProof);
|
|
518
|
+
addSequencerL2BatchFromCalldataImpl(
|
|
519
|
+
sequenceNumber, data, afterDelayedMessagesRead, prevMessageCount, newMessageCount, false
|
|
520
|
+
);
|
|
521
|
+
}
|
|
522
|
+
|
|
523
|
+
function delayProofImpl(
|
|
524
|
+
uint256 afterDelayedMessagesRead,
|
|
525
|
+
DelayProof memory delayProof
|
|
526
|
+
) internal {
|
|
527
|
+
// buffer update depends on new delayed messages. if none are read, no buffer update is proccessed
|
|
528
|
+
if (afterDelayedMessagesRead > totalDelayedMessagesRead) {
|
|
529
|
+
if (buffer.isUpdatable()) {
|
|
530
|
+
// delayedAcc of the 1st new delayed message
|
|
531
|
+
bytes32 delayedAcc = bridge.delayedInboxAccs(totalDelayedMessagesRead);
|
|
532
|
+
// validate delayProof against the delayed accumulator
|
|
533
|
+
if (
|
|
534
|
+
!Messages.isValidDelayedAccPreimage(
|
|
535
|
+
delayedAcc, delayProof.beforeDelayedAcc, delayProof.delayedMessage
|
|
536
|
+
)
|
|
537
|
+
) {
|
|
538
|
+
revert InvalidDelayedAccPreimage();
|
|
539
|
+
}
|
|
540
|
+
buffer.update(delayProof.delayedMessage.blockNumber);
|
|
541
|
+
}
|
|
517
542
|
}
|
|
518
|
-
emit SequencerBatchData(seqMessageIndex, data);
|
|
519
543
|
}
|
|
520
544
|
|
|
521
|
-
function
|
|
522
|
-
|
|
523
|
-
|
|
524
|
-
|
|
525
|
-
|
|
545
|
+
function isDelayProofRequired(
|
|
546
|
+
uint256 afterDelayedMessagesRead
|
|
547
|
+
) internal view returns (bool) {
|
|
548
|
+
// if no new delayed messages are read, no buffer updates can be applied, so no proof required
|
|
549
|
+
// if the buffer is synced, the buffer cannot be depleted, so no proof is required
|
|
550
|
+
return isDelayBufferable && afterDelayedMessagesRead > totalDelayedMessagesRead
|
|
551
|
+
&& !buffer.isSynced();
|
|
552
|
+
}
|
|
553
|
+
|
|
554
|
+
function packHeader(
|
|
555
|
+
uint256 afterDelayedMessagesRead
|
|
556
|
+
) internal view returns (bytes memory, IBridge.TimeBounds memory) {
|
|
526
557
|
IBridge.TimeBounds memory timeBounds = getTimeBounds();
|
|
527
558
|
bytes memory header = abi.encodePacked(
|
|
528
559
|
timeBounds.minTimestamp,
|
|
@@ -540,14 +571,11 @@ contract SequencerInbox is DelegateCallAware, GasRefundEnabled, ISequencerInbox
|
|
|
540
571
|
/// @param afterDelayedMessagesRead The delayed messages count read up to
|
|
541
572
|
/// @return The data hash
|
|
542
573
|
/// @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
|
-
);
|
|
574
|
+
function formEmptyDataHash(
|
|
575
|
+
uint256 afterDelayedMessagesRead
|
|
576
|
+
) internal view returns (bytes32, IBridge.TimeBounds memory) {
|
|
577
|
+
(bytes memory header, IBridge.TimeBounds memory timeBounds) =
|
|
578
|
+
packHeader(afterDelayedMessagesRead);
|
|
551
579
|
return (keccak256(header), timeBounds);
|
|
552
580
|
}
|
|
553
581
|
|
|
@@ -556,12 +584,12 @@ contract SequencerInbox is DelegateCallAware, GasRefundEnabled, ISequencerInbox
|
|
|
556
584
|
/// therefore we restrict which flags can be provided as a header in this field
|
|
557
585
|
/// This also safe guards unused flags for future use, as we know they would have been disallowed up until this point
|
|
558
586
|
/// @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;
|
|
587
|
+
function isValidCallDataFlag(
|
|
588
|
+
bytes1 headerByte
|
|
589
|
+
) internal pure returns (bool) {
|
|
590
|
+
return headerByte == BROTLI_MESSAGE_HEADER_FLAG || headerByte == DAS_MESSAGE_HEADER_FLAG
|
|
591
|
+
|| (headerByte == (DAS_MESSAGE_HEADER_FLAG | TREE_DAS_MESSAGE_HEADER_FLAG))
|
|
592
|
+
|| headerByte == ZERO_HEAVY_MESSAGE_HEADER_FLAG;
|
|
565
593
|
}
|
|
566
594
|
|
|
567
595
|
/// @dev Form a hash of the data taken from the calldata
|
|
@@ -569,17 +597,15 @@ contract SequencerInbox is DelegateCallAware, GasRefundEnabled, ISequencerInbox
|
|
|
569
597
|
/// @param afterDelayedMessagesRead The delayed messages count read up to
|
|
570
598
|
/// @return The data hash
|
|
571
599
|
/// @return The timebounds within which the message should be processed
|
|
572
|
-
function formCallDataHash(
|
|
573
|
-
|
|
574
|
-
|
|
575
|
-
|
|
576
|
-
{
|
|
600
|
+
function formCallDataHash(
|
|
601
|
+
bytes calldata data,
|
|
602
|
+
uint256 afterDelayedMessagesRead
|
|
603
|
+
) internal view returns (bytes32, IBridge.TimeBounds memory) {
|
|
577
604
|
uint256 fullDataLen = HEADER_LENGTH + data.length;
|
|
578
605
|
if (fullDataLen > maxDataSize) revert DataTooLarge(fullDataLen, maxDataSize);
|
|
579
606
|
|
|
580
|
-
(bytes memory header, IBridge.TimeBounds memory timeBounds) =
|
|
581
|
-
afterDelayedMessagesRead
|
|
582
|
-
);
|
|
607
|
+
(bytes memory header, IBridge.TimeBounds memory timeBounds) =
|
|
608
|
+
packHeader(afterDelayedMessagesRead);
|
|
583
609
|
|
|
584
610
|
// the batch poster is allowed to submit an empty batch, they can use this to progress the
|
|
585
611
|
// delayed inbox without providing extra batch data
|
|
@@ -606,21 +632,14 @@ contract SequencerInbox is DelegateCallAware, GasRefundEnabled, ISequencerInbox
|
|
|
606
632
|
/// @return The data hash
|
|
607
633
|
/// @return The timebounds within which the message should be processed
|
|
608
634
|
/// @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
|
-
{
|
|
635
|
+
function formBlobDataHash(
|
|
636
|
+
uint256 afterDelayedMessagesRead
|
|
637
|
+
) internal view virtual returns (bytes32, IBridge.TimeBounds memory, uint256) {
|
|
618
638
|
bytes32[] memory dataHashes = reader4844.getDataHashes();
|
|
619
639
|
if (dataHashes.length == 0) revert MissingDataHashes();
|
|
620
640
|
|
|
621
|
-
(bytes memory header, IBridge.TimeBounds memory timeBounds) =
|
|
622
|
-
afterDelayedMessagesRead
|
|
623
|
-
);
|
|
641
|
+
(bytes memory header, IBridge.TimeBounds memory timeBounds) =
|
|
642
|
+
packHeader(afterDelayedMessagesRead);
|
|
624
643
|
|
|
625
644
|
uint256 blobCost = reader4844.getBlobBaseFee() * GAS_PER_BLOB * dataHashes.length;
|
|
626
645
|
return (
|
|
@@ -653,20 +672,12 @@ contract SequencerInbox is DelegateCallAware, GasRefundEnabled, ISequencerInbox
|
|
|
653
672
|
uint256 l1Fees = ArbGasInfo(address(0x6c)).getCurrentTxL1GasFees();
|
|
654
673
|
extraGas += l1Fees / block.basefee;
|
|
655
674
|
}
|
|
656
|
-
|
|
675
|
+
if (extraGas > type(uint64).max) revert ExtraGasNotUint64();
|
|
657
676
|
bytes memory spendingReportMsg = abi.encodePacked(
|
|
658
|
-
block.timestamp,
|
|
659
|
-
batchPoster,
|
|
660
|
-
dataHash,
|
|
661
|
-
seqMessageIndex,
|
|
662
|
-
gasPrice,
|
|
663
|
-
uint64(extraGas)
|
|
677
|
+
block.timestamp, batchPoster, dataHash, seqMessageIndex, gasPrice, uint64(extraGas)
|
|
664
678
|
);
|
|
665
679
|
|
|
666
|
-
uint256 msgNum = bridge.submitBatchSpendingReport(
|
|
667
|
-
batchPoster,
|
|
668
|
-
keccak256(spendingReportMsg)
|
|
669
|
-
);
|
|
680
|
+
uint256 msgNum = bridge.submitBatchSpendingReport(batchPoster, keccak256(spendingReportMsg));
|
|
670
681
|
// this is the same event used by Inbox.sol after including a message to the delayed message accumulator
|
|
671
682
|
emit InboxMessageDelivered(msgNum, spendingReportMsg);
|
|
672
683
|
}
|
|
@@ -679,21 +690,13 @@ contract SequencerInbox is DelegateCallAware, GasRefundEnabled, ISequencerInbox
|
|
|
679
690
|
uint256 newMessageCount
|
|
680
691
|
)
|
|
681
692
|
internal
|
|
682
|
-
returns (
|
|
683
|
-
uint256 seqMessageIndex,
|
|
684
|
-
bytes32 beforeAcc,
|
|
685
|
-
bytes32 delayedAcc,
|
|
686
|
-
bytes32 acc
|
|
687
|
-
)
|
|
693
|
+
returns (uint256 seqMessageIndex, bytes32 beforeAcc, bytes32 delayedAcc, bytes32 acc)
|
|
688
694
|
{
|
|
689
695
|
if (afterDelayedMessagesRead < totalDelayedMessagesRead) revert DelayedBackwards();
|
|
690
696
|
if (afterDelayedMessagesRead > bridge.delayedMessageCount()) revert DelayedTooFar();
|
|
691
697
|
|
|
692
698
|
(seqMessageIndex, beforeAcc, delayedAcc, acc) = bridge.enqueueSequencerMessage(
|
|
693
|
-
dataHash,
|
|
694
|
-
afterDelayedMessagesRead,
|
|
695
|
-
prevMessageCount,
|
|
696
|
-
newMessageCount
|
|
699
|
+
dataHash, afterDelayedMessagesRead, prevMessageCount, newMessageCount
|
|
697
700
|
);
|
|
698
701
|
|
|
699
702
|
totalDelayedMessagesRead = afterDelayedMessagesRead;
|
|
@@ -704,7 +707,9 @@ contract SequencerInbox is DelegateCallAware, GasRefundEnabled, ISequencerInbox
|
|
|
704
707
|
}
|
|
705
708
|
}
|
|
706
709
|
|
|
707
|
-
function inboxAccs(
|
|
710
|
+
function inboxAccs(
|
|
711
|
+
uint256 index
|
|
712
|
+
) external view returns (bytes32) {
|
|
708
713
|
return bridge.sequencerInboxAccs(index);
|
|
709
714
|
}
|
|
710
715
|
|
|
@@ -712,14 +717,55 @@ contract SequencerInbox is DelegateCallAware, GasRefundEnabled, ISequencerInbox
|
|
|
712
717
|
return bridge.sequencerMessageCount();
|
|
713
718
|
}
|
|
714
719
|
|
|
715
|
-
|
|
716
|
-
|
|
717
|
-
|
|
720
|
+
/// @inheritdoc ISequencerInbox
|
|
721
|
+
function forceInclusionDeadline(
|
|
722
|
+
uint64 blockNumber
|
|
723
|
+
) external view returns (uint64) {
|
|
724
|
+
uint64 _delayBlocks = delayBlocks;
|
|
725
|
+
if (isDelayBufferable) {
|
|
726
|
+
uint64 _buffer = buffer.calcPendingBuffer(blockNumber);
|
|
727
|
+
_delayBlocks = delayBufferableBlocks(_buffer);
|
|
728
|
+
}
|
|
729
|
+
return blockNumber + _delayBlocks;
|
|
730
|
+
}
|
|
731
|
+
|
|
732
|
+
/// @notice Calculates the buffer dependent delay blocks
|
|
733
|
+
function delayBufferableBlocks(
|
|
734
|
+
uint64 _buffer
|
|
735
|
+
) internal view returns (uint64) {
|
|
736
|
+
return _buffer < delayBlocks ? _buffer : delayBlocks;
|
|
737
|
+
}
|
|
738
|
+
|
|
739
|
+
function _setBufferConfig(
|
|
740
|
+
BufferConfig memory bufferConfig_
|
|
741
|
+
) internal {
|
|
742
|
+
if (!isDelayBufferable) revert NotDelayBufferable();
|
|
743
|
+
if (!DelayBuffer.isValidBufferConfig(bufferConfig_)) revert BadBufferConfig();
|
|
744
|
+
|
|
745
|
+
if (buffer.bufferBlocks == 0 || buffer.bufferBlocks > bufferConfig_.max) {
|
|
746
|
+
buffer.bufferBlocks = bufferConfig_.max;
|
|
747
|
+
}
|
|
748
|
+
if (buffer.bufferBlocks < bufferConfig_.threshold) {
|
|
749
|
+
buffer.bufferBlocks = bufferConfig_.threshold;
|
|
750
|
+
}
|
|
751
|
+
buffer.max = bufferConfig_.max;
|
|
752
|
+
buffer.threshold = bufferConfig_.threshold;
|
|
753
|
+
buffer.replenishRateInBasis = bufferConfig_.replenishRateInBasis;
|
|
754
|
+
|
|
755
|
+
// if all delayed messages are read, the buffer is considered synced
|
|
756
|
+
if (bridge.delayedMessageCount() == totalDelayedMessagesRead) {
|
|
757
|
+
buffer.update(uint64(block.number));
|
|
758
|
+
}
|
|
759
|
+
}
|
|
760
|
+
|
|
761
|
+
function _setMaxTimeVariation(
|
|
762
|
+
ISequencerInbox.MaxTimeVariation memory maxTimeVariation_
|
|
763
|
+
) internal {
|
|
718
764
|
if (
|
|
719
|
-
maxTimeVariation_.delayBlocks > type(uint64).max
|
|
720
|
-
|
|
721
|
-
|
|
722
|
-
|
|
765
|
+
maxTimeVariation_.delayBlocks > type(uint64).max
|
|
766
|
+
|| maxTimeVariation_.futureBlocks > type(uint64).max
|
|
767
|
+
|| maxTimeVariation_.delaySeconds > type(uint64).max
|
|
768
|
+
|| maxTimeVariation_.futureSeconds > type(uint64).max
|
|
723
769
|
) {
|
|
724
770
|
revert BadMaxTimeVariation();
|
|
725
771
|
}
|
|
@@ -730,44 +776,47 @@ contract SequencerInbox is DelegateCallAware, GasRefundEnabled, ISequencerInbox
|
|
|
730
776
|
}
|
|
731
777
|
|
|
732
778
|
/// @inheritdoc ISequencerInbox
|
|
733
|
-
function setMaxTimeVariation(
|
|
734
|
-
|
|
735
|
-
|
|
736
|
-
{
|
|
779
|
+
function setMaxTimeVariation(
|
|
780
|
+
ISequencerInbox.MaxTimeVariation memory maxTimeVariation_
|
|
781
|
+
) external onlyRollupOwner {
|
|
737
782
|
_setMaxTimeVariation(maxTimeVariation_);
|
|
783
|
+
emit MaxTimeVariationSet(maxTimeVariation_);
|
|
738
784
|
emit OwnerFunctionCalled(0);
|
|
739
785
|
}
|
|
740
786
|
|
|
741
787
|
/// @inheritdoc ISequencerInbox
|
|
742
|
-
function setIsBatchPoster(
|
|
743
|
-
|
|
744
|
-
|
|
745
|
-
{
|
|
788
|
+
function setIsBatchPoster(
|
|
789
|
+
address addr,
|
|
790
|
+
bool isBatchPoster_
|
|
791
|
+
) external onlyRollupOwnerOrBatchPosterManager {
|
|
746
792
|
isBatchPoster[addr] = isBatchPoster_;
|
|
793
|
+
emit BatchPosterSet(addr, isBatchPoster_);
|
|
747
794
|
emit OwnerFunctionCalled(1);
|
|
748
795
|
}
|
|
749
796
|
|
|
750
797
|
/// @inheritdoc ISequencerInbox
|
|
751
|
-
function setValidKeyset(
|
|
798
|
+
function setValidKeyset(
|
|
799
|
+
bytes calldata keysetBytes
|
|
800
|
+
) external onlyRollupOwner {
|
|
752
801
|
uint256 ksWord = uint256(keccak256(bytes.concat(hex"fe", keccak256(keysetBytes))));
|
|
753
802
|
bytes32 ksHash = bytes32(ksWord ^ (1 << 255));
|
|
754
|
-
|
|
803
|
+
if (keysetBytes.length >= 64 * 1024) revert KeysetTooLarge();
|
|
755
804
|
|
|
756
805
|
if (dasKeySetInfo[ksHash].isValidKeyset) revert AlreadyValidDASKeyset(ksHash);
|
|
757
806
|
uint256 creationBlock = block.number;
|
|
758
807
|
if (hostChainIsArbitrum) {
|
|
759
808
|
creationBlock = ArbSys(address(100)).arbBlockNumber();
|
|
760
809
|
}
|
|
761
|
-
dasKeySetInfo[ksHash] =
|
|
762
|
-
isValidKeyset: true,
|
|
763
|
-
creationBlock: uint64(creationBlock)
|
|
764
|
-
});
|
|
810
|
+
dasKeySetInfo[ksHash] =
|
|
811
|
+
DasKeySetInfo({isValidKeyset: true, creationBlock: uint64(creationBlock)});
|
|
765
812
|
emit SetValidKeyset(ksHash, keysetBytes);
|
|
766
813
|
emit OwnerFunctionCalled(2);
|
|
767
814
|
}
|
|
768
815
|
|
|
769
816
|
/// @inheritdoc ISequencerInbox
|
|
770
|
-
function invalidateKeysetHash(
|
|
817
|
+
function invalidateKeysetHash(
|
|
818
|
+
bytes32 ksHash
|
|
819
|
+
) external onlyRollupOwner {
|
|
771
820
|
if (!dasKeySetInfo[ksHash].isValidKeyset) revert NoSuchKeyset(ksHash);
|
|
772
821
|
// we don't delete the block creation value since its used to fetch the SetValidKeyset
|
|
773
822
|
// event efficiently. The event provides the hash preimage of the key.
|
|
@@ -778,26 +827,41 @@ contract SequencerInbox is DelegateCallAware, GasRefundEnabled, ISequencerInbox
|
|
|
778
827
|
}
|
|
779
828
|
|
|
780
829
|
/// @inheritdoc ISequencerInbox
|
|
781
|
-
function setIsSequencer(
|
|
782
|
-
|
|
783
|
-
|
|
784
|
-
{
|
|
830
|
+
function setIsSequencer(
|
|
831
|
+
address addr,
|
|
832
|
+
bool isSequencer_
|
|
833
|
+
) external onlyRollupOwnerOrBatchPosterManager {
|
|
785
834
|
isSequencer[addr] = isSequencer_;
|
|
786
|
-
emit
|
|
835
|
+
emit SequencerSet(addr, isSequencer_);
|
|
836
|
+
emit OwnerFunctionCalled(4);
|
|
787
837
|
}
|
|
788
838
|
|
|
789
839
|
/// @inheritdoc ISequencerInbox
|
|
790
|
-
function setBatchPosterManager(
|
|
840
|
+
function setBatchPosterManager(
|
|
841
|
+
address newBatchPosterManager
|
|
842
|
+
) external onlyRollupOwner {
|
|
791
843
|
batchPosterManager = newBatchPosterManager;
|
|
844
|
+
emit BatchPosterManagerSet(newBatchPosterManager);
|
|
792
845
|
emit OwnerFunctionCalled(5);
|
|
793
846
|
}
|
|
794
847
|
|
|
795
|
-
function
|
|
848
|
+
function setBufferConfig(
|
|
849
|
+
BufferConfig memory bufferConfig_
|
|
850
|
+
) external onlyRollupOwner {
|
|
851
|
+
_setBufferConfig(bufferConfig_);
|
|
852
|
+
emit BufferConfigSet(bufferConfig_);
|
|
853
|
+
}
|
|
854
|
+
|
|
855
|
+
function isValidKeysetHash(
|
|
856
|
+
bytes32 ksHash
|
|
857
|
+
) external view returns (bool) {
|
|
796
858
|
return dasKeySetInfo[ksHash].isValidKeyset;
|
|
797
859
|
}
|
|
798
860
|
|
|
799
861
|
/// @inheritdoc ISequencerInbox
|
|
800
|
-
function getKeysetCreationBlock(
|
|
862
|
+
function getKeysetCreationBlock(
|
|
863
|
+
bytes32 ksHash
|
|
864
|
+
) external view returns (uint256) {
|
|
801
865
|
DasKeySetInfo memory ksInfo = dasKeySetInfo[ksHash];
|
|
802
866
|
if (ksInfo.creationBlock == 0) revert NoSuchKeyset(ksHash);
|
|
803
867
|
return uint256(ksInfo.creationBlock);
|