@arbitrum/nitro-contracts 2.0.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 -494
- package/build/contracts/src/rollup/RollupAdminLogic.sol/RollupAdminLogic.dbg.json +1 -1
- package/build/contracts/src/rollup/RollupAdminLogic.sol/RollupAdminLogic.json +806 -435
- package/build/contracts/src/rollup/RollupCore.sol/RollupCore.dbg.json +1 -1
- package/build/contracts/src/rollup/RollupCore.sol/RollupCore.json +323 -235
- package/build/contracts/src/rollup/RollupCreator.sol/RollupCreator.dbg.json +1 -1
- package/build/contracts/src/rollup/RollupCreator.sol/RollupCreator.json +98 -36
- package/build/contracts/src/rollup/RollupEventInbox.sol/RollupEventInbox.dbg.json +1 -1
- package/build/contracts/src/rollup/RollupEventInbox.sol/RollupEventInbox.json +2 -2
- package/build/contracts/src/rollup/RollupLib.sol/RollupLib.dbg.json +1 -1
- package/build/contracts/src/rollup/RollupLib.sol/RollupLib.json +2 -2
- package/build/contracts/src/rollup/RollupProxy.sol/RollupProxy.dbg.json +1 -1
- package/build/contracts/src/rollup/RollupProxy.sol/RollupProxy.json +97 -16
- package/build/contracts/src/rollup/RollupUserLogic.sol/RollupUserLogic.dbg.json +1 -1
- package/build/contracts/src/rollup/RollupUserLogic.sol/RollupUserLogic.json +924 -530
- package/build/contracts/src/rollup/ValidatorWallet.sol/ValidatorWallet.dbg.json +1 -1
- package/build/contracts/src/rollup/ValidatorWallet.sol/ValidatorWallet.json +15 -43
- package/build/contracts/src/rollup/ValidatorWalletCreator.sol/ValidatorWalletCreator.dbg.json +1 -1
- package/build/contracts/src/rollup/ValidatorWalletCreator.sol/ValidatorWalletCreator.json +2 -2
- package/build/contracts/src/state/Deserialize.sol/Deserialize.dbg.json +1 -1
- package/build/contracts/src/state/Deserialize.sol/Deserialize.json +2 -2
- package/build/contracts/src/state/GlobalState.sol/GlobalStateLib.dbg.json +1 -1
- package/build/contracts/src/state/GlobalState.sol/GlobalStateLib.json +2 -2
- package/build/contracts/src/state/Instructions.sol/Instructions.dbg.json +1 -1
- package/build/contracts/src/state/Instructions.sol/Instructions.json +2 -2
- package/build/contracts/src/state/Machine.sol/MachineLib.dbg.json +1 -1
- package/build/contracts/src/state/Machine.sol/MachineLib.json +2 -2
- package/build/contracts/src/state/MerkleProof.sol/MerkleProofLib.dbg.json +1 -1
- package/build/contracts/src/state/MerkleProof.sol/MerkleProofLib.json +2 -2
- package/build/contracts/src/state/Module.sol/ModuleLib.dbg.json +1 -1
- package/build/contracts/src/state/Module.sol/ModuleLib.json +2 -2
- package/build/contracts/src/state/ModuleMemory.sol/ModuleMemoryLib.dbg.json +1 -1
- package/build/contracts/src/state/ModuleMemory.sol/ModuleMemoryLib.json +2 -2
- package/build/contracts/src/state/ModuleMemoryCompact.sol/ModuleMemoryCompactLib.dbg.json +1 -1
- package/build/contracts/src/state/ModuleMemoryCompact.sol/ModuleMemoryCompactLib.json +2 -2
- package/build/contracts/src/state/MultiStack.sol/MultiStackLib.dbg.json +1 -1
- package/build/contracts/src/state/MultiStack.sol/MultiStackLib.json +2 -2
- package/build/contracts/src/state/PcArray.sol/PcArrayLib.dbg.json +1 -1
- package/build/contracts/src/state/PcArray.sol/PcArrayLib.json +2 -2
- package/build/contracts/src/state/StackFrame.sol/StackFrameLib.dbg.json +1 -1
- package/build/contracts/src/state/StackFrame.sol/StackFrameLib.json +2 -2
- package/build/contracts/src/state/Value.sol/ValueLib.dbg.json +1 -1
- package/build/contracts/src/state/Value.sol/ValueLib.json +2 -2
- package/build/contracts/src/state/ValueArray.sol/ValueArrayLib.dbg.json +1 -1
- package/build/contracts/src/state/ValueArray.sol/ValueArrayLib.json +2 -2
- package/build/contracts/src/state/ValueStack.sol/ValueStackLib.dbg.json +1 -1
- package/build/contracts/src/state/ValueStack.sol/ValueStackLib.json +2 -2
- package/build/contracts/src/test-helpers/BridgeTester.sol/BridgeTester.dbg.json +1 -1
- package/build/contracts/src/test-helpers/BridgeTester.sol/BridgeTester.json +15 -2
- package/build/contracts/src/test-helpers/CryptographyPrimitivesTester.sol/CryptographyPrimitivesTester.dbg.json +1 -1
- package/build/contracts/src/test-helpers/CryptographyPrimitivesTester.sol/CryptographyPrimitivesTester.json +2 -2
- package/build/contracts/src/test-helpers/EthVault.sol/EthVault.dbg.json +1 -1
- package/build/contracts/src/test-helpers/EthVault.sol/EthVault.json +2 -2
- package/build/contracts/src/test-helpers/MessageTester.sol/MessageTester.dbg.json +1 -1
- package/build/contracts/src/test-helpers/MessageTester.sol/MessageTester.json +2 -2
- package/build/contracts/src/test-helpers/OutboxWithoutOptTester.sol/OutboxWithoutOptTester.dbg.json +1 -1
- package/build/contracts/src/test-helpers/OutboxWithoutOptTester.sol/OutboxWithoutOptTester.json +2 -2
- package/build/contracts/src/test-helpers/RollupMock.sol/RollupMock.dbg.json +1 -1
- package/build/contracts/src/test-helpers/RollupMock.sol/RollupMock.json +2 -15
- package/build/contracts/src/test-helpers/TestToken.sol/TestToken.dbg.json +1 -1
- package/build/contracts/src/test-helpers/TestToken.sol/TestToken.json +2 -2
- package/build/contracts/src/test-helpers/ValueArrayTester.sol/ValueArrayTester.dbg.json +1 -1
- package/build/contracts/src/test-helpers/ValueArrayTester.sol/ValueArrayTester.json +2 -2
- package/out/yul/Reader4844.yul/Reader4844.json +1 -1
- package/package.json +16 -6
- package/src/assertionStakingPool/AbsBoldStakingPool.sol +66 -0
- package/src/assertionStakingPool/AssertionStakingPool.sol +70 -0
- package/src/assertionStakingPool/AssertionStakingPoolCreator.sol +35 -0
- package/src/assertionStakingPool/EdgeStakingPool.sol +57 -0
- package/src/assertionStakingPool/EdgeStakingPoolCreator.sol +34 -0
- package/src/assertionStakingPool/StakingPoolCreatorUtils.sol +25 -0
- package/src/assertionStakingPool/interfaces/IAbsBoldStakingPool.sol +41 -0
- package/src/assertionStakingPool/interfaces/IAssertionStakingPool.sol +36 -0
- package/src/assertionStakingPool/interfaces/IAssertionStakingPoolCreator.sol +31 -0
- package/src/assertionStakingPool/interfaces/IEdgeStakingPool.sol +27 -0
- package/src/assertionStakingPool/interfaces/IEdgeStakingPoolCreator.sol +28 -0
- package/src/bridge/AbsBridge.sol +38 -48
- package/src/bridge/AbsInbox.sol +88 -97
- package/src/bridge/AbsOutbox.sol +23 -37
- package/src/bridge/Bridge.sol +6 -4
- package/src/bridge/DelayBuffer.sol +123 -0
- package/src/bridge/DelayBufferTypes.sol +38 -0
- package/src/bridge/ERC20Bridge.sol +8 -4
- package/src/bridge/ERC20Inbox.sol +46 -53
- package/src/bridge/ERC20Outbox.sol +7 -3
- package/src/bridge/GasRefunder.sol +38 -24
- package/src/bridge/IBridge.sol +30 -21
- package/src/bridge/IERC20Bridge.sol +1 -1
- package/src/bridge/IERC20Inbox.sol +4 -2
- package/src/bridge/IEthBridge.sol +4 -2
- package/src/bridge/IInbox.sol +4 -2
- package/src/bridge/IInboxBase.sol +17 -13
- package/src/bridge/IOutbox.sol +13 -8
- package/src/bridge/ISequencerInbox.sol +118 -13
- package/src/bridge/Inbox.sol +131 -151
- package/src/bridge/Messages.sol +48 -18
- package/src/bridge/Outbox.sol +6 -2
- package/src/bridge/SequencerInbox.sol +339 -274
- package/src/chain/CacheManager.sol +49 -18
- package/src/challengeV2/EdgeChallengeManager.sol +783 -0
- package/src/challengeV2/IAssertionChain.sol +39 -0
- package/src/challengeV2/libraries/ArrayUtilsLib.sol +61 -0
- package/src/challengeV2/libraries/ChallengeEdgeLib.sol +333 -0
- package/src/challengeV2/libraries/ChallengeErrors.sol +108 -0
- package/src/challengeV2/libraries/EdgeChallengeManagerLib.sol +930 -0
- package/src/challengeV2/libraries/Enums.sol +26 -0
- package/src/challengeV2/libraries/MerkleTreeAccumulatorLib.sol +390 -0
- package/src/challengeV2/libraries/UintUtilsLib.sol +74 -0
- package/src/libraries/AddressAliasHelper.sol +6 -2
- package/src/libraries/AdminFallbackProxy.sol +8 -4
- package/src/libraries/ArbitrumChecker.sol +3 -4
- package/src/libraries/CryptographyPrimitives.sol +39 -46
- package/src/libraries/DecimalsConverterHelper.sol +2 -4
- package/src/libraries/DoubleLogicUUPSUpgradeable.sol +10 -7
- package/src/libraries/Error.sol +18 -12
- package/src/libraries/GasRefundEnabled.sol +3 -4
- package/src/libraries/MerkleLib.sol +6 -5
- package/src/libraries/UUPSNotUpgradeable.sol +2 -4
- package/src/mocks/BridgeStub.sol +50 -48
- package/src/mocks/BridgeUnproxied.sol +2 -0
- package/src/mocks/InboxStub.sol +22 -17
- package/src/mocks/MerkleTreeAccess.sol +72 -0
- package/src/mocks/MockRollupEventInbox.sol +59 -0
- package/src/mocks/MultiCallTest.sol +3 -1
- package/src/mocks/PendingBlkTimeAndNrAdvanceCheck.sol +3 -1
- package/src/mocks/Program.sol +9 -7
- package/src/mocks/SequencerInboxBlobMock.sol +38 -0
- package/src/mocks/SequencerInboxStub.sol +9 -12
- package/src/mocks/Simple.sol +13 -25
- package/src/mocks/SimpleCacheManager.sol +10 -3
- package/src/mocks/SimpleOneStepProofEntry.sol +60 -0
- package/src/mocks/SimpleProxy.sol +3 -1
- package/src/mocks/TestWETH9.sol +30 -0
- package/src/mocks/UpgradeExecutorMock.sol +10 -17
- package/src/node-interface/NodeInterface.sol +23 -22
- package/src/node-interface/NodeInterfaceDebug.sol +5 -3
- package/src/osp/HashProofHelper.sol +9 -10
- package/src/osp/IOneStepProofEntry.sol +14 -9
- package/src/osp/IOneStepProver.sol +1 -0
- package/src/osp/OneStepProofEntry.sol +63 -54
- package/src/osp/OneStepProver0.sol +14 -27
- package/src/osp/OneStepProverHostIo.sol +31 -58
- package/src/osp/OneStepProverMath.sol +15 -23
- package/src/osp/OneStepProverMemory.sol +9 -23
- package/src/precompiles/ArbAddressTable.sol +19 -9
- package/src/precompiles/ArbAggregator.sol +12 -4
- package/src/precompiles/ArbBLS.sol +1 -3
- package/src/precompiles/ArbDebug.sol +5 -11
- package/src/precompiles/ArbFunctionTable.sol +7 -10
- package/src/precompiles/ArbGasInfo.sol +9 -43
- package/src/precompiles/ArbInfo.sol +6 -2
- package/src/precompiles/ArbOwner.sol +101 -34
- package/src/precompiles/ArbOwnerPublic.sol +6 -2
- package/src/precompiles/ArbRetryableTx.sol +15 -5
- package/src/precompiles/ArbStatistics.sol +1 -8
- package/src/precompiles/ArbSys.sol +16 -18
- package/src/precompiles/ArbWasm.sol +24 -14
- package/src/precompiles/ArbWasmCache.sol +15 -5
- package/src/precompiles/ArbosTest.sol +3 -1
- package/src/rollup/AbsRollupEventInbox.sol +15 -16
- package/src/rollup/Assertion.sol +100 -0
- package/src/rollup/AssertionState.sol +29 -0
- package/src/rollup/BOLDUpgradeAction.sol +631 -0
- package/src/rollup/BridgeCreator.sol +42 -15
- package/src/rollup/Config.sol +15 -7
- package/src/rollup/DeployHelper.sol +12 -31
- package/src/rollup/ERC20RollupEventInbox.sol +8 -9
- package/src/rollup/FactoryDeployerHelper.sol +8 -10
- package/src/rollup/IRollupAdmin.sol +127 -45
- package/src/rollup/IRollupCore.sol +64 -84
- package/src/rollup/IRollupEventInbox.sol +3 -1
- package/src/rollup/IRollupLogic.sol +36 -69
- package/src/rollup/RollupAdminLogic.sol +224 -203
- package/src/rollup/RollupCore.sol +407 -428
- package/src/rollup/RollupCreator.sol +88 -75
- package/src/rollup/RollupEventInbox.sol +7 -7
- package/src/rollup/RollupLib.sol +50 -86
- package/src/rollup/RollupProxy.sol +8 -12
- package/src/rollup/RollupUserLogic.sol +279 -642
- package/src/rollup/ValidatorUtils.sol +0 -242
- package/src/rollup/ValidatorWallet.sol +22 -38
- package/src/rollup/ValidatorWalletCreator.sol +8 -8
- package/src/state/Deserialize.sol +74 -96
- package/src/state/GlobalState.sol +74 -20
- package/src/state/Instructions.sol +4 -3
- package/src/state/Machine.sol +18 -19
- package/src/state/Module.sol +14 -13
- package/src/state/ModuleMemory.sol +6 -25
- package/src/state/ModuleMemoryCompact.sol +3 -1
- package/src/state/MultiStack.sol +16 -20
- package/src/state/PcArray.sol +7 -7
- package/src/state/StackFrame.sol +21 -14
- package/src/state/Value.sol +18 -6
- package/src/state/ValueArray.sol +7 -7
- package/src/state/ValueStack.sol +9 -3
- package/src/test-helpers/BridgeTester.sol +32 -42
- package/src/test-helpers/CryptographyPrimitivesTester.sol +12 -13
- package/src/test-helpers/EthVault.sol +4 -2
- package/src/test-helpers/InterfaceCompatibilityTester.sol +1 -1
- package/src/test-helpers/MessageTester.sol +3 -10
- package/src/test-helpers/OutboxWithoutOptTester.sol +12 -19
- package/src/test-helpers/RollupMock.sol +3 -7
- package/src/test-helpers/TestToken.sol +4 -2
- package/build/contracts/@openzeppelin/contracts-upgradeable/token/ERC20/IERC20Upgradeable.sol/IERC20Upgradeable.dbg.json +0 -4
- package/build/contracts/src/challenge/ChallengeLib.sol/ChallengeLib.dbg.json +0 -4
- package/build/contracts/src/challenge/ChallengeManager.sol/ChallengeManager.dbg.json +0 -4
- package/build/contracts/src/challenge/ChallengeManager.sol/ChallengeManager.json +0 -746
- package/build/contracts/src/challenge/IChallengeManager.sol/IChallengeManager.dbg.json +0 -4
- package/build/contracts/src/challenge/IChallengeManager.sol/IChallengeManager.json +0 -441
- package/build/contracts/src/challenge/IChallengeResultReceiver.sol/IChallengeResultReceiver.dbg.json +0 -4
- package/build/contracts/src/challenge/IChallengeResultReceiver.sol/IChallengeResultReceiver.json +0 -34
- package/build/contracts/src/mocks/MockResultReceiver.sol/MockResultReceiver.dbg.json +0 -4
- package/build/contracts/src/mocks/MockResultReceiver.sol/MockResultReceiver.json +0 -188
- package/build/contracts/src/mocks/SingleExecutionChallenge.sol/SingleExecutionChallenge.dbg.json +0 -4
- package/build/contracts/src/mocks/SingleExecutionChallenge.sol/SingleExecutionChallenge.json +0 -797
- package/build/contracts/src/mocks/TimedOutChallengeManager.sol/TimedOutChallengeManager.dbg.json +0 -4
- package/build/contracts/src/mocks/TimedOutChallengeManager.sol/TimedOutChallengeManager.json +0 -746
- package/build/contracts/src/rollup/IRollupLogic.sol/IRollupUserAbs.dbg.json +0 -4
- package/build/contracts/src/rollup/IRollupLogic.sol/IRollupUserAbs.json +0 -1327
- package/build/contracts/src/rollup/IRollupLogic.sol/IRollupUserERC20.dbg.json +0 -4
- package/build/contracts/src/rollup/IRollupLogic.sol/IRollupUserERC20.json +0 -1461
- package/build/contracts/src/rollup/Node.sol/NodeLib.dbg.json +0 -4
- package/build/contracts/src/rollup/RollupUserLogic.sol/AbsRollupUserLogic.dbg.json +0 -4
- package/build/contracts/src/rollup/RollupUserLogic.sol/AbsRollupUserLogic.json +0 -1609
- package/build/contracts/src/rollup/RollupUserLogic.sol/ERC20RollupUserLogic.dbg.json +0 -4
- package/build/contracts/src/rollup/RollupUserLogic.sol/ERC20RollupUserLogic.json +0 -1743
- package/build/contracts/src/rollup/ValidatorUtils.sol/ValidatorUtils.dbg.json +0 -4
- package/build/contracts/src/rollup/ValidatorUtils.sol/ValidatorUtils.json +0 -379
- package/src/challenge/ChallengeLib.sol +0 -88
- package/src/challenge/ChallengeManager.sol +0 -375
- package/src/challenge/IChallengeManager.sol +0 -86
- package/src/challenge/IChallengeResultReceiver.sol +0 -13
- package/src/mocks/MockResultReceiver.sol +0 -59
- package/src/mocks/SingleExecutionChallenge.sol +0 -41
- package/src/mocks/TimedOutChallengeManager.sol +0 -13
- package/src/rollup/Node.sol +0 -113
|
@@ -0,0 +1,631 @@
|
|
|
1
|
+
// Copyright 2021-2022, Offchain Labs, Inc.
|
|
2
|
+
// For license information, see https://github.com/OffchainLabs/nitro-contracts/blob/main/LICENSE
|
|
3
|
+
// SPDX-License-Identifier: BUSL-1.1
|
|
4
|
+
|
|
5
|
+
pragma solidity ^0.8.0;
|
|
6
|
+
|
|
7
|
+
import "@openzeppelin/contracts-upgradeable/utils/Create2Upgradeable.sol";
|
|
8
|
+
import "@openzeppelin/contracts/proxy/transparent/ProxyAdmin.sol";
|
|
9
|
+
import "./RollupProxy.sol";
|
|
10
|
+
import "./RollupLib.sol";
|
|
11
|
+
import "./RollupAdminLogic.sol";
|
|
12
|
+
|
|
13
|
+
struct Node {
|
|
14
|
+
// Hash of the state of the chain as of this node
|
|
15
|
+
bytes32 stateHash;
|
|
16
|
+
// Hash of the data that can be challenged
|
|
17
|
+
bytes32 challengeHash;
|
|
18
|
+
// Hash of the data that will be committed if this node is confirmed
|
|
19
|
+
bytes32 confirmData;
|
|
20
|
+
// Index of the node previous to this one
|
|
21
|
+
uint64 prevNum;
|
|
22
|
+
// Deadline at which this node can be confirmed
|
|
23
|
+
uint64 deadlineBlock;
|
|
24
|
+
// Deadline at which a child of this node can be confirmed
|
|
25
|
+
uint64 noChildConfirmedBeforeBlock;
|
|
26
|
+
// Number of stakers staked on this node. This includes real stakers and zombies
|
|
27
|
+
uint64 stakerCount;
|
|
28
|
+
// Number of stakers staked on a child node. This includes real stakers and zombies
|
|
29
|
+
uint64 childStakerCount;
|
|
30
|
+
// This value starts at zero and is set to a value when the first child is created. After that it is constant until the node is destroyed or the owner destroys pending nodes
|
|
31
|
+
uint64 firstChildBlock;
|
|
32
|
+
// The number of the latest child of this node to be created
|
|
33
|
+
uint64 latestChildNumber;
|
|
34
|
+
// The block number when this node was created
|
|
35
|
+
uint64 createdAtBlock;
|
|
36
|
+
// A hash of all the data needed to determine this node's validity, to protect against reorgs
|
|
37
|
+
bytes32 nodeHash;
|
|
38
|
+
}
|
|
39
|
+
|
|
40
|
+
struct OldStaker {
|
|
41
|
+
uint256 amountStaked;
|
|
42
|
+
uint64 index;
|
|
43
|
+
uint64 latestStakedNode;
|
|
44
|
+
// currentChallenge is 0 if staker is not in a challenge
|
|
45
|
+
uint64 currentChallenge; // 1. cannot have current challenge
|
|
46
|
+
bool isStaked; // 2. must be staked
|
|
47
|
+
}
|
|
48
|
+
|
|
49
|
+
interface IOldRollup {
|
|
50
|
+
struct Assertion {
|
|
51
|
+
ExecutionState beforeState;
|
|
52
|
+
ExecutionState afterState;
|
|
53
|
+
uint64 numBlocks;
|
|
54
|
+
}
|
|
55
|
+
|
|
56
|
+
event NodeCreated(
|
|
57
|
+
uint64 indexed nodeNum,
|
|
58
|
+
bytes32 indexed parentNodeHash,
|
|
59
|
+
bytes32 indexed nodeHash,
|
|
60
|
+
bytes32 executionHash,
|
|
61
|
+
Assertion assertion,
|
|
62
|
+
bytes32 afterInboxBatchAcc,
|
|
63
|
+
bytes32 wasmModuleRoot,
|
|
64
|
+
uint256 inboxMaxCount
|
|
65
|
+
);
|
|
66
|
+
|
|
67
|
+
function wasmModuleRoot() external view returns (bytes32);
|
|
68
|
+
function latestConfirmed() external view returns (uint64);
|
|
69
|
+
function getNode(
|
|
70
|
+
uint64 nodeNum
|
|
71
|
+
) external view returns (Node memory);
|
|
72
|
+
function getStakerAddress(
|
|
73
|
+
uint64 stakerNum
|
|
74
|
+
) external view returns (address);
|
|
75
|
+
function stakerCount() external view returns (uint64);
|
|
76
|
+
function getStaker(
|
|
77
|
+
address staker
|
|
78
|
+
) external view returns (OldStaker memory);
|
|
79
|
+
function isValidator(
|
|
80
|
+
address validator
|
|
81
|
+
) external view returns (bool);
|
|
82
|
+
function validatorWalletCreator() external view returns (address);
|
|
83
|
+
function anyTrustFastConfirmer() external view returns (address);
|
|
84
|
+
}
|
|
85
|
+
|
|
86
|
+
interface IOldRollupAdmin {
|
|
87
|
+
function forceRefundStaker(
|
|
88
|
+
address[] memory stacker
|
|
89
|
+
) external;
|
|
90
|
+
function pause() external;
|
|
91
|
+
function resume() external;
|
|
92
|
+
}
|
|
93
|
+
|
|
94
|
+
interface ISeqInboxPostUpgradeInit {
|
|
95
|
+
function postUpgradeInit(
|
|
96
|
+
BufferConfig memory bufferConfig_
|
|
97
|
+
) external;
|
|
98
|
+
}
|
|
99
|
+
|
|
100
|
+
/// @title Provides pre-images to a state hash
|
|
101
|
+
/// @notice We need to use the execution state of the latest confirmed node as the genesis
|
|
102
|
+
/// in the new rollup. However the this full state is not available on chain, only
|
|
103
|
+
/// the state hash is, which commits to this. This lookup contract should be deployed
|
|
104
|
+
/// before the upgrade, and just before the upgrade is executed the pre-image of the
|
|
105
|
+
/// latest confirmed state hash should be populated here. The upgrade contact can then
|
|
106
|
+
/// fetch this information and verify it before using it.
|
|
107
|
+
contract StateHashPreImageLookup {
|
|
108
|
+
using GlobalStateLib for GlobalState;
|
|
109
|
+
|
|
110
|
+
event HashSet(bytes32 h, ExecutionState executionState, uint256 inboxMaxCount);
|
|
111
|
+
|
|
112
|
+
mapping(bytes32 => bytes) internal preImages;
|
|
113
|
+
|
|
114
|
+
function stateHash(
|
|
115
|
+
ExecutionState calldata executionState,
|
|
116
|
+
uint256 inboxMaxCount
|
|
117
|
+
) public pure returns (bytes32) {
|
|
118
|
+
return keccak256(
|
|
119
|
+
abi.encodePacked(
|
|
120
|
+
executionState.globalState.hash(), inboxMaxCount, executionState.machineStatus
|
|
121
|
+
)
|
|
122
|
+
);
|
|
123
|
+
}
|
|
124
|
+
|
|
125
|
+
function set(bytes32 h, ExecutionState calldata executionState, uint256 inboxMaxCount) public {
|
|
126
|
+
require(h == stateHash(executionState, inboxMaxCount), "Invalid hash");
|
|
127
|
+
preImages[h] = abi.encode(executionState, inboxMaxCount);
|
|
128
|
+
emit HashSet(h, executionState, inboxMaxCount);
|
|
129
|
+
}
|
|
130
|
+
|
|
131
|
+
function get(
|
|
132
|
+
bytes32 h
|
|
133
|
+
) public view returns (ExecutionState memory executionState, uint256 inboxMaxCount) {
|
|
134
|
+
(executionState, inboxMaxCount) = abi.decode(preImages[h], (ExecutionState, uint256));
|
|
135
|
+
require(inboxMaxCount != 0, "Hash not yet set");
|
|
136
|
+
}
|
|
137
|
+
}
|
|
138
|
+
|
|
139
|
+
/// @title Forwards calls to the rollup so that they can be interpreted as a user
|
|
140
|
+
/// @notice In the upgrade executor we need to access functions on the rollup
|
|
141
|
+
/// but since the upgrade executor is the admin it will always be forwarded to the
|
|
142
|
+
/// rollup admin logic. We create a separate forwarder contract here that just relays
|
|
143
|
+
/// information, since it's not the admin it can access rollup user logic.
|
|
144
|
+
contract RollupReader is IOldRollup {
|
|
145
|
+
IOldRollup public immutable rollup;
|
|
146
|
+
|
|
147
|
+
constructor(
|
|
148
|
+
IOldRollup _rollup
|
|
149
|
+
) {
|
|
150
|
+
rollup = _rollup;
|
|
151
|
+
}
|
|
152
|
+
|
|
153
|
+
function wasmModuleRoot() external view returns (bytes32) {
|
|
154
|
+
return rollup.wasmModuleRoot();
|
|
155
|
+
}
|
|
156
|
+
|
|
157
|
+
function latestConfirmed() external view returns (uint64) {
|
|
158
|
+
return rollup.latestConfirmed();
|
|
159
|
+
}
|
|
160
|
+
|
|
161
|
+
function getNode(
|
|
162
|
+
uint64 nodeNum
|
|
163
|
+
) external view returns (Node memory) {
|
|
164
|
+
return rollup.getNode(nodeNum);
|
|
165
|
+
}
|
|
166
|
+
|
|
167
|
+
function getStakerAddress(
|
|
168
|
+
uint64 stakerNum
|
|
169
|
+
) external view returns (address) {
|
|
170
|
+
return rollup.getStakerAddress(stakerNum);
|
|
171
|
+
}
|
|
172
|
+
|
|
173
|
+
function stakerCount() external view returns (uint64) {
|
|
174
|
+
return rollup.stakerCount();
|
|
175
|
+
}
|
|
176
|
+
|
|
177
|
+
function getStaker(
|
|
178
|
+
address staker
|
|
179
|
+
) external view returns (OldStaker memory) {
|
|
180
|
+
return rollup.getStaker(staker);
|
|
181
|
+
}
|
|
182
|
+
|
|
183
|
+
function isValidator(
|
|
184
|
+
address validator
|
|
185
|
+
) external view returns (bool) {
|
|
186
|
+
return rollup.isValidator(validator);
|
|
187
|
+
}
|
|
188
|
+
|
|
189
|
+
function validatorWalletCreator() external view returns (address) {
|
|
190
|
+
return rollup.validatorWalletCreator();
|
|
191
|
+
}
|
|
192
|
+
|
|
193
|
+
function anyTrustFastConfirmer() external view returns (address) {
|
|
194
|
+
return rollup.anyTrustFastConfirmer();
|
|
195
|
+
}
|
|
196
|
+
}
|
|
197
|
+
|
|
198
|
+
/// @notice Stores an array specified during construction.
|
|
199
|
+
/// Since the BOLDUpgradeAction is not allowed to have storage,
|
|
200
|
+
/// we use this contract so it can keep an immutable pointer to an array.
|
|
201
|
+
contract ConstantArrayStorage {
|
|
202
|
+
uint256[] internal _array;
|
|
203
|
+
|
|
204
|
+
constructor(
|
|
205
|
+
uint256[] memory __array
|
|
206
|
+
) {
|
|
207
|
+
_array = __array;
|
|
208
|
+
}
|
|
209
|
+
|
|
210
|
+
function array() public view returns (uint256[] memory) {
|
|
211
|
+
return _array;
|
|
212
|
+
}
|
|
213
|
+
}
|
|
214
|
+
|
|
215
|
+
/// @title Upgrades an Arbitrum rollup to the new challenge protocol
|
|
216
|
+
/// @notice Requires implementation contracts to be pre-deployed and provided in the constructor
|
|
217
|
+
/// Also requires a lookup contract to be provided that contains the pre-image of the state hash
|
|
218
|
+
/// that is in the latest confirmed assertion in the current rollup.
|
|
219
|
+
contract BOLDUpgradeAction {
|
|
220
|
+
using AssertionStateLib for AssertionState;
|
|
221
|
+
|
|
222
|
+
uint256 public immutable BLOCK_LEAF_SIZE;
|
|
223
|
+
uint256 public immutable BIGSTEP_LEAF_SIZE;
|
|
224
|
+
uint256 public immutable SMALLSTEP_LEAF_SIZE;
|
|
225
|
+
uint8 public immutable NUM_BIGSTEP_LEVEL;
|
|
226
|
+
|
|
227
|
+
address public immutable EXCESS_STAKE_RECEIVER;
|
|
228
|
+
IOldRollup public immutable OLD_ROLLUP;
|
|
229
|
+
address public immutable BRIDGE;
|
|
230
|
+
address public immutable SEQ_INBOX;
|
|
231
|
+
address public immutable REI;
|
|
232
|
+
address public immutable OUTBOX;
|
|
233
|
+
address public immutable INBOX;
|
|
234
|
+
|
|
235
|
+
uint64 public immutable CONFIRM_PERIOD_BLOCKS;
|
|
236
|
+
uint64 public immutable CHALLENGE_PERIOD_BLOCKS;
|
|
237
|
+
address public immutable STAKE_TOKEN;
|
|
238
|
+
uint256 public immutable STAKE_AMOUNT;
|
|
239
|
+
uint256 public immutable CHAIN_ID;
|
|
240
|
+
bool public immutable DISABLE_VALIDATOR_WHITELIST;
|
|
241
|
+
uint64 public immutable CHALLENGE_GRACE_PERIOD_BLOCKS;
|
|
242
|
+
address public immutable MINI_STAKE_AMOUNTS_STORAGE;
|
|
243
|
+
bool public immutable IS_DELAY_BUFFERABLE;
|
|
244
|
+
uint256 public constant SECONDS_PER_SLOT = 12;
|
|
245
|
+
// buffer config
|
|
246
|
+
uint64 public immutable MAX;
|
|
247
|
+
uint64 public immutable THRESHOLD;
|
|
248
|
+
uint64 public immutable REPLENISH_RATE_IN_BASIS;
|
|
249
|
+
|
|
250
|
+
IOneStepProofEntry public immutable OSP;
|
|
251
|
+
// proxy admins of the contracts to be upgraded
|
|
252
|
+
ProxyAdmin public immutable PROXY_ADMIN_OUTBOX;
|
|
253
|
+
ProxyAdmin public immutable PROXY_ADMIN_BRIDGE;
|
|
254
|
+
ProxyAdmin public immutable PROXY_ADMIN_REI;
|
|
255
|
+
ProxyAdmin public immutable PROXY_ADMIN_SEQUENCER_INBOX;
|
|
256
|
+
ProxyAdmin public immutable PROXY_ADMIN_INBOX;
|
|
257
|
+
StateHashPreImageLookup public immutable PREIMAGE_LOOKUP;
|
|
258
|
+
RollupReader public immutable ROLLUP_READER;
|
|
259
|
+
|
|
260
|
+
// new contract implementations
|
|
261
|
+
address public immutable IMPL_BRIDGE;
|
|
262
|
+
address public immutable IMPL_SEQUENCER_INBOX;
|
|
263
|
+
address public immutable IMPL_INBOX;
|
|
264
|
+
address public immutable IMPL_REI;
|
|
265
|
+
address public immutable IMPL_OUTBOX;
|
|
266
|
+
// the old rollup, but with whenNotPaused protection removed from stake withdrawal functions
|
|
267
|
+
address public immutable IMPL_PATCHED_OLD_ROLLUP_USER;
|
|
268
|
+
address public immutable IMPL_NEW_ROLLUP_USER;
|
|
269
|
+
address public immutable IMPL_NEW_ROLLUP_ADMIN;
|
|
270
|
+
address public immutable IMPL_CHALLENGE_MANAGER;
|
|
271
|
+
|
|
272
|
+
event RollupMigrated(address rollup, address challengeManager);
|
|
273
|
+
|
|
274
|
+
struct Settings {
|
|
275
|
+
uint64 confirmPeriodBlocks;
|
|
276
|
+
uint64 challengePeriodBlocks;
|
|
277
|
+
address stakeToken;
|
|
278
|
+
uint256 stakeAmt;
|
|
279
|
+
uint256[] miniStakeAmounts;
|
|
280
|
+
uint256 chainId;
|
|
281
|
+
bool disableValidatorWhitelist;
|
|
282
|
+
uint256 blockLeafSize;
|
|
283
|
+
uint256 bigStepLeafSize;
|
|
284
|
+
uint256 smallStepLeafSize;
|
|
285
|
+
uint8 numBigStepLevel;
|
|
286
|
+
uint64 challengeGracePeriodBlocks;
|
|
287
|
+
bool isDelayBufferable;
|
|
288
|
+
BufferConfig bufferConfig;
|
|
289
|
+
}
|
|
290
|
+
|
|
291
|
+
// Unfortunately these are not discoverable on-chain, so we need to supply them
|
|
292
|
+
struct ProxyAdmins {
|
|
293
|
+
address outbox;
|
|
294
|
+
address bridge;
|
|
295
|
+
address rei;
|
|
296
|
+
address seqInbox;
|
|
297
|
+
address inbox;
|
|
298
|
+
}
|
|
299
|
+
|
|
300
|
+
struct Implementations {
|
|
301
|
+
address bridge;
|
|
302
|
+
address seqInbox;
|
|
303
|
+
address inbox;
|
|
304
|
+
address rei;
|
|
305
|
+
address outbox;
|
|
306
|
+
address oldRollupUser;
|
|
307
|
+
address newRollupUser;
|
|
308
|
+
address newRollupAdmin;
|
|
309
|
+
address challengeManager;
|
|
310
|
+
}
|
|
311
|
+
|
|
312
|
+
struct Contracts {
|
|
313
|
+
address excessStakeReceiver;
|
|
314
|
+
IOldRollup rollup;
|
|
315
|
+
address bridge;
|
|
316
|
+
address sequencerInbox;
|
|
317
|
+
address rollupEventInbox;
|
|
318
|
+
address outbox;
|
|
319
|
+
address inbox;
|
|
320
|
+
IOneStepProofEntry osp;
|
|
321
|
+
}
|
|
322
|
+
|
|
323
|
+
constructor(
|
|
324
|
+
Contracts memory contracts,
|
|
325
|
+
ProxyAdmins memory proxyAdmins,
|
|
326
|
+
Implementations memory implementations,
|
|
327
|
+
Settings memory settings
|
|
328
|
+
) {
|
|
329
|
+
EXCESS_STAKE_RECEIVER = contracts.excessStakeReceiver;
|
|
330
|
+
OLD_ROLLUP = contracts.rollup;
|
|
331
|
+
BRIDGE = contracts.bridge;
|
|
332
|
+
SEQ_INBOX = contracts.sequencerInbox;
|
|
333
|
+
REI = contracts.rollupEventInbox;
|
|
334
|
+
OUTBOX = contracts.outbox;
|
|
335
|
+
INBOX = contracts.inbox;
|
|
336
|
+
OSP = contracts.osp;
|
|
337
|
+
|
|
338
|
+
PROXY_ADMIN_OUTBOX = ProxyAdmin(proxyAdmins.outbox);
|
|
339
|
+
PROXY_ADMIN_BRIDGE = ProxyAdmin(proxyAdmins.bridge);
|
|
340
|
+
PROXY_ADMIN_REI = ProxyAdmin(proxyAdmins.rei);
|
|
341
|
+
PROXY_ADMIN_SEQUENCER_INBOX = ProxyAdmin(proxyAdmins.seqInbox);
|
|
342
|
+
PROXY_ADMIN_INBOX = ProxyAdmin(proxyAdmins.inbox);
|
|
343
|
+
PREIMAGE_LOOKUP = new StateHashPreImageLookup();
|
|
344
|
+
ROLLUP_READER = new RollupReader(contracts.rollup);
|
|
345
|
+
|
|
346
|
+
IMPL_BRIDGE = implementations.bridge;
|
|
347
|
+
IMPL_SEQUENCER_INBOX = implementations.seqInbox;
|
|
348
|
+
IMPL_INBOX = implementations.inbox;
|
|
349
|
+
IMPL_REI = implementations.rei;
|
|
350
|
+
IMPL_OUTBOX = implementations.outbox;
|
|
351
|
+
IMPL_PATCHED_OLD_ROLLUP_USER = implementations.oldRollupUser;
|
|
352
|
+
IMPL_NEW_ROLLUP_USER = implementations.newRollupUser;
|
|
353
|
+
IMPL_NEW_ROLLUP_ADMIN = implementations.newRollupAdmin;
|
|
354
|
+
IMPL_CHALLENGE_MANAGER = implementations.challengeManager;
|
|
355
|
+
|
|
356
|
+
CHAIN_ID = settings.chainId;
|
|
357
|
+
CONFIRM_PERIOD_BLOCKS = settings.confirmPeriodBlocks;
|
|
358
|
+
CHALLENGE_PERIOD_BLOCKS = settings.challengePeriodBlocks;
|
|
359
|
+
STAKE_TOKEN = settings.stakeToken;
|
|
360
|
+
STAKE_AMOUNT = settings.stakeAmt;
|
|
361
|
+
MINI_STAKE_AMOUNTS_STORAGE = address(new ConstantArrayStorage(settings.miniStakeAmounts));
|
|
362
|
+
DISABLE_VALIDATOR_WHITELIST = settings.disableValidatorWhitelist;
|
|
363
|
+
BLOCK_LEAF_SIZE = settings.blockLeafSize;
|
|
364
|
+
BIGSTEP_LEAF_SIZE = settings.bigStepLeafSize;
|
|
365
|
+
SMALLSTEP_LEAF_SIZE = settings.smallStepLeafSize;
|
|
366
|
+
NUM_BIGSTEP_LEVEL = settings.numBigStepLevel;
|
|
367
|
+
CHALLENGE_GRACE_PERIOD_BLOCKS = settings.challengeGracePeriodBlocks;
|
|
368
|
+
IS_DELAY_BUFFERABLE = settings.isDelayBufferable;
|
|
369
|
+
MAX = settings.bufferConfig.max;
|
|
370
|
+
THRESHOLD = settings.bufferConfig.threshold;
|
|
371
|
+
REPLENISH_RATE_IN_BASIS = settings.bufferConfig.replenishRateInBasis;
|
|
372
|
+
}
|
|
373
|
+
|
|
374
|
+
/// @dev Refund the existing stakers, pause and upgrade the current rollup to
|
|
375
|
+
/// allow them to withdraw after pausing
|
|
376
|
+
function cleanupOldRollup() private {
|
|
377
|
+
IOldRollupAdmin(address(OLD_ROLLUP)).pause();
|
|
378
|
+
|
|
379
|
+
uint64 stakerCount = ROLLUP_READER.stakerCount();
|
|
380
|
+
// since we for-loop these stakers we set an arbitrary limit - we dont
|
|
381
|
+
// expect any instances to have close to this number of stakers
|
|
382
|
+
if (stakerCount > 50) {
|
|
383
|
+
stakerCount = 50;
|
|
384
|
+
}
|
|
385
|
+
for (uint64 i = 0; i < stakerCount;) {
|
|
386
|
+
address stakerAddr = ROLLUP_READER.getStakerAddress(i);
|
|
387
|
+
OldStaker memory staker = ROLLUP_READER.getStaker(stakerAddr);
|
|
388
|
+
if (staker.isStaked && staker.currentChallenge == 0) {
|
|
389
|
+
address[] memory stakersToRefund = new address[](1);
|
|
390
|
+
stakersToRefund[0] = stakerAddr;
|
|
391
|
+
|
|
392
|
+
IOldRollupAdmin(address(OLD_ROLLUP)).forceRefundStaker(stakersToRefund);
|
|
393
|
+
stakerCount -= 1;
|
|
394
|
+
} else {
|
|
395
|
+
i++;
|
|
396
|
+
}
|
|
397
|
+
}
|
|
398
|
+
|
|
399
|
+
// upgrade the rollup to one that allows validators to withdraw even whilst paused
|
|
400
|
+
DoubleLogicUUPSUpgradeable(address(OLD_ROLLUP)).upgradeSecondaryTo(
|
|
401
|
+
IMPL_PATCHED_OLD_ROLLUP_USER
|
|
402
|
+
);
|
|
403
|
+
}
|
|
404
|
+
|
|
405
|
+
/// @dev Create a config for the new rollup - fetches the latest confirmed
|
|
406
|
+
/// assertion from the old rollup and uses it as genesis
|
|
407
|
+
function createConfig() private view returns (Config memory) {
|
|
408
|
+
// fetch the assertion associated with the latest confirmed state
|
|
409
|
+
bytes32 latestConfirmedStateHash =
|
|
410
|
+
ROLLUP_READER.getNode(ROLLUP_READER.latestConfirmed()).stateHash;
|
|
411
|
+
(ExecutionState memory genesisExecState, uint256 inboxMaxCount) =
|
|
412
|
+
PREIMAGE_LOOKUP.get(latestConfirmedStateHash);
|
|
413
|
+
|
|
414
|
+
// Convert ExecutionState into AssertionState with endHistoryRoot 0
|
|
415
|
+
AssertionState memory genesisAssertionState;
|
|
416
|
+
genesisAssertionState.globalState = genesisExecState.globalState;
|
|
417
|
+
genesisAssertionState.machineStatus = genesisExecState.machineStatus;
|
|
418
|
+
|
|
419
|
+
// double check the hash
|
|
420
|
+
require(
|
|
421
|
+
PREIMAGE_LOOKUP.stateHash(genesisAssertionState.toExecutionState(), inboxMaxCount)
|
|
422
|
+
== latestConfirmedStateHash,
|
|
423
|
+
"Invalid latest execution hash"
|
|
424
|
+
);
|
|
425
|
+
|
|
426
|
+
// this isnt used during rollup creation, so we can pass in empty
|
|
427
|
+
ISequencerInbox.MaxTimeVariation memory maxTimeVariation;
|
|
428
|
+
BufferConfig memory bufferConfig;
|
|
429
|
+
|
|
430
|
+
return Config({
|
|
431
|
+
confirmPeriodBlocks: CONFIRM_PERIOD_BLOCKS,
|
|
432
|
+
stakeToken: STAKE_TOKEN,
|
|
433
|
+
baseStake: STAKE_AMOUNT,
|
|
434
|
+
wasmModuleRoot: ROLLUP_READER.wasmModuleRoot(),
|
|
435
|
+
owner: address(this), // upgrade executor is the owner
|
|
436
|
+
loserStakeEscrow: EXCESS_STAKE_RECEIVER, // additional funds get sent to the l1 timelock
|
|
437
|
+
chainId: CHAIN_ID,
|
|
438
|
+
chainConfig: "", // we can use an empty chain config it wont be used in the rollup initialization because we check if the rei is already connected there
|
|
439
|
+
miniStakeValues: ConstantArrayStorage(MINI_STAKE_AMOUNTS_STORAGE).array(),
|
|
440
|
+
sequencerInboxMaxTimeVariation: maxTimeVariation,
|
|
441
|
+
layerZeroBlockEdgeHeight: BLOCK_LEAF_SIZE,
|
|
442
|
+
layerZeroBigStepEdgeHeight: BIGSTEP_LEAF_SIZE,
|
|
443
|
+
layerZeroSmallStepEdgeHeight: SMALLSTEP_LEAF_SIZE,
|
|
444
|
+
genesisAssertionState: genesisAssertionState,
|
|
445
|
+
genesisInboxCount: inboxMaxCount,
|
|
446
|
+
anyTrustFastConfirmer: address(0), // fast confirmer would be migrated from the old rollup if existed
|
|
447
|
+
numBigStepLevel: NUM_BIGSTEP_LEVEL,
|
|
448
|
+
challengeGracePeriodBlocks: CHALLENGE_GRACE_PERIOD_BLOCKS,
|
|
449
|
+
bufferConfig: bufferConfig
|
|
450
|
+
});
|
|
451
|
+
}
|
|
452
|
+
|
|
453
|
+
function upgradeSurroundingContracts(
|
|
454
|
+
address newRollupAddress
|
|
455
|
+
) private {
|
|
456
|
+
// upgrade each of these contracts to an implementation that allows
|
|
457
|
+
// the rollup address to be set to the new rollup address
|
|
458
|
+
|
|
459
|
+
TransparentUpgradeableProxy bridge = TransparentUpgradeableProxy(payable(BRIDGE));
|
|
460
|
+
PROXY_ADMIN_BRIDGE.upgrade(bridge, IMPL_BRIDGE);
|
|
461
|
+
IBridge(BRIDGE).updateRollupAddress(IOwnable(newRollupAddress));
|
|
462
|
+
|
|
463
|
+
upgradeSequencerInbox();
|
|
464
|
+
|
|
465
|
+
TransparentUpgradeableProxy inbox = TransparentUpgradeableProxy(payable(INBOX));
|
|
466
|
+
PROXY_ADMIN_INBOX.upgrade(inbox, IMPL_INBOX);
|
|
467
|
+
|
|
468
|
+
TransparentUpgradeableProxy rollupEventInbox = TransparentUpgradeableProxy(payable(REI));
|
|
469
|
+
PROXY_ADMIN_REI.upgrade(rollupEventInbox, IMPL_REI);
|
|
470
|
+
IRollupEventInbox(REI).updateRollupAddress();
|
|
471
|
+
|
|
472
|
+
TransparentUpgradeableProxy outbox = TransparentUpgradeableProxy(payable(OUTBOX));
|
|
473
|
+
PROXY_ADMIN_OUTBOX.upgrade(outbox, IMPL_OUTBOX);
|
|
474
|
+
IOutbox(OUTBOX).updateRollupAddress();
|
|
475
|
+
}
|
|
476
|
+
|
|
477
|
+
function upgradeSequencerInbox() private {
|
|
478
|
+
TransparentUpgradeableProxy sequencerInbox = TransparentUpgradeableProxy(payable(SEQ_INBOX));
|
|
479
|
+
|
|
480
|
+
if (IS_DELAY_BUFFERABLE) {
|
|
481
|
+
PROXY_ADMIN_SEQUENCER_INBOX.upgradeAndCall(
|
|
482
|
+
sequencerInbox,
|
|
483
|
+
IMPL_SEQUENCER_INBOX,
|
|
484
|
+
abi.encodeCall(
|
|
485
|
+
ISeqInboxPostUpgradeInit.postUpgradeInit,
|
|
486
|
+
(
|
|
487
|
+
BufferConfig({
|
|
488
|
+
max: MAX,
|
|
489
|
+
threshold: THRESHOLD,
|
|
490
|
+
replenishRateInBasis: REPLENISH_RATE_IN_BASIS
|
|
491
|
+
})
|
|
492
|
+
)
|
|
493
|
+
)
|
|
494
|
+
);
|
|
495
|
+
} else {
|
|
496
|
+
PROXY_ADMIN_SEQUENCER_INBOX.upgrade(sequencerInbox, IMPL_SEQUENCER_INBOX);
|
|
497
|
+
}
|
|
498
|
+
|
|
499
|
+
// verify
|
|
500
|
+
require(
|
|
501
|
+
PROXY_ADMIN_SEQUENCER_INBOX.getProxyImplementation(sequencerInbox)
|
|
502
|
+
== IMPL_SEQUENCER_INBOX,
|
|
503
|
+
"DelayBuffer: new seq inbox implementation not set"
|
|
504
|
+
);
|
|
505
|
+
require(
|
|
506
|
+
ISequencerInbox(SEQ_INBOX).isDelayBufferable() == IS_DELAY_BUFFERABLE,
|
|
507
|
+
"DelayBuffer: isDelayBufferable not set"
|
|
508
|
+
);
|
|
509
|
+
|
|
510
|
+
(uint256 delayBlocks, uint256 futureBlocks, uint256 delaySeconds, uint256 futureSeconds) =
|
|
511
|
+
ISequencerInbox(SEQ_INBOX).maxTimeVariation();
|
|
512
|
+
|
|
513
|
+
// Force inclusion now depends on block numbers and not timestamps.
|
|
514
|
+
// To ensure the force inclusion window is unchanged, we need to
|
|
515
|
+
// update the delayBlocks if delaySeconds implies a larger delay.
|
|
516
|
+
uint256 implDelayBlocks = delaySeconds % SECONDS_PER_SLOT == 0
|
|
517
|
+
? delaySeconds / SECONDS_PER_SLOT
|
|
518
|
+
: delaySeconds / SECONDS_PER_SLOT + 1;
|
|
519
|
+
|
|
520
|
+
delayBlocks = implDelayBlocks > delayBlocks ? implDelayBlocks : delayBlocks;
|
|
521
|
+
|
|
522
|
+
ISequencerInbox(SEQ_INBOX).setMaxTimeVariation(
|
|
523
|
+
ISequencerInbox.MaxTimeVariation({
|
|
524
|
+
delayBlocks: delayBlocks,
|
|
525
|
+
delaySeconds: delaySeconds,
|
|
526
|
+
futureBlocks: futureBlocks,
|
|
527
|
+
futureSeconds: futureSeconds
|
|
528
|
+
})
|
|
529
|
+
);
|
|
530
|
+
|
|
531
|
+
// verify
|
|
532
|
+
(uint256 _delayBlocks, uint256 _futureBlocks, uint256 _delaySeconds, uint256 _futureSeconds)
|
|
533
|
+
= ISequencerInbox(SEQ_INBOX).maxTimeVariation();
|
|
534
|
+
require(_delayBlocks == delayBlocks, "DelayBuffer: delayBlocks not set");
|
|
535
|
+
require(_delaySeconds == delaySeconds, "DelayBuffer: delaySeconds not set");
|
|
536
|
+
require(_futureBlocks == futureBlocks, "DelayBuffer: futureBlocks not set");
|
|
537
|
+
require(_futureSeconds == futureSeconds, "DelayBuffer: futureSeconds not set");
|
|
538
|
+
|
|
539
|
+
ISequencerInbox(SEQ_INBOX).updateRollupAddress();
|
|
540
|
+
}
|
|
541
|
+
|
|
542
|
+
function perform(
|
|
543
|
+
address[] memory validators
|
|
544
|
+
) external {
|
|
545
|
+
// tidy up the old rollup - pause it and refund stakes
|
|
546
|
+
cleanupOldRollup();
|
|
547
|
+
|
|
548
|
+
// create the config, we do this now so that we compute the expected rollup address
|
|
549
|
+
Config memory config = createConfig();
|
|
550
|
+
|
|
551
|
+
// deploy the new challenge manager
|
|
552
|
+
IEdgeChallengeManager challengeManager = IEdgeChallengeManager(
|
|
553
|
+
address(
|
|
554
|
+
new TransparentUpgradeableProxy(
|
|
555
|
+
address(IMPL_CHALLENGE_MANAGER),
|
|
556
|
+
address(PROXY_ADMIN_BRIDGE), // use the same proxy admin as the bridge
|
|
557
|
+
""
|
|
558
|
+
)
|
|
559
|
+
)
|
|
560
|
+
);
|
|
561
|
+
|
|
562
|
+
// now that all the dependent contracts are pointed at the new address we can
|
|
563
|
+
// deploy and init the new rollup
|
|
564
|
+
ContractDependencies memory connectedContracts = ContractDependencies({
|
|
565
|
+
bridge: IBridge(BRIDGE),
|
|
566
|
+
sequencerInbox: ISequencerInbox(SEQ_INBOX),
|
|
567
|
+
inbox: IInboxBase(INBOX),
|
|
568
|
+
outbox: IOutbox(OUTBOX),
|
|
569
|
+
rollupEventInbox: IRollupEventInbox(REI),
|
|
570
|
+
challengeManager: challengeManager,
|
|
571
|
+
rollupAdminLogic: IMPL_NEW_ROLLUP_ADMIN,
|
|
572
|
+
rollupUserLogic: IRollupUser(IMPL_NEW_ROLLUP_USER),
|
|
573
|
+
validatorWalletCreator: ROLLUP_READER.validatorWalletCreator()
|
|
574
|
+
});
|
|
575
|
+
|
|
576
|
+
// upgrade the surrounding contracts eg bridge, outbox, seq inbox, rollup event inbox
|
|
577
|
+
// to set of the new rollup address
|
|
578
|
+
bytes32 rollupSalt = keccak256(abi.encode(config));
|
|
579
|
+
address expectedRollupAddress =
|
|
580
|
+
Create2Upgradeable.computeAddress(rollupSalt, keccak256(type(RollupProxy).creationCode));
|
|
581
|
+
upgradeSurroundingContracts(expectedRollupAddress);
|
|
582
|
+
|
|
583
|
+
challengeManager.initialize({
|
|
584
|
+
_assertionChain: IAssertionChain(expectedRollupAddress),
|
|
585
|
+
_challengePeriodBlocks: CHALLENGE_PERIOD_BLOCKS,
|
|
586
|
+
_oneStepProofEntry: OSP,
|
|
587
|
+
layerZeroBlockEdgeHeight: config.layerZeroBlockEdgeHeight,
|
|
588
|
+
layerZeroBigStepEdgeHeight: config.layerZeroBigStepEdgeHeight,
|
|
589
|
+
layerZeroSmallStepEdgeHeight: config.layerZeroSmallStepEdgeHeight,
|
|
590
|
+
_stakeToken: IERC20(config.stakeToken),
|
|
591
|
+
_stakeAmounts: config.miniStakeValues,
|
|
592
|
+
_excessStakeReceiver: EXCESS_STAKE_RECEIVER,
|
|
593
|
+
_numBigStepLevel: config.numBigStepLevel
|
|
594
|
+
});
|
|
595
|
+
|
|
596
|
+
RollupProxy rollup = new RollupProxy{salt: rollupSalt}();
|
|
597
|
+
require(address(rollup) == expectedRollupAddress, "UNEXPCTED_ROLLUP_ADDR");
|
|
598
|
+
|
|
599
|
+
// initialize the rollup with this contract as owner to set batch poster and validators
|
|
600
|
+
// it will transfer the ownership back to the actual owner later
|
|
601
|
+
address actualOwner = config.owner;
|
|
602
|
+
config.owner = address(this);
|
|
603
|
+
|
|
604
|
+
rollup.initializeProxy(config, connectedContracts);
|
|
605
|
+
|
|
606
|
+
if (validators.length != 0) {
|
|
607
|
+
bool[] memory _vals = new bool[](validators.length);
|
|
608
|
+
for (uint256 i = 0; i < validators.length; i++) {
|
|
609
|
+
require(ROLLUP_READER.isValidator(validators[i]), "UNEXPECTED_NEW_VALIDATOR");
|
|
610
|
+
_vals[i] = true;
|
|
611
|
+
}
|
|
612
|
+
IRollupAdmin(address(rollup)).setValidator(validators, _vals);
|
|
613
|
+
}
|
|
614
|
+
if (DISABLE_VALIDATOR_WHITELIST) {
|
|
615
|
+
IRollupAdmin(address(rollup)).setValidatorWhitelistDisabled(DISABLE_VALIDATOR_WHITELIST);
|
|
616
|
+
}
|
|
617
|
+
|
|
618
|
+
// anyTrustFastConfirmer only exists since v2.0.0, but the old rollup can be on an older version
|
|
619
|
+
try ROLLUP_READER.anyTrustFastConfirmer() returns (address anyTrustFastConfirmer) {
|
|
620
|
+
if (anyTrustFastConfirmer != address(0)) {
|
|
621
|
+
IRollupAdmin(address(rollup)).setAnyTrustFastConfirmer(anyTrustFastConfirmer);
|
|
622
|
+
}
|
|
623
|
+
} catch {
|
|
624
|
+
// do nothing if anyTrustFastConfirmer doesnt exist
|
|
625
|
+
}
|
|
626
|
+
|
|
627
|
+
IRollupAdmin(address(rollup)).setOwner(actualOwner);
|
|
628
|
+
|
|
629
|
+
emit RollupMigrated(expectedRollupAddress, address(challengeManager));
|
|
630
|
+
}
|
|
631
|
+
}
|