@arbitrum/nitro-contracts 2.1.1-beta.0 → 3.0.0-alpha.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/build/contracts/@openzeppelin/contracts/access/Ownable.sol/Ownable.dbg.json +1 -1
- package/build/contracts/@openzeppelin/contracts/interfaces/draft-IERC1822.sol/IERC1822Proxiable.dbg.json +1 -1
- package/build/contracts/@openzeppelin/contracts/proxy/ERC1967/ERC1967Proxy.sol/ERC1967Proxy.dbg.json +1 -1
- package/build/contracts/@openzeppelin/contracts/proxy/ERC1967/ERC1967Proxy.sol/ERC1967Proxy.json +2 -2
- package/build/contracts/@openzeppelin/contracts/proxy/ERC1967/ERC1967Upgrade.sol/ERC1967Upgrade.dbg.json +1 -1
- package/build/contracts/@openzeppelin/contracts/proxy/Proxy.sol/Proxy.dbg.json +1 -1
- package/build/contracts/@openzeppelin/contracts/proxy/beacon/IBeacon.sol/IBeacon.dbg.json +1 -1
- package/build/contracts/@openzeppelin/contracts/proxy/beacon/UpgradeableBeacon.sol/UpgradeableBeacon.dbg.json +1 -1
- package/build/contracts/@openzeppelin/contracts/proxy/beacon/UpgradeableBeacon.sol/UpgradeableBeacon.json +2 -2
- package/build/contracts/@openzeppelin/contracts/proxy/transparent/ProxyAdmin.sol/ProxyAdmin.dbg.json +1 -1
- package/build/contracts/@openzeppelin/contracts/proxy/transparent/ProxyAdmin.sol/ProxyAdmin.json +2 -2
- package/build/contracts/@openzeppelin/contracts/proxy/transparent/TransparentUpgradeableProxy.sol/TransparentUpgradeableProxy.dbg.json +1 -1
- package/build/contracts/@openzeppelin/contracts/proxy/transparent/TransparentUpgradeableProxy.sol/TransparentUpgradeableProxy.json +2 -2
- package/build/contracts/@openzeppelin/contracts/proxy/utils/UUPSUpgradeable.sol/UUPSUpgradeable.dbg.json +1 -1
- package/build/contracts/@openzeppelin/contracts/security/ReentrancyGuard.sol/ReentrancyGuard.dbg.json +1 -1
- package/build/contracts/@openzeppelin/contracts/token/ERC20/ERC20.sol/ERC20.dbg.json +1 -1
- package/build/contracts/@openzeppelin/contracts/token/ERC20/ERC20.sol/ERC20.json +2 -2
- package/build/contracts/@openzeppelin/contracts/token/ERC20/IERC20.sol/IERC20.dbg.json +1 -1
- package/build/contracts/@openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata.sol/IERC20Metadata.dbg.json +1 -1
- package/build/contracts/@openzeppelin/contracts/token/ERC20/extensions/draft-IERC20Permit.sol/IERC20Permit.dbg.json +4 -0
- package/build/contracts/@openzeppelin/contracts/token/ERC20/extensions/draft-IERC20Permit.sol/IERC20Permit.json +86 -0
- package/build/contracts/@openzeppelin/contracts/token/ERC20/utils/SafeERC20.sol/SafeERC20.dbg.json +1 -1
- package/build/contracts/@openzeppelin/contracts/token/ERC20/utils/SafeERC20.sol/SafeERC20.json +2 -2
- package/build/contracts/@openzeppelin/contracts/utils/Address.sol/Address.dbg.json +1 -1
- package/build/contracts/@openzeppelin/contracts/utils/Address.sol/Address.json +2 -2
- package/build/contracts/@openzeppelin/contracts/utils/Context.sol/Context.dbg.json +1 -1
- package/build/contracts/@openzeppelin/contracts/utils/Create2.sol/Create2.dbg.json +4 -0
- package/build/contracts/{src/express-lane-auction/ELCRound.sol/LatestELCRoundsLib.json → @openzeppelin/contracts/utils/Create2.sol/Create2.json} +4 -4
- package/build/contracts/@openzeppelin/contracts/utils/StorageSlot.sol/StorageSlot.dbg.json +1 -1
- package/build/contracts/@openzeppelin/contracts/utils/StorageSlot.sol/StorageSlot.json +2 -2
- package/build/contracts/@openzeppelin/contracts/utils/Strings.sol/Strings.dbg.json +1 -1
- package/build/contracts/@openzeppelin/contracts/utils/Strings.sol/Strings.json +2 -2
- package/build/contracts/@openzeppelin/contracts-upgradeable/access/AccessControlUpgradeable.sol/AccessControlUpgradeable.dbg.json +1 -1
- package/build/contracts/@openzeppelin/contracts-upgradeable/access/AccessControlUpgradeable.sol/AccessControlUpgradeable.json +13 -0
- package/build/contracts/@openzeppelin/contracts-upgradeable/access/IAccessControlUpgradeable.sol/IAccessControlUpgradeable.dbg.json +1 -1
- package/build/contracts/@openzeppelin/contracts-upgradeable/access/OwnableUpgradeable.sol/OwnableUpgradeable.dbg.json +1 -1
- package/build/contracts/@openzeppelin/contracts-upgradeable/access/OwnableUpgradeable.sol/OwnableUpgradeable.json +13 -0
- package/build/contracts/@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol/Initializable.dbg.json +1 -1
- package/build/contracts/@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol/Initializable.json +15 -1
- package/build/contracts/@openzeppelin/contracts-upgradeable/security/PausableUpgradeable.sol/PausableUpgradeable.dbg.json +1 -1
- package/build/contracts/@openzeppelin/contracts-upgradeable/security/PausableUpgradeable.sol/PausableUpgradeable.json +13 -0
- package/build/contracts/@openzeppelin/contracts-upgradeable/utils/AddressUpgradeable.sol/AddressUpgradeable.dbg.json +1 -1
- package/build/contracts/@openzeppelin/contracts-upgradeable/utils/AddressUpgradeable.sol/AddressUpgradeable.json +2 -2
- package/build/contracts/@openzeppelin/contracts-upgradeable/utils/ContextUpgradeable.sol/ContextUpgradeable.dbg.json +1 -1
- package/build/contracts/@openzeppelin/contracts-upgradeable/utils/ContextUpgradeable.sol/ContextUpgradeable.json +15 -1
- package/build/contracts/@openzeppelin/contracts-upgradeable/utils/Create2Upgradeable.sol/Create2Upgradeable.dbg.json +4 -0
- package/build/contracts/@openzeppelin/contracts-upgradeable/utils/Create2Upgradeable.sol/Create2Upgradeable.json +10 -0
- package/build/contracts/@openzeppelin/contracts-upgradeable/utils/StorageSlotUpgradeable.sol/StorageSlotUpgradeable.dbg.json +1 -1
- package/build/contracts/@openzeppelin/contracts-upgradeable/utils/StorageSlotUpgradeable.sol/StorageSlotUpgradeable.json +2 -2
- package/build/contracts/@openzeppelin/contracts-upgradeable/utils/StringsUpgradeable.sol/StringsUpgradeable.dbg.json +1 -1
- package/build/contracts/@openzeppelin/contracts-upgradeable/utils/StringsUpgradeable.sol/StringsUpgradeable.json +2 -2
- package/build/contracts/@openzeppelin/contracts-upgradeable/utils/introspection/ERC165Upgradeable.sol/ERC165Upgradeable.dbg.json +1 -1
- package/build/contracts/@openzeppelin/contracts-upgradeable/utils/introspection/ERC165Upgradeable.sol/ERC165Upgradeable.json +13 -0
- package/build/contracts/@openzeppelin/contracts-upgradeable/utils/introspection/IERC165Upgradeable.sol/IERC165Upgradeable.dbg.json +1 -1
- package/build/contracts/@openzeppelin/contracts-upgradeable/utils/structs/EnumerableSetUpgradeable.sol/EnumerableSetUpgradeable.dbg.json +1 -1
- package/build/contracts/@openzeppelin/contracts-upgradeable/utils/structs/EnumerableSetUpgradeable.sol/EnumerableSetUpgradeable.json +2 -2
- package/build/contracts/src/assertionStakingPool/AbsBoldStakingPool.sol/AbsBoldStakingPool.dbg.json +4 -0
- package/build/contracts/{@openzeppelin/contracts-upgradeable/token/ERC20/IERC20Upgradeable.sol/IERC20Upgradeable.json → src/assertionStakingPool/AbsBoldStakingPool.sol/AbsBoldStakingPool.json} +41 -95
- package/build/contracts/src/assertionStakingPool/AssertionStakingPool.sol/AssertionStakingPool.dbg.json +4 -0
- package/build/contracts/src/assertionStakingPool/AssertionStakingPool.sol/AssertionStakingPool.json +340 -0
- package/build/contracts/src/assertionStakingPool/AssertionStakingPoolCreator.sol/AssertionStakingPoolCreator.dbg.json +4 -0
- package/build/contracts/src/assertionStakingPool/AssertionStakingPoolCreator.sol/AssertionStakingPoolCreator.json +89 -0
- package/build/contracts/src/assertionStakingPool/EdgeStakingPool.sol/EdgeStakingPool.dbg.json +4 -0
- package/build/contracts/src/assertionStakingPool/EdgeStakingPool.sol/EdgeStakingPool.json +248 -0
- package/build/contracts/src/assertionStakingPool/EdgeStakingPoolCreator.sol/EdgeStakingPoolCreator.dbg.json +4 -0
- package/build/contracts/src/assertionStakingPool/EdgeStakingPoolCreator.sol/EdgeStakingPoolCreator.json +83 -0
- package/build/contracts/src/assertionStakingPool/StakingPoolCreatorUtils.sol/StakingPoolCreatorUtils.dbg.json +4 -0
- package/build/contracts/src/assertionStakingPool/StakingPoolCreatorUtils.sol/StakingPoolCreatorUtils.json +16 -0
- package/build/contracts/src/assertionStakingPool/interfaces/IAbsBoldStakingPool.sol/IAbsBoldStakingPool.dbg.json +4 -0
- package/build/contracts/src/assertionStakingPool/interfaces/IAbsBoldStakingPool.sol/IAbsBoldStakingPool.json +140 -0
- package/build/contracts/src/assertionStakingPool/interfaces/IAssertionStakingPool.sol/IAssertionStakingPool.dbg.json +4 -0
- package/build/contracts/src/assertionStakingPool/interfaces/IAssertionStakingPool.sol/IAssertionStakingPool.json +324 -0
- package/build/contracts/src/assertionStakingPool/interfaces/IAssertionStakingPoolCreator.sol/IAssertionStakingPoolCreator.dbg.json +4 -0
- package/build/contracts/src/assertionStakingPool/interfaces/IAssertionStakingPoolCreator.sol/IAssertionStakingPoolCreator.json +84 -0
- package/build/contracts/src/assertionStakingPool/interfaces/IEdgeStakingPool.sol/IEdgeStakingPool.dbg.json +4 -0
- package/build/contracts/{@openzeppelin/contracts-upgradeable/token/ERC20/extensions/IERC20MetadataUpgradeable.sol/IERC20MetadataUpgradeable.json → src/assertionStakingPool/interfaces/IEdgeStakingPool.sol/IEdgeStakingPool.json} +109 -110
- package/build/contracts/src/assertionStakingPool/interfaces/IEdgeStakingPoolCreator.sol/IEdgeStakingPoolCreator.dbg.json +4 -0
- package/build/contracts/src/assertionStakingPool/interfaces/IEdgeStakingPoolCreator.sol/IEdgeStakingPoolCreator.json +78 -0
- package/build/contracts/src/bridge/AbsBridge.sol/AbsBridge.dbg.json +1 -1
- package/build/contracts/src/bridge/AbsBridge.sol/AbsBridge.json +13 -0
- package/build/contracts/src/bridge/AbsInbox.sol/AbsInbox.dbg.json +1 -1
- package/build/contracts/src/bridge/AbsInbox.sol/AbsInbox.json +14 -1
- package/build/contracts/src/bridge/AbsOutbox.sol/AbsOutbox.dbg.json +1 -1
- package/build/contracts/src/bridge/Bridge.sol/Bridge.dbg.json +1 -1
- package/build/contracts/src/bridge/Bridge.sol/Bridge.json +15 -2
- package/build/contracts/src/bridge/DelayBuffer.sol/DelayBuffer.dbg.json +4 -0
- package/build/contracts/src/bridge/DelayBuffer.sol/DelayBuffer.json +24 -0
- package/build/contracts/src/bridge/ERC20Bridge.sol/ERC20Bridge.dbg.json +1 -1
- package/build/contracts/src/bridge/ERC20Bridge.sol/ERC20Bridge.json +15 -2
- package/build/contracts/src/bridge/ERC20Inbox.sol/ERC20Inbox.dbg.json +1 -1
- package/build/contracts/src/bridge/ERC20Inbox.sol/ERC20Inbox.json +16 -3
- package/build/contracts/src/bridge/ERC20Outbox.sol/ERC20Outbox.dbg.json +1 -1
- package/build/contracts/src/bridge/ERC20Outbox.sol/ERC20Outbox.json +2 -2
- package/build/contracts/src/bridge/GasRefunder.sol/GasRefunder.dbg.json +1 -1
- package/build/contracts/src/bridge/GasRefunder.sol/GasRefunder.json +2 -2
- package/build/contracts/src/bridge/IBridge.sol/IBridge.dbg.json +1 -1
- package/build/contracts/src/bridge/IDelayedMessageProvider.sol/IDelayedMessageProvider.dbg.json +1 -1
- package/build/contracts/src/bridge/IERC20Bridge.sol/IERC20Bridge.dbg.json +1 -1
- package/build/contracts/src/bridge/IERC20Inbox.sol/IERC20Inbox.dbg.json +1 -1
- package/build/contracts/src/bridge/IEthBridge.sol/IEthBridge.dbg.json +1 -1
- package/build/contracts/src/bridge/IInbox.sol/IInbox.dbg.json +1 -1
- package/build/contracts/src/bridge/IInboxBase.sol/IInboxBase.dbg.json +1 -1
- package/build/contracts/src/bridge/IOutbox.sol/IOutbox.dbg.json +1 -1
- package/build/contracts/src/bridge/IOwnable.sol/IOwnable.dbg.json +1 -1
- package/build/contracts/src/bridge/ISequencerInbox.sol/ISequencerInbox.dbg.json +1 -1
- package/build/contracts/src/bridge/ISequencerInbox.sol/ISequencerInbox.json +441 -0
- package/build/contracts/src/bridge/Inbox.sol/Inbox.dbg.json +1 -1
- package/build/contracts/src/bridge/Inbox.sol/Inbox.json +20 -2
- package/build/contracts/src/bridge/Messages.sol/Messages.dbg.json +1 -1
- package/build/contracts/src/bridge/Messages.sol/Messages.json +2 -2
- package/build/contracts/src/bridge/Outbox.sol/Outbox.dbg.json +1 -1
- package/build/contracts/src/bridge/Outbox.sol/Outbox.json +2 -2
- package/build/contracts/src/bridge/SequencerInbox.sol/SequencerInbox.dbg.json +1 -1
- package/build/contracts/src/bridge/SequencerInbox.sol/SequencerInbox.json +566 -9
- package/build/contracts/src/chain/CacheManager.sol/CacheManager.dbg.json +1 -1
- package/build/contracts/src/chain/CacheManager.sol/CacheManager.json +15 -2
- package/build/contracts/src/challengeV2/EdgeChallengeManager.sol/EdgeChallengeManager.dbg.json +4 -0
- package/build/contracts/src/challengeV2/EdgeChallengeManager.sol/EdgeChallengeManager.json +1631 -0
- package/build/contracts/src/challengeV2/IAssertionChain.sol/IAssertionChain.dbg.json +4 -0
- package/build/contracts/src/challengeV2/IAssertionChain.sol/IAssertionChain.json +247 -0
- package/build/contracts/src/challengeV2/IEdgeChallengeManager.sol/IEdgeChallengeManager.dbg.json +4 -0
- package/build/contracts/src/challengeV2/IEdgeChallengeManager.sol/IEdgeChallengeManager.json +762 -0
- package/build/contracts/src/challengeV2/libraries/ArrayUtilsLib.sol/ArrayUtilsLib.dbg.json +4 -0
- package/build/contracts/src/challengeV2/libraries/ArrayUtilsLib.sol/ArrayUtilsLib.json +10 -0
- package/build/contracts/src/challengeV2/libraries/ChallengeEdgeLib.sol/ChallengeEdgeLib.dbg.json +4 -0
- package/build/contracts/{@openzeppelin/contracts/utils/cryptography/ECDSA.sol/ECDSA.json → src/challengeV2/libraries/ChallengeEdgeLib.sol/ChallengeEdgeLib.json} +4 -4
- package/build/contracts/src/challengeV2/libraries/EdgeChallengeManagerLib.sol/EdgeChallengeManagerLib.dbg.json +4 -0
- package/build/contracts/src/challengeV2/libraries/EdgeChallengeManagerLib.sol/EdgeChallengeManagerLib.json +24 -0
- package/build/contracts/src/challengeV2/libraries/MerkleTreeAccumulatorLib.sol/MerkleTreeAccumulatorLib.dbg.json +4 -0
- package/build/contracts/src/challengeV2/libraries/MerkleTreeAccumulatorLib.sol/MerkleTreeAccumulatorLib.json +24 -0
- package/build/contracts/src/challengeV2/libraries/UintUtilsLib.sol/UintUtilsLib.dbg.json +4 -0
- package/build/contracts/src/challengeV2/libraries/UintUtilsLib.sol/UintUtilsLib.json +10 -0
- package/build/contracts/src/libraries/AddressAliasHelper.sol/AddressAliasHelper.dbg.json +1 -1
- package/build/contracts/src/libraries/AddressAliasHelper.sol/AddressAliasHelper.json +2 -2
- package/build/contracts/src/libraries/AdminFallbackProxy.sol/AdminFallbackProxy.dbg.json +1 -1
- package/build/contracts/src/libraries/AdminFallbackProxy.sol/AdminFallbackProxy.json +2 -2
- package/build/contracts/src/libraries/AdminFallbackProxy.sol/DoubleLogicERC1967Upgrade.dbg.json +1 -1
- package/build/contracts/src/libraries/ArbitrumChecker.sol/ArbitrumChecker.dbg.json +1 -1
- package/build/contracts/src/libraries/ArbitrumChecker.sol/ArbitrumChecker.json +2 -2
- package/build/contracts/src/libraries/CallerChecker.sol/CallerChecker.dbg.json +4 -0
- package/build/contracts/src/{challenge/ChallengeLib.sol/ChallengeLib.json → libraries/CallerChecker.sol/CallerChecker.json} +4 -4
- package/build/contracts/src/libraries/CryptographyPrimitives.sol/CryptographyPrimitives.dbg.json +1 -1
- package/build/contracts/src/libraries/CryptographyPrimitives.sol/CryptographyPrimitives.json +2 -2
- package/build/contracts/src/libraries/DecimalsConverterHelper.sol/DecimalsConverterHelper.dbg.json +1 -1
- package/build/contracts/src/libraries/DecimalsConverterHelper.sol/DecimalsConverterHelper.json +2 -2
- package/build/contracts/src/libraries/DelegateCallAware.sol/DelegateCallAware.dbg.json +1 -1
- package/build/contracts/src/libraries/DoubleLogicUUPSUpgradeable.sol/DoubleLogicUUPSUpgradeable.dbg.json +1 -1
- package/build/contracts/src/libraries/GasRefundEnabled.sol/GasRefundEnabled.dbg.json +1 -1
- package/build/contracts/src/libraries/IGasRefunder.sol/IGasRefunder.dbg.json +1 -1
- package/build/contracts/src/libraries/IReader4844.sol/IReader4844.dbg.json +1 -1
- package/build/contracts/src/libraries/MerkleLib.sol/MerkleLib.dbg.json +1 -1
- package/build/contracts/src/libraries/MerkleLib.sol/MerkleLib.json +2 -2
- package/build/contracts/src/libraries/UUPSNotUpgradeable.sol/UUPSNotUpgradeable.dbg.json +1 -1
- package/build/contracts/src/mocks/Benchmarks.sol/Benchmarks.dbg.json +1 -1
- package/build/contracts/src/mocks/Benchmarks.sol/Benchmarks.json +2 -2
- package/build/contracts/src/mocks/BridgeStub.sol/BridgeStub.dbg.json +1 -1
- package/build/contracts/src/mocks/BridgeStub.sol/BridgeStub.json +8 -8
- package/build/contracts/src/mocks/BridgeUnproxied.sol/BridgeUnproxied.dbg.json +1 -1
- package/build/contracts/src/mocks/BridgeUnproxied.sol/BridgeUnproxied.json +15 -2
- package/build/contracts/src/mocks/CreateTest.sol/CreateTest.dbg.json +1 -1
- package/build/contracts/src/mocks/CreateTest.sol/CreateTest.json +2 -2
- package/build/contracts/src/mocks/HostioTest.sol/HostioTest.dbg.json +1 -1
- package/build/contracts/src/mocks/HostioTest.sol/HostioTest.json +2 -2
- package/build/contracts/src/mocks/InboxStub.sol/InboxStub.dbg.json +1 -1
- package/build/contracts/src/mocks/InboxStub.sol/InboxStub.json +2 -2
- package/build/contracts/src/mocks/MerkleTreeAccess.sol/MerkleTreeAccess.dbg.json +4 -0
- package/build/contracts/src/mocks/MerkleTreeAccess.sol/MerkleTreeAccess.json +227 -0
- package/build/contracts/src/mocks/MockRollupEventInbox.sol/MockRollupEventInbox.dbg.json +4 -0
- package/build/contracts/src/mocks/MockRollupEventInbox.sol/MockRollupEventInbox.json +133 -0
- package/build/contracts/src/mocks/MultiCallTest.sol/MultiCallTest.dbg.json +1 -1
- package/build/contracts/src/mocks/MultiCallTest.sol/MultiCallTest.json +2 -2
- package/build/contracts/src/mocks/PendingBlkTimeAndNrAdvanceCheck.sol/PendingBlkTimeAndNrAdvanceCheck.dbg.json +1 -1
- package/build/contracts/src/mocks/PendingBlkTimeAndNrAdvanceCheck.sol/PendingBlkTimeAndNrAdvanceCheck.json +2 -2
- package/build/contracts/src/mocks/Program.sol/ProgramTest.dbg.json +1 -1
- package/build/contracts/src/mocks/Program.sol/ProgramTest.json +2 -2
- package/build/contracts/src/mocks/ProxyAdminForBinding.sol/ProxyAdminForBinding.dbg.json +1 -1
- package/build/contracts/src/mocks/ProxyAdminForBinding.sol/ProxyAdminForBinding.json +2 -2
- package/build/contracts/src/mocks/SdkStorage.sol/SdkStorage.dbg.json +1 -1
- package/build/contracts/src/mocks/SdkStorage.sol/SdkStorage.json +2 -2
- package/build/contracts/src/mocks/SequencerInboxBlobMock.sol/SequencerInboxBlobMock.dbg.json +4 -0
- package/build/contracts/src/mocks/SequencerInboxBlobMock.sol/SequencerInboxBlobMock.json +1632 -0
- package/build/contracts/src/mocks/SequencerInboxStub.sol/SequencerInboxStub.dbg.json +1 -1
- package/build/contracts/src/mocks/SequencerInboxStub.sol/SequencerInboxStub.json +566 -9
- package/build/contracts/src/mocks/Simple.sol/Simple.dbg.json +1 -1
- package/build/contracts/src/mocks/Simple.sol/Simple.json +2 -2
- package/build/contracts/src/mocks/SimpleCacheManager.sol/SimpleCacheManager.dbg.json +1 -1
- package/build/contracts/src/mocks/SimpleCacheManager.sol/SimpleCacheManager.json +2 -2
- package/build/contracts/src/mocks/SimpleOneStepProofEntry.sol/SimpleOneStepProofEntry.dbg.json +4 -0
- package/build/contracts/src/mocks/SimpleOneStepProofEntry.sol/SimpleOneStepProofEntry.json +142 -0
- package/build/contracts/src/mocks/SimpleProxy.sol/SimpleProxy.dbg.json +1 -1
- package/build/contracts/src/mocks/SimpleProxy.sol/SimpleProxy.json +2 -2
- package/build/contracts/src/mocks/TestWETH9.sol/IWETH9.dbg.json +4 -0
- package/build/contracts/src/mocks/TestWETH9.sol/IWETH9.json +31 -0
- package/build/contracts/src/mocks/TestWETH9.sol/TestWETH9.dbg.json +4 -0
- package/build/contracts/src/mocks/TestWETH9.sol/TestWETH9.json +317 -0
- package/build/contracts/src/mocks/UpgradeExecutorMock.sol/UpgradeExecutorMock.dbg.json +1 -1
- package/build/contracts/src/mocks/UpgradeExecutorMock.sol/UpgradeExecutorMock.json +15 -2
- package/build/contracts/src/node-interface/NodeInterface.sol/NodeInterface.dbg.json +1 -1
- package/build/contracts/src/node-interface/NodeInterfaceDebug.sol/NodeInterfaceDebug.dbg.json +1 -1
- package/build/contracts/src/osp/HashProofHelper.sol/HashProofHelper.dbg.json +1 -1
- package/build/contracts/src/osp/HashProofHelper.sol/HashProofHelper.json +2 -2
- package/build/contracts/src/osp/IOneStepProofEntry.sol/IOneStepProofEntry.dbg.json +1 -1
- package/build/contracts/src/osp/IOneStepProofEntry.sol/IOneStepProofEntry.json +33 -9
- package/build/contracts/src/osp/IOneStepProofEntry.sol/OneStepProofEntryLib.dbg.json +1 -1
- package/build/contracts/src/osp/IOneStepProofEntry.sol/OneStepProofEntryLib.json +2 -2
- package/build/contracts/src/osp/IOneStepProver.sol/IOneStepProver.dbg.json +1 -1
- package/build/contracts/src/osp/IOneStepProver.sol/IOneStepProver.json +5 -0
- package/build/contracts/src/osp/OneStepProofEntry.sol/OneStepProofEntry.dbg.json +1 -1
- package/build/contracts/src/osp/OneStepProofEntry.sol/OneStepProofEntry.json +35 -11
- package/build/contracts/src/osp/OneStepProver0.sol/OneStepProver0.dbg.json +1 -1
- package/build/contracts/src/osp/OneStepProver0.sol/OneStepProver0.json +7 -2
- package/build/contracts/src/osp/OneStepProverHostIo.sol/OneStepProverHostIo.dbg.json +1 -1
- package/build/contracts/src/osp/OneStepProverHostIo.sol/OneStepProverHostIo.json +7 -2
- package/build/contracts/src/osp/OneStepProverMath.sol/OneStepProverMath.dbg.json +1 -1
- package/build/contracts/src/osp/OneStepProverMath.sol/OneStepProverMath.json +7 -2
- package/build/contracts/src/osp/OneStepProverMemory.sol/OneStepProverMemory.dbg.json +1 -1
- package/build/contracts/src/osp/OneStepProverMemory.sol/OneStepProverMemory.json +7 -2
- package/build/contracts/src/precompiles/ArbAddressTable.sol/ArbAddressTable.dbg.json +1 -1
- package/build/contracts/src/precompiles/ArbAggregator.sol/ArbAggregator.dbg.json +1 -1
- package/build/contracts/src/precompiles/ArbBLS.sol/ArbBLS.dbg.json +1 -1
- package/build/contracts/src/precompiles/ArbDebug.sol/ArbDebug.dbg.json +1 -1
- package/build/contracts/src/precompiles/ArbFunctionTable.sol/ArbFunctionTable.dbg.json +1 -1
- package/build/contracts/src/precompiles/ArbGasInfo.sol/ArbGasInfo.dbg.json +1 -1
- package/build/contracts/src/precompiles/ArbInfo.sol/ArbInfo.dbg.json +1 -1
- package/build/contracts/src/precompiles/ArbOwner.sol/ArbOwner.dbg.json +1 -1
- package/build/contracts/src/precompiles/ArbOwnerPublic.sol/ArbOwnerPublic.dbg.json +1 -1
- package/build/contracts/src/precompiles/ArbRetryableTx.sol/ArbRetryableTx.dbg.json +1 -1
- package/build/contracts/src/precompiles/ArbStatistics.sol/ArbStatistics.dbg.json +1 -1
- package/build/contracts/src/precompiles/ArbSys.sol/ArbSys.dbg.json +1 -1
- package/build/contracts/src/precompiles/ArbWasm.sol/ArbWasm.dbg.json +1 -1
- package/build/contracts/src/precompiles/ArbWasmCache.sol/ArbWasmCache.dbg.json +1 -1
- package/build/contracts/src/precompiles/ArbosActs.sol/ArbosActs.dbg.json +1 -1
- package/build/contracts/src/precompiles/ArbosTest.sol/ArbosTest.dbg.json +1 -1
- package/build/contracts/src/rollup/AbsRollupEventInbox.sol/AbsRollupEventInbox.dbg.json +1 -1
- package/build/contracts/src/rollup/Assertion.sol/AssertionNodeLib.dbg.json +4 -0
- package/build/contracts/src/rollup/{Node.sol/NodeLib.json → Assertion.sol/AssertionNodeLib.json} +4 -4
- package/build/contracts/src/rollup/AssertionState.sol/AssertionStateLib.dbg.json +4 -0
- package/build/contracts/src/{express-lane-auction/Balance.sol/BalanceLib.json → rollup/AssertionState.sol/AssertionStateLib.json} +4 -4
- package/build/contracts/src/rollup/BOLDUpgradeAction.sol/BOLDUpgradeAction.dbg.json +4 -0
- package/build/contracts/src/rollup/BOLDUpgradeAction.sol/BOLDUpgradeAction.json +807 -0
- package/build/contracts/src/rollup/BOLDUpgradeAction.sol/ConstantArrayStorage.dbg.json +4 -0
- package/build/contracts/src/rollup/BOLDUpgradeAction.sol/ConstantArrayStorage.json +35 -0
- package/build/contracts/src/rollup/BOLDUpgradeAction.sol/IOldRollup.dbg.json +4 -0
- package/build/contracts/src/rollup/BOLDUpgradeAction.sol/IOldRollup.json +361 -0
- package/build/contracts/src/rollup/BOLDUpgradeAction.sol/IOldRollupAdmin.dbg.json +4 -0
- package/build/contracts/src/rollup/BOLDUpgradeAction.sol/IOldRollupAdmin.json +38 -0
- package/build/contracts/src/rollup/BOLDUpgradeAction.sol/ISeqInboxPostUpgradeInit.dbg.json +4 -0
- package/build/contracts/src/rollup/BOLDUpgradeAction.sol/ISeqInboxPostUpgradeInit.json +41 -0
- package/build/contracts/src/rollup/BOLDUpgradeAction.sol/RollupReader.dbg.json +4 -0
- package/build/contracts/src/rollup/BOLDUpgradeAction.sol/RollupReader.json +385 -0
- package/build/contracts/src/rollup/BOLDUpgradeAction.sol/StateHashPreImageLookup.dbg.json +4 -0
- package/build/contracts/src/rollup/BOLDUpgradeAction.sol/StateHashPreImageLookup.json +203 -0
- package/build/contracts/src/rollup/BridgeCreator.sol/BridgeCreator.dbg.json +1 -1
- package/build/contracts/src/rollup/BridgeCreator.sol/BridgeCreator.json +62 -10
- package/build/contracts/src/rollup/DeployHelper.sol/DeployHelper.dbg.json +1 -1
- package/build/contracts/src/rollup/DeployHelper.sol/DeployHelper.json +2 -2
- package/build/contracts/src/rollup/ERC20RollupEventInbox.sol/ERC20RollupEventInbox.dbg.json +1 -1
- package/build/contracts/src/rollup/ERC20RollupEventInbox.sol/ERC20RollupEventInbox.json +2 -2
- package/build/contracts/src/rollup/FactoryDeployerHelper.sol/FactoryDeployerHelper.dbg.json +1 -1
- package/build/contracts/src/rollup/FactoryDeployerHelper.sol/FactoryDeployerHelper.json +2 -2
- package/build/contracts/src/rollup/FactoryDeployerHelper.sol/IDeployHelper.dbg.json +1 -1
- package/build/contracts/src/rollup/FactoryDeployerHelper.sol/IERC20.dbg.json +1 -1
- package/build/contracts/src/rollup/FactoryDeployerHelper.sol/IERC20Bridge.dbg.json +1 -1
- package/build/contracts/src/rollup/FactoryDeployerHelper.sol/IInboxBase.dbg.json +1 -1
- package/build/contracts/src/rollup/IRollupAdmin.sol/IRollupAdmin.dbg.json +1 -1
- package/build/contracts/src/rollup/IRollupAdmin.sol/IRollupAdmin.json +473 -99
- package/build/contracts/src/rollup/IRollupCore.sol/IRollupCore.dbg.json +1 -1
- package/build/contracts/src/rollup/IRollupCore.sol/IRollupCore.json +315 -221
- package/build/contracts/src/rollup/IRollupEventInbox.sol/IRollupEventInbox.dbg.json +1 -1
- package/build/contracts/src/rollup/IRollupLogic.sol/IRollupUser.dbg.json +1 -1
- package/build/contracts/src/rollup/IRollupLogic.sol/IRollupUser.json +678 -499
- package/build/contracts/src/rollup/RollupAdminLogic.sol/RollupAdminLogic.dbg.json +1 -1
- package/build/contracts/src/rollup/RollupAdminLogic.sol/RollupAdminLogic.json +806 -435
- package/build/contracts/src/rollup/RollupCore.sol/RollupCore.dbg.json +1 -1
- package/build/contracts/src/rollup/RollupCore.sol/RollupCore.json +323 -235
- package/build/contracts/src/rollup/RollupCreator.sol/RollupCreator.dbg.json +1 -1
- package/build/contracts/src/rollup/RollupCreator.sol/RollupCreator.json +98 -36
- package/build/contracts/src/rollup/RollupEventInbox.sol/RollupEventInbox.dbg.json +1 -1
- package/build/contracts/src/rollup/RollupEventInbox.sol/RollupEventInbox.json +2 -2
- package/build/contracts/src/rollup/RollupLib.sol/RollupLib.dbg.json +1 -1
- package/build/contracts/src/rollup/RollupLib.sol/RollupLib.json +2 -2
- package/build/contracts/src/rollup/RollupProxy.sol/RollupProxy.dbg.json +1 -1
- package/build/contracts/src/rollup/RollupProxy.sol/RollupProxy.json +97 -16
- package/build/contracts/src/rollup/RollupUserLogic.sol/RollupUserLogic.dbg.json +1 -1
- package/build/contracts/src/rollup/RollupUserLogic.sol/RollupUserLogic.json +924 -535
- package/build/contracts/src/rollup/ValidatorWallet.sol/ValidatorWallet.dbg.json +1 -1
- package/build/contracts/src/rollup/ValidatorWallet.sol/ValidatorWallet.json +15 -43
- package/build/contracts/src/rollup/ValidatorWalletCreator.sol/ValidatorWalletCreator.dbg.json +1 -1
- package/build/contracts/src/rollup/ValidatorWalletCreator.sol/ValidatorWalletCreator.json +2 -2
- package/build/contracts/src/state/Deserialize.sol/Deserialize.dbg.json +1 -1
- package/build/contracts/src/state/Deserialize.sol/Deserialize.json +2 -2
- package/build/contracts/src/state/GlobalState.sol/GlobalStateLib.dbg.json +1 -1
- package/build/contracts/src/state/GlobalState.sol/GlobalStateLib.json +2 -2
- package/build/contracts/src/state/Instructions.sol/Instructions.dbg.json +1 -1
- package/build/contracts/src/state/Instructions.sol/Instructions.json +2 -2
- package/build/contracts/src/state/Machine.sol/MachineLib.dbg.json +1 -1
- package/build/contracts/src/state/Machine.sol/MachineLib.json +2 -2
- package/build/contracts/src/state/MerkleProof.sol/MerkleProofLib.dbg.json +1 -1
- package/build/contracts/src/state/MerkleProof.sol/MerkleProofLib.json +2 -2
- package/build/contracts/src/state/Module.sol/ModuleLib.dbg.json +1 -1
- package/build/contracts/src/state/Module.sol/ModuleLib.json +2 -2
- package/build/contracts/src/state/ModuleMemory.sol/ModuleMemoryLib.dbg.json +1 -1
- package/build/contracts/src/state/ModuleMemory.sol/ModuleMemoryLib.json +2 -2
- package/build/contracts/src/state/ModuleMemoryCompact.sol/ModuleMemoryCompactLib.dbg.json +1 -1
- package/build/contracts/src/state/ModuleMemoryCompact.sol/ModuleMemoryCompactLib.json +2 -2
- package/build/contracts/src/state/MultiStack.sol/MultiStackLib.dbg.json +1 -1
- package/build/contracts/src/state/MultiStack.sol/MultiStackLib.json +2 -2
- package/build/contracts/src/state/PcArray.sol/PcArrayLib.dbg.json +1 -1
- package/build/contracts/src/state/PcArray.sol/PcArrayLib.json +2 -2
- package/build/contracts/src/state/StackFrame.sol/StackFrameLib.dbg.json +1 -1
- package/build/contracts/src/state/StackFrame.sol/StackFrameLib.json +2 -2
- package/build/contracts/src/state/Value.sol/ValueLib.dbg.json +1 -1
- package/build/contracts/src/state/Value.sol/ValueLib.json +2 -2
- package/build/contracts/src/state/ValueArray.sol/ValueArrayLib.dbg.json +1 -1
- package/build/contracts/src/state/ValueArray.sol/ValueArrayLib.json +2 -2
- package/build/contracts/src/state/ValueStack.sol/ValueStackLib.dbg.json +1 -1
- package/build/contracts/src/state/ValueStack.sol/ValueStackLib.json +2 -2
- package/build/contracts/src/test-helpers/BridgeTester.sol/BridgeTester.dbg.json +1 -1
- package/build/contracts/src/test-helpers/BridgeTester.sol/BridgeTester.json +15 -2
- package/build/contracts/src/test-helpers/CryptographyPrimitivesTester.sol/CryptographyPrimitivesTester.dbg.json +1 -1
- package/build/contracts/src/test-helpers/CryptographyPrimitivesTester.sol/CryptographyPrimitivesTester.json +2 -2
- package/build/contracts/src/test-helpers/EthVault.sol/EthVault.dbg.json +1 -1
- package/build/contracts/src/test-helpers/EthVault.sol/EthVault.json +2 -2
- package/build/contracts/src/test-helpers/MessageTester.sol/MessageTester.dbg.json +1 -1
- package/build/contracts/src/test-helpers/MessageTester.sol/MessageTester.json +2 -2
- package/build/contracts/src/test-helpers/OutboxWithoutOptTester.sol/OutboxWithoutOptTester.dbg.json +1 -1
- package/build/contracts/src/test-helpers/OutboxWithoutOptTester.sol/OutboxWithoutOptTester.json +2 -2
- package/build/contracts/src/test-helpers/RollupMock.sol/RollupMock.dbg.json +1 -1
- package/build/contracts/src/test-helpers/RollupMock.sol/RollupMock.json +2 -15
- package/build/contracts/src/test-helpers/TestToken.sol/TestToken.dbg.json +1 -1
- package/build/contracts/src/test-helpers/TestToken.sol/TestToken.json +2 -2
- package/build/contracts/src/test-helpers/ValueArrayTester.sol/ValueArrayTester.dbg.json +1 -1
- package/build/contracts/src/test-helpers/ValueArrayTester.sol/ValueArrayTester.json +2 -2
- package/out/yul/Reader4844.yul/Reader4844.json +1 -1
- package/package.json +11 -4
- package/src/assertionStakingPool/AbsBoldStakingPool.sol +66 -0
- package/src/assertionStakingPool/AssertionStakingPool.sol +70 -0
- package/src/assertionStakingPool/AssertionStakingPoolCreator.sol +35 -0
- package/src/assertionStakingPool/EdgeStakingPool.sol +57 -0
- package/src/assertionStakingPool/EdgeStakingPoolCreator.sol +34 -0
- package/src/assertionStakingPool/StakingPoolCreatorUtils.sol +25 -0
- package/src/assertionStakingPool/interfaces/IAbsBoldStakingPool.sol +41 -0
- package/src/assertionStakingPool/interfaces/IAssertionStakingPool.sol +36 -0
- package/src/assertionStakingPool/interfaces/IAssertionStakingPoolCreator.sol +31 -0
- package/src/assertionStakingPool/interfaces/IEdgeStakingPool.sol +27 -0
- package/src/assertionStakingPool/interfaces/IEdgeStakingPoolCreator.sol +28 -0
- package/src/bridge/AbsBridge.sol +38 -48
- package/src/bridge/AbsInbox.sol +89 -92
- package/src/bridge/AbsOutbox.sol +23 -37
- package/src/bridge/Bridge.sol +6 -4
- package/src/bridge/DelayBuffer.sol +123 -0
- package/src/bridge/DelayBufferTypes.sol +38 -0
- package/src/bridge/ERC20Bridge.sol +8 -4
- package/src/bridge/ERC20Inbox.sol +46 -53
- package/src/bridge/ERC20Outbox.sol +7 -3
- package/src/bridge/GasRefunder.sol +38 -24
- package/src/bridge/IBridge.sol +30 -21
- package/src/bridge/IERC20Bridge.sol +1 -1
- package/src/bridge/IERC20Inbox.sol +4 -2
- package/src/bridge/IEthBridge.sol +4 -2
- package/src/bridge/IInbox.sol +4 -2
- package/src/bridge/IInboxBase.sol +16 -8
- package/src/bridge/IOutbox.sol +13 -8
- package/src/bridge/ISequencerInbox.sol +118 -13
- package/src/bridge/Inbox.sol +134 -151
- package/src/bridge/Messages.sol +48 -18
- package/src/bridge/Outbox.sol +6 -2
- package/src/bridge/SequencerInbox.sol +343 -279
- package/src/chain/CacheManager.sol +49 -18
- package/src/challengeV2/EdgeChallengeManager.sol +559 -0
- package/src/challengeV2/IAssertionChain.sol +39 -0
- package/src/challengeV2/IEdgeChallengeManager.sol +233 -0
- package/src/challengeV2/libraries/ArrayUtilsLib.sol +61 -0
- package/src/challengeV2/libraries/ChallengeEdgeLib.sol +277 -0
- package/src/challengeV2/libraries/ChallengeErrors.sol +108 -0
- package/src/challengeV2/libraries/EdgeChallengeManagerLib.sol +819 -0
- package/src/challengeV2/libraries/Enums.sol +26 -0
- package/src/challengeV2/libraries/MerkleTreeAccumulatorLib.sol +390 -0
- package/src/challengeV2/libraries/Structs.sol +176 -0
- package/src/challengeV2/libraries/UintUtilsLib.sol +74 -0
- package/src/libraries/AddressAliasHelper.sol +6 -2
- package/src/libraries/AdminFallbackProxy.sol +8 -4
- package/src/libraries/ArbitrumChecker.sol +3 -4
- package/src/libraries/CallerChecker.sol +18 -0
- package/src/libraries/CryptographyPrimitives.sol +39 -46
- package/src/libraries/DecimalsConverterHelper.sol +2 -4
- package/src/libraries/DoubleLogicUUPSUpgradeable.sol +10 -7
- package/src/libraries/Error.sol +21 -3
- package/src/libraries/GasRefundEnabled.sol +5 -6
- package/src/libraries/MerkleLib.sol +6 -5
- package/src/libraries/UUPSNotUpgradeable.sol +2 -4
- package/src/mocks/BridgeStub.sol +50 -48
- package/src/mocks/CreateTest.sol +3 -1
- package/src/mocks/HostioTest.sol +20 -16
- package/src/mocks/InboxStub.sol +22 -17
- package/src/mocks/MerkleTreeAccess.sol +72 -0
- package/src/mocks/MockRollupEventInbox.sol +59 -0
- package/src/mocks/MultiCallTest.sol +3 -1
- package/src/mocks/PendingBlkTimeAndNrAdvanceCheck.sol +3 -1
- package/src/mocks/Program.sol +9 -7
- package/src/mocks/SequencerInboxBlobMock.sol +38 -0
- package/src/mocks/SequencerInboxStub.sol +9 -12
- package/src/mocks/Simple.sol +13 -25
- package/src/mocks/SimpleCacheManager.sol +10 -3
- package/src/mocks/SimpleOneStepProofEntry.sol +60 -0
- package/src/mocks/SimpleProxy.sol +3 -1
- package/src/mocks/TestWETH9.sol +30 -0
- package/src/mocks/UpgradeExecutorMock.sol +10 -17
- package/src/node-interface/NodeInterface.sol +23 -22
- package/src/node-interface/NodeInterfaceDebug.sol +5 -3
- package/src/osp/HashProofHelper.sol +9 -10
- package/src/osp/IOneStepProofEntry.sol +14 -9
- package/src/osp/IOneStepProver.sol +1 -0
- package/src/osp/OneStepProofEntry.sol +63 -54
- package/src/osp/OneStepProver0.sol +14 -27
- package/src/osp/OneStepProverHostIo.sol +31 -58
- package/src/osp/OneStepProverMath.sol +15 -23
- package/src/osp/OneStepProverMemory.sol +9 -23
- package/src/precompiles/ArbAddressTable.sol +19 -9
- package/src/precompiles/ArbAggregator.sol +12 -4
- package/src/precompiles/ArbBLS.sol +1 -3
- package/src/precompiles/ArbDebug.sol +5 -11
- package/src/precompiles/ArbFunctionTable.sol +7 -10
- package/src/precompiles/ArbGasInfo.sol +9 -43
- package/src/precompiles/ArbInfo.sol +6 -2
- package/src/precompiles/ArbOwner.sol +101 -34
- package/src/precompiles/ArbOwnerPublic.sol +6 -2
- package/src/precompiles/ArbRetryableTx.sol +15 -5
- package/src/precompiles/ArbStatistics.sol +1 -8
- package/src/precompiles/ArbSys.sol +16 -18
- package/src/precompiles/ArbWasm.sol +24 -14
- package/src/precompiles/ArbWasmCache.sol +15 -5
- package/src/precompiles/ArbosTest.sol +3 -1
- package/src/rollup/AbsRollupEventInbox.sol +15 -16
- package/src/rollup/Assertion.sol +100 -0
- package/src/rollup/AssertionState.sol +29 -0
- package/src/rollup/BOLDUpgradeAction.sol +631 -0
- package/src/rollup/BridgeCreator.sol +42 -15
- package/src/rollup/Config.sol +15 -7
- package/src/rollup/DeployHelper.sol +12 -31
- package/src/rollup/ERC20RollupEventInbox.sol +8 -9
- package/src/rollup/FactoryDeployerHelper.sol +8 -10
- package/src/rollup/IRollupAdmin.sol +127 -45
- package/src/rollup/IRollupCore.sol +64 -84
- package/src/rollup/IRollupEventInbox.sol +3 -1
- package/src/rollup/IRollupLogic.sol +35 -72
- package/src/rollup/RollupAdminLogic.sol +224 -203
- package/src/rollup/RollupCore.sol +407 -428
- package/src/rollup/RollupCreator.sol +84 -71
- package/src/rollup/RollupEventInbox.sol +7 -7
- package/src/rollup/RollupLib.sol +50 -86
- package/src/rollup/RollupProxy.sol +8 -12
- package/src/rollup/RollupUserLogic.sol +279 -644
- package/src/rollup/ValidatorUtils.sol +0 -242
- package/src/rollup/ValidatorWallet.sol +22 -38
- package/src/rollup/ValidatorWalletCreator.sol +8 -8
- package/src/state/Deserialize.sol +74 -96
- package/src/state/GlobalState.sol +74 -20
- package/src/state/Instructions.sol +4 -3
- package/src/state/Machine.sol +18 -19
- package/src/state/Module.sol +14 -13
- package/src/state/ModuleMemory.sol +6 -25
- package/src/state/ModuleMemoryCompact.sol +3 -1
- package/src/state/MultiStack.sol +16 -20
- package/src/state/PcArray.sol +7 -7
- package/src/state/StackFrame.sol +21 -14
- package/src/state/Value.sol +18 -6
- package/src/state/ValueArray.sol +7 -7
- package/src/state/ValueStack.sol +9 -3
- package/src/test-helpers/BridgeTester.sol +32 -42
- package/src/test-helpers/CryptographyPrimitivesTester.sol +12 -13
- package/src/test-helpers/EthVault.sol +4 -2
- package/src/test-helpers/InterfaceCompatibilityTester.sol +1 -1
- package/src/test-helpers/MessageTester.sol +3 -10
- package/src/test-helpers/OutboxWithoutOptTester.sol +12 -19
- package/src/test-helpers/RollupMock.sol +3 -7
- package/src/test-helpers/TestToken.sol +4 -2
- package/build/contracts/@openzeppelin/contracts/utils/cryptography/ECDSA.sol/ECDSA.dbg.json +0 -4
- package/build/contracts/@openzeppelin/contracts-upgradeable/access/AccessControlEnumerableUpgradeable.sol/AccessControlEnumerableUpgradeable.dbg.json +0 -4
- package/build/contracts/@openzeppelin/contracts-upgradeable/access/AccessControlEnumerableUpgradeable.sol/AccessControlEnumerableUpgradeable.json +0 -258
- package/build/contracts/@openzeppelin/contracts-upgradeable/access/IAccessControlEnumerableUpgradeable.sol/IAccessControlEnumerableUpgradeable.dbg.json +0 -4
- package/build/contracts/@openzeppelin/contracts-upgradeable/access/IAccessControlEnumerableUpgradeable.sol/IAccessControlEnumerableUpgradeable.json +0 -226
- package/build/contracts/@openzeppelin/contracts-upgradeable/token/ERC20/ERC20Upgradeable.sol/ERC20Upgradeable.dbg.json +0 -4
- package/build/contracts/@openzeppelin/contracts-upgradeable/token/ERC20/ERC20Upgradeable.sol/ERC20Upgradeable.json +0 -281
- package/build/contracts/@openzeppelin/contracts-upgradeable/token/ERC20/IERC20Upgradeable.sol/IERC20Upgradeable.dbg.json +0 -4
- package/build/contracts/@openzeppelin/contracts-upgradeable/token/ERC20/extensions/ERC20BurnableUpgradeable.sol/ERC20BurnableUpgradeable.dbg.json +0 -4
- package/build/contracts/@openzeppelin/contracts-upgradeable/token/ERC20/extensions/ERC20BurnableUpgradeable.sol/ERC20BurnableUpgradeable.json +0 -312
- package/build/contracts/@openzeppelin/contracts-upgradeable/token/ERC20/extensions/IERC20MetadataUpgradeable.sol/IERC20MetadataUpgradeable.dbg.json +0 -4
- package/build/contracts/@openzeppelin/contracts-upgradeable/utils/cryptography/ECDSAUpgradeable.sol/ECDSAUpgradeable.dbg.json +0 -4
- package/build/contracts/@openzeppelin/contracts-upgradeable/utils/cryptography/ECDSAUpgradeable.sol/ECDSAUpgradeable.json +0 -10
- package/build/contracts/@openzeppelin/contracts-upgradeable/utils/cryptography/draft-EIP712Upgradeable.sol/EIP712Upgradeable.dbg.json +0 -4
- package/build/contracts/@openzeppelin/contracts-upgradeable/utils/cryptography/draft-EIP712Upgradeable.sol/EIP712Upgradeable.json +0 -10
- package/build/contracts/src/challenge/ChallengeLib.sol/ChallengeLib.dbg.json +0 -4
- package/build/contracts/src/challenge/ChallengeManager.sol/ChallengeManager.dbg.json +0 -4
- package/build/contracts/src/challenge/ChallengeManager.sol/ChallengeManager.json +0 -746
- package/build/contracts/src/challenge/IChallengeManager.sol/IChallengeManager.dbg.json +0 -4
- package/build/contracts/src/challenge/IChallengeManager.sol/IChallengeManager.json +0 -441
- package/build/contracts/src/challenge/IChallengeResultReceiver.sol/IChallengeResultReceiver.dbg.json +0 -4
- package/build/contracts/src/challenge/IChallengeResultReceiver.sol/IChallengeResultReceiver.json +0 -34
- package/build/contracts/src/express-lane-auction/Balance.sol/BalanceLib.dbg.json +0 -4
- package/build/contracts/src/express-lane-auction/Burner.sol/Burner.dbg.json +0 -4
- package/build/contracts/src/express-lane-auction/Burner.sol/Burner.json +0 -47
- package/build/contracts/src/express-lane-auction/ELCRound.sol/LatestELCRoundsLib.dbg.json +0 -4
- package/build/contracts/src/express-lane-auction/ExpressLaneAuction.sol/ExpressLaneAuction.dbg.json +0 -4
- package/build/contracts/src/express-lane-auction/ExpressLaneAuction.sol/ExpressLaneAuction.json +0 -1588
- package/build/contracts/src/express-lane-auction/IExpressLaneAuction.sol/IExpressLaneAuction.dbg.json +0 -4
- package/build/contracts/src/express-lane-auction/IExpressLaneAuction.sol/IExpressLaneAuction.json +0 -1296
- package/build/contracts/src/express-lane-auction/RoundTimingInfo.sol/RoundTimingInfoLib.dbg.json +0 -4
- package/build/contracts/src/express-lane-auction/RoundTimingInfo.sol/RoundTimingInfoLib.json +0 -10
- package/build/contracts/src/mocks/MockResultReceiver.sol/MockResultReceiver.dbg.json +0 -4
- package/build/contracts/src/mocks/MockResultReceiver.sol/MockResultReceiver.json +0 -188
- package/build/contracts/src/mocks/SingleExecutionChallenge.sol/SingleExecutionChallenge.dbg.json +0 -4
- package/build/contracts/src/mocks/SingleExecutionChallenge.sol/SingleExecutionChallenge.json +0 -797
- package/build/contracts/src/mocks/TimedOutChallengeManager.sol/TimedOutChallengeManager.dbg.json +0 -4
- package/build/contracts/src/mocks/TimedOutChallengeManager.sol/TimedOutChallengeManager.json +0 -746
- package/build/contracts/src/rollup/IRollupLogic.sol/IRollupUserAbs.dbg.json +0 -4
- package/build/contracts/src/rollup/IRollupLogic.sol/IRollupUserAbs.json +0 -1332
- package/build/contracts/src/rollup/IRollupLogic.sol/IRollupUserERC20.dbg.json +0 -4
- package/build/contracts/src/rollup/IRollupLogic.sol/IRollupUserERC20.json +0 -1466
- package/build/contracts/src/rollup/Node.sol/NodeLib.dbg.json +0 -4
- package/build/contracts/src/rollup/RollupUserLogic.sol/AbsRollupUserLogic.dbg.json +0 -4
- package/build/contracts/src/rollup/RollupUserLogic.sol/AbsRollupUserLogic.json +0 -1614
- package/build/contracts/src/rollup/RollupUserLogic.sol/ERC20RollupUserLogic.dbg.json +0 -4
- package/build/contracts/src/rollup/RollupUserLogic.sol/ERC20RollupUserLogic.json +0 -1748
- package/build/contracts/src/rollup/ValidatorUtils.sol/ValidatorUtils.dbg.json +0 -4
- package/build/contracts/src/rollup/ValidatorUtils.sol/ValidatorUtils.json +0 -379
- package/src/challenge/ChallengeLib.sol +0 -88
- package/src/challenge/ChallengeManager.sol +0 -375
- package/src/challenge/IChallengeManager.sol +0 -86
- package/src/challenge/IChallengeResultReceiver.sol +0 -13
- package/src/express-lane-auction/Balance.sol +0 -142
- package/src/express-lane-auction/Burner.sol +0 -25
- package/src/express-lane-auction/ELCRound.sol +0 -73
- package/src/express-lane-auction/Errors.sol +0 -31
- package/src/express-lane-auction/ExpressLaneAuction.sol +0 -565
- package/src/express-lane-auction/IExpressLaneAuction.sol +0 -421
- package/src/express-lane-auction/RoundTimingInfo.sol +0 -115
- package/src/mocks/MockResultReceiver.sol +0 -59
- package/src/mocks/SingleExecutionChallenge.sol +0 -41
- package/src/mocks/TimedOutChallengeManager.sol +0 -13
- package/src/rollup/Node.sol +0 -113
|
@@ -0,0 +1,233 @@
|
|
|
1
|
+
// Copyright 2023, Offchain Labs, Inc.
|
|
2
|
+
// For license information, see https://github.com/offchainlabs/bold/blob/main/LICENSE
|
|
3
|
+
// SPDX-License-Identifier: BUSL-1.1
|
|
4
|
+
//
|
|
5
|
+
pragma solidity ^0.8.0;
|
|
6
|
+
|
|
7
|
+
import "./IAssertionChain.sol";
|
|
8
|
+
import "./libraries/Structs.sol";
|
|
9
|
+
import "@openzeppelin/contracts/token/ERC20/IERC20.sol";
|
|
10
|
+
|
|
11
|
+
/// @title EdgeChallengeManager interface
|
|
12
|
+
interface IEdgeChallengeManager {
|
|
13
|
+
/// @notice Initialize the EdgeChallengeManager. EdgeChallengeManagers are upgradeable
|
|
14
|
+
/// so use the initializer paradigm
|
|
15
|
+
/// @param _assertionChain The assertion chain contract
|
|
16
|
+
/// @param _challengePeriodBlocks The amount of cumulative time an edge must spend unrivaled before it can be confirmed
|
|
17
|
+
/// This should be the censorship period + the cumulative amount of time needed to do any
|
|
18
|
+
/// offchain calculation. We currently estimate around 10 mins for each layer zero edge and 1
|
|
19
|
+
/// one minute for each other edge.
|
|
20
|
+
/// @param _oneStepProofEntry The one step proof logic
|
|
21
|
+
/// @param layerZeroBlockEdgeHeight The end height of layer zero edges of type Block
|
|
22
|
+
/// @param layerZeroBigStepEdgeHeight The end height of layer zero edges of type BigStep
|
|
23
|
+
/// @param layerZeroSmallStepEdgeHeight The end height of layer zero edges of type SmallStep
|
|
24
|
+
/// @param _stakeToken The token that stake will be provided in when creating zero layer block edges
|
|
25
|
+
/// @param _excessStakeReceiver The address that excess stake will be sent to when 2nd+ block edge is created
|
|
26
|
+
/// @param _numBigStepLevel The number of bigstep levels
|
|
27
|
+
/// @param _stakeAmounts The stake amount for each level. (first element is for block level)
|
|
28
|
+
function initialize(
|
|
29
|
+
IAssertionChain _assertionChain,
|
|
30
|
+
uint64 _challengePeriodBlocks,
|
|
31
|
+
IOneStepProofEntry _oneStepProofEntry,
|
|
32
|
+
uint256 layerZeroBlockEdgeHeight,
|
|
33
|
+
uint256 layerZeroBigStepEdgeHeight,
|
|
34
|
+
uint256 layerZeroSmallStepEdgeHeight,
|
|
35
|
+
IERC20 _stakeToken,
|
|
36
|
+
address _excessStakeReceiver,
|
|
37
|
+
uint8 _numBigStepLevel,
|
|
38
|
+
uint256[] calldata _stakeAmounts
|
|
39
|
+
) external;
|
|
40
|
+
|
|
41
|
+
function challengePeriodBlocks() external view returns (uint64);
|
|
42
|
+
|
|
43
|
+
/// @notice The one step proof resolver used to decide between rival SmallStep edges of length 1
|
|
44
|
+
function oneStepProofEntry() external view returns (IOneStepProofEntry);
|
|
45
|
+
|
|
46
|
+
/// @notice Performs necessary checks and creates a new layer zero edge
|
|
47
|
+
/// @param args Edge creation args
|
|
48
|
+
function createLayerZeroEdge(
|
|
49
|
+
CreateEdgeArgs calldata args
|
|
50
|
+
) external returns (bytes32);
|
|
51
|
+
|
|
52
|
+
/// @notice Bisect an edge. This creates two child edges:
|
|
53
|
+
/// lowerChild: has the same start root and height as this edge, but a different end root and height
|
|
54
|
+
/// upperChild: has the same end root and height as this edge, but a different start root and height
|
|
55
|
+
/// The lower child end root and height are equal to the upper child start root and height. This height
|
|
56
|
+
/// is the mandatoryBisectionHeight.
|
|
57
|
+
/// The lower child may already exist, however it's not possible for the upper child to exist as that would
|
|
58
|
+
/// mean that the edge has already been bisected
|
|
59
|
+
/// @param edgeId Edge to bisect
|
|
60
|
+
/// @param bisectionHistoryRoot The new history root to be used in the lower and upper children
|
|
61
|
+
/// @param prefixProof A proof to show that the bisectionHistoryRoot commits to a prefix of the current endHistoryRoot
|
|
62
|
+
/// @return lowerChildId The id of the newly created lower child edge
|
|
63
|
+
/// @return upperChildId The id of the newly created upper child edge
|
|
64
|
+
function bisectEdge(
|
|
65
|
+
bytes32 edgeId,
|
|
66
|
+
bytes32 bisectionHistoryRoot,
|
|
67
|
+
bytes calldata prefixProof
|
|
68
|
+
) external returns (bytes32, bytes32);
|
|
69
|
+
|
|
70
|
+
/// @notice An edge can be confirmed if the total amount of time it and a single chain of its direct ancestors
|
|
71
|
+
/// has spent unrivaled is greater than the challenge period.
|
|
72
|
+
/// @dev Edges inherit time from their parents, so the sum of unrivaled timers is compared against the threshold.
|
|
73
|
+
/// Given that an edge cannot become unrivaled after becoming rivaled, once the threshold is passed
|
|
74
|
+
/// it will always remain passed. The direct ancestors of an edge are linked by parent-child links for edges
|
|
75
|
+
/// of the same level, and claimId-edgeId links for zero layer edges that claim an edge in the level below.
|
|
76
|
+
/// This method also includes the amount of time the assertion being claimed spent without a sibling
|
|
77
|
+
/// @param edgeId The id of the edge to confirm
|
|
78
|
+
function confirmEdgeByTime(
|
|
79
|
+
bytes32 edgeId,
|
|
80
|
+
AssertionStateData calldata claimStateData
|
|
81
|
+
) external;
|
|
82
|
+
|
|
83
|
+
/// @notice Update multiple edges' timer cache by their children. Equivalent to calling updateTimerCacheByChildren for each edge.
|
|
84
|
+
/// May update timer cache above maximum if the last edge's timer cache was below maximumCachedTime.
|
|
85
|
+
/// Revert when the last edge's timer cache is already equal to or above maximumCachedTime.
|
|
86
|
+
/// @param edgeIds The ids of the edges to update
|
|
87
|
+
/// @param maximumCachedTime The maximum amount of cached time allowed on the last edge (β∗)
|
|
88
|
+
function multiUpdateTimeCacheByChildren(
|
|
89
|
+
bytes32[] calldata edgeIds,
|
|
90
|
+
uint256 maximumCachedTime
|
|
91
|
+
) external;
|
|
92
|
+
|
|
93
|
+
/// @notice Update an edge's timer cache by its children.
|
|
94
|
+
/// Sets the edge's timer cache to its timeUnrivaled + (minimum timer cache of its children).
|
|
95
|
+
/// May update timer cache above maximum if the last edge's timer cache was below maximumCachedTime.
|
|
96
|
+
/// Revert when the edge's timer cache is already equal to or above maximumCachedTime.
|
|
97
|
+
/// @param edgeId The id of the edge to update
|
|
98
|
+
/// @param maximumCachedTime The maximum amount of cached time allowed on the edge (β∗)
|
|
99
|
+
function updateTimerCacheByChildren(bytes32 edgeId, uint256 maximumCachedTime) external;
|
|
100
|
+
|
|
101
|
+
/// @notice Given a one step fork edge and an edge with matching claim id,
|
|
102
|
+
/// set the one step fork edge's timer cache to its timeUnrivaled + claiming edge's timer cache.
|
|
103
|
+
/// May update timer cache above maximum if the last edge's timer cache was below maximumCachedTime.
|
|
104
|
+
/// Revert when the edge's timer cache is already equal to or above maximumCachedTime.
|
|
105
|
+
/// @param edgeId The id of the edge to update
|
|
106
|
+
/// @param claimingEdgeId The id of the edge which has a claimId equal to edgeId
|
|
107
|
+
/// @param maximumCachedTime The maximum amount of cached time allowed on the edge (β∗)
|
|
108
|
+
function updateTimerCacheByClaim(
|
|
109
|
+
bytes32 edgeId,
|
|
110
|
+
bytes32 claimingEdgeId,
|
|
111
|
+
uint256 maximumCachedTime
|
|
112
|
+
) external;
|
|
113
|
+
|
|
114
|
+
/// @notice Confirm an edge by executing a one step proof
|
|
115
|
+
/// @dev One step proofs can only be executed against edges that have length one and of type SmallStep
|
|
116
|
+
/// @param edgeId The id of the edge to confirm
|
|
117
|
+
/// @param oneStepData Input data to the one step proof
|
|
118
|
+
/// @param prevConfig Data about the config set in prev
|
|
119
|
+
/// @param beforeHistoryInclusionProof Proof that the state which is the start of the edge is committed to by the startHistoryRoot
|
|
120
|
+
/// @param afterHistoryInclusionProof Proof that the state which is the end of the edge is committed to by the endHistoryRoot
|
|
121
|
+
function confirmEdgeByOneStepProof(
|
|
122
|
+
bytes32 edgeId,
|
|
123
|
+
OneStepData calldata oneStepData,
|
|
124
|
+
ConfigData calldata prevConfig,
|
|
125
|
+
bytes32[] calldata beforeHistoryInclusionProof,
|
|
126
|
+
bytes32[] calldata afterHistoryInclusionProof
|
|
127
|
+
) external;
|
|
128
|
+
|
|
129
|
+
/// @notice When zero layer block edges are created a stake is also provided
|
|
130
|
+
/// The stake on this edge can be refunded if the edge is confirme
|
|
131
|
+
function refundStake(
|
|
132
|
+
bytes32 edgeId
|
|
133
|
+
) external;
|
|
134
|
+
|
|
135
|
+
/// @notice Zero layer edges have to be a fixed height.
|
|
136
|
+
/// This function returns the end height for a given edge type
|
|
137
|
+
function getLayerZeroEndHeight(
|
|
138
|
+
EdgeType eType
|
|
139
|
+
) external view returns (uint256);
|
|
140
|
+
|
|
141
|
+
/// @notice Calculate the unique id of an edge
|
|
142
|
+
/// @param level The level of the edge
|
|
143
|
+
/// @param originId The origin id of the edge
|
|
144
|
+
/// @param startHeight The start height of the edge
|
|
145
|
+
/// @param startHistoryRoot The start history root of the edge
|
|
146
|
+
/// @param endHeight The end height of the edge
|
|
147
|
+
/// @param endHistoryRoot The end history root of the edge
|
|
148
|
+
function calculateEdgeId(
|
|
149
|
+
uint8 level,
|
|
150
|
+
bytes32 originId,
|
|
151
|
+
uint256 startHeight,
|
|
152
|
+
bytes32 startHistoryRoot,
|
|
153
|
+
uint256 endHeight,
|
|
154
|
+
bytes32 endHistoryRoot
|
|
155
|
+
) external pure returns (bytes32);
|
|
156
|
+
|
|
157
|
+
/// @notice Calculate the mutual id of the edge
|
|
158
|
+
/// Edges that are rivals share the same mutual id
|
|
159
|
+
/// @param level The level of the edge
|
|
160
|
+
/// @param originId The origin id of the edge
|
|
161
|
+
/// @param startHeight The start height of the edge
|
|
162
|
+
/// @param startHistoryRoot The start history root of the edge
|
|
163
|
+
/// @param endHeight The end height of the edge
|
|
164
|
+
function calculateMutualId(
|
|
165
|
+
uint8 level,
|
|
166
|
+
bytes32 originId,
|
|
167
|
+
uint256 startHeight,
|
|
168
|
+
bytes32 startHistoryRoot,
|
|
169
|
+
uint256 endHeight
|
|
170
|
+
) external pure returns (bytes32);
|
|
171
|
+
|
|
172
|
+
/// @notice Has the edge already been stored in the manager
|
|
173
|
+
function edgeExists(
|
|
174
|
+
bytes32 edgeId
|
|
175
|
+
) external view returns (bool);
|
|
176
|
+
|
|
177
|
+
/// @notice Get full edge data for an edge
|
|
178
|
+
function getEdge(
|
|
179
|
+
bytes32 edgeId
|
|
180
|
+
) external view returns (ChallengeEdge memory);
|
|
181
|
+
|
|
182
|
+
/// @notice The length of the edge, from start height to end height
|
|
183
|
+
function edgeLength(
|
|
184
|
+
bytes32 edgeId
|
|
185
|
+
) external view returns (uint256);
|
|
186
|
+
|
|
187
|
+
/// @notice Does this edge currently have one or more rivals
|
|
188
|
+
/// Rival edges share the same mutual id
|
|
189
|
+
function hasRival(
|
|
190
|
+
bytes32 edgeId
|
|
191
|
+
) external view returns (bool);
|
|
192
|
+
|
|
193
|
+
/// @notice The confirmed rival of this mutual id
|
|
194
|
+
/// Returns 0 if one does not exist
|
|
195
|
+
function confirmedRival(
|
|
196
|
+
bytes32 mutualId
|
|
197
|
+
) external view returns (bytes32);
|
|
198
|
+
|
|
199
|
+
/// @notice Does the edge have at least one rival, and it has length one
|
|
200
|
+
function hasLengthOneRival(
|
|
201
|
+
bytes32 edgeId
|
|
202
|
+
) external view returns (bool);
|
|
203
|
+
|
|
204
|
+
/// @notice The amount of time this edge has spent without rivals
|
|
205
|
+
/// This value is increasing whilst an edge is unrivaled, once a rival is created
|
|
206
|
+
/// it is fixed. If an edge has rivals from the moment it is created then it will have
|
|
207
|
+
/// a zero time unrivaled
|
|
208
|
+
function timeUnrivaled(
|
|
209
|
+
bytes32 edgeId
|
|
210
|
+
) external view returns (uint256);
|
|
211
|
+
|
|
212
|
+
/// @notice Get the id of the prev assertion that this edge is originates from
|
|
213
|
+
/// @dev Uses the parent chain to traverse upwards SmallStep->BigStep->Block->Assertion
|
|
214
|
+
/// until it gets to the origin assertion
|
|
215
|
+
function getPrevAssertionHash(
|
|
216
|
+
bytes32 edgeId
|
|
217
|
+
) external view returns (bytes32);
|
|
218
|
+
|
|
219
|
+
/// @notice Fetch the raw first rival record for the given mutual id
|
|
220
|
+
/// @dev Returns 0 if there is no edge with the given mutual id
|
|
221
|
+
/// Returns a magic value if there is one edge but it is unrivaled
|
|
222
|
+
/// Returns the id of the second edge created with the mutual id, if > 1 exists
|
|
223
|
+
function firstRival(
|
|
224
|
+
bytes32 mutualId
|
|
225
|
+
) external view returns (bytes32);
|
|
226
|
+
|
|
227
|
+
/// @notice True if an account has made a layer zero edge with the given mutual id.
|
|
228
|
+
/// This is only tracked when the validator whitelist is enabled
|
|
229
|
+
function hasMadeLayerZeroRival(
|
|
230
|
+
address account,
|
|
231
|
+
bytes32 mutualId
|
|
232
|
+
) external view returns (bool);
|
|
233
|
+
}
|
|
@@ -0,0 +1,61 @@
|
|
|
1
|
+
// Copyright 2023, Offchain Labs, Inc.
|
|
2
|
+
// For license information, see https://github.com/offchainlabs/bold/blob/main/LICENSE
|
|
3
|
+
// SPDX-License-Identifier: BUSL-1.1
|
|
4
|
+
//
|
|
5
|
+
pragma solidity ^0.8.17;
|
|
6
|
+
|
|
7
|
+
/// @title Array utils library
|
|
8
|
+
/// @notice Utils for working with bytes32 arrays
|
|
9
|
+
library ArrayUtilsLib {
|
|
10
|
+
/// @notice Append an item to the end of an array
|
|
11
|
+
/// @param arr The array to append to
|
|
12
|
+
/// @param newItem The item to append
|
|
13
|
+
function append(
|
|
14
|
+
bytes32[] memory arr,
|
|
15
|
+
bytes32 newItem
|
|
16
|
+
) internal pure returns (bytes32[] memory) {
|
|
17
|
+
bytes32[] memory clone = new bytes32[](arr.length + 1);
|
|
18
|
+
for (uint256 i = 0; i < arr.length; i++) {
|
|
19
|
+
clone[i] = arr[i];
|
|
20
|
+
}
|
|
21
|
+
clone[clone.length - 1] = newItem;
|
|
22
|
+
return clone;
|
|
23
|
+
}
|
|
24
|
+
|
|
25
|
+
/// @notice Get a slice of an existing array
|
|
26
|
+
/// @dev End index exlusive so slice(arr, 0, 5) gets the first 5 elements of arr
|
|
27
|
+
/// @param arr Array to slice
|
|
28
|
+
/// @param startIndex The start index of the slice in the original array - inclusive
|
|
29
|
+
/// @param endIndex The end index of the slice in the original array - exlusive
|
|
30
|
+
function slice(
|
|
31
|
+
bytes32[] memory arr,
|
|
32
|
+
uint256 startIndex,
|
|
33
|
+
uint256 endIndex
|
|
34
|
+
) internal pure returns (bytes32[] memory) {
|
|
35
|
+
require(startIndex < endIndex, "Start not less than end");
|
|
36
|
+
require(endIndex <= arr.length, "End not less or equal than length");
|
|
37
|
+
|
|
38
|
+
bytes32[] memory newArr = new bytes32[](endIndex - startIndex);
|
|
39
|
+
for (uint256 i = startIndex; i < endIndex; i++) {
|
|
40
|
+
newArr[i - startIndex] = arr[i];
|
|
41
|
+
}
|
|
42
|
+
return newArr;
|
|
43
|
+
}
|
|
44
|
+
|
|
45
|
+
/// @notice Concatenated to arrays
|
|
46
|
+
/// @param arr1 First array
|
|
47
|
+
/// @param arr1 Second array
|
|
48
|
+
function concat(
|
|
49
|
+
bytes32[] memory arr1,
|
|
50
|
+
bytes32[] memory arr2
|
|
51
|
+
) internal pure returns (bytes32[] memory) {
|
|
52
|
+
bytes32[] memory full = new bytes32[](arr1.length + arr2.length);
|
|
53
|
+
for (uint256 i = 0; i < arr1.length; i++) {
|
|
54
|
+
full[i] = arr1[i];
|
|
55
|
+
}
|
|
56
|
+
for (uint256 i = 0; i < arr2.length; i++) {
|
|
57
|
+
full[arr1.length + i] = arr2[i];
|
|
58
|
+
}
|
|
59
|
+
return full;
|
|
60
|
+
}
|
|
61
|
+
}
|
|
@@ -0,0 +1,277 @@
|
|
|
1
|
+
// Copyright 2023, Offchain Labs, Inc.
|
|
2
|
+
// For license information, see https://github.com/offchainlabs/bold/blob/main/LICENSE
|
|
3
|
+
// SPDX-License-Identifier: BUSL-1.1
|
|
4
|
+
//
|
|
5
|
+
pragma solidity ^0.8.17;
|
|
6
|
+
|
|
7
|
+
import "./Enums.sol";
|
|
8
|
+
import "./ChallengeErrors.sol";
|
|
9
|
+
import "./Structs.sol";
|
|
10
|
+
|
|
11
|
+
library ChallengeEdgeLib {
|
|
12
|
+
/// @notice Common checks to do when adding an edge
|
|
13
|
+
function newEdgeChecks(
|
|
14
|
+
bytes32 originId,
|
|
15
|
+
bytes32 startHistoryRoot,
|
|
16
|
+
uint256 startHeight,
|
|
17
|
+
bytes32 endHistoryRoot,
|
|
18
|
+
uint256 endHeight
|
|
19
|
+
) internal pure {
|
|
20
|
+
if (originId == 0) {
|
|
21
|
+
revert EmptyOriginId();
|
|
22
|
+
}
|
|
23
|
+
if (endHeight <= startHeight) {
|
|
24
|
+
revert InvalidHeights(startHeight, endHeight);
|
|
25
|
+
}
|
|
26
|
+
if (startHistoryRoot == 0) {
|
|
27
|
+
revert EmptyStartRoot();
|
|
28
|
+
}
|
|
29
|
+
if (endHistoryRoot == 0) {
|
|
30
|
+
revert EmptyEndRoot();
|
|
31
|
+
}
|
|
32
|
+
}
|
|
33
|
+
|
|
34
|
+
/// @notice Create a new layer zero edge. These edges make claims about length one edges in the level
|
|
35
|
+
/// below. Creating a layer zero edge also requires placing a mini stake, so information
|
|
36
|
+
/// about that staker is also stored on this edge.
|
|
37
|
+
function newLayerZeroEdge(
|
|
38
|
+
bytes32 originId,
|
|
39
|
+
bytes32 startHistoryRoot,
|
|
40
|
+
uint256 startHeight,
|
|
41
|
+
bytes32 endHistoryRoot,
|
|
42
|
+
uint256 endHeight,
|
|
43
|
+
bytes32 claimId,
|
|
44
|
+
address staker,
|
|
45
|
+
uint8 level
|
|
46
|
+
) internal view returns (ChallengeEdge memory) {
|
|
47
|
+
if (staker == address(0)) {
|
|
48
|
+
revert EmptyStaker();
|
|
49
|
+
}
|
|
50
|
+
if (claimId == 0) {
|
|
51
|
+
revert EmptyClaimId();
|
|
52
|
+
}
|
|
53
|
+
|
|
54
|
+
newEdgeChecks(originId, startHistoryRoot, startHeight, endHistoryRoot, endHeight);
|
|
55
|
+
|
|
56
|
+
return ChallengeEdge({
|
|
57
|
+
originId: originId,
|
|
58
|
+
startHeight: startHeight,
|
|
59
|
+
startHistoryRoot: startHistoryRoot,
|
|
60
|
+
endHeight: endHeight,
|
|
61
|
+
endHistoryRoot: endHistoryRoot,
|
|
62
|
+
lowerChildId: 0,
|
|
63
|
+
upperChildId: 0,
|
|
64
|
+
createdAtBlock: uint64(block.number),
|
|
65
|
+
claimId: claimId,
|
|
66
|
+
staker: staker,
|
|
67
|
+
status: EdgeStatus.Pending,
|
|
68
|
+
level: level,
|
|
69
|
+
refunded: false,
|
|
70
|
+
confirmedAtBlock: 0,
|
|
71
|
+
totalTimeUnrivaledCache: 0
|
|
72
|
+
});
|
|
73
|
+
}
|
|
74
|
+
|
|
75
|
+
/// @notice Creates a new child edge. All edges except layer zero edges are child edges.
|
|
76
|
+
/// These are edges that are created by bisection, and have parents rather than claims.
|
|
77
|
+
function newChildEdge(
|
|
78
|
+
bytes32 originId,
|
|
79
|
+
bytes32 startHistoryRoot,
|
|
80
|
+
uint256 startHeight,
|
|
81
|
+
bytes32 endHistoryRoot,
|
|
82
|
+
uint256 endHeight,
|
|
83
|
+
uint8 level
|
|
84
|
+
) internal view returns (ChallengeEdge memory) {
|
|
85
|
+
newEdgeChecks(originId, startHistoryRoot, startHeight, endHistoryRoot, endHeight);
|
|
86
|
+
|
|
87
|
+
return ChallengeEdge({
|
|
88
|
+
originId: originId,
|
|
89
|
+
startHeight: startHeight,
|
|
90
|
+
startHistoryRoot: startHistoryRoot,
|
|
91
|
+
endHeight: endHeight,
|
|
92
|
+
endHistoryRoot: endHistoryRoot,
|
|
93
|
+
lowerChildId: 0,
|
|
94
|
+
upperChildId: 0,
|
|
95
|
+
createdAtBlock: uint64(block.number),
|
|
96
|
+
claimId: 0,
|
|
97
|
+
staker: address(0),
|
|
98
|
+
status: EdgeStatus.Pending,
|
|
99
|
+
level: level,
|
|
100
|
+
refunded: false,
|
|
101
|
+
confirmedAtBlock: 0,
|
|
102
|
+
totalTimeUnrivaledCache: 0
|
|
103
|
+
});
|
|
104
|
+
}
|
|
105
|
+
|
|
106
|
+
/// @notice The "mutualId" of an edge. A mutual id is a hash of all the data that is shared by rivals.
|
|
107
|
+
/// Rivals have the same start height, start history root and end height. They also have the same origin id and level.
|
|
108
|
+
/// The difference between rivals is that they have a different endHistoryRoot, so that information
|
|
109
|
+
/// is not included in this hash.
|
|
110
|
+
function mutualIdComponent(
|
|
111
|
+
uint8 level,
|
|
112
|
+
bytes32 originId,
|
|
113
|
+
uint256 startHeight,
|
|
114
|
+
bytes32 startHistoryRoot,
|
|
115
|
+
uint256 endHeight
|
|
116
|
+
) internal pure returns (bytes32) {
|
|
117
|
+
return
|
|
118
|
+
keccak256(abi.encodePacked(level, originId, startHeight, startHistoryRoot, endHeight));
|
|
119
|
+
}
|
|
120
|
+
|
|
121
|
+
/// @notice The "mutualId" of an edge. A mutual id is a hash of all the data that is shared by rivals.
|
|
122
|
+
/// Rivals have the same start height, start history root and end height. They also have the same origin id and level.
|
|
123
|
+
/// The difference between rivals is that they have a different endHistoryRoot, so that information
|
|
124
|
+
/// is not included in this hash.
|
|
125
|
+
function mutualId(
|
|
126
|
+
ChallengeEdge storage ce
|
|
127
|
+
) internal view returns (bytes32) {
|
|
128
|
+
return mutualIdComponent(
|
|
129
|
+
ce.level, ce.originId, ce.startHeight, ce.startHistoryRoot, ce.endHeight
|
|
130
|
+
);
|
|
131
|
+
}
|
|
132
|
+
|
|
133
|
+
function mutualIdMem(
|
|
134
|
+
ChallengeEdge memory ce
|
|
135
|
+
) internal pure returns (bytes32) {
|
|
136
|
+
return mutualIdComponent(
|
|
137
|
+
ce.level, ce.originId, ce.startHeight, ce.startHistoryRoot, ce.endHeight
|
|
138
|
+
);
|
|
139
|
+
}
|
|
140
|
+
|
|
141
|
+
/// @notice The id of an edge. Edges are uniquely identified by their id, and commit to the same information
|
|
142
|
+
function idComponent(
|
|
143
|
+
uint8 level,
|
|
144
|
+
bytes32 originId,
|
|
145
|
+
uint256 startHeight,
|
|
146
|
+
bytes32 startHistoryRoot,
|
|
147
|
+
uint256 endHeight,
|
|
148
|
+
bytes32 endHistoryRoot
|
|
149
|
+
) internal pure returns (bytes32) {
|
|
150
|
+
return keccak256(
|
|
151
|
+
abi.encodePacked(
|
|
152
|
+
mutualIdComponent(level, originId, startHeight, startHistoryRoot, endHeight),
|
|
153
|
+
endHistoryRoot
|
|
154
|
+
)
|
|
155
|
+
);
|
|
156
|
+
}
|
|
157
|
+
|
|
158
|
+
/// @notice The id of an edge. Edges are uniquely identified by their id, and commit to the same information
|
|
159
|
+
/// @dev This separate idMem method is to be explicit about when ChallengeEdges are copied into memory. It is
|
|
160
|
+
/// possible to pass a storage edge to this method and the id be computed correctly, but that would load
|
|
161
|
+
/// the whole struct into memory, so we're explicit here that this should be used for edges already in memory.
|
|
162
|
+
function idMem(
|
|
163
|
+
ChallengeEdge memory edge
|
|
164
|
+
) internal pure returns (bytes32) {
|
|
165
|
+
return idComponent(
|
|
166
|
+
edge.level,
|
|
167
|
+
edge.originId,
|
|
168
|
+
edge.startHeight,
|
|
169
|
+
edge.startHistoryRoot,
|
|
170
|
+
edge.endHeight,
|
|
171
|
+
edge.endHistoryRoot
|
|
172
|
+
);
|
|
173
|
+
}
|
|
174
|
+
|
|
175
|
+
/// @notice The id of an edge. Edges are uniquely identified by their id, and commit to the same information
|
|
176
|
+
function id(
|
|
177
|
+
ChallengeEdge storage edge
|
|
178
|
+
) internal view returns (bytes32) {
|
|
179
|
+
return idComponent(
|
|
180
|
+
edge.level,
|
|
181
|
+
edge.originId,
|
|
182
|
+
edge.startHeight,
|
|
183
|
+
edge.startHistoryRoot,
|
|
184
|
+
edge.endHeight,
|
|
185
|
+
edge.endHistoryRoot
|
|
186
|
+
);
|
|
187
|
+
}
|
|
188
|
+
|
|
189
|
+
/// @notice Does this edge exist in storage
|
|
190
|
+
function exists(
|
|
191
|
+
ChallengeEdge storage edge
|
|
192
|
+
) internal view returns (bool) {
|
|
193
|
+
// All edges have a createdAtBlock number
|
|
194
|
+
return edge.createdAtBlock != 0;
|
|
195
|
+
}
|
|
196
|
+
|
|
197
|
+
/// @notice The length of this edge - difference between the start and end heights
|
|
198
|
+
function length(
|
|
199
|
+
ChallengeEdge storage edge
|
|
200
|
+
) internal view returns (uint256) {
|
|
201
|
+
uint256 len = edge.endHeight - edge.startHeight;
|
|
202
|
+
// It's impossible for a zero length edge to exist
|
|
203
|
+
if (len == 0) {
|
|
204
|
+
revert EdgeNotExists(ChallengeEdgeLib.id(edge));
|
|
205
|
+
}
|
|
206
|
+
return len;
|
|
207
|
+
}
|
|
208
|
+
|
|
209
|
+
/// @notice Set the children of an edge
|
|
210
|
+
/// @dev Children can only be set once
|
|
211
|
+
function setChildren(
|
|
212
|
+
ChallengeEdge storage edge,
|
|
213
|
+
bytes32 lowerChildId,
|
|
214
|
+
bytes32 upperChildId
|
|
215
|
+
) internal {
|
|
216
|
+
if (edge.lowerChildId != 0 || edge.upperChildId != 0) {
|
|
217
|
+
revert ChildrenAlreadySet(
|
|
218
|
+
ChallengeEdgeLib.id(edge), edge.lowerChildId, edge.upperChildId
|
|
219
|
+
);
|
|
220
|
+
}
|
|
221
|
+
edge.lowerChildId = lowerChildId;
|
|
222
|
+
edge.upperChildId = upperChildId;
|
|
223
|
+
}
|
|
224
|
+
|
|
225
|
+
/// @notice Set the status of an edge to Confirmed
|
|
226
|
+
/// @dev Only Pending edges can be confirmed
|
|
227
|
+
function setConfirmed(
|
|
228
|
+
ChallengeEdge storage edge
|
|
229
|
+
) internal {
|
|
230
|
+
if (edge.status != EdgeStatus.Pending) {
|
|
231
|
+
revert EdgeNotPending(ChallengeEdgeLib.id(edge), edge.status);
|
|
232
|
+
}
|
|
233
|
+
edge.status = EdgeStatus.Confirmed;
|
|
234
|
+
edge.confirmedAtBlock = uint64(block.number);
|
|
235
|
+
}
|
|
236
|
+
|
|
237
|
+
/// @notice Is the edge a layer zero edge.
|
|
238
|
+
function isLayerZero(
|
|
239
|
+
ChallengeEdge storage edge
|
|
240
|
+
) internal view returns (bool) {
|
|
241
|
+
return edge.claimId != 0 && edge.staker != address(0);
|
|
242
|
+
}
|
|
243
|
+
|
|
244
|
+
/// @notice Set the refunded flag of an edge
|
|
245
|
+
/// @dev Checks internally that edge is confirmed, layer zero edge and hasnt been refunded already
|
|
246
|
+
function setRefunded(
|
|
247
|
+
ChallengeEdge storage edge
|
|
248
|
+
) internal {
|
|
249
|
+
if (edge.status != EdgeStatus.Confirmed) {
|
|
250
|
+
revert EdgeNotConfirmed(ChallengeEdgeLib.id(edge), edge.status);
|
|
251
|
+
}
|
|
252
|
+
if (!isLayerZero(edge)) {
|
|
253
|
+
revert EdgeNotLayerZero(ChallengeEdgeLib.id(edge), edge.staker, edge.claimId);
|
|
254
|
+
}
|
|
255
|
+
if (edge.refunded == true) {
|
|
256
|
+
revert EdgeAlreadyRefunded(ChallengeEdgeLib.id(edge));
|
|
257
|
+
}
|
|
258
|
+
|
|
259
|
+
edge.refunded = true;
|
|
260
|
+
}
|
|
261
|
+
|
|
262
|
+
/// @notice Returns the edge type for a given level, given the total number of big step levels
|
|
263
|
+
function levelToType(
|
|
264
|
+
uint8 level,
|
|
265
|
+
uint8 numBigStepLevels
|
|
266
|
+
) internal pure returns (EdgeType eType) {
|
|
267
|
+
if (level == 0) {
|
|
268
|
+
return EdgeType.Block;
|
|
269
|
+
} else if (level <= numBigStepLevels) {
|
|
270
|
+
return EdgeType.BigStep;
|
|
271
|
+
} else if (level == numBigStepLevels + 1) {
|
|
272
|
+
return EdgeType.SmallStep;
|
|
273
|
+
} else {
|
|
274
|
+
revert LevelTooHigh(level, numBigStepLevels);
|
|
275
|
+
}
|
|
276
|
+
}
|
|
277
|
+
}
|
|
@@ -0,0 +1,108 @@
|
|
|
1
|
+
// Copyright 2023, Offchain Labs, Inc.
|
|
2
|
+
// For license information, see https://github.com/offchainlabs/bold/blob/main/LICENSE
|
|
3
|
+
// SPDX-License-Identifier: BUSL-1.1
|
|
4
|
+
//
|
|
5
|
+
pragma solidity ^0.8.17;
|
|
6
|
+
|
|
7
|
+
import "./Enums.sol";
|
|
8
|
+
|
|
9
|
+
/// @dev The edge is not currently stored
|
|
10
|
+
error EdgeNotExists(bytes32 edgeId);
|
|
11
|
+
/// @dev The edge has already been stored
|
|
12
|
+
error EdgeAlreadyExists(bytes32 edgeId);
|
|
13
|
+
/// @dev The provided assertion hash was empty
|
|
14
|
+
error AssertionHashEmpty();
|
|
15
|
+
/// @dev The assertion hashes are not the same, but should have been
|
|
16
|
+
error AssertionHashMismatch(bytes32 h1, bytes32 h2);
|
|
17
|
+
/// @dev The assertion is not currently pending
|
|
18
|
+
error AssertionNotPending();
|
|
19
|
+
/// @dev The assertion has no sibling
|
|
20
|
+
error AssertionNoSibling();
|
|
21
|
+
/// @dev The edge type specific proof data is empty
|
|
22
|
+
error EmptyEdgeSpecificProof();
|
|
23
|
+
/// @dev The start machine status is empty
|
|
24
|
+
error EmptyStartMachineStatus();
|
|
25
|
+
/// @dev The end machine status is empty
|
|
26
|
+
error EmptyEndMachineStatus();
|
|
27
|
+
/// @dev The claim edge is not pending
|
|
28
|
+
error ClaimEdgeNotPending();
|
|
29
|
+
/// @dev The claim edge does not have a length one rival
|
|
30
|
+
error ClaimEdgeNotLengthOneRival(bytes32 claimId);
|
|
31
|
+
/// @dev The claim edge has an invalid level
|
|
32
|
+
error ClaimEdgeInvalidLevel(uint8 argLevel, uint8 claimLevel);
|
|
33
|
+
/// @dev The val is not a power of two
|
|
34
|
+
error NotPowerOfTwo(uint256 val);
|
|
35
|
+
/// @dev The height has an unexpected value
|
|
36
|
+
error InvalidEndHeight(uint256 actualHeight, uint256 expectedHeight);
|
|
37
|
+
/// @dev The prefix proof is empty
|
|
38
|
+
error EmptyPrefixProof();
|
|
39
|
+
/// @dev The edge is not of type SmallStep
|
|
40
|
+
error EdgeTypeNotSmallStep(uint8 level);
|
|
41
|
+
/// @dev The first rival record is empty
|
|
42
|
+
error EmptyFirstRival();
|
|
43
|
+
/// @dev The difference between two heights is less than 2
|
|
44
|
+
error HeightDiffLtTwo(uint256 h1, uint256 h2);
|
|
45
|
+
/// @dev The edge is not pending
|
|
46
|
+
error EdgeNotPending(bytes32 edgeId, EdgeStatus status);
|
|
47
|
+
/// @dev The edge is unrivaled
|
|
48
|
+
error EdgeUnrivaled(bytes32 edgeId);
|
|
49
|
+
/// @dev The edge is not confirmed
|
|
50
|
+
error EdgeNotConfirmed(bytes32 edgeId, EdgeStatus);
|
|
51
|
+
/// @dev The edge level is unexpected
|
|
52
|
+
error EdgeLevelInvalid(bytes32 edgeId1, bytes32 edgeId2, uint8 level1, uint8 level2);
|
|
53
|
+
/// @dev The claim id on the claimingEdge does not match the provided edge id
|
|
54
|
+
error EdgeClaimMismatch(bytes32 edgeId, bytes32 claimingEdgeId);
|
|
55
|
+
/// @dev The origin id is not equal to the mutual id
|
|
56
|
+
error OriginIdMutualIdMismatch(bytes32 mutualId, bytes32 originId);
|
|
57
|
+
/// @dev The total number of blocks is not above the threshold
|
|
58
|
+
error InsufficientConfirmationBlocks(uint256 totalBlocks, uint256 thresholdBlocks);
|
|
59
|
+
/// @dev The edge is not of length one
|
|
60
|
+
error EdgeNotLengthOne(uint256 length);
|
|
61
|
+
/// @dev No origin id supplied when creating an edge
|
|
62
|
+
error EmptyOriginId();
|
|
63
|
+
/// @dev Invalid heights supplied when creating an edge
|
|
64
|
+
error InvalidHeights(uint256 start, uint256 end);
|
|
65
|
+
/// @dev No start root supplied when creating an edge
|
|
66
|
+
error EmptyStartRoot();
|
|
67
|
+
/// @dev No end root supplied when creating an edge
|
|
68
|
+
error EmptyEndRoot();
|
|
69
|
+
/// @dev No staker supplied when creating a layer zero edge
|
|
70
|
+
error EmptyStaker();
|
|
71
|
+
/// @dev No claim id supplied when creating a layer zero edge
|
|
72
|
+
error EmptyClaimId();
|
|
73
|
+
/// @dev Children already set on edge
|
|
74
|
+
error ChildrenAlreadySet(bytes32 edgeId, bytes32 lowerChildId, bytes32 upperChildId);
|
|
75
|
+
/// @dev Edge is not a layer zero edge
|
|
76
|
+
error EdgeNotLayerZero(bytes32 edgeId, address staker, bytes32 claimId);
|
|
77
|
+
/// @dev The edge staker has already been refunded
|
|
78
|
+
error EdgeAlreadyRefunded(bytes32 edgeId);
|
|
79
|
+
/// @dev No assertion chain address supplied
|
|
80
|
+
error EmptyAssertionChain();
|
|
81
|
+
/// @dev No one step proof entry address supplied
|
|
82
|
+
error EmptyOneStepProofEntry();
|
|
83
|
+
/// @dev No challenge period supplied
|
|
84
|
+
error EmptyChallengePeriod();
|
|
85
|
+
/// @dev No stake receiver address supplied
|
|
86
|
+
error EmptyStakeReceiver();
|
|
87
|
+
/// @dev Stake amounts does not match number of levels
|
|
88
|
+
error StakeAmountsMismatch(uint256 stakeLevels, uint256 numLevels);
|
|
89
|
+
/// @dev A rival edge is already confirmed
|
|
90
|
+
error RivalEdgeConfirmed(bytes32 edgeId, bytes32 confirmedRivalId);
|
|
91
|
+
/// @dev Thrown when big step levels is set to 0
|
|
92
|
+
error ZeroBigStepLevels();
|
|
93
|
+
/// @dev Thrown when there are too many big step levels requested
|
|
94
|
+
error BigStepLevelsTooMany(uint8 levels);
|
|
95
|
+
/// @dev Thrown when the level does not correspond to a valid type
|
|
96
|
+
error LevelTooHigh(uint8 level, uint8 numBigStepLevels);
|
|
97
|
+
/// @dev Thrown for unrecognised edge types
|
|
98
|
+
error InvalidEdgeType(EdgeType edgeType);
|
|
99
|
+
/// @dev Thrown when endHistoryRoot not matching the assertion
|
|
100
|
+
error EndHistoryRootMismatch(bytes32 endHistoryRoot, bytes32 assertionEndRoot);
|
|
101
|
+
/// @dev Thrown when the validator whitelist is enabled and the account attempting to create a layer zero edge is not whitelisted
|
|
102
|
+
error NotValidator(address account);
|
|
103
|
+
/// @dev Thrown when an account has already created a rivalling layer zero edge
|
|
104
|
+
error AccountHasMadeLayerZeroRival(address account, bytes32 mutualId);
|
|
105
|
+
/// @dev Thrown when the cached time is already sufficient
|
|
106
|
+
error CachedTimeSufficient(uint256 actual, uint256 expected);
|
|
107
|
+
/// @dev Thrown when the input is an empty array
|
|
108
|
+
error EmptyArray();
|