@arbitrum/nitro-contracts 2.1.0 → 3.0.0-alpha.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/build/contracts/@openzeppelin/contracts/access/Ownable.sol/Ownable.dbg.json +1 -1
- package/build/contracts/@openzeppelin/contracts/interfaces/draft-IERC1822.sol/IERC1822Proxiable.dbg.json +1 -1
- package/build/contracts/@openzeppelin/contracts/proxy/ERC1967/ERC1967Proxy.sol/ERC1967Proxy.dbg.json +1 -1
- package/build/contracts/@openzeppelin/contracts/proxy/ERC1967/ERC1967Proxy.sol/ERC1967Proxy.json +2 -2
- package/build/contracts/@openzeppelin/contracts/proxy/ERC1967/ERC1967Upgrade.sol/ERC1967Upgrade.dbg.json +1 -1
- package/build/contracts/@openzeppelin/contracts/proxy/Proxy.sol/Proxy.dbg.json +1 -1
- package/build/contracts/@openzeppelin/contracts/proxy/beacon/IBeacon.sol/IBeacon.dbg.json +1 -1
- package/build/contracts/@openzeppelin/contracts/proxy/beacon/UpgradeableBeacon.sol/UpgradeableBeacon.dbg.json +1 -1
- package/build/contracts/@openzeppelin/contracts/proxy/beacon/UpgradeableBeacon.sol/UpgradeableBeacon.json +2 -2
- package/build/contracts/@openzeppelin/contracts/proxy/transparent/ProxyAdmin.sol/ProxyAdmin.dbg.json +1 -1
- package/build/contracts/@openzeppelin/contracts/proxy/transparent/ProxyAdmin.sol/ProxyAdmin.json +2 -2
- package/build/contracts/@openzeppelin/contracts/proxy/transparent/TransparentUpgradeableProxy.sol/TransparentUpgradeableProxy.dbg.json +1 -1
- package/build/contracts/@openzeppelin/contracts/proxy/transparent/TransparentUpgradeableProxy.sol/TransparentUpgradeableProxy.json +2 -2
- package/build/contracts/@openzeppelin/contracts/proxy/utils/UUPSUpgradeable.sol/UUPSUpgradeable.dbg.json +1 -1
- package/build/contracts/@openzeppelin/contracts/security/ReentrancyGuard.sol/ReentrancyGuard.dbg.json +1 -1
- package/build/contracts/@openzeppelin/contracts/token/ERC20/ERC20.sol/ERC20.dbg.json +1 -1
- package/build/contracts/@openzeppelin/contracts/token/ERC20/ERC20.sol/ERC20.json +2 -2
- package/build/contracts/@openzeppelin/contracts/token/ERC20/IERC20.sol/IERC20.dbg.json +1 -1
- package/build/contracts/@openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata.sol/IERC20Metadata.dbg.json +1 -1
- package/build/contracts/@openzeppelin/contracts/token/ERC20/extensions/draft-IERC20Permit.sol/IERC20Permit.dbg.json +4 -0
- package/build/contracts/@openzeppelin/contracts/token/ERC20/extensions/draft-IERC20Permit.sol/IERC20Permit.json +86 -0
- package/build/contracts/@openzeppelin/contracts/token/ERC20/utils/SafeERC20.sol/SafeERC20.dbg.json +1 -1
- package/build/contracts/@openzeppelin/contracts/token/ERC20/utils/SafeERC20.sol/SafeERC20.json +2 -2
- package/build/contracts/@openzeppelin/contracts/utils/Address.sol/Address.dbg.json +1 -1
- package/build/contracts/@openzeppelin/contracts/utils/Address.sol/Address.json +2 -2
- package/build/contracts/@openzeppelin/contracts/utils/Context.sol/Context.dbg.json +1 -1
- package/build/contracts/@openzeppelin/contracts/utils/Create2.sol/Create2.dbg.json +4 -0
- package/build/contracts/@openzeppelin/contracts/utils/Create2.sol/Create2.json +10 -0
- package/build/contracts/@openzeppelin/contracts/utils/StorageSlot.sol/StorageSlot.dbg.json +1 -1
- package/build/contracts/@openzeppelin/contracts/utils/StorageSlot.sol/StorageSlot.json +2 -2
- package/build/contracts/@openzeppelin/contracts/utils/Strings.sol/Strings.dbg.json +1 -1
- package/build/contracts/@openzeppelin/contracts/utils/Strings.sol/Strings.json +2 -2
- package/build/contracts/@openzeppelin/contracts-upgradeable/access/AccessControlUpgradeable.sol/AccessControlUpgradeable.dbg.json +1 -1
- package/build/contracts/@openzeppelin/contracts-upgradeable/access/AccessControlUpgradeable.sol/AccessControlUpgradeable.json +13 -0
- package/build/contracts/@openzeppelin/contracts-upgradeable/access/IAccessControlUpgradeable.sol/IAccessControlUpgradeable.dbg.json +1 -1
- package/build/contracts/@openzeppelin/contracts-upgradeable/access/OwnableUpgradeable.sol/OwnableUpgradeable.dbg.json +1 -1
- package/build/contracts/@openzeppelin/contracts-upgradeable/access/OwnableUpgradeable.sol/OwnableUpgradeable.json +13 -0
- package/build/contracts/@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol/Initializable.dbg.json +1 -1
- package/build/contracts/@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol/Initializable.json +15 -1
- package/build/contracts/@openzeppelin/contracts-upgradeable/security/PausableUpgradeable.sol/PausableUpgradeable.dbg.json +1 -1
- package/build/contracts/@openzeppelin/contracts-upgradeable/security/PausableUpgradeable.sol/PausableUpgradeable.json +13 -0
- package/build/contracts/@openzeppelin/contracts-upgradeable/utils/AddressUpgradeable.sol/AddressUpgradeable.dbg.json +1 -1
- package/build/contracts/@openzeppelin/contracts-upgradeable/utils/AddressUpgradeable.sol/AddressUpgradeable.json +2 -2
- package/build/contracts/@openzeppelin/contracts-upgradeable/utils/ContextUpgradeable.sol/ContextUpgradeable.dbg.json +1 -1
- package/build/contracts/@openzeppelin/contracts-upgradeable/utils/ContextUpgradeable.sol/ContextUpgradeable.json +15 -1
- package/build/contracts/@openzeppelin/contracts-upgradeable/utils/Create2Upgradeable.sol/Create2Upgradeable.dbg.json +4 -0
- package/build/contracts/@openzeppelin/contracts-upgradeable/utils/Create2Upgradeable.sol/Create2Upgradeable.json +10 -0
- package/build/contracts/@openzeppelin/contracts-upgradeable/utils/StorageSlotUpgradeable.sol/StorageSlotUpgradeable.dbg.json +1 -1
- package/build/contracts/@openzeppelin/contracts-upgradeable/utils/StorageSlotUpgradeable.sol/StorageSlotUpgradeable.json +2 -2
- package/build/contracts/@openzeppelin/contracts-upgradeable/utils/StringsUpgradeable.sol/StringsUpgradeable.dbg.json +1 -1
- package/build/contracts/@openzeppelin/contracts-upgradeable/utils/StringsUpgradeable.sol/StringsUpgradeable.json +2 -2
- package/build/contracts/@openzeppelin/contracts-upgradeable/utils/introspection/ERC165Upgradeable.sol/ERC165Upgradeable.dbg.json +1 -1
- package/build/contracts/@openzeppelin/contracts-upgradeable/utils/introspection/ERC165Upgradeable.sol/ERC165Upgradeable.json +13 -0
- package/build/contracts/@openzeppelin/contracts-upgradeable/utils/introspection/IERC165Upgradeable.sol/IERC165Upgradeable.dbg.json +1 -1
- package/build/contracts/@openzeppelin/contracts-upgradeable/utils/structs/EnumerableSetUpgradeable.sol/EnumerableSetUpgradeable.dbg.json +4 -0
- package/build/contracts/@openzeppelin/contracts-upgradeable/utils/structs/EnumerableSetUpgradeable.sol/EnumerableSetUpgradeable.json +10 -0
- package/build/contracts/src/assertionStakingPool/AbsBoldStakingPool.sol/AbsBoldStakingPool.dbg.json +4 -0
- package/build/contracts/{@openzeppelin/contracts-upgradeable/token/ERC20/IERC20Upgradeable.sol/IERC20Upgradeable.json → src/assertionStakingPool/AbsBoldStakingPool.sol/AbsBoldStakingPool.json} +41 -95
- package/build/contracts/src/assertionStakingPool/AssertionStakingPool.sol/AssertionStakingPool.dbg.json +4 -0
- package/build/contracts/src/assertionStakingPool/AssertionStakingPool.sol/AssertionStakingPool.json +340 -0
- package/build/contracts/src/assertionStakingPool/AssertionStakingPoolCreator.sol/AssertionStakingPoolCreator.dbg.json +4 -0
- package/build/contracts/src/assertionStakingPool/AssertionStakingPoolCreator.sol/AssertionStakingPoolCreator.json +89 -0
- package/build/contracts/src/assertionStakingPool/EdgeStakingPool.sol/EdgeStakingPool.dbg.json +4 -0
- package/build/contracts/src/assertionStakingPool/EdgeStakingPool.sol/EdgeStakingPool.json +248 -0
- package/build/contracts/src/assertionStakingPool/EdgeStakingPoolCreator.sol/EdgeStakingPoolCreator.dbg.json +4 -0
- package/build/contracts/src/assertionStakingPool/EdgeStakingPoolCreator.sol/EdgeStakingPoolCreator.json +83 -0
- package/build/contracts/src/assertionStakingPool/StakingPoolCreatorUtils.sol/StakingPoolCreatorUtils.dbg.json +4 -0
- package/build/contracts/src/assertionStakingPool/StakingPoolCreatorUtils.sol/StakingPoolCreatorUtils.json +16 -0
- package/build/contracts/src/assertionStakingPool/interfaces/IAbsBoldStakingPool.sol/IAbsBoldStakingPool.dbg.json +4 -0
- package/build/contracts/src/assertionStakingPool/interfaces/IAbsBoldStakingPool.sol/IAbsBoldStakingPool.json +140 -0
- package/build/contracts/src/assertionStakingPool/interfaces/IAssertionStakingPool.sol/IAssertionStakingPool.dbg.json +4 -0
- package/build/contracts/src/assertionStakingPool/interfaces/IAssertionStakingPool.sol/IAssertionStakingPool.json +324 -0
- package/build/contracts/src/assertionStakingPool/interfaces/IAssertionStakingPoolCreator.sol/IAssertionStakingPoolCreator.dbg.json +4 -0
- package/build/contracts/src/assertionStakingPool/interfaces/IAssertionStakingPoolCreator.sol/IAssertionStakingPoolCreator.json +84 -0
- package/build/contracts/src/assertionStakingPool/interfaces/IEdgeStakingPool.sol/IEdgeStakingPool.dbg.json +4 -0
- package/build/contracts/src/assertionStakingPool/interfaces/IEdgeStakingPool.sol/IEdgeStakingPool.json +232 -0
- package/build/contracts/src/assertionStakingPool/interfaces/IEdgeStakingPoolCreator.sol/IEdgeStakingPoolCreator.dbg.json +4 -0
- package/build/contracts/src/assertionStakingPool/interfaces/IEdgeStakingPoolCreator.sol/IEdgeStakingPoolCreator.json +78 -0
- package/build/contracts/src/bridge/AbsBridge.sol/AbsBridge.dbg.json +1 -1
- package/build/contracts/src/bridge/AbsBridge.sol/AbsBridge.json +13 -0
- package/build/contracts/src/bridge/AbsInbox.sol/AbsInbox.dbg.json +1 -1
- package/build/contracts/src/bridge/AbsInbox.sol/AbsInbox.json +20 -7
- package/build/contracts/src/bridge/AbsOutbox.sol/AbsOutbox.dbg.json +1 -1
- package/build/contracts/src/bridge/Bridge.sol/Bridge.dbg.json +1 -1
- package/build/contracts/src/bridge/Bridge.sol/Bridge.json +15 -2
- package/build/contracts/src/bridge/DelayBuffer.sol/DelayBuffer.dbg.json +4 -0
- package/build/contracts/src/bridge/DelayBuffer.sol/DelayBuffer.json +24 -0
- package/build/contracts/src/bridge/ERC20Bridge.sol/ERC20Bridge.dbg.json +1 -1
- package/build/contracts/src/bridge/ERC20Bridge.sol/ERC20Bridge.json +15 -2
- package/build/contracts/src/bridge/ERC20Inbox.sol/ERC20Inbox.dbg.json +1 -1
- package/build/contracts/src/bridge/ERC20Inbox.sol/ERC20Inbox.json +22 -9
- package/build/contracts/src/bridge/ERC20Outbox.sol/ERC20Outbox.dbg.json +1 -1
- package/build/contracts/src/bridge/ERC20Outbox.sol/ERC20Outbox.json +2 -2
- package/build/contracts/src/bridge/GasRefunder.sol/GasRefunder.dbg.json +1 -1
- package/build/contracts/src/bridge/GasRefunder.sol/GasRefunder.json +2 -2
- package/build/contracts/src/bridge/IBridge.sol/IBridge.dbg.json +1 -1
- package/build/contracts/src/bridge/IDelayedMessageProvider.sol/IDelayedMessageProvider.dbg.json +1 -1
- package/build/contracts/src/bridge/IERC20Bridge.sol/IERC20Bridge.dbg.json +1 -1
- package/build/contracts/src/bridge/IERC20Inbox.sol/IERC20Inbox.dbg.json +1 -1
- package/build/contracts/src/bridge/IERC20Inbox.sol/IERC20Inbox.json +1 -1
- package/build/contracts/src/bridge/IEthBridge.sol/IEthBridge.dbg.json +1 -1
- package/build/contracts/src/bridge/IInbox.sol/IInbox.dbg.json +1 -1
- package/build/contracts/src/bridge/IInbox.sol/IInbox.json +1 -1
- package/build/contracts/src/bridge/IInboxBase.sol/IInboxBase.dbg.json +1 -1
- package/build/contracts/src/bridge/IInboxBase.sol/IInboxBase.json +1 -1
- package/build/contracts/src/bridge/IOutbox.sol/IOutbox.dbg.json +1 -1
- package/build/contracts/src/bridge/IOwnable.sol/IOwnable.dbg.json +1 -1
- package/build/contracts/src/bridge/ISequencerInbox.sol/ISequencerInbox.dbg.json +1 -1
- package/build/contracts/src/bridge/ISequencerInbox.sol/ISequencerInbox.json +441 -0
- package/build/contracts/src/bridge/Inbox.sol/Inbox.dbg.json +1 -1
- package/build/contracts/src/bridge/Inbox.sol/Inbox.json +22 -4
- package/build/contracts/src/bridge/Messages.sol/Messages.dbg.json +1 -1
- package/build/contracts/src/bridge/Messages.sol/Messages.json +2 -2
- package/build/contracts/src/bridge/Outbox.sol/Outbox.dbg.json +1 -1
- package/build/contracts/src/bridge/Outbox.sol/Outbox.json +2 -2
- package/build/contracts/src/bridge/SequencerInbox.sol/SequencerInbox.dbg.json +1 -1
- package/build/contracts/src/bridge/SequencerInbox.sol/SequencerInbox.json +564 -7
- package/build/contracts/src/chain/CacheManager.sol/CacheManager.dbg.json +1 -1
- package/build/contracts/src/chain/CacheManager.sol/CacheManager.json +15 -2
- package/build/contracts/src/challengeV2/EdgeChallengeManager.sol/EdgeChallengeManager.dbg.json +4 -0
- package/build/contracts/src/challengeV2/EdgeChallengeManager.sol/EdgeChallengeManager.json +1631 -0
- package/build/contracts/src/challengeV2/EdgeChallengeManager.sol/IEdgeChallengeManager.dbg.json +4 -0
- package/build/contracts/src/challengeV2/EdgeChallengeManager.sol/IEdgeChallengeManager.json +762 -0
- package/build/contracts/src/challengeV2/IAssertionChain.sol/IAssertionChain.dbg.json +4 -0
- package/build/contracts/src/challengeV2/IAssertionChain.sol/IAssertionChain.json +247 -0
- package/build/contracts/src/challengeV2/libraries/ArrayUtilsLib.sol/ArrayUtilsLib.dbg.json +4 -0
- package/build/contracts/src/challengeV2/libraries/ArrayUtilsLib.sol/ArrayUtilsLib.json +10 -0
- package/build/contracts/src/challengeV2/libraries/ChallengeEdgeLib.sol/ChallengeEdgeLib.dbg.json +4 -0
- package/build/contracts/src/challengeV2/libraries/ChallengeEdgeLib.sol/ChallengeEdgeLib.json +10 -0
- package/build/contracts/src/challengeV2/libraries/EdgeChallengeManagerLib.sol/EdgeChallengeManagerLib.dbg.json +4 -0
- package/build/contracts/src/challengeV2/libraries/EdgeChallengeManagerLib.sol/EdgeChallengeManagerLib.json +24 -0
- package/build/contracts/src/challengeV2/libraries/MerkleTreeAccumulatorLib.sol/MerkleTreeAccumulatorLib.dbg.json +4 -0
- package/build/contracts/src/challengeV2/libraries/MerkleTreeAccumulatorLib.sol/MerkleTreeAccumulatorLib.json +24 -0
- package/build/contracts/src/challengeV2/libraries/UintUtilsLib.sol/UintUtilsLib.dbg.json +4 -0
- package/build/contracts/src/challengeV2/libraries/UintUtilsLib.sol/UintUtilsLib.json +10 -0
- package/build/contracts/src/libraries/AddressAliasHelper.sol/AddressAliasHelper.dbg.json +1 -1
- package/build/contracts/src/libraries/AddressAliasHelper.sol/AddressAliasHelper.json +2 -2
- package/build/contracts/src/libraries/AdminFallbackProxy.sol/AdminFallbackProxy.dbg.json +1 -1
- package/build/contracts/src/libraries/AdminFallbackProxy.sol/AdminFallbackProxy.json +2 -2
- package/build/contracts/src/libraries/AdminFallbackProxy.sol/DoubleLogicERC1967Upgrade.dbg.json +1 -1
- package/build/contracts/src/libraries/ArbitrumChecker.sol/ArbitrumChecker.dbg.json +1 -1
- package/build/contracts/src/libraries/ArbitrumChecker.sol/ArbitrumChecker.json +2 -2
- package/build/contracts/src/libraries/CryptographyPrimitives.sol/CryptographyPrimitives.dbg.json +1 -1
- package/build/contracts/src/libraries/CryptographyPrimitives.sol/CryptographyPrimitives.json +2 -2
- package/build/contracts/src/libraries/DecimalsConverterHelper.sol/DecimalsConverterHelper.dbg.json +1 -1
- package/build/contracts/src/libraries/DecimalsConverterHelper.sol/DecimalsConverterHelper.json +2 -2
- package/build/contracts/src/libraries/DelegateCallAware.sol/DelegateCallAware.dbg.json +1 -1
- package/build/contracts/src/libraries/DoubleLogicUUPSUpgradeable.sol/DoubleLogicUUPSUpgradeable.dbg.json +1 -1
- package/build/contracts/src/libraries/GasRefundEnabled.sol/GasRefundEnabled.dbg.json +1 -1
- package/build/contracts/src/libraries/IGasRefunder.sol/IGasRefunder.dbg.json +1 -1
- package/build/contracts/src/libraries/IReader4844.sol/IReader4844.dbg.json +1 -1
- package/build/contracts/src/libraries/MerkleLib.sol/MerkleLib.dbg.json +1 -1
- package/build/contracts/src/libraries/MerkleLib.sol/MerkleLib.json +2 -2
- package/build/contracts/src/libraries/UUPSNotUpgradeable.sol/UUPSNotUpgradeable.dbg.json +1 -1
- package/build/contracts/src/mocks/Benchmarks.sol/Benchmarks.dbg.json +1 -1
- package/build/contracts/src/mocks/Benchmarks.sol/Benchmarks.json +2 -2
- package/build/contracts/src/mocks/BridgeStub.sol/BridgeStub.dbg.json +1 -1
- package/build/contracts/src/mocks/BridgeStub.sol/BridgeStub.json +8 -8
- package/build/contracts/src/mocks/BridgeUnproxied.sol/BridgeUnproxied.dbg.json +1 -1
- package/build/contracts/src/mocks/BridgeUnproxied.sol/BridgeUnproxied.json +28 -2
- package/build/contracts/src/mocks/InboxStub.sol/InboxStub.dbg.json +1 -1
- package/build/contracts/src/mocks/InboxStub.sol/InboxStub.json +2 -2
- package/build/contracts/src/mocks/MerkleTreeAccess.sol/MerkleTreeAccess.dbg.json +4 -0
- package/build/contracts/src/mocks/MerkleTreeAccess.sol/MerkleTreeAccess.json +227 -0
- package/build/contracts/src/mocks/MockRollupEventInbox.sol/MockRollupEventInbox.dbg.json +4 -0
- package/build/contracts/src/mocks/MockRollupEventInbox.sol/MockRollupEventInbox.json +133 -0
- package/build/contracts/src/mocks/MultiCallTest.sol/MultiCallTest.dbg.json +1 -1
- package/build/contracts/src/mocks/MultiCallTest.sol/MultiCallTest.json +2 -2
- package/build/contracts/src/mocks/PendingBlkTimeAndNrAdvanceCheck.sol/PendingBlkTimeAndNrAdvanceCheck.dbg.json +1 -1
- package/build/contracts/src/mocks/PendingBlkTimeAndNrAdvanceCheck.sol/PendingBlkTimeAndNrAdvanceCheck.json +2 -2
- package/build/contracts/src/mocks/Program.sol/ProgramTest.dbg.json +1 -1
- package/build/contracts/src/mocks/Program.sol/ProgramTest.json +2 -2
- package/build/contracts/src/mocks/ProxyAdminForBinding.sol/ProxyAdminForBinding.dbg.json +1 -1
- package/build/contracts/src/mocks/ProxyAdminForBinding.sol/ProxyAdminForBinding.json +2 -2
- package/build/contracts/src/mocks/SdkStorage.sol/SdkStorage.dbg.json +1 -1
- package/build/contracts/src/mocks/SdkStorage.sol/SdkStorage.json +2 -2
- package/build/contracts/src/mocks/SequencerInboxBlobMock.sol/SequencerInboxBlobMock.dbg.json +4 -0
- package/build/contracts/src/mocks/SequencerInboxBlobMock.sol/SequencerInboxBlobMock.json +1632 -0
- package/build/contracts/src/mocks/SequencerInboxStub.sol/SequencerInboxStub.dbg.json +1 -1
- package/build/contracts/src/mocks/SequencerInboxStub.sol/SequencerInboxStub.json +564 -7
- package/build/contracts/src/mocks/Simple.sol/Simple.dbg.json +1 -1
- package/build/contracts/src/mocks/Simple.sol/Simple.json +2 -2
- package/build/contracts/src/mocks/SimpleCacheManager.sol/SimpleCacheManager.dbg.json +1 -1
- package/build/contracts/src/mocks/SimpleCacheManager.sol/SimpleCacheManager.json +2 -2
- package/build/contracts/src/mocks/SimpleOneStepProofEntry.sol/SimpleOneStepProofEntry.dbg.json +4 -0
- package/build/contracts/src/mocks/SimpleOneStepProofEntry.sol/SimpleOneStepProofEntry.json +142 -0
- package/build/contracts/src/mocks/SimpleProxy.sol/SimpleProxy.dbg.json +1 -1
- package/build/contracts/src/mocks/SimpleProxy.sol/SimpleProxy.json +2 -2
- package/build/contracts/src/mocks/TestWETH9.sol/IWETH9.dbg.json +4 -0
- package/build/contracts/src/mocks/TestWETH9.sol/IWETH9.json +31 -0
- package/build/contracts/src/mocks/TestWETH9.sol/TestWETH9.dbg.json +4 -0
- package/build/contracts/src/mocks/TestWETH9.sol/TestWETH9.json +317 -0
- package/build/contracts/src/mocks/UpgradeExecutorMock.sol/UpgradeExecutorMock.dbg.json +1 -1
- package/build/contracts/src/mocks/UpgradeExecutorMock.sol/UpgradeExecutorMock.json +15 -2
- package/build/contracts/src/node-interface/NodeInterface.sol/NodeInterface.dbg.json +1 -1
- package/build/contracts/src/node-interface/NodeInterfaceDebug.sol/NodeInterfaceDebug.dbg.json +1 -1
- package/build/contracts/src/osp/HashProofHelper.sol/HashProofHelper.dbg.json +1 -1
- package/build/contracts/src/osp/HashProofHelper.sol/HashProofHelper.json +2 -2
- package/build/contracts/src/osp/IOneStepProofEntry.sol/IOneStepProofEntry.dbg.json +1 -1
- package/build/contracts/src/osp/IOneStepProofEntry.sol/IOneStepProofEntry.json +33 -9
- package/build/contracts/src/osp/IOneStepProofEntry.sol/OneStepProofEntryLib.dbg.json +1 -1
- package/build/contracts/src/osp/IOneStepProofEntry.sol/OneStepProofEntryLib.json +2 -2
- package/build/contracts/src/osp/IOneStepProver.sol/IOneStepProver.dbg.json +1 -1
- package/build/contracts/src/osp/IOneStepProver.sol/IOneStepProver.json +5 -0
- package/build/contracts/src/osp/OneStepProofEntry.sol/OneStepProofEntry.dbg.json +1 -1
- package/build/contracts/src/osp/OneStepProofEntry.sol/OneStepProofEntry.json +35 -11
- package/build/contracts/src/osp/OneStepProver0.sol/OneStepProver0.dbg.json +1 -1
- package/build/contracts/src/osp/OneStepProver0.sol/OneStepProver0.json +7 -2
- package/build/contracts/src/osp/OneStepProverHostIo.sol/OneStepProverHostIo.dbg.json +1 -1
- package/build/contracts/src/osp/OneStepProverHostIo.sol/OneStepProverHostIo.json +7 -2
- package/build/contracts/src/osp/OneStepProverMath.sol/OneStepProverMath.dbg.json +1 -1
- package/build/contracts/src/osp/OneStepProverMath.sol/OneStepProverMath.json +7 -2
- package/build/contracts/src/osp/OneStepProverMemory.sol/OneStepProverMemory.dbg.json +1 -1
- package/build/contracts/src/osp/OneStepProverMemory.sol/OneStepProverMemory.json +7 -2
- package/build/contracts/src/precompiles/ArbAddressTable.sol/ArbAddressTable.dbg.json +1 -1
- package/build/contracts/src/precompiles/ArbAggregator.sol/ArbAggregator.dbg.json +1 -1
- package/build/contracts/src/precompiles/ArbBLS.sol/ArbBLS.dbg.json +1 -1
- package/build/contracts/src/precompiles/ArbDebug.sol/ArbDebug.dbg.json +1 -1
- package/build/contracts/src/precompiles/ArbFunctionTable.sol/ArbFunctionTable.dbg.json +1 -1
- package/build/contracts/src/precompiles/ArbGasInfo.sol/ArbGasInfo.dbg.json +1 -1
- package/build/contracts/src/precompiles/ArbInfo.sol/ArbInfo.dbg.json +1 -1
- package/build/contracts/src/precompiles/ArbOwner.sol/ArbOwner.dbg.json +1 -1
- package/build/contracts/src/precompiles/ArbOwnerPublic.sol/ArbOwnerPublic.dbg.json +1 -1
- package/build/contracts/src/precompiles/ArbRetryableTx.sol/ArbRetryableTx.dbg.json +1 -1
- package/build/contracts/src/precompiles/ArbStatistics.sol/ArbStatistics.dbg.json +1 -1
- package/build/contracts/src/precompiles/ArbSys.sol/ArbSys.dbg.json +1 -1
- package/build/contracts/src/precompiles/ArbWasm.sol/ArbWasm.dbg.json +1 -1
- package/build/contracts/src/precompiles/ArbWasmCache.sol/ArbWasmCache.dbg.json +1 -1
- package/build/contracts/src/precompiles/ArbosActs.sol/ArbosActs.dbg.json +1 -1
- package/build/contracts/src/precompiles/ArbosTest.sol/ArbosTest.dbg.json +1 -1
- package/build/contracts/src/rollup/AbsRollupEventInbox.sol/AbsRollupEventInbox.dbg.json +1 -1
- package/build/contracts/src/rollup/Assertion.sol/AssertionNodeLib.dbg.json +4 -0
- package/build/contracts/src/rollup/{Node.sol/NodeLib.json → Assertion.sol/AssertionNodeLib.json} +4 -4
- package/build/contracts/src/rollup/AssertionState.sol/AssertionStateLib.dbg.json +4 -0
- package/build/contracts/src/{challenge/ChallengeLib.sol/ChallengeLib.json → rollup/AssertionState.sol/AssertionStateLib.json} +4 -4
- package/build/contracts/src/rollup/BOLDUpgradeAction.sol/BOLDUpgradeAction.dbg.json +4 -0
- package/build/contracts/src/rollup/BOLDUpgradeAction.sol/BOLDUpgradeAction.json +807 -0
- package/build/contracts/src/rollup/BOLDUpgradeAction.sol/ConstantArrayStorage.dbg.json +4 -0
- package/build/contracts/src/rollup/BOLDUpgradeAction.sol/ConstantArrayStorage.json +35 -0
- package/build/contracts/src/rollup/BOLDUpgradeAction.sol/IOldRollup.dbg.json +4 -0
- package/build/contracts/src/rollup/BOLDUpgradeAction.sol/IOldRollup.json +361 -0
- package/build/contracts/src/rollup/BOLDUpgradeAction.sol/IOldRollupAdmin.dbg.json +4 -0
- package/build/contracts/src/rollup/BOLDUpgradeAction.sol/IOldRollupAdmin.json +38 -0
- package/build/contracts/src/rollup/BOLDUpgradeAction.sol/ISeqInboxPostUpgradeInit.dbg.json +4 -0
- package/build/contracts/src/rollup/BOLDUpgradeAction.sol/ISeqInboxPostUpgradeInit.json +41 -0
- package/build/contracts/src/rollup/BOLDUpgradeAction.sol/RollupReader.dbg.json +4 -0
- package/build/contracts/src/rollup/BOLDUpgradeAction.sol/RollupReader.json +385 -0
- package/build/contracts/src/rollup/BOLDUpgradeAction.sol/StateHashPreImageLookup.dbg.json +4 -0
- package/build/contracts/src/rollup/BOLDUpgradeAction.sol/StateHashPreImageLookup.json +203 -0
- package/build/contracts/src/rollup/BridgeCreator.sol/BridgeCreator.dbg.json +1 -1
- package/build/contracts/src/rollup/BridgeCreator.sol/BridgeCreator.json +62 -10
- package/build/contracts/src/rollup/DeployHelper.sol/DeployHelper.dbg.json +1 -1
- package/build/contracts/src/rollup/DeployHelper.sol/DeployHelper.json +2 -2
- package/build/contracts/src/rollup/ERC20RollupEventInbox.sol/ERC20RollupEventInbox.dbg.json +1 -1
- package/build/contracts/src/rollup/ERC20RollupEventInbox.sol/ERC20RollupEventInbox.json +2 -2
- package/build/contracts/src/rollup/FactoryDeployerHelper.sol/FactoryDeployerHelper.dbg.json +1 -1
- package/build/contracts/src/rollup/FactoryDeployerHelper.sol/FactoryDeployerHelper.json +2 -2
- package/build/contracts/src/rollup/FactoryDeployerHelper.sol/IDeployHelper.dbg.json +1 -1
- package/build/contracts/src/rollup/FactoryDeployerHelper.sol/IERC20.dbg.json +1 -1
- package/build/contracts/src/rollup/FactoryDeployerHelper.sol/IERC20Bridge.dbg.json +1 -1
- package/build/contracts/src/rollup/FactoryDeployerHelper.sol/IInboxBase.dbg.json +1 -1
- package/build/contracts/src/rollup/IRollupAdmin.sol/IRollupAdmin.dbg.json +1 -1
- package/build/contracts/src/rollup/IRollupAdmin.sol/IRollupAdmin.json +473 -99
- package/build/contracts/src/rollup/IRollupCore.sol/IRollupCore.dbg.json +1 -1
- package/build/contracts/src/rollup/IRollupCore.sol/IRollupCore.json +315 -221
- package/build/contracts/src/rollup/IRollupEventInbox.sol/IRollupEventInbox.dbg.json +1 -1
- package/build/contracts/src/rollup/IRollupLogic.sol/IRollupUser.dbg.json +1 -1
- package/build/contracts/src/rollup/IRollupLogic.sol/IRollupUser.json +678 -499
- package/build/contracts/src/rollup/RollupAdminLogic.sol/RollupAdminLogic.dbg.json +1 -1
- package/build/contracts/src/rollup/RollupAdminLogic.sol/RollupAdminLogic.json +806 -435
- package/build/contracts/src/rollup/RollupCore.sol/RollupCore.dbg.json +1 -1
- package/build/contracts/src/rollup/RollupCore.sol/RollupCore.json +323 -235
- package/build/contracts/src/rollup/RollupCreator.sol/RollupCreator.dbg.json +1 -1
- package/build/contracts/src/rollup/RollupCreator.sol/RollupCreator.json +98 -36
- package/build/contracts/src/rollup/RollupEventInbox.sol/RollupEventInbox.dbg.json +1 -1
- package/build/contracts/src/rollup/RollupEventInbox.sol/RollupEventInbox.json +2 -2
- package/build/contracts/src/rollup/RollupLib.sol/RollupLib.dbg.json +1 -1
- package/build/contracts/src/rollup/RollupLib.sol/RollupLib.json +2 -2
- package/build/contracts/src/rollup/RollupProxy.sol/RollupProxy.dbg.json +1 -1
- package/build/contracts/src/rollup/RollupProxy.sol/RollupProxy.json +97 -16
- package/build/contracts/src/rollup/RollupUserLogic.sol/RollupUserLogic.dbg.json +1 -1
- package/build/contracts/src/rollup/RollupUserLogic.sol/RollupUserLogic.json +924 -535
- package/build/contracts/src/rollup/ValidatorWallet.sol/ValidatorWallet.dbg.json +1 -1
- package/build/contracts/src/rollup/ValidatorWallet.sol/ValidatorWallet.json +15 -43
- package/build/contracts/src/rollup/ValidatorWalletCreator.sol/ValidatorWalletCreator.dbg.json +1 -1
- package/build/contracts/src/rollup/ValidatorWalletCreator.sol/ValidatorWalletCreator.json +2 -2
- package/build/contracts/src/state/Deserialize.sol/Deserialize.dbg.json +1 -1
- package/build/contracts/src/state/Deserialize.sol/Deserialize.json +2 -2
- package/build/contracts/src/state/GlobalState.sol/GlobalStateLib.dbg.json +1 -1
- package/build/contracts/src/state/GlobalState.sol/GlobalStateLib.json +2 -2
- package/build/contracts/src/state/Instructions.sol/Instructions.dbg.json +1 -1
- package/build/contracts/src/state/Instructions.sol/Instructions.json +2 -2
- package/build/contracts/src/state/Machine.sol/MachineLib.dbg.json +1 -1
- package/build/contracts/src/state/Machine.sol/MachineLib.json +2 -2
- package/build/contracts/src/state/MerkleProof.sol/MerkleProofLib.dbg.json +1 -1
- package/build/contracts/src/state/MerkleProof.sol/MerkleProofLib.json +2 -2
- package/build/contracts/src/state/Module.sol/ModuleLib.dbg.json +1 -1
- package/build/contracts/src/state/Module.sol/ModuleLib.json +2 -2
- package/build/contracts/src/state/ModuleMemory.sol/ModuleMemoryLib.dbg.json +1 -1
- package/build/contracts/src/state/ModuleMemory.sol/ModuleMemoryLib.json +2 -2
- package/build/contracts/src/state/ModuleMemoryCompact.sol/ModuleMemoryCompactLib.dbg.json +1 -1
- package/build/contracts/src/state/ModuleMemoryCompact.sol/ModuleMemoryCompactLib.json +2 -2
- package/build/contracts/src/state/MultiStack.sol/MultiStackLib.dbg.json +1 -1
- package/build/contracts/src/state/MultiStack.sol/MultiStackLib.json +2 -2
- package/build/contracts/src/state/PcArray.sol/PcArrayLib.dbg.json +1 -1
- package/build/contracts/src/state/PcArray.sol/PcArrayLib.json +2 -2
- package/build/contracts/src/state/StackFrame.sol/StackFrameLib.dbg.json +1 -1
- package/build/contracts/src/state/StackFrame.sol/StackFrameLib.json +2 -2
- package/build/contracts/src/state/Value.sol/ValueLib.dbg.json +1 -1
- package/build/contracts/src/state/Value.sol/ValueLib.json +2 -2
- package/build/contracts/src/state/ValueArray.sol/ValueArrayLib.dbg.json +1 -1
- package/build/contracts/src/state/ValueArray.sol/ValueArrayLib.json +2 -2
- package/build/contracts/src/state/ValueStack.sol/ValueStackLib.dbg.json +1 -1
- package/build/contracts/src/state/ValueStack.sol/ValueStackLib.json +2 -2
- package/build/contracts/src/test-helpers/BridgeTester.sol/BridgeTester.dbg.json +1 -1
- package/build/contracts/src/test-helpers/BridgeTester.sol/BridgeTester.json +15 -2
- package/build/contracts/src/test-helpers/CryptographyPrimitivesTester.sol/CryptographyPrimitivesTester.dbg.json +1 -1
- package/build/contracts/src/test-helpers/CryptographyPrimitivesTester.sol/CryptographyPrimitivesTester.json +2 -2
- package/build/contracts/src/test-helpers/EthVault.sol/EthVault.dbg.json +1 -1
- package/build/contracts/src/test-helpers/EthVault.sol/EthVault.json +2 -2
- package/build/contracts/src/test-helpers/MessageTester.sol/MessageTester.dbg.json +1 -1
- package/build/contracts/src/test-helpers/MessageTester.sol/MessageTester.json +2 -2
- package/build/contracts/src/test-helpers/OutboxWithoutOptTester.sol/OutboxWithoutOptTester.dbg.json +1 -1
- package/build/contracts/src/test-helpers/OutboxWithoutOptTester.sol/OutboxWithoutOptTester.json +2 -2
- package/build/contracts/src/test-helpers/RollupMock.sol/RollupMock.dbg.json +1 -1
- package/build/contracts/src/test-helpers/RollupMock.sol/RollupMock.json +2 -15
- package/build/contracts/src/test-helpers/TestToken.sol/TestToken.dbg.json +1 -1
- package/build/contracts/src/test-helpers/TestToken.sol/TestToken.json +2 -2
- package/build/contracts/src/test-helpers/ValueArrayTester.sol/ValueArrayTester.dbg.json +1 -1
- package/build/contracts/src/test-helpers/ValueArrayTester.sol/ValueArrayTester.json +2 -2
- package/out/yul/Reader4844.yul/Reader4844.json +1 -1
- package/package.json +15 -5
- package/src/assertionStakingPool/AbsBoldStakingPool.sol +66 -0
- package/src/assertionStakingPool/AssertionStakingPool.sol +70 -0
- package/src/assertionStakingPool/AssertionStakingPoolCreator.sol +35 -0
- package/src/assertionStakingPool/EdgeStakingPool.sol +57 -0
- package/src/assertionStakingPool/EdgeStakingPoolCreator.sol +34 -0
- package/src/assertionStakingPool/StakingPoolCreatorUtils.sol +25 -0
- package/src/assertionStakingPool/interfaces/IAbsBoldStakingPool.sol +41 -0
- package/src/assertionStakingPool/interfaces/IAssertionStakingPool.sol +36 -0
- package/src/assertionStakingPool/interfaces/IAssertionStakingPoolCreator.sol +31 -0
- package/src/assertionStakingPool/interfaces/IEdgeStakingPool.sol +27 -0
- package/src/assertionStakingPool/interfaces/IEdgeStakingPoolCreator.sol +28 -0
- package/src/bridge/AbsBridge.sol +38 -48
- package/src/bridge/AbsInbox.sol +88 -97
- package/src/bridge/AbsOutbox.sol +23 -37
- package/src/bridge/Bridge.sol +6 -4
- package/src/bridge/DelayBuffer.sol +123 -0
- package/src/bridge/DelayBufferTypes.sol +38 -0
- package/src/bridge/ERC20Bridge.sol +8 -4
- package/src/bridge/ERC20Inbox.sol +46 -53
- package/src/bridge/ERC20Outbox.sol +7 -3
- package/src/bridge/GasRefunder.sol +38 -24
- package/src/bridge/IBridge.sol +30 -21
- package/src/bridge/IERC20Bridge.sol +1 -1
- package/src/bridge/IERC20Inbox.sol +4 -2
- package/src/bridge/IEthBridge.sol +4 -2
- package/src/bridge/IInbox.sol +4 -2
- package/src/bridge/IInboxBase.sol +17 -13
- package/src/bridge/IOutbox.sol +13 -8
- package/src/bridge/ISequencerInbox.sol +118 -13
- package/src/bridge/Inbox.sol +131 -151
- package/src/bridge/Messages.sol +48 -18
- package/src/bridge/Outbox.sol +6 -2
- package/src/bridge/SequencerInbox.sol +339 -274
- package/src/chain/CacheManager.sol +49 -18
- package/src/challengeV2/EdgeChallengeManager.sol +783 -0
- package/src/challengeV2/IAssertionChain.sol +39 -0
- package/src/challengeV2/libraries/ArrayUtilsLib.sol +61 -0
- package/src/challengeV2/libraries/ChallengeEdgeLib.sol +333 -0
- package/src/challengeV2/libraries/ChallengeErrors.sol +108 -0
- package/src/challengeV2/libraries/EdgeChallengeManagerLib.sol +930 -0
- package/src/challengeV2/libraries/Enums.sol +26 -0
- package/src/challengeV2/libraries/MerkleTreeAccumulatorLib.sol +390 -0
- package/src/challengeV2/libraries/UintUtilsLib.sol +74 -0
- package/src/libraries/AddressAliasHelper.sol +6 -2
- package/src/libraries/AdminFallbackProxy.sol +8 -4
- package/src/libraries/ArbitrumChecker.sol +3 -4
- package/src/libraries/CryptographyPrimitives.sol +39 -46
- package/src/libraries/DecimalsConverterHelper.sol +2 -4
- package/src/libraries/DoubleLogicUUPSUpgradeable.sol +10 -7
- package/src/libraries/Error.sol +18 -3
- package/src/libraries/GasRefundEnabled.sol +3 -4
- package/src/libraries/MerkleLib.sol +6 -5
- package/src/libraries/UUPSNotUpgradeable.sol +2 -4
- package/src/mocks/BridgeStub.sol +50 -48
- package/src/mocks/BridgeUnproxied.sol +2 -0
- package/src/mocks/InboxStub.sol +22 -17
- package/src/mocks/MerkleTreeAccess.sol +72 -0
- package/src/mocks/MockRollupEventInbox.sol +59 -0
- package/src/mocks/MultiCallTest.sol +3 -1
- package/src/mocks/PendingBlkTimeAndNrAdvanceCheck.sol +3 -1
- package/src/mocks/Program.sol +9 -7
- package/src/mocks/SequencerInboxBlobMock.sol +38 -0
- package/src/mocks/SequencerInboxStub.sol +9 -12
- package/src/mocks/Simple.sol +13 -25
- package/src/mocks/SimpleCacheManager.sol +10 -3
- package/src/mocks/SimpleOneStepProofEntry.sol +60 -0
- package/src/mocks/SimpleProxy.sol +3 -1
- package/src/mocks/TestWETH9.sol +30 -0
- package/src/mocks/UpgradeExecutorMock.sol +10 -17
- package/src/node-interface/NodeInterface.sol +23 -22
- package/src/node-interface/NodeInterfaceDebug.sol +5 -3
- package/src/osp/HashProofHelper.sol +9 -10
- package/src/osp/IOneStepProofEntry.sol +14 -9
- package/src/osp/IOneStepProver.sol +1 -0
- package/src/osp/OneStepProofEntry.sol +63 -54
- package/src/osp/OneStepProver0.sol +14 -27
- package/src/osp/OneStepProverHostIo.sol +31 -58
- package/src/osp/OneStepProverMath.sol +15 -23
- package/src/osp/OneStepProverMemory.sol +9 -23
- package/src/precompiles/ArbAddressTable.sol +19 -9
- package/src/precompiles/ArbAggregator.sol +12 -4
- package/src/precompiles/ArbBLS.sol +1 -3
- package/src/precompiles/ArbDebug.sol +5 -11
- package/src/precompiles/ArbFunctionTable.sol +7 -10
- package/src/precompiles/ArbGasInfo.sol +9 -43
- package/src/precompiles/ArbInfo.sol +6 -2
- package/src/precompiles/ArbOwner.sol +101 -34
- package/src/precompiles/ArbOwnerPublic.sol +6 -2
- package/src/precompiles/ArbRetryableTx.sol +15 -5
- package/src/precompiles/ArbStatistics.sol +1 -8
- package/src/precompiles/ArbSys.sol +16 -18
- package/src/precompiles/ArbWasm.sol +24 -14
- package/src/precompiles/ArbWasmCache.sol +15 -5
- package/src/precompiles/ArbosTest.sol +3 -1
- package/src/rollup/AbsRollupEventInbox.sol +15 -16
- package/src/rollup/Assertion.sol +100 -0
- package/src/rollup/AssertionState.sol +29 -0
- package/src/rollup/BOLDUpgradeAction.sol +631 -0
- package/src/rollup/BridgeCreator.sol +42 -15
- package/src/rollup/Config.sol +15 -7
- package/src/rollup/DeployHelper.sol +12 -31
- package/src/rollup/ERC20RollupEventInbox.sol +8 -9
- package/src/rollup/FactoryDeployerHelper.sol +8 -10
- package/src/rollup/IRollupAdmin.sol +127 -45
- package/src/rollup/IRollupCore.sol +64 -84
- package/src/rollup/IRollupEventInbox.sol +3 -1
- package/src/rollup/IRollupLogic.sol +35 -72
- package/src/rollup/RollupAdminLogic.sol +224 -203
- package/src/rollup/RollupCore.sol +407 -428
- package/src/rollup/RollupCreator.sol +88 -75
- package/src/rollup/RollupEventInbox.sol +7 -7
- package/src/rollup/RollupLib.sol +50 -86
- package/src/rollup/RollupProxy.sol +8 -12
- package/src/rollup/RollupUserLogic.sol +279 -644
- package/src/rollup/ValidatorUtils.sol +0 -242
- package/src/rollup/ValidatorWallet.sol +22 -38
- package/src/rollup/ValidatorWalletCreator.sol +8 -8
- package/src/state/Deserialize.sol +74 -96
- package/src/state/GlobalState.sol +74 -20
- package/src/state/Instructions.sol +4 -3
- package/src/state/Machine.sol +18 -19
- package/src/state/Module.sol +14 -13
- package/src/state/ModuleMemory.sol +6 -25
- package/src/state/ModuleMemoryCompact.sol +3 -1
- package/src/state/MultiStack.sol +16 -20
- package/src/state/PcArray.sol +7 -7
- package/src/state/StackFrame.sol +21 -14
- package/src/state/Value.sol +18 -6
- package/src/state/ValueArray.sol +7 -7
- package/src/state/ValueStack.sol +9 -3
- package/src/test-helpers/BridgeTester.sol +32 -42
- package/src/test-helpers/CryptographyPrimitivesTester.sol +12 -13
- package/src/test-helpers/EthVault.sol +4 -2
- package/src/test-helpers/InterfaceCompatibilityTester.sol +1 -1
- package/src/test-helpers/MessageTester.sol +3 -10
- package/src/test-helpers/OutboxWithoutOptTester.sol +12 -19
- package/src/test-helpers/RollupMock.sol +3 -7
- package/src/test-helpers/TestToken.sol +4 -2
- package/build/contracts/@openzeppelin/contracts-upgradeable/token/ERC20/IERC20Upgradeable.sol/IERC20Upgradeable.dbg.json +0 -4
- package/build/contracts/src/challenge/ChallengeLib.sol/ChallengeLib.dbg.json +0 -4
- package/build/contracts/src/challenge/ChallengeManager.sol/ChallengeManager.dbg.json +0 -4
- package/build/contracts/src/challenge/ChallengeManager.sol/ChallengeManager.json +0 -746
- package/build/contracts/src/challenge/IChallengeManager.sol/IChallengeManager.dbg.json +0 -4
- package/build/contracts/src/challenge/IChallengeManager.sol/IChallengeManager.json +0 -441
- package/build/contracts/src/challenge/IChallengeResultReceiver.sol/IChallengeResultReceiver.dbg.json +0 -4
- package/build/contracts/src/challenge/IChallengeResultReceiver.sol/IChallengeResultReceiver.json +0 -34
- package/build/contracts/src/mocks/MockResultReceiver.sol/MockResultReceiver.dbg.json +0 -4
- package/build/contracts/src/mocks/MockResultReceiver.sol/MockResultReceiver.json +0 -188
- package/build/contracts/src/mocks/SingleExecutionChallenge.sol/SingleExecutionChallenge.dbg.json +0 -4
- package/build/contracts/src/mocks/SingleExecutionChallenge.sol/SingleExecutionChallenge.json +0 -797
- package/build/contracts/src/mocks/TimedOutChallengeManager.sol/TimedOutChallengeManager.dbg.json +0 -4
- package/build/contracts/src/mocks/TimedOutChallengeManager.sol/TimedOutChallengeManager.json +0 -746
- package/build/contracts/src/rollup/IRollupLogic.sol/IRollupUserAbs.dbg.json +0 -4
- package/build/contracts/src/rollup/IRollupLogic.sol/IRollupUserAbs.json +0 -1332
- package/build/contracts/src/rollup/IRollupLogic.sol/IRollupUserERC20.dbg.json +0 -4
- package/build/contracts/src/rollup/IRollupLogic.sol/IRollupUserERC20.json +0 -1466
- package/build/contracts/src/rollup/Node.sol/NodeLib.dbg.json +0 -4
- package/build/contracts/src/rollup/RollupUserLogic.sol/AbsRollupUserLogic.dbg.json +0 -4
- package/build/contracts/src/rollup/RollupUserLogic.sol/AbsRollupUserLogic.json +0 -1614
- package/build/contracts/src/rollup/RollupUserLogic.sol/ERC20RollupUserLogic.dbg.json +0 -4
- package/build/contracts/src/rollup/RollupUserLogic.sol/ERC20RollupUserLogic.json +0 -1748
- package/build/contracts/src/rollup/ValidatorUtils.sol/ValidatorUtils.dbg.json +0 -4
- package/build/contracts/src/rollup/ValidatorUtils.sol/ValidatorUtils.json +0 -379
- package/src/challenge/ChallengeLib.sol +0 -88
- package/src/challenge/ChallengeManager.sol +0 -375
- package/src/challenge/IChallengeManager.sol +0 -86
- package/src/challenge/IChallengeResultReceiver.sol +0 -13
- package/src/mocks/MockResultReceiver.sol +0 -59
- package/src/mocks/SingleExecutionChallenge.sol +0 -41
- package/src/mocks/TimedOutChallengeManager.sol +0 -13
- package/src/rollup/Node.sol +0 -113
|
@@ -5,21 +5,22 @@
|
|
|
5
5
|
pragma solidity ^0.8.0;
|
|
6
6
|
|
|
7
7
|
import "./IOneStepProver.sol";
|
|
8
|
+
import "../state/Machine.sol";
|
|
8
9
|
|
|
9
10
|
library OneStepProofEntryLib {
|
|
10
11
|
uint256 internal constant MAX_STEPS = 1 << 43;
|
|
11
12
|
}
|
|
12
13
|
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
returns (bytes32);
|
|
14
|
+
struct ExecutionState {
|
|
15
|
+
GlobalState globalState;
|
|
16
|
+
MachineStatus machineStatus;
|
|
17
|
+
}
|
|
18
18
|
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
19
|
+
interface IOneStepProofEntry {
|
|
20
|
+
function getStartMachineHash(
|
|
21
|
+
bytes32 globalStateHash,
|
|
22
|
+
bytes32 wasmModuleRoot
|
|
23
|
+
) external pure returns (bytes32);
|
|
23
24
|
|
|
24
25
|
function proveOneStep(
|
|
25
26
|
ExecutionContext calldata execCtx,
|
|
@@ -27,4 +28,8 @@ interface IOneStepProofEntry {
|
|
|
27
28
|
bytes32 beforeHash,
|
|
28
29
|
bytes calldata proof
|
|
29
30
|
) external view returns (bytes32 afterHash);
|
|
31
|
+
|
|
32
|
+
function getMachineHash(
|
|
33
|
+
ExecutionState calldata execState
|
|
34
|
+
) external pure returns (bytes32);
|
|
30
35
|
}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
// Copyright 2021-
|
|
1
|
+
// Copyright 2021-2022, Offchain Labs, Inc.
|
|
2
2
|
// For license information, see https://github.com/OffchainLabs/nitro-contracts/blob/main/LICENSE
|
|
3
3
|
// SPDX-License-Identifier: BUSL-1.1
|
|
4
4
|
|
|
@@ -14,6 +14,7 @@ import "./IOneStepProofEntry.sol";
|
|
|
14
14
|
contract OneStepProofEntry is IOneStepProofEntry {
|
|
15
15
|
using MerkleProofLib for MerkleProof;
|
|
16
16
|
using MachineLib for Machine;
|
|
17
|
+
using GlobalStateLib for GlobalState;
|
|
17
18
|
using MultiStackLib for MultiStack;
|
|
18
19
|
|
|
19
20
|
using ValueStackLib for ValueStack;
|
|
@@ -36,12 +37,11 @@ contract OneStepProofEntry is IOneStepProofEntry {
|
|
|
36
37
|
proverHostIo = proverHostIo_;
|
|
37
38
|
}
|
|
38
39
|
|
|
39
|
-
// Copied from
|
|
40
|
-
function getStartMachineHash(
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
{
|
|
40
|
+
// Copied from OldChallengeLib.sol
|
|
41
|
+
function getStartMachineHash(
|
|
42
|
+
bytes32 globalStateHash,
|
|
43
|
+
bytes32 wasmModuleRoot
|
|
44
|
+
) public pure returns (bytes32) {
|
|
45
45
|
// Start the value stack with the function call ABI for the entrypoint
|
|
46
46
|
Value[] memory startingValues = new Value[](3);
|
|
47
47
|
startingValues[0] = ValueLib.newRefNull();
|
|
@@ -71,20 +71,15 @@ contract OneStepProofEntry is IOneStepProofEntry {
|
|
|
71
71
|
return mach.hash();
|
|
72
72
|
}
|
|
73
73
|
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
return keccak256(abi.encodePacked("Machine finished:", globalStateHash));
|
|
82
|
-
} else if (status == MachineStatus.ERRORED) {
|
|
83
|
-
return keccak256(abi.encodePacked("Machine errored:"));
|
|
84
|
-
} else if (status == MachineStatus.TOO_FAR) {
|
|
85
|
-
return keccak256(abi.encodePacked("Machine too far:"));
|
|
74
|
+
function getMachineHash(
|
|
75
|
+
ExecutionState calldata execState
|
|
76
|
+
) external pure override returns (bytes32) {
|
|
77
|
+
if (execState.machineStatus == MachineStatus.FINISHED) {
|
|
78
|
+
return keccak256(abi.encodePacked("Machine finished:", execState.globalState.hash()));
|
|
79
|
+
} else if (execState.machineStatus == MachineStatus.ERRORED) {
|
|
80
|
+
return keccak256(abi.encodePacked("Machine errored:", execState.globalState.hash()));
|
|
86
81
|
} else {
|
|
87
|
-
revert("
|
|
82
|
+
revert("BAD_MACHINE_STATUS");
|
|
88
83
|
}
|
|
89
84
|
}
|
|
90
85
|
|
|
@@ -106,6 +101,16 @@ contract OneStepProofEntry is IOneStepProofEntry {
|
|
|
106
101
|
if (mach.status != MachineStatus.RUNNING) {
|
|
107
102
|
// Machine is halted.
|
|
108
103
|
// WARNING: at this point, most machine fields are unconstrained.
|
|
104
|
+
GlobalState memory globalState;
|
|
105
|
+
(globalState, offset) = Deserialize.globalState(proof, offset);
|
|
106
|
+
require(globalState.hash() == mach.globalStateHash, "BAD_GLOBAL_STATE");
|
|
107
|
+
if (
|
|
108
|
+
mach.status == MachineStatus.FINISHED && machineStep == 0
|
|
109
|
+
&& globalState.getInboxPosition() < execCtx.maxInboxMessagesRead
|
|
110
|
+
) {
|
|
111
|
+
// Kickstart the machine
|
|
112
|
+
return getStartMachineHash(mach.globalStateHash, execCtx.initialWasmModuleRoot);
|
|
113
|
+
}
|
|
109
114
|
return mach.hash();
|
|
110
115
|
}
|
|
111
116
|
|
|
@@ -128,14 +133,10 @@ contract OneStepProofEntry is IOneStepProofEntry {
|
|
|
128
133
|
(codeChunk, offset) = Deserialize.instructions(proof, offset);
|
|
129
134
|
(codeProof, offset) = Deserialize.merkleProof(proof, offset);
|
|
130
135
|
(funcProof, offset) = Deserialize.merkleProof(proof, offset);
|
|
131
|
-
bytes32 codeHash =
|
|
132
|
-
mach.functionPc / 64,
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
bytes32 recomputedRoot = funcProof.computeRootFromFunction(
|
|
136
|
-
mach.functionIdx,
|
|
137
|
-
codeHash
|
|
138
|
-
);
|
|
136
|
+
bytes32 codeHash =
|
|
137
|
+
codeProof.computeRootFromInstructions(mach.functionPc / 64, codeChunk);
|
|
138
|
+
bytes32 recomputedRoot =
|
|
139
|
+
funcProof.computeRootFromFunction(mach.functionIdx, codeHash);
|
|
139
140
|
require(recomputedRoot == mod.functionsMerkleRoot, "BAD_FUNCTIONS_ROOT");
|
|
140
141
|
inst = codeChunk[mach.functionPc % 64];
|
|
141
142
|
}
|
|
@@ -147,36 +148,44 @@ contract OneStepProofEntry is IOneStepProofEntry {
|
|
|
147
148
|
uint16 opcode = inst.opcode;
|
|
148
149
|
IOneStepProver prover;
|
|
149
150
|
if (
|
|
150
|
-
(opcode >= Instructions.I32_LOAD && opcode <= Instructions.I64_LOAD32_U)
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
opcode == Instructions.MEMORY_GROW
|
|
151
|
+
(opcode >= Instructions.I32_LOAD && opcode <= Instructions.I64_LOAD32_U)
|
|
152
|
+
|| (opcode >= Instructions.I32_STORE && opcode <= Instructions.I64_STORE32)
|
|
153
|
+
|| opcode == Instructions.MEMORY_SIZE || opcode == Instructions.MEMORY_GROW
|
|
154
154
|
) {
|
|
155
155
|
prover = proverMem;
|
|
156
156
|
} else if (
|
|
157
|
-
(opcode == Instructions.I32_EQZ || opcode == Instructions.I64_EQZ)
|
|
158
|
-
|
|
159
|
-
|
|
160
|
-
|
|
161
|
-
|
|
162
|
-
|
|
163
|
-
|
|
164
|
-
|
|
165
|
-
|
|
166
|
-
|
|
167
|
-
|
|
168
|
-
|
|
169
|
-
|
|
170
|
-
|
|
171
|
-
|
|
172
|
-
|
|
157
|
+
(opcode == Instructions.I32_EQZ || opcode == Instructions.I64_EQZ)
|
|
158
|
+
|| (
|
|
159
|
+
opcode >= Instructions.I32_RELOP_BASE
|
|
160
|
+
&& opcode <= Instructions.I32_RELOP_BASE + Instructions.IRELOP_LAST
|
|
161
|
+
)
|
|
162
|
+
|| (
|
|
163
|
+
opcode >= Instructions.I32_UNOP_BASE
|
|
164
|
+
&& opcode <= Instructions.I32_UNOP_BASE + Instructions.IUNOP_LAST
|
|
165
|
+
) || (opcode >= Instructions.I32_ADD && opcode <= Instructions.I32_ROTR)
|
|
166
|
+
|| (
|
|
167
|
+
opcode >= Instructions.I64_RELOP_BASE
|
|
168
|
+
&& opcode <= Instructions.I64_RELOP_BASE + Instructions.IRELOP_LAST
|
|
169
|
+
)
|
|
170
|
+
|| (
|
|
171
|
+
opcode >= Instructions.I64_UNOP_BASE
|
|
172
|
+
&& opcode <= Instructions.I64_UNOP_BASE + Instructions.IUNOP_LAST
|
|
173
|
+
) || (opcode >= Instructions.I64_ADD && opcode <= Instructions.I64_ROTR)
|
|
174
|
+
|| (opcode == Instructions.I32_WRAP_I64)
|
|
175
|
+
|| (opcode == Instructions.I64_EXTEND_I32_S || opcode == Instructions.I64_EXTEND_I32_U)
|
|
176
|
+
|| (opcode >= Instructions.I32_EXTEND_8S && opcode <= Instructions.I64_EXTEND_32S)
|
|
177
|
+
|| (
|
|
178
|
+
opcode >= Instructions.I32_REINTERPRET_F32
|
|
179
|
+
&& opcode <= Instructions.F64_REINTERPRET_I64
|
|
180
|
+
)
|
|
173
181
|
) {
|
|
174
182
|
prover = proverMath;
|
|
175
183
|
} else if (
|
|
176
|
-
(
|
|
177
|
-
opcode
|
|
178
|
-
|
|
179
|
-
(opcode >= Instructions.
|
|
184
|
+
(
|
|
185
|
+
opcode >= Instructions.GET_GLOBAL_STATE_BYTES32
|
|
186
|
+
&& opcode <= Instructions.SET_GLOBAL_STATE_U64
|
|
187
|
+
) || (opcode >= Instructions.READ_PRE_IMAGE && opcode <= Instructions.UNLINK_MODULE)
|
|
188
|
+
|| (opcode >= Instructions.NEW_COTHREAD && opcode <= Instructions.SWITCH_COTHREAD)
|
|
180
189
|
) {
|
|
181
190
|
prover = proverHostIo;
|
|
182
191
|
} else {
|
|
@@ -185,8 +194,8 @@ contract OneStepProofEntry is IOneStepProofEntry {
|
|
|
185
194
|
|
|
186
195
|
(mach, mod) = prover.executeOneStep(execCtx, mach, mod, inst, proof);
|
|
187
196
|
|
|
188
|
-
bool updateRoot =
|
|
189
|
-
opcode == Instructions.UNLINK_MODULE);
|
|
197
|
+
bool updateRoot =
|
|
198
|
+
!(opcode == Instructions.LINK_MODULE || opcode == Instructions.UNLINK_MODULE);
|
|
190
199
|
if (updateRoot) {
|
|
191
200
|
mach.modulesRoot = modProof.computeRootFromModule(oldModIdx, mod);
|
|
192
201
|
}
|
|
@@ -94,7 +94,9 @@ contract OneStepProver0 is IOneStepProver {
|
|
|
94
94
|
mach.setPc(frame.returnPc);
|
|
95
95
|
}
|
|
96
96
|
|
|
97
|
-
function createReturnValue(
|
|
97
|
+
function createReturnValue(
|
|
98
|
+
Machine memory mach
|
|
99
|
+
) internal pure returns (Value memory) {
|
|
98
100
|
return ValueLib.newPc(mach.functionPc, mach.functionIdx, mach.moduleIdx);
|
|
99
101
|
}
|
|
100
102
|
|
|
@@ -252,16 +254,11 @@ contract OneStepProver0 is IOneStepProver {
|
|
|
252
254
|
(tableMerkleProof, offset) = Deserialize.merkleProof(proof, offset);
|
|
253
255
|
|
|
254
256
|
// Validate the information by recomputing known hashes
|
|
255
|
-
bytes32 recomputed =
|
|
256
|
-
abi.encodePacked("Call indirect:", tableIdx, wantedFuncTypeHash)
|
|
257
|
-
);
|
|
257
|
+
bytes32 recomputed =
|
|
258
|
+
keccak256(abi.encodePacked("Call indirect:", tableIdx, wantedFuncTypeHash));
|
|
258
259
|
require(recomputed == bytes32(inst.argumentData), "BAD_CALL_INDIRECT_DATA");
|
|
259
|
-
recomputed =
|
|
260
|
-
tableIdx,
|
|
261
|
-
tableType,
|
|
262
|
-
tableSize,
|
|
263
|
-
elemsRoot
|
|
264
|
-
);
|
|
260
|
+
recomputed =
|
|
261
|
+
tableMerkleProof.computeRootFromTable(tableIdx, tableType, tableSize, elemsRoot);
|
|
265
262
|
require(recomputed == mod.tablesMerkleRoot, "BAD_TABLES_ROOT");
|
|
266
263
|
|
|
267
264
|
// Check if the table access is out of bounds
|
|
@@ -278,9 +275,7 @@ contract OneStepProver0 is IOneStepProver {
|
|
|
278
275
|
(functionPointer, offset) = Deserialize.value(proof, offset);
|
|
279
276
|
(elementMerkleProof, offset) = Deserialize.merkleProof(proof, offset);
|
|
280
277
|
bytes32 recomputedElemRoot = elementMerkleProof.computeRootFromElement(
|
|
281
|
-
elementIdx,
|
|
282
|
-
elemFuncTypeHash,
|
|
283
|
-
functionPointer
|
|
278
|
+
elementIdx, elemFuncTypeHash, functionPointer
|
|
284
279
|
);
|
|
285
280
|
require(recomputedElemRoot == elemsRoot, "BAD_ELEMENTS_ROOT");
|
|
286
281
|
|
|
@@ -390,12 +385,8 @@ contract OneStepProver0 is IOneStepProver {
|
|
|
390
385
|
) internal pure {
|
|
391
386
|
Value memory newVal = mach.valueStack.pop();
|
|
392
387
|
StackFrame memory frame = mach.frameStack.peek();
|
|
393
|
-
frame.localsMerkleRoot =
|
|
394
|
-
frame.localsMerkleRoot,
|
|
395
|
-
inst.argumentData,
|
|
396
|
-
newVal,
|
|
397
|
-
proof
|
|
398
|
-
);
|
|
388
|
+
frame.localsMerkleRoot =
|
|
389
|
+
merkleProveSetValue(frame.localsMerkleRoot, inst.argumentData, newVal, proof);
|
|
399
390
|
}
|
|
400
391
|
|
|
401
392
|
function executeGlobalGet(
|
|
@@ -415,12 +406,8 @@ contract OneStepProver0 is IOneStepProver {
|
|
|
415
406
|
bytes calldata proof
|
|
416
407
|
) internal pure {
|
|
417
408
|
Value memory newVal = mach.valueStack.pop();
|
|
418
|
-
mod.globalsMerkleRoot =
|
|
419
|
-
mod.globalsMerkleRoot,
|
|
420
|
-
inst.argumentData,
|
|
421
|
-
newVal,
|
|
422
|
-
proof
|
|
423
|
-
);
|
|
409
|
+
mod.globalsMerkleRoot =
|
|
410
|
+
merkleProveSetValue(mod.globalsMerkleRoot, inst.argumentData, newVal, proof);
|
|
424
411
|
}
|
|
425
412
|
|
|
426
413
|
function executeInitFrame(
|
|
@@ -523,8 +510,8 @@ contract OneStepProver0 is IOneStepProver {
|
|
|
523
510
|
} else if (opcode >= Instructions.I32_CONST && opcode <= Instructions.F64_CONST) {
|
|
524
511
|
impl = executeConstPush;
|
|
525
512
|
} else if (
|
|
526
|
-
opcode == Instructions.MOVE_FROM_STACK_TO_INTERNAL
|
|
527
|
-
|
|
513
|
+
opcode == Instructions.MOVE_FROM_STACK_TO_INTERNAL
|
|
514
|
+
|| opcode == Instructions.MOVE_FROM_INTERNAL_TO_STACK
|
|
528
515
|
) {
|
|
529
516
|
impl = executeMoveInternal;
|
|
530
517
|
} else if (opcode == Instructions.DUP) {
|
|
@@ -29,11 +29,7 @@ contract OneStepProverHostIo is IOneStepProver {
|
|
|
29
29
|
uint64 private constant INBOX_HEADER_LEN = 40;
|
|
30
30
|
uint64 private constant DELAYED_HEADER_LEN = 112 + 1;
|
|
31
31
|
|
|
32
|
-
function setLeafByte(
|
|
33
|
-
bytes32 oldLeaf,
|
|
34
|
-
uint256 idx,
|
|
35
|
-
uint8 val
|
|
36
|
-
) internal pure returns (bytes32) {
|
|
32
|
+
function setLeafByte(bytes32 oldLeaf, uint256 idx, uint8 val) internal pure returns (bytes32) {
|
|
37
33
|
require(idx < LEAF_SIZE, "BAD_SET_LEAF_BYTE_IDX");
|
|
38
34
|
// Take into account that we are casting the leaf to a big-endian integer
|
|
39
35
|
uint256 leafShift = (LEAF_SIZE - 1 - idx) * 8;
|
|
@@ -66,17 +62,12 @@ contract OneStepProverHostIo is IOneStepProver {
|
|
|
66
62
|
uint256 proofOffset = 0;
|
|
67
63
|
bytes32 startLeafContents;
|
|
68
64
|
MerkleProof memory merkleProof;
|
|
69
|
-
(startLeafContents, proofOffset, merkleProof) =
|
|
70
|
-
leafIdx,
|
|
71
|
-
proof,
|
|
72
|
-
proofOffset
|
|
73
|
-
);
|
|
65
|
+
(startLeafContents, proofOffset, merkleProof) =
|
|
66
|
+
mod.moduleMemory.proveLeaf(leafIdx, proof, proofOffset);
|
|
74
67
|
|
|
75
68
|
if (inst.opcode == Instructions.GET_GLOBAL_STATE_BYTES32) {
|
|
76
|
-
mod.moduleMemory.merkleRoot =
|
|
77
|
-
leafIdx,
|
|
78
|
-
state.bytes32Vals[idx]
|
|
79
|
-
);
|
|
69
|
+
mod.moduleMemory.merkleRoot =
|
|
70
|
+
merkleProof.computeRootFromMemory(leafIdx, state.bytes32Vals[idx]);
|
|
80
71
|
} else if (inst.opcode == Instructions.SET_GLOBAL_STATE_BYTES32) {
|
|
81
72
|
state.bytes32Vals[idx] = startLeafContents;
|
|
82
73
|
} else {
|
|
@@ -113,11 +104,7 @@ contract OneStepProverHostIo is IOneStepProver {
|
|
|
113
104
|
|
|
114
105
|
// Computes b**e % m
|
|
115
106
|
// Really pure but the Solidity compiler sees the staticcall and requires view
|
|
116
|
-
function modExp256(
|
|
117
|
-
uint256 b,
|
|
118
|
-
uint256 e,
|
|
119
|
-
uint256 m
|
|
120
|
-
) internal view returns (uint256) {
|
|
107
|
+
function modExp256(uint256 b, uint256 e, uint256 m) internal view returns (uint256) {
|
|
121
108
|
bytes memory modExpInput = abi.encode(32, 32, 32, b, e, m);
|
|
122
109
|
(bool modexpSuccess, bytes memory modExpOutput) = address(0x05).staticcall(modExpInput);
|
|
123
110
|
require(modexpSuccess, "MODEXP_FAILED");
|
|
@@ -143,11 +130,8 @@ contract OneStepProverHostIo is IOneStepProver {
|
|
|
143
130
|
uint256 proofOffset = 0;
|
|
144
131
|
bytes32 leafContents;
|
|
145
132
|
MerkleProof memory merkleProof;
|
|
146
|
-
(leafContents, proofOffset, merkleProof) =
|
|
147
|
-
leafIdx,
|
|
148
|
-
proof,
|
|
149
|
-
proofOffset
|
|
150
|
-
);
|
|
133
|
+
(leafContents, proofOffset, merkleProof) =
|
|
134
|
+
mod.moduleMemory.proveLeaf(leafIdx, proof, proofOffset);
|
|
151
135
|
|
|
152
136
|
bytes memory extracted;
|
|
153
137
|
uint8 proofType = uint8(proof[proofOffset]);
|
|
@@ -257,7 +241,7 @@ contract OneStepProverHostIo is IOneStepProver {
|
|
|
257
241
|
require(message.length >= INBOX_HEADER_LEN, "BAD_SEQINBOX_PROOF");
|
|
258
242
|
|
|
259
243
|
uint64 afterDelayedMsg;
|
|
260
|
-
(afterDelayedMsg,
|
|
244
|
+
(afterDelayedMsg,) = Deserialize.u64(message, 32);
|
|
261
245
|
bytes32 messageHash = keccak256(message);
|
|
262
246
|
bytes32 beforeAcc;
|
|
263
247
|
bytes32 delayedAcc;
|
|
@@ -289,7 +273,7 @@ contract OneStepProverHostIo is IOneStepProver {
|
|
|
289
273
|
bytes32 messageDataHash = keccak256(message[DELAYED_HEADER_LEN:]);
|
|
290
274
|
bytes1 kind = message[0];
|
|
291
275
|
uint256 sender;
|
|
292
|
-
(sender,
|
|
276
|
+
(sender,) = Deserialize.u256(message, 1);
|
|
293
277
|
|
|
294
278
|
bytes32 messageHash = keccak256(
|
|
295
279
|
abi.encodePacked(kind, uint160(sender), message[33:DELAYED_HEADER_LEN], messageDataHash)
|
|
@@ -311,10 +295,10 @@ contract OneStepProverHostIo is IOneStepProver {
|
|
|
311
295
|
uint256 ptr = mach.valueStack.pop().assumeI32();
|
|
312
296
|
uint256 msgIndex = mach.valueStack.pop().assumeI64();
|
|
313
297
|
if (
|
|
314
|
-
inst.argumentData == Instructions.INBOX_INDEX_SEQUENCER
|
|
315
|
-
|
|
298
|
+
inst.argumentData == Instructions.INBOX_INDEX_SEQUENCER
|
|
299
|
+
&& msgIndex >= execCtx.maxInboxMessagesRead
|
|
316
300
|
) {
|
|
317
|
-
mach.status = MachineStatus.
|
|
301
|
+
mach.status = MachineStatus.ERRORED;
|
|
318
302
|
return;
|
|
319
303
|
}
|
|
320
304
|
|
|
@@ -327,11 +311,8 @@ contract OneStepProverHostIo is IOneStepProver {
|
|
|
327
311
|
uint256 proofOffset = 0;
|
|
328
312
|
bytes32 leafContents;
|
|
329
313
|
MerkleProof memory merkleProof;
|
|
330
|
-
(leafContents, proofOffset, merkleProof) =
|
|
331
|
-
leafIdx,
|
|
332
|
-
proof,
|
|
333
|
-
proofOffset
|
|
334
|
-
);
|
|
314
|
+
(leafContents, proofOffset, merkleProof) =
|
|
315
|
+
mod.moduleMemory.proveLeaf(leafIdx, proof, proofOffset);
|
|
335
316
|
|
|
336
317
|
{
|
|
337
318
|
// TODO: support proving via an authenticated contract
|
|
@@ -364,11 +345,8 @@ contract OneStepProverHostIo is IOneStepProver {
|
|
|
364
345
|
|
|
365
346
|
uint32 i = 0;
|
|
366
347
|
for (; i < 32 && messageOffset + i < messageLength; i++) {
|
|
367
|
-
leafContents =
|
|
368
|
-
leafContents,
|
|
369
|
-
i,
|
|
370
|
-
uint8(proof[proofOffset + messageOffset + i])
|
|
371
|
-
);
|
|
348
|
+
leafContents =
|
|
349
|
+
setLeafByte(leafContents, i, uint8(proof[proofOffset + messageOffset + i]));
|
|
372
350
|
}
|
|
373
351
|
|
|
374
352
|
mod.moduleMemory.merkleRoot = merkleProof.computeRootFromMemory(leafIdx, leafContents);
|
|
@@ -385,7 +363,9 @@ contract OneStepProverHostIo is IOneStepProver {
|
|
|
385
363
|
mach.status = MachineStatus.FINISHED;
|
|
386
364
|
}
|
|
387
365
|
|
|
388
|
-
function isPowerOfTwo(
|
|
366
|
+
function isPowerOfTwo(
|
|
367
|
+
uint256 value
|
|
368
|
+
) internal pure returns (bool) {
|
|
389
369
|
return value != 0 && (value & (value - 1) == 0);
|
|
390
370
|
}
|
|
391
371
|
|
|
@@ -396,11 +376,7 @@ contract OneStepProverHostIo is IOneStepProver {
|
|
|
396
376
|
)
|
|
397
377
|
internal
|
|
398
378
|
pure
|
|
399
|
-
returns (
|
|
400
|
-
uint256 leaf,
|
|
401
|
-
MerkleProof memory leafProof,
|
|
402
|
-
MerkleProof memory zeroProof
|
|
403
|
-
)
|
|
379
|
+
returns (uint256 leaf, MerkleProof memory leafProof, MerkleProof memory zeroProof)
|
|
404
380
|
{
|
|
405
381
|
string memory prefix = "Module merkle tree:";
|
|
406
382
|
bytes32 root = mach.modulesRoot;
|
|
@@ -445,13 +421,10 @@ contract OneStepProverHostIo is IOneStepProver {
|
|
|
445
421
|
mach.status = MachineStatus.ERRORED;
|
|
446
422
|
return;
|
|
447
423
|
}
|
|
448
|
-
(bytes32 userMod, uint256 offset,
|
|
449
|
-
pointer / LEAF_SIZE,
|
|
450
|
-
proof,
|
|
451
|
-
0
|
|
452
|
-
);
|
|
424
|
+
(bytes32 userMod, uint256 offset,) =
|
|
425
|
+
mod.moduleMemory.proveLeaf(pointer / LEAF_SIZE, proof, 0);
|
|
453
426
|
|
|
454
|
-
(uint256 leaf
|
|
427
|
+
(uint256 leaf,, MerkleProof memory zeroProof) = proveLastLeaf(mach, offset, proof);
|
|
455
428
|
|
|
456
429
|
bool balanced = isPowerOfTwo(leaf + 1);
|
|
457
430
|
if (balanced) {
|
|
@@ -472,7 +445,7 @@ contract OneStepProverHostIo is IOneStepProver {
|
|
|
472
445
|
) internal pure {
|
|
473
446
|
string memory prefix = "Module merkle tree:";
|
|
474
447
|
|
|
475
|
-
(uint256 leaf, MerkleProof memory leafProof,
|
|
448
|
+
(uint256 leaf, MerkleProof memory leafProof,) = proveLastLeaf(mach, 0, proof);
|
|
476
449
|
|
|
477
450
|
bool shrink = isPowerOfTwo(leaf);
|
|
478
451
|
if (shrink) {
|
|
@@ -497,8 +470,8 @@ contract OneStepProverHostIo is IOneStepProver {
|
|
|
497
470
|
require(state.hash() == mach.globalStateHash, "BAD_GLOBAL_STATE");
|
|
498
471
|
|
|
499
472
|
if (
|
|
500
|
-
opcode == Instructions.GET_GLOBAL_STATE_BYTES32
|
|
501
|
-
|
|
473
|
+
opcode == Instructions.GET_GLOBAL_STATE_BYTES32
|
|
474
|
+
|| opcode == Instructions.SET_GLOBAL_STATE_BYTES32
|
|
502
475
|
) {
|
|
503
476
|
executeGetOrSetBytes32(mach, mod, state, inst, proof[proofOffset:]);
|
|
504
477
|
} else if (opcode == Instructions.GET_GLOBAL_STATE_U64) {
|
|
@@ -539,8 +512,8 @@ contract OneStepProverHostIo is IOneStepProver {
|
|
|
539
512
|
require(multi.remainingHash == bytes32(0), "WRONG_COTHREAD_EMPTY");
|
|
540
513
|
} else {
|
|
541
514
|
require(
|
|
542
|
-
keccak256(abi.encodePacked("cothread:", newInactiveCoThread, newRemaining))
|
|
543
|
-
multi.remainingHash,
|
|
515
|
+
keccak256(abi.encodePacked("cothread:", newInactiveCoThread, newRemaining))
|
|
516
|
+
== multi.remainingHash,
|
|
544
517
|
"WRONG_COTHREAD_POP"
|
|
545
518
|
);
|
|
546
519
|
}
|
|
@@ -620,8 +593,8 @@ contract OneStepProverHostIo is IOneStepProver {
|
|
|
620
593
|
) internal view impl;
|
|
621
594
|
|
|
622
595
|
if (
|
|
623
|
-
opcode >= Instructions.GET_GLOBAL_STATE_BYTES32
|
|
624
|
-
|
|
596
|
+
opcode >= Instructions.GET_GLOBAL_STATE_BYTES32
|
|
597
|
+
&& opcode <= Instructions.SET_GLOBAL_STATE_U64
|
|
625
598
|
) {
|
|
626
599
|
impl = executeGlobalStateAccess;
|
|
627
600
|
} else if (opcode == Instructions.READ_PRE_IMAGE) {
|
|
@@ -39,18 +39,16 @@ contract OneStepProverMath is IOneStepProver {
|
|
|
39
39
|
mach.valueStack.push(ValueLib.newI32(output));
|
|
40
40
|
}
|
|
41
41
|
|
|
42
|
-
function signExtend(
|
|
42
|
+
function signExtend(
|
|
43
|
+
uint32 a
|
|
44
|
+
) internal pure returns (uint64) {
|
|
43
45
|
if (a & (1 << 31) != 0) {
|
|
44
46
|
return uint64(a) | uint64(0xffffffff00000000);
|
|
45
47
|
}
|
|
46
48
|
return uint64(a);
|
|
47
49
|
}
|
|
48
50
|
|
|
49
|
-
function i64RelOp(
|
|
50
|
-
uint64 a,
|
|
51
|
-
uint64 b,
|
|
52
|
-
uint16 relop
|
|
53
|
-
) internal pure returns (bool) {
|
|
51
|
+
function i64RelOp(uint64 a, uint64 b, uint16 relop) internal pure returns (bool) {
|
|
54
52
|
if (relop == Instructions.IRELOP_EQ) {
|
|
55
53
|
return (a == b);
|
|
56
54
|
} else if (relop == Instructions.IRELOP_NE) {
|
|
@@ -90,10 +88,8 @@ contract OneStepProverMath is IOneStepProver {
|
|
|
90
88
|
uint64 b64;
|
|
91
89
|
|
|
92
90
|
if (
|
|
93
|
-
relop == Instructions.IRELOP_LT_S ||
|
|
94
|
-
|
|
95
|
-
relop == Instructions.IRELOP_LE_S ||
|
|
96
|
-
relop == Instructions.IRELOP_GE_S
|
|
91
|
+
relop == Instructions.IRELOP_LT_S || relop == Instructions.IRELOP_GT_S
|
|
92
|
+
|| relop == Instructions.IRELOP_LE_S || relop == Instructions.IRELOP_GE_S
|
|
97
93
|
) {
|
|
98
94
|
a64 = signExtend(a);
|
|
99
95
|
b64 = signExtend(b);
|
|
@@ -123,11 +119,7 @@ contract OneStepProverMath is IOneStepProver {
|
|
|
123
119
|
mach.valueStack.push(ValueLib.newBoolean(res));
|
|
124
120
|
}
|
|
125
121
|
|
|
126
|
-
function genericIUnOp(
|
|
127
|
-
uint64 a,
|
|
128
|
-
uint16 unop,
|
|
129
|
-
uint16 bits
|
|
130
|
-
) internal pure returns (uint32) {
|
|
122
|
+
function genericIUnOp(uint64 a, uint16 unop, uint16 bits) internal pure returns (uint32) {
|
|
131
123
|
require(bits == 32 || bits == 64, "WRONG USE OF genericUnOp");
|
|
132
124
|
if (unop == Instructions.IUNOP_CLZ) {
|
|
133
125
|
/* curbits is one-based to keep with unsigned mathematics */
|
|
@@ -480,25 +472,25 @@ contract OneStepProverMath is IOneStepProver {
|
|
|
480
472
|
if (opcode == Instructions.I32_EQZ || opcode == Instructions.I64_EQZ) {
|
|
481
473
|
impl = executeEqz;
|
|
482
474
|
} else if (
|
|
483
|
-
opcode >= Instructions.I32_RELOP_BASE
|
|
484
|
-
|
|
475
|
+
opcode >= Instructions.I32_RELOP_BASE
|
|
476
|
+
&& opcode <= Instructions.I32_RELOP_BASE + Instructions.IRELOP_LAST
|
|
485
477
|
) {
|
|
486
478
|
impl = executeI32RelOp;
|
|
487
479
|
} else if (
|
|
488
|
-
opcode >= Instructions.I32_UNOP_BASE
|
|
489
|
-
|
|
480
|
+
opcode >= Instructions.I32_UNOP_BASE
|
|
481
|
+
&& opcode <= Instructions.I32_UNOP_BASE + Instructions.IUNOP_LAST
|
|
490
482
|
) {
|
|
491
483
|
impl = executeI32UnOp;
|
|
492
484
|
} else if (opcode >= Instructions.I32_ADD && opcode <= Instructions.I32_ROTR) {
|
|
493
485
|
impl = executeI32BinOp;
|
|
494
486
|
} else if (
|
|
495
|
-
opcode >= Instructions.I64_RELOP_BASE
|
|
496
|
-
|
|
487
|
+
opcode >= Instructions.I64_RELOP_BASE
|
|
488
|
+
&& opcode <= Instructions.I64_RELOP_BASE + Instructions.IRELOP_LAST
|
|
497
489
|
) {
|
|
498
490
|
impl = executeI64RelOp;
|
|
499
491
|
} else if (
|
|
500
|
-
opcode >= Instructions.I64_UNOP_BASE
|
|
501
|
-
|
|
492
|
+
opcode >= Instructions.I64_UNOP_BASE
|
|
493
|
+
&& opcode <= Instructions.I64_UNOP_BASE + Instructions.IUNOP_LAST
|
|
502
494
|
) {
|
|
503
495
|
impl = executeI64UnOp;
|
|
504
496
|
} else if (opcode >= Instructions.I64_ADD && opcode <= Instructions.I64_ROTR) {
|
|
@@ -19,11 +19,7 @@ contract OneStepProverMemory is IOneStepProver {
|
|
|
19
19
|
uint256 private constant LEAF_SIZE = 32;
|
|
20
20
|
uint64 private constant PAGE_SIZE = 65536;
|
|
21
21
|
|
|
22
|
-
function setLeafByte(
|
|
23
|
-
bytes32 oldLeaf,
|
|
24
|
-
uint256 idx,
|
|
25
|
-
uint8 val
|
|
26
|
-
) internal pure returns (bytes32) {
|
|
22
|
+
function setLeafByte(bytes32 oldLeaf, uint256 idx, uint8 val) internal pure returns (bytes32) {
|
|
27
23
|
require(idx < LEAF_SIZE, "BAD_SET_LEAF_BYTE_IDX");
|
|
28
24
|
// Take into account that we are casting the leaf to a big-endian integer
|
|
29
25
|
uint256 leafShift = (LEAF_SIZE - 1 - idx) * 8;
|
|
@@ -103,7 +99,7 @@ contract OneStepProverMemory is IOneStepProver {
|
|
|
103
99
|
}
|
|
104
100
|
|
|
105
101
|
uint256 index = inst.argumentData + mach.valueStack.pop().assumeI32();
|
|
106
|
-
(bool err, uint256 value,
|
|
102
|
+
(bool err, uint256 value,) = mod.moduleMemory.load(index, readBytes, proof, 0);
|
|
107
103
|
if (err) {
|
|
108
104
|
mach.status = MachineStatus.ERRORED;
|
|
109
105
|
return;
|
|
@@ -197,31 +193,21 @@ contract OneStepProverMemory is IOneStepProver {
|
|
|
197
193
|
if (lastProvedLeafIdx != ~uint256(0)) {
|
|
198
194
|
// Apply the last leaf update
|
|
199
195
|
mod.moduleMemory.merkleRoot = lastProvedMerkle.computeRootFromMemory(
|
|
200
|
-
lastProvedLeafIdx,
|
|
201
|
-
lastProvedLeafContents
|
|
196
|
+
lastProvedLeafIdx, lastProvedLeafContents
|
|
202
197
|
);
|
|
203
198
|
}
|
|
204
199
|
// This hits the stack size if we phrase it as mod.moduleMemory.proveLeaf(...)
|
|
205
|
-
(lastProvedLeafContents, proofOffset, lastProvedMerkle) =
|
|
206
|
-
mod.moduleMemory,
|
|
207
|
-
leafIdx,
|
|
208
|
-
proof,
|
|
209
|
-
proofOffset
|
|
210
|
-
);
|
|
200
|
+
(lastProvedLeafContents, proofOffset, lastProvedMerkle) =
|
|
201
|
+
ModuleMemoryLib.proveLeaf(mod.moduleMemory, leafIdx, proof, proofOffset);
|
|
211
202
|
lastProvedLeafIdx = leafIdx;
|
|
212
203
|
}
|
|
213
204
|
uint256 indexWithinLeaf = idx % LEAF_SIZE;
|
|
214
|
-
lastProvedLeafContents =
|
|
215
|
-
lastProvedLeafContents,
|
|
216
|
-
indexWithinLeaf,
|
|
217
|
-
uint8(toWrite)
|
|
218
|
-
);
|
|
205
|
+
lastProvedLeafContents =
|
|
206
|
+
setLeafByte(lastProvedLeafContents, indexWithinLeaf, uint8(toWrite));
|
|
219
207
|
toWrite >>= 8;
|
|
220
208
|
}
|
|
221
|
-
mod.moduleMemory.merkleRoot =
|
|
222
|
-
lastProvedLeafIdx,
|
|
223
|
-
lastProvedLeafContents
|
|
224
|
-
);
|
|
209
|
+
mod.moduleMemory.merkleRoot =
|
|
210
|
+
lastProvedMerkle.computeRootFromMemory(lastProvedLeafIdx, lastProvedLeafContents);
|
|
225
211
|
}
|
|
226
212
|
|
|
227
213
|
function executeMemorySize(
|