@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,559 @@
|
|
|
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 "../rollup/Assertion.sol";
|
|
8
|
+
import "./libraries/UintUtilsLib.sol";
|
|
9
|
+
import "./IEdgeChallengeManager.sol";
|
|
10
|
+
import "./libraries/EdgeChallengeManagerLib.sol";
|
|
11
|
+
import "../libraries/Constants.sol";
|
|
12
|
+
import "../state/Machine.sol";
|
|
13
|
+
|
|
14
|
+
import "@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol";
|
|
15
|
+
import "@openzeppelin/contracts/token/ERC20/utils/SafeERC20.sol";
|
|
16
|
+
|
|
17
|
+
/// @title A challenge manager that uses edge structures to decide between Assertions
|
|
18
|
+
/// @notice When two assertions are created that have the same predecessor the protocol needs to decide which of the two is correct
|
|
19
|
+
/// This challenge manager allows the staker who has created the valid assertion to enforce that it will be confirmed, and all
|
|
20
|
+
/// other rival assertions will be rejected. The challenge is all-vs-all in that all assertions with the same
|
|
21
|
+
/// predecessor will vie for succession against each other. Stakers compete by creating edges that reference the assertion they
|
|
22
|
+
/// believe in. These edges are then bisected, reducing the size of the disagreement with each bisection, and narrowing in on the
|
|
23
|
+
/// exact point of disagreement. Eventually, at step size 1, the step can be proved on-chain directly proving that the related assertion
|
|
24
|
+
/// must be invalid.
|
|
25
|
+
contract EdgeChallengeManager is IEdgeChallengeManager, Initializable {
|
|
26
|
+
using EdgeChallengeManagerLib for EdgeStore;
|
|
27
|
+
using ChallengeEdgeLib for ChallengeEdge;
|
|
28
|
+
using SafeERC20 for IERC20;
|
|
29
|
+
|
|
30
|
+
/// @notice A new edge has been added to the challenge manager
|
|
31
|
+
/// @param edgeId The id of the newly added edge
|
|
32
|
+
/// @param mutualId The mutual id of the added edge - all rivals share the same mutual id
|
|
33
|
+
/// @param originId The origin id of the added edge - origin ids link an edge to the level below
|
|
34
|
+
/// @param hasRival Does the newly added edge have a rival upon creation
|
|
35
|
+
/// @param length The length of the new edge
|
|
36
|
+
/// @param level The level of the new edge
|
|
37
|
+
/// @param isLayerZero Whether the new edge was added at layer zero - has a claim and a staker
|
|
38
|
+
event EdgeAdded(
|
|
39
|
+
bytes32 indexed edgeId,
|
|
40
|
+
bytes32 indexed mutualId,
|
|
41
|
+
bytes32 indexed originId,
|
|
42
|
+
bytes32 claimId,
|
|
43
|
+
uint256 length,
|
|
44
|
+
uint8 level,
|
|
45
|
+
bool hasRival,
|
|
46
|
+
bool isLayerZero
|
|
47
|
+
);
|
|
48
|
+
|
|
49
|
+
/// @notice An edge has been bisected
|
|
50
|
+
/// @param edgeId The id of the edge that was bisected
|
|
51
|
+
/// @param lowerChildId The id of the lower child created during bisection
|
|
52
|
+
/// @param upperChildId The id of the upper child created during bisection
|
|
53
|
+
/// @param lowerChildAlreadyExists When an edge is bisected the lower child may already exist - created by a rival.
|
|
54
|
+
event EdgeBisected(
|
|
55
|
+
bytes32 indexed edgeId,
|
|
56
|
+
bytes32 indexed lowerChildId,
|
|
57
|
+
bytes32 indexed upperChildId,
|
|
58
|
+
bool lowerChildAlreadyExists
|
|
59
|
+
);
|
|
60
|
+
|
|
61
|
+
/// @notice An edge can be confirmed if the cumulative time (in blocks) unrivaled of it and a direct chain of ancestors is greater than a threshold
|
|
62
|
+
/// @param edgeId The edge that was confirmed
|
|
63
|
+
/// @param mutualId The mutual id of the confirmed edge
|
|
64
|
+
/// @param totalTimeUnrivaled The cumulative amount of time (in blocks) this edge spent unrivaled
|
|
65
|
+
event EdgeConfirmedByTime(
|
|
66
|
+
bytes32 indexed edgeId, bytes32 indexed mutualId, uint256 totalTimeUnrivaled
|
|
67
|
+
);
|
|
68
|
+
|
|
69
|
+
/// @notice A SmallStep edge of length 1 can be confirmed via a one step proof
|
|
70
|
+
/// @param edgeId The edge that was confirmed
|
|
71
|
+
/// @param mutualId The mutual id of the confirmed edge
|
|
72
|
+
event EdgeConfirmedByOneStepProof(bytes32 indexed edgeId, bytes32 indexed mutualId);
|
|
73
|
+
|
|
74
|
+
/// @notice An edge's timer cache has been updated
|
|
75
|
+
/// @param edgeId The edge that was updated
|
|
76
|
+
/// @param newValue The new value of its timer cache
|
|
77
|
+
event TimerCacheUpdated(bytes32 indexed edgeId, uint256 newValue);
|
|
78
|
+
|
|
79
|
+
/// @notice A stake has been refunded for a confirmed layer zero block edge
|
|
80
|
+
/// @param edgeId The edge that was confirmed
|
|
81
|
+
/// @param mutualId The mutual id of the confirmed edge
|
|
82
|
+
/// @param stakeToken The ERC20 being refunded
|
|
83
|
+
/// @param stakeAmount The amount of tokens being refunded
|
|
84
|
+
event EdgeRefunded(
|
|
85
|
+
bytes32 indexed edgeId, bytes32 indexed mutualId, address stakeToken, uint256 stakeAmount
|
|
86
|
+
);
|
|
87
|
+
|
|
88
|
+
/// @dev Store for all edges and rival data
|
|
89
|
+
/// All edges, including edges from different challenges, are stored together in the same store
|
|
90
|
+
/// Since edge ids include the origin id, which is unique for each challenge, we can be sure that
|
|
91
|
+
/// edges from different challenges cannot have the same id, and so can be stored in the same store
|
|
92
|
+
EdgeStore internal store;
|
|
93
|
+
|
|
94
|
+
/// @notice When creating a zero layer block edge a stake must be supplied. However since we know that only
|
|
95
|
+
/// one edge in a group of rivals can ever be confirmed, we only need to keep one stake in this contract
|
|
96
|
+
/// to later refund for that edge. Other stakes can immediately be sent to an excess stake receiver.
|
|
97
|
+
/// This excess stake receiver can then choose to refund the gas of participants who aided in the confirmation
|
|
98
|
+
/// of the winning edge
|
|
99
|
+
address public excessStakeReceiver;
|
|
100
|
+
|
|
101
|
+
/// @notice The token to supply stake in
|
|
102
|
+
IERC20 public stakeToken;
|
|
103
|
+
|
|
104
|
+
/// @notice The amount of stake token to be supplied when creating a zero layer block edge at a given level
|
|
105
|
+
uint256[] public stakeAmounts;
|
|
106
|
+
|
|
107
|
+
/// @notice The number of blocks accumulated on an edge before it can be confirmed by time
|
|
108
|
+
uint64 public challengePeriodBlocks;
|
|
109
|
+
|
|
110
|
+
/// @notice The assertion chain about which challenges are created
|
|
111
|
+
IAssertionChain public assertionChain;
|
|
112
|
+
|
|
113
|
+
/// @inheritdoc IEdgeChallengeManager
|
|
114
|
+
IOneStepProofEntry public override oneStepProofEntry;
|
|
115
|
+
|
|
116
|
+
/// @notice The end height of layer zero Block edges
|
|
117
|
+
uint256 public LAYERZERO_BLOCKEDGE_HEIGHT;
|
|
118
|
+
/// @notice The end height of layer zero BigStep edges
|
|
119
|
+
uint256 public LAYERZERO_BIGSTEPEDGE_HEIGHT;
|
|
120
|
+
/// @notice The end height of layer zero SmallStep edges
|
|
121
|
+
uint256 public LAYERZERO_SMALLSTEPEDGE_HEIGHT;
|
|
122
|
+
/// @notice The number of big step levels configured for this challenge manager
|
|
123
|
+
/// There is 1 block level, 1 small step level and N big step levels
|
|
124
|
+
uint8 public NUM_BIGSTEP_LEVEL;
|
|
125
|
+
|
|
126
|
+
constructor() {
|
|
127
|
+
_disableInitializers();
|
|
128
|
+
}
|
|
129
|
+
|
|
130
|
+
/// @inheritdoc IEdgeChallengeManager
|
|
131
|
+
function initialize(
|
|
132
|
+
IAssertionChain _assertionChain,
|
|
133
|
+
uint64 _challengePeriodBlocks,
|
|
134
|
+
IOneStepProofEntry _oneStepProofEntry,
|
|
135
|
+
uint256 layerZeroBlockEdgeHeight,
|
|
136
|
+
uint256 layerZeroBigStepEdgeHeight,
|
|
137
|
+
uint256 layerZeroSmallStepEdgeHeight,
|
|
138
|
+
IERC20 _stakeToken,
|
|
139
|
+
address _excessStakeReceiver,
|
|
140
|
+
uint8 _numBigStepLevel,
|
|
141
|
+
uint256[] calldata _stakeAmounts
|
|
142
|
+
) public initializer {
|
|
143
|
+
if (address(_assertionChain) == address(0)) {
|
|
144
|
+
revert EmptyAssertionChain();
|
|
145
|
+
}
|
|
146
|
+
assertionChain = _assertionChain;
|
|
147
|
+
if (address(_oneStepProofEntry) == address(0)) {
|
|
148
|
+
revert EmptyOneStepProofEntry();
|
|
149
|
+
}
|
|
150
|
+
oneStepProofEntry = _oneStepProofEntry;
|
|
151
|
+
if (_challengePeriodBlocks == 0) {
|
|
152
|
+
revert EmptyChallengePeriod();
|
|
153
|
+
}
|
|
154
|
+
challengePeriodBlocks = _challengePeriodBlocks;
|
|
155
|
+
|
|
156
|
+
stakeToken = _stakeToken;
|
|
157
|
+
if (_excessStakeReceiver == address(0)) {
|
|
158
|
+
revert EmptyStakeReceiver();
|
|
159
|
+
}
|
|
160
|
+
excessStakeReceiver = _excessStakeReceiver;
|
|
161
|
+
|
|
162
|
+
if (!EdgeChallengeManagerLib.isPowerOfTwo(layerZeroBlockEdgeHeight)) {
|
|
163
|
+
revert NotPowerOfTwo(layerZeroBlockEdgeHeight);
|
|
164
|
+
}
|
|
165
|
+
LAYERZERO_BLOCKEDGE_HEIGHT = layerZeroBlockEdgeHeight;
|
|
166
|
+
if (!EdgeChallengeManagerLib.isPowerOfTwo(layerZeroBigStepEdgeHeight)) {
|
|
167
|
+
revert NotPowerOfTwo(layerZeroBigStepEdgeHeight);
|
|
168
|
+
}
|
|
169
|
+
LAYERZERO_BIGSTEPEDGE_HEIGHT = layerZeroBigStepEdgeHeight;
|
|
170
|
+
if (!EdgeChallengeManagerLib.isPowerOfTwo(layerZeroSmallStepEdgeHeight)) {
|
|
171
|
+
revert NotPowerOfTwo(layerZeroSmallStepEdgeHeight);
|
|
172
|
+
}
|
|
173
|
+
LAYERZERO_SMALLSTEPEDGE_HEIGHT = layerZeroSmallStepEdgeHeight;
|
|
174
|
+
|
|
175
|
+
// ensure that there is at least on of each type of level
|
|
176
|
+
if (_numBigStepLevel == 0) {
|
|
177
|
+
revert ZeroBigStepLevels();
|
|
178
|
+
}
|
|
179
|
+
// ensure there's also space for the block level and the small step level
|
|
180
|
+
// in total level parameters
|
|
181
|
+
if (_numBigStepLevel > 253) {
|
|
182
|
+
revert BigStepLevelsTooMany(_numBigStepLevel);
|
|
183
|
+
}
|
|
184
|
+
NUM_BIGSTEP_LEVEL = _numBigStepLevel;
|
|
185
|
+
|
|
186
|
+
if (_numBigStepLevel + 2 != _stakeAmounts.length) {
|
|
187
|
+
revert StakeAmountsMismatch(_stakeAmounts.length, _numBigStepLevel + 2);
|
|
188
|
+
}
|
|
189
|
+
stakeAmounts = _stakeAmounts;
|
|
190
|
+
}
|
|
191
|
+
|
|
192
|
+
/////////////////////////////
|
|
193
|
+
// STATE MUTATING SECTIION //
|
|
194
|
+
/////////////////////////////
|
|
195
|
+
|
|
196
|
+
/// @inheritdoc IEdgeChallengeManager
|
|
197
|
+
function createLayerZeroEdge(
|
|
198
|
+
CreateEdgeArgs calldata args
|
|
199
|
+
) external returns (bytes32) {
|
|
200
|
+
// Check if whitelist is enabled in the Rollup
|
|
201
|
+
// We only enforce whitelist in this function as it may exhaust resources
|
|
202
|
+
bool whitelistEnabled = !assertionChain.validatorWhitelistDisabled();
|
|
203
|
+
|
|
204
|
+
if (whitelistEnabled && !assertionChain.isValidator(msg.sender)) {
|
|
205
|
+
revert NotValidator(msg.sender);
|
|
206
|
+
}
|
|
207
|
+
|
|
208
|
+
EdgeAddedData memory edgeAdded;
|
|
209
|
+
EdgeType eType = ChallengeEdgeLib.levelToType(args.level, NUM_BIGSTEP_LEVEL);
|
|
210
|
+
uint256 expectedEndHeight = getLayerZeroEndHeight(eType);
|
|
211
|
+
AssertionReferenceData memory ard;
|
|
212
|
+
|
|
213
|
+
if (eType == EdgeType.Block) {
|
|
214
|
+
// for block type edges we need to provide some extra assertion data context
|
|
215
|
+
if (args.proof.length == 0) {
|
|
216
|
+
revert EmptyEdgeSpecificProof();
|
|
217
|
+
}
|
|
218
|
+
(
|
|
219
|
+
,
|
|
220
|
+
AssertionStateData memory predecessorStateData,
|
|
221
|
+
AssertionStateData memory claimStateData
|
|
222
|
+
) = abi.decode(args.proof, (bytes32[], AssertionStateData, AssertionStateData));
|
|
223
|
+
|
|
224
|
+
assertionChain.validateAssertionHash(
|
|
225
|
+
args.claimId,
|
|
226
|
+
claimStateData.assertionState,
|
|
227
|
+
claimStateData.prevAssertionHash,
|
|
228
|
+
claimStateData.inboxAcc
|
|
229
|
+
);
|
|
230
|
+
|
|
231
|
+
assertionChain.validateAssertionHash(
|
|
232
|
+
claimStateData.prevAssertionHash,
|
|
233
|
+
predecessorStateData.assertionState,
|
|
234
|
+
predecessorStateData.prevAssertionHash,
|
|
235
|
+
predecessorStateData.inboxAcc
|
|
236
|
+
);
|
|
237
|
+
|
|
238
|
+
if (args.endHistoryRoot != claimStateData.assertionState.endHistoryRoot) {
|
|
239
|
+
revert EndHistoryRootMismatch(
|
|
240
|
+
args.endHistoryRoot, claimStateData.assertionState.endHistoryRoot
|
|
241
|
+
);
|
|
242
|
+
}
|
|
243
|
+
|
|
244
|
+
ard = AssertionReferenceData(
|
|
245
|
+
args.claimId,
|
|
246
|
+
claimStateData.prevAssertionHash,
|
|
247
|
+
assertionChain.isPending(args.claimId),
|
|
248
|
+
assertionChain.getSecondChildCreationBlock(claimStateData.prevAssertionHash) > 0,
|
|
249
|
+
predecessorStateData.assertionState,
|
|
250
|
+
claimStateData.assertionState
|
|
251
|
+
);
|
|
252
|
+
}
|
|
253
|
+
edgeAdded = store.createLayerZeroEdge(
|
|
254
|
+
args, ard, oneStepProofEntry, expectedEndHeight, NUM_BIGSTEP_LEVEL, whitelistEnabled
|
|
255
|
+
);
|
|
256
|
+
|
|
257
|
+
IERC20 st = stakeToken;
|
|
258
|
+
uint256 sa = stakeAmounts[args.level];
|
|
259
|
+
// when a zero layer edge is created it must include stake amount. Each time a zero layer
|
|
260
|
+
// edge is created it forces the honest participants to do some work, so we want to disincentive
|
|
261
|
+
// their creation. The amount should also be enough to pay for the gas costs incurred by the honest
|
|
262
|
+
// participant. This can be arranged out of bound by the excess stake receiver.
|
|
263
|
+
// The contract initializer can disable staking by setting zeros for token or amount, to change
|
|
264
|
+
// this a new challenge manager needs to be deployed and its address updated in the assertion chain
|
|
265
|
+
if (address(st) != address(0) && sa != 0) {
|
|
266
|
+
// since only one edge in a group of rivals can ever be confirmed, we know that we
|
|
267
|
+
// will never need to refund more than one edge. Therefore we can immediately send
|
|
268
|
+
// all stakes provided after the first one to an excess stake receiver.
|
|
269
|
+
address receiver = edgeAdded.hasRival ? excessStakeReceiver : address(this);
|
|
270
|
+
st.safeTransferFrom(msg.sender, receiver, sa);
|
|
271
|
+
}
|
|
272
|
+
|
|
273
|
+
emit EdgeAdded(
|
|
274
|
+
edgeAdded.edgeId,
|
|
275
|
+
edgeAdded.mutualId,
|
|
276
|
+
edgeAdded.originId,
|
|
277
|
+
edgeAdded.claimId,
|
|
278
|
+
edgeAdded.length,
|
|
279
|
+
edgeAdded.level,
|
|
280
|
+
edgeAdded.hasRival,
|
|
281
|
+
edgeAdded.isLayerZero
|
|
282
|
+
);
|
|
283
|
+
return edgeAdded.edgeId;
|
|
284
|
+
}
|
|
285
|
+
|
|
286
|
+
/// @inheritdoc IEdgeChallengeManager
|
|
287
|
+
function bisectEdge(
|
|
288
|
+
bytes32 edgeId,
|
|
289
|
+
bytes32 bisectionHistoryRoot,
|
|
290
|
+
bytes calldata prefixProof
|
|
291
|
+
) external returns (bytes32, bytes32) {
|
|
292
|
+
(
|
|
293
|
+
bytes32 lowerChildId,
|
|
294
|
+
EdgeAddedData memory lowerChildAdded,
|
|
295
|
+
EdgeAddedData memory upperChildAdded
|
|
296
|
+
) = store.bisectEdge(edgeId, bisectionHistoryRoot, prefixProof);
|
|
297
|
+
|
|
298
|
+
bool lowerChildAlreadyExists = lowerChildAdded.edgeId == 0;
|
|
299
|
+
// the lower child might already exist, if it didnt then a new
|
|
300
|
+
// edge was added
|
|
301
|
+
if (!lowerChildAlreadyExists) {
|
|
302
|
+
emit EdgeAdded(
|
|
303
|
+
lowerChildAdded.edgeId,
|
|
304
|
+
lowerChildAdded.mutualId,
|
|
305
|
+
lowerChildAdded.originId,
|
|
306
|
+
lowerChildAdded.claimId,
|
|
307
|
+
lowerChildAdded.length,
|
|
308
|
+
lowerChildAdded.level,
|
|
309
|
+
lowerChildAdded.hasRival,
|
|
310
|
+
lowerChildAdded.isLayerZero
|
|
311
|
+
);
|
|
312
|
+
}
|
|
313
|
+
// upper child is always added
|
|
314
|
+
emit EdgeAdded(
|
|
315
|
+
upperChildAdded.edgeId,
|
|
316
|
+
upperChildAdded.mutualId,
|
|
317
|
+
upperChildAdded.originId,
|
|
318
|
+
upperChildAdded.claimId,
|
|
319
|
+
upperChildAdded.length,
|
|
320
|
+
upperChildAdded.level,
|
|
321
|
+
upperChildAdded.hasRival,
|
|
322
|
+
upperChildAdded.isLayerZero
|
|
323
|
+
);
|
|
324
|
+
|
|
325
|
+
emit EdgeBisected(edgeId, lowerChildId, upperChildAdded.edgeId, lowerChildAlreadyExists);
|
|
326
|
+
|
|
327
|
+
return (lowerChildId, upperChildAdded.edgeId);
|
|
328
|
+
}
|
|
329
|
+
|
|
330
|
+
/// @inheritdoc IEdgeChallengeManager
|
|
331
|
+
function multiUpdateTimeCacheByChildren(
|
|
332
|
+
bytes32[] calldata edgeIds,
|
|
333
|
+
uint256 maximumCachedTime
|
|
334
|
+
) public {
|
|
335
|
+
if (edgeIds.length == 0) revert EmptyArray();
|
|
336
|
+
// revert early if the last edge already has sufficient time
|
|
337
|
+
store.validateCurrentTimer(edgeIds[edgeIds.length - 1], maximumCachedTime);
|
|
338
|
+
for (uint256 i = 0; i < edgeIds.length; i++) {
|
|
339
|
+
updateTimerCacheByChildren(edgeIds[i], type(uint256).max);
|
|
340
|
+
}
|
|
341
|
+
}
|
|
342
|
+
|
|
343
|
+
/// @inheritdoc IEdgeChallengeManager
|
|
344
|
+
function updateTimerCacheByChildren(bytes32 edgeId, uint256 maximumCachedTime) public {
|
|
345
|
+
(bool updated, uint256 newValue) =
|
|
346
|
+
store.updateTimerCacheByChildren(edgeId, maximumCachedTime);
|
|
347
|
+
if (updated) emit TimerCacheUpdated(edgeId, newValue);
|
|
348
|
+
}
|
|
349
|
+
|
|
350
|
+
/// @inheritdoc IEdgeChallengeManager
|
|
351
|
+
function updateTimerCacheByClaim(
|
|
352
|
+
bytes32 edgeId,
|
|
353
|
+
bytes32 claimingEdgeId,
|
|
354
|
+
uint256 maximumCachedTime
|
|
355
|
+
) public {
|
|
356
|
+
(bool updated, uint256 newValue) = store.updateTimerCacheByClaim(
|
|
357
|
+
edgeId, claimingEdgeId, NUM_BIGSTEP_LEVEL, maximumCachedTime
|
|
358
|
+
);
|
|
359
|
+
if (updated) emit TimerCacheUpdated(edgeId, newValue);
|
|
360
|
+
}
|
|
361
|
+
|
|
362
|
+
/// @inheritdoc IEdgeChallengeManager
|
|
363
|
+
function confirmEdgeByTime(bytes32 edgeId, AssertionStateData calldata claimStateData) public {
|
|
364
|
+
ChallengeEdge storage topEdge = store.get(edgeId);
|
|
365
|
+
if (!topEdge.isLayerZero()) {
|
|
366
|
+
revert EdgeNotLayerZero(topEdge.id(), topEdge.staker, topEdge.claimId);
|
|
367
|
+
}
|
|
368
|
+
|
|
369
|
+
uint64 assertionBlocks = 0;
|
|
370
|
+
// if the edge is block level and the assertion being claimed against was the first child of its predecessor
|
|
371
|
+
// then we are able to count the time between the first and second child as time towards
|
|
372
|
+
// the this edge
|
|
373
|
+
bool isBlockLevel =
|
|
374
|
+
ChallengeEdgeLib.levelToType(topEdge.level, NUM_BIGSTEP_LEVEL) == EdgeType.Block;
|
|
375
|
+
if (isBlockLevel && assertionChain.isFirstChild(topEdge.claimId)) {
|
|
376
|
+
assertionChain.validateAssertionHash(
|
|
377
|
+
topEdge.claimId,
|
|
378
|
+
claimStateData.assertionState,
|
|
379
|
+
claimStateData.prevAssertionHash,
|
|
380
|
+
claimStateData.inboxAcc
|
|
381
|
+
);
|
|
382
|
+
assertionBlocks = assertionChain.getSecondChildCreationBlock(
|
|
383
|
+
claimStateData.prevAssertionHash
|
|
384
|
+
) - assertionChain.getFirstChildCreationBlock(claimStateData.prevAssertionHash);
|
|
385
|
+
}
|
|
386
|
+
|
|
387
|
+
uint256 totalTimeUnrivaled =
|
|
388
|
+
store.confirmEdgeByTime(edgeId, assertionBlocks, challengePeriodBlocks);
|
|
389
|
+
|
|
390
|
+
emit EdgeConfirmedByTime(edgeId, store.edges[edgeId].mutualId(), totalTimeUnrivaled);
|
|
391
|
+
}
|
|
392
|
+
|
|
393
|
+
/// @inheritdoc IEdgeChallengeManager
|
|
394
|
+
function confirmEdgeByOneStepProof(
|
|
395
|
+
bytes32 edgeId,
|
|
396
|
+
OneStepData calldata oneStepData,
|
|
397
|
+
ConfigData calldata prevConfig,
|
|
398
|
+
bytes32[] calldata beforeHistoryInclusionProof,
|
|
399
|
+
bytes32[] calldata afterHistoryInclusionProof
|
|
400
|
+
) public {
|
|
401
|
+
bytes32 prevAssertionHash = store.getPrevAssertionHash(edgeId);
|
|
402
|
+
|
|
403
|
+
assertionChain.validateConfig(prevAssertionHash, prevConfig);
|
|
404
|
+
|
|
405
|
+
ExecutionContext memory execCtx = ExecutionContext({
|
|
406
|
+
maxInboxMessagesRead: prevConfig.nextInboxPosition,
|
|
407
|
+
bridge: assertionChain.bridge(),
|
|
408
|
+
initialWasmModuleRoot: prevConfig.wasmModuleRoot
|
|
409
|
+
});
|
|
410
|
+
|
|
411
|
+
store.confirmEdgeByOneStepProof(
|
|
412
|
+
edgeId,
|
|
413
|
+
oneStepProofEntry,
|
|
414
|
+
oneStepData,
|
|
415
|
+
execCtx,
|
|
416
|
+
beforeHistoryInclusionProof,
|
|
417
|
+
afterHistoryInclusionProof,
|
|
418
|
+
NUM_BIGSTEP_LEVEL,
|
|
419
|
+
LAYERZERO_BIGSTEPEDGE_HEIGHT,
|
|
420
|
+
LAYERZERO_SMALLSTEPEDGE_HEIGHT
|
|
421
|
+
);
|
|
422
|
+
|
|
423
|
+
emit EdgeConfirmedByOneStepProof(edgeId, store.edges[edgeId].mutualId());
|
|
424
|
+
}
|
|
425
|
+
|
|
426
|
+
/// @inheritdoc IEdgeChallengeManager
|
|
427
|
+
function refundStake(
|
|
428
|
+
bytes32 edgeId
|
|
429
|
+
) public {
|
|
430
|
+
ChallengeEdge storage edge = store.get(edgeId);
|
|
431
|
+
// setting refunded also do checks that the edge cannot be refunded twice
|
|
432
|
+
edge.setRefunded();
|
|
433
|
+
|
|
434
|
+
IERC20 st = stakeToken;
|
|
435
|
+
uint256 sa = stakeAmounts[edge.level];
|
|
436
|
+
// no need to refund with the token or amount where zero'd out
|
|
437
|
+
if (address(st) != address(0) && sa != 0) {
|
|
438
|
+
st.safeTransfer(edge.staker, sa);
|
|
439
|
+
}
|
|
440
|
+
|
|
441
|
+
emit EdgeRefunded(edgeId, store.edges[edgeId].mutualId(), address(st), sa);
|
|
442
|
+
}
|
|
443
|
+
|
|
444
|
+
///////////////////////
|
|
445
|
+
// VIEW ONLY SECTION //
|
|
446
|
+
///////////////////////
|
|
447
|
+
/// @inheritdoc IEdgeChallengeManager
|
|
448
|
+
function getLayerZeroEndHeight(
|
|
449
|
+
EdgeType eType
|
|
450
|
+
) public view returns (uint256) {
|
|
451
|
+
if (eType == EdgeType.Block) {
|
|
452
|
+
return LAYERZERO_BLOCKEDGE_HEIGHT;
|
|
453
|
+
} else if (eType == EdgeType.BigStep) {
|
|
454
|
+
return LAYERZERO_BIGSTEPEDGE_HEIGHT;
|
|
455
|
+
} else if (eType == EdgeType.SmallStep) {
|
|
456
|
+
return LAYERZERO_SMALLSTEPEDGE_HEIGHT;
|
|
457
|
+
} else {
|
|
458
|
+
revert InvalidEdgeType(eType);
|
|
459
|
+
}
|
|
460
|
+
}
|
|
461
|
+
|
|
462
|
+
/// @inheritdoc IEdgeChallengeManager
|
|
463
|
+
function calculateEdgeId(
|
|
464
|
+
uint8 level,
|
|
465
|
+
bytes32 originId,
|
|
466
|
+
uint256 startHeight,
|
|
467
|
+
bytes32 startHistoryRoot,
|
|
468
|
+
uint256 endHeight,
|
|
469
|
+
bytes32 endHistoryRoot
|
|
470
|
+
) public pure returns (bytes32) {
|
|
471
|
+
return ChallengeEdgeLib.idComponent(
|
|
472
|
+
level, originId, startHeight, startHistoryRoot, endHeight, endHistoryRoot
|
|
473
|
+
);
|
|
474
|
+
}
|
|
475
|
+
|
|
476
|
+
/// @inheritdoc IEdgeChallengeManager
|
|
477
|
+
function calculateMutualId(
|
|
478
|
+
uint8 level,
|
|
479
|
+
bytes32 originId,
|
|
480
|
+
uint256 startHeight,
|
|
481
|
+
bytes32 startHistoryRoot,
|
|
482
|
+
uint256 endHeight
|
|
483
|
+
) public pure returns (bytes32) {
|
|
484
|
+
return ChallengeEdgeLib.mutualIdComponent(
|
|
485
|
+
level, originId, startHeight, startHistoryRoot, endHeight
|
|
486
|
+
);
|
|
487
|
+
}
|
|
488
|
+
|
|
489
|
+
/// @inheritdoc IEdgeChallengeManager
|
|
490
|
+
function edgeExists(
|
|
491
|
+
bytes32 edgeId
|
|
492
|
+
) public view returns (bool) {
|
|
493
|
+
return store.edges[edgeId].exists();
|
|
494
|
+
}
|
|
495
|
+
|
|
496
|
+
/// @inheritdoc IEdgeChallengeManager
|
|
497
|
+
function getEdge(
|
|
498
|
+
bytes32 edgeId
|
|
499
|
+
) public view returns (ChallengeEdge memory) {
|
|
500
|
+
return store.get(edgeId);
|
|
501
|
+
}
|
|
502
|
+
|
|
503
|
+
/// @inheritdoc IEdgeChallengeManager
|
|
504
|
+
function edgeLength(
|
|
505
|
+
bytes32 edgeId
|
|
506
|
+
) public view returns (uint256) {
|
|
507
|
+
return store.get(edgeId).length();
|
|
508
|
+
}
|
|
509
|
+
|
|
510
|
+
/// @inheritdoc IEdgeChallengeManager
|
|
511
|
+
function hasRival(
|
|
512
|
+
bytes32 edgeId
|
|
513
|
+
) public view returns (bool) {
|
|
514
|
+
return store.hasRival(edgeId);
|
|
515
|
+
}
|
|
516
|
+
|
|
517
|
+
/// @inheritdoc IEdgeChallengeManager
|
|
518
|
+
function confirmedRival(
|
|
519
|
+
bytes32 mutualId
|
|
520
|
+
) public view returns (bytes32) {
|
|
521
|
+
return store.confirmedRivals[mutualId];
|
|
522
|
+
}
|
|
523
|
+
|
|
524
|
+
/// @inheritdoc IEdgeChallengeManager
|
|
525
|
+
function hasLengthOneRival(
|
|
526
|
+
bytes32 edgeId
|
|
527
|
+
) public view returns (bool) {
|
|
528
|
+
return store.hasLengthOneRival(edgeId);
|
|
529
|
+
}
|
|
530
|
+
|
|
531
|
+
/// @inheritdoc IEdgeChallengeManager
|
|
532
|
+
function timeUnrivaled(
|
|
533
|
+
bytes32 edgeId
|
|
534
|
+
) public view returns (uint256) {
|
|
535
|
+
return store.timeUnrivaled(edgeId);
|
|
536
|
+
}
|
|
537
|
+
|
|
538
|
+
/// @inheritdoc IEdgeChallengeManager
|
|
539
|
+
function getPrevAssertionHash(
|
|
540
|
+
bytes32 edgeId
|
|
541
|
+
) public view returns (bytes32) {
|
|
542
|
+
return store.getPrevAssertionHash(edgeId);
|
|
543
|
+
}
|
|
544
|
+
|
|
545
|
+
/// @inheritdoc IEdgeChallengeManager
|
|
546
|
+
function firstRival(
|
|
547
|
+
bytes32 mutualId
|
|
548
|
+
) public view returns (bytes32) {
|
|
549
|
+
return store.firstRivals[mutualId];
|
|
550
|
+
}
|
|
551
|
+
|
|
552
|
+
/// @inheritdoc IEdgeChallengeManager
|
|
553
|
+
function hasMadeLayerZeroRival(
|
|
554
|
+
address account,
|
|
555
|
+
bytes32 mutualId
|
|
556
|
+
) external view returns (bool) {
|
|
557
|
+
return store.hasMadeLayerZeroRival[account][mutualId];
|
|
558
|
+
}
|
|
559
|
+
}
|
|
@@ -0,0 +1,39 @@
|
|
|
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 "../bridge/IBridge.sol";
|
|
8
|
+
import "../osp/IOneStepProofEntry.sol";
|
|
9
|
+
import "../rollup/Assertion.sol";
|
|
10
|
+
|
|
11
|
+
/// @title Assertion chain interface
|
|
12
|
+
/// @notice The interface required by the EdgeChallengeManager for requesting assertion data from the AssertionChain
|
|
13
|
+
interface IAssertionChain {
|
|
14
|
+
function bridge() external view returns (IBridge);
|
|
15
|
+
function validateAssertionHash(
|
|
16
|
+
bytes32 assertionHash,
|
|
17
|
+
AssertionState calldata state,
|
|
18
|
+
bytes32 prevAssertionHash,
|
|
19
|
+
bytes32 inboxAcc
|
|
20
|
+
) external view;
|
|
21
|
+
function validateConfig(bytes32 assertionHash, ConfigData calldata configData) external view;
|
|
22
|
+
function getFirstChildCreationBlock(
|
|
23
|
+
bytes32 assertionHash
|
|
24
|
+
) external view returns (uint64);
|
|
25
|
+
function getSecondChildCreationBlock(
|
|
26
|
+
bytes32 assertionHash
|
|
27
|
+
) external view returns (uint64);
|
|
28
|
+
function isFirstChild(
|
|
29
|
+
bytes32 assertionHash
|
|
30
|
+
) external view returns (bool);
|
|
31
|
+
function isPending(
|
|
32
|
+
bytes32 assertionHash
|
|
33
|
+
) external view returns (bool);
|
|
34
|
+
function isValidator(
|
|
35
|
+
address
|
|
36
|
+
) external view returns (bool);
|
|
37
|
+
function getValidators() external view returns (address[] memory);
|
|
38
|
+
function validatorWhitelistDisabled() external view returns (bool);
|
|
39
|
+
}
|