@arbitrum/nitro-contracts 3.0.0-alpha.0 → 3.0.0-alpha.2
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/LICENSE.md +1 -1
- 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/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/transparent/ProxyAdmin.sol/ProxyAdmin.dbg.json +1 -1
- package/build/contracts/@openzeppelin/contracts/proxy/transparent/TransparentUpgradeableProxy.sol/TransparentUpgradeableProxy.dbg.json +1 -1
- 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/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 +1 -1
- package/build/contracts/@openzeppelin/contracts/token/ERC20/utils/SafeERC20.sol/SafeERC20.dbg.json +1 -1
- package/build/contracts/@openzeppelin/contracts/utils/Address.sol/Address.dbg.json +1 -1
- package/build/contracts/@openzeppelin/contracts/utils/Context.sol/Context.dbg.json +1 -1
- package/build/contracts/@openzeppelin/contracts/utils/Create2.sol/Create2.dbg.json +1 -1
- package/build/contracts/@openzeppelin/contracts/utils/StorageSlot.sol/StorageSlot.dbg.json +1 -1
- package/build/contracts/@openzeppelin/contracts/utils/Strings.sol/Strings.dbg.json +1 -1
- package/build/contracts/@openzeppelin/contracts-upgradeable/access/AccessControlUpgradeable.sol/AccessControlUpgradeable.dbg.json +1 -1
- 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/proxy/utils/Initializable.sol/Initializable.dbg.json +1 -1
- package/build/contracts/@openzeppelin/contracts-upgradeable/security/PausableUpgradeable.sol/PausableUpgradeable.dbg.json +1 -1
- package/build/contracts/@openzeppelin/contracts-upgradeable/utils/AddressUpgradeable.sol/AddressUpgradeable.dbg.json +1 -1
- package/build/contracts/@openzeppelin/contracts-upgradeable/utils/ContextUpgradeable.sol/ContextUpgradeable.dbg.json +1 -1
- package/build/contracts/@openzeppelin/contracts-upgradeable/utils/Create2Upgradeable.sol/Create2Upgradeable.dbg.json +1 -1
- package/build/contracts/@openzeppelin/contracts-upgradeable/utils/StorageSlotUpgradeable.sol/StorageSlotUpgradeable.dbg.json +1 -1
- package/build/contracts/@openzeppelin/contracts-upgradeable/utils/StringsUpgradeable.sol/StringsUpgradeable.dbg.json +1 -1
- package/build/contracts/@openzeppelin/contracts-upgradeable/utils/introspection/ERC165Upgradeable.sol/ERC165Upgradeable.dbg.json +1 -1
- 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/src/assertionStakingPool/AbsBoldStakingPool.sol/AbsBoldStakingPool.dbg.json +1 -1
- package/build/contracts/src/assertionStakingPool/AssertionStakingPool.sol/AssertionStakingPool.dbg.json +1 -1
- package/build/contracts/src/assertionStakingPool/AssertionStakingPool.sol/AssertionStakingPool.json +2 -2
- package/build/contracts/src/assertionStakingPool/AssertionStakingPoolCreator.sol/AssertionStakingPoolCreator.dbg.json +1 -1
- package/build/contracts/src/assertionStakingPool/AssertionStakingPoolCreator.sol/AssertionStakingPoolCreator.json +2 -2
- package/build/contracts/src/assertionStakingPool/EdgeStakingPool.sol/EdgeStakingPool.dbg.json +1 -1
- package/build/contracts/src/assertionStakingPool/EdgeStakingPool.sol/EdgeStakingPool.json +2 -2
- package/build/contracts/src/assertionStakingPool/EdgeStakingPoolCreator.sol/EdgeStakingPoolCreator.dbg.json +1 -1
- package/build/contracts/src/assertionStakingPool/EdgeStakingPoolCreator.sol/EdgeStakingPoolCreator.json +2 -2
- package/build/contracts/src/assertionStakingPool/StakingPoolCreatorUtils.sol/StakingPoolCreatorUtils.dbg.json +1 -1
- package/build/contracts/src/assertionStakingPool/interfaces/IAbsBoldStakingPool.sol/IAbsBoldStakingPool.dbg.json +1 -1
- package/build/contracts/src/assertionStakingPool/interfaces/IAssertionStakingPool.sol/IAssertionStakingPool.dbg.json +1 -1
- package/build/contracts/src/assertionStakingPool/interfaces/IAssertionStakingPoolCreator.sol/IAssertionStakingPoolCreator.dbg.json +1 -1
- package/build/contracts/src/assertionStakingPool/interfaces/IEdgeStakingPool.sol/IEdgeStakingPool.dbg.json +1 -1
- package/build/contracts/src/assertionStakingPool/interfaces/IEdgeStakingPoolCreator.sol/IEdgeStakingPoolCreator.dbg.json +1 -1
- package/build/contracts/src/bridge/AbsBridge.sol/AbsBridge.dbg.json +1 -1
- package/build/contracts/src/bridge/AbsInbox.sol/AbsInbox.dbg.json +1 -1
- package/build/contracts/src/bridge/AbsInbox.sol/AbsInbox.json +7 -7
- package/build/contracts/src/bridge/AbsOutbox.sol/AbsOutbox.dbg.json +1 -1
- package/build/contracts/src/bridge/Bridge.sol/Bridge.dbg.json +1 -1
- package/build/contracts/src/bridge/Bridge.sol/Bridge.json +2 -2
- package/build/contracts/src/bridge/DelayBuffer.sol/DelayBuffer.dbg.json +1 -1
- package/build/contracts/src/bridge/ERC20Bridge.sol/ERC20Bridge.dbg.json +1 -1
- package/build/contracts/src/bridge/ERC20Bridge.sol/ERC20Bridge.json +2 -2
- package/build/contracts/src/bridge/ERC20Inbox.sol/ERC20Inbox.dbg.json +1 -1
- package/build/contracts/src/bridge/ERC20Inbox.sol/ERC20Inbox.json +9 -9
- package/build/contracts/src/bridge/ERC20Outbox.sol/ERC20Outbox.dbg.json +1 -1
- package/build/contracts/src/bridge/ERC20Outbox.sol/ERC20Outbox.json +2 -2
- package/build/contracts/src/bridge/GasRefunder.sol/GasRefunder.dbg.json +1 -1
- package/build/contracts/src/bridge/IBridge.sol/IBridge.dbg.json +1 -1
- package/build/contracts/src/bridge/IDelayedMessageProvider.sol/IDelayedMessageProvider.dbg.json +1 -1
- package/build/contracts/src/bridge/IERC20Bridge.sol/IERC20Bridge.dbg.json +1 -1
- package/build/contracts/src/bridge/IERC20Inbox.sol/IERC20Inbox.dbg.json +1 -1
- package/build/contracts/src/bridge/IERC20Inbox.sol/IERC20Inbox.json +1 -1
- package/build/contracts/src/bridge/IEthBridge.sol/IEthBridge.dbg.json +1 -1
- package/build/contracts/src/bridge/IInbox.sol/IInbox.dbg.json +1 -1
- package/build/contracts/src/bridge/IInbox.sol/IInbox.json +1 -1
- package/build/contracts/src/bridge/IInboxBase.sol/IInboxBase.dbg.json +1 -1
- package/build/contracts/src/bridge/IInboxBase.sol/IInboxBase.json +1 -1
- package/build/contracts/src/bridge/IOutbox.sol/IOutbox.dbg.json +1 -1
- package/build/contracts/src/bridge/IOwnable.sol/IOwnable.dbg.json +1 -1
- package/build/contracts/src/bridge/ISequencerInbox.sol/ISequencerInbox.dbg.json +1 -1
- package/build/contracts/src/bridge/Inbox.sol/Inbox.dbg.json +1 -1
- package/build/contracts/src/bridge/Inbox.sol/Inbox.json +9 -9
- package/build/contracts/src/bridge/Messages.sol/Messages.dbg.json +1 -1
- 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 +5 -5
- package/build/contracts/src/chain/CacheManager.sol/CacheManager.dbg.json +1 -1
- package/build/contracts/src/chain/CacheManager.sol/CacheManager.json +2 -2
- package/build/contracts/src/challengeV2/EdgeChallengeManager.sol/EdgeChallengeManager.dbg.json +1 -1
- package/build/contracts/src/challengeV2/EdgeChallengeManager.sol/EdgeChallengeManager.json +2 -2
- package/build/contracts/src/challengeV2/IAssertionChain.sol/IAssertionChain.dbg.json +1 -1
- package/build/contracts/src/challengeV2/IEdgeChallengeManager.sol/IEdgeChallengeManager.dbg.json +4 -0
- package/build/contracts/src/challengeV2/{EdgeChallengeManager.sol → IEdgeChallengeManager.sol}/IEdgeChallengeManager.json +33 -1
- package/build/contracts/src/challengeV2/libraries/ArrayUtilsLib.sol/ArrayUtilsLib.dbg.json +1 -1
- package/build/contracts/src/challengeV2/libraries/ChallengeEdgeLib.sol/ChallengeEdgeLib.dbg.json +1 -1
- package/build/contracts/src/challengeV2/libraries/ChallengeEdgeLib.sol/ChallengeEdgeLib.json +2 -2
- package/build/contracts/src/challengeV2/libraries/EdgeChallengeManagerLib.sol/EdgeChallengeManagerLib.dbg.json +1 -1
- package/build/contracts/src/challengeV2/libraries/EdgeChallengeManagerLib.sol/EdgeChallengeManagerLib.json +2 -2
- package/build/contracts/src/challengeV2/libraries/MerkleTreeAccumulatorLib.sol/MerkleTreeAccumulatorLib.dbg.json +1 -1
- package/build/contracts/src/challengeV2/libraries/MerkleTreeAccumulatorLib.sol/MerkleTreeAccumulatorLib.json +2 -2
- package/build/contracts/src/challengeV2/libraries/UintUtilsLib.sol/UintUtilsLib.dbg.json +1 -1
- package/build/contracts/src/libraries/AddressAliasHelper.sol/AddressAliasHelper.dbg.json +1 -1
- package/build/contracts/src/libraries/AdminFallbackProxy.sol/AdminFallbackProxy.dbg.json +1 -1
- 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/libraries/CallerChecker.sol/CallerChecker.json +10 -0
- package/build/contracts/src/libraries/CryptographyPrimitives.sol/CryptographyPrimitives.dbg.json +1 -1
- package/build/contracts/src/libraries/DecimalsConverterHelper.sol/DecimalsConverterHelper.dbg.json +1 -1
- 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/BridgeStub.sol/BridgeStub.dbg.json +1 -1
- package/build/contracts/src/mocks/BridgeStub.sol/BridgeStub.json +2 -2
- package/build/contracts/src/mocks/BridgeUnproxied.sol/BridgeUnproxied.dbg.json +1 -1
- package/build/contracts/src/mocks/BridgeUnproxied.sol/BridgeUnproxied.json +2 -2
- package/build/contracts/src/mocks/CreateTest.sol/CreateTest.dbg.json +4 -0
- package/build/contracts/src/mocks/CreateTest.sol/CreateTest.json +15 -0
- package/build/contracts/src/mocks/HostioTest.sol/HostioTest.dbg.json +4 -0
- package/build/contracts/src/mocks/HostioTest.sol/HostioTest.json +513 -0
- 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 +1 -1
- package/build/contracts/src/mocks/MerkleTreeAccess.sol/MerkleTreeAccess.json +2 -2
- package/build/contracts/src/mocks/MockRollupEventInbox.sol/MockRollupEventInbox.dbg.json +1 -1
- package/build/contracts/src/mocks/MockRollupEventInbox.sol/MockRollupEventInbox.json +2 -2
- package/build/contracts/src/mocks/MultiCallTest.sol/MultiCallTest.dbg.json +1 -1
- 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/SdkStorage.sol/SdkStorage.dbg.json +1 -1
- package/build/contracts/src/mocks/SequencerInboxBlobMock.sol/SequencerInboxBlobMock.dbg.json +1 -1
- package/build/contracts/src/mocks/SequencerInboxBlobMock.sol/SequencerInboxBlobMock.json +5 -5
- package/build/contracts/src/mocks/SequencerInboxStub.sol/SequencerInboxStub.dbg.json +1 -1
- package/build/contracts/src/mocks/SequencerInboxStub.sol/SequencerInboxStub.json +5 -5
- 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/SimpleOneStepProofEntry.sol/SimpleOneStepProofEntry.dbg.json +1 -1
- package/build/contracts/src/mocks/SimpleOneStepProofEntry.sol/SimpleOneStepProofEntry.json +2 -2
- package/build/contracts/src/mocks/SimpleProxy.sol/SimpleProxy.dbg.json +1 -1
- package/build/contracts/src/mocks/TestWETH9.sol/IWETH9.dbg.json +1 -1
- package/build/contracts/src/mocks/TestWETH9.sol/TestWETH9.dbg.json +1 -1
- package/build/contracts/src/mocks/UpgradeExecutorMock.sol/UpgradeExecutorMock.dbg.json +1 -1
- 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/IOneStepProofEntry.sol/IOneStepProofEntry.dbg.json +1 -1
- package/build/contracts/src/osp/IOneStepProofEntry.sol/OneStepProofEntryLib.dbg.json +1 -1
- package/build/contracts/src/osp/IOneStepProver.sol/IOneStepProver.dbg.json +1 -1
- package/build/contracts/src/osp/OneStepProofEntry.sol/OneStepProofEntry.dbg.json +1 -1
- package/build/contracts/src/osp/OneStepProver0.sol/OneStepProver0.dbg.json +1 -1
- package/build/contracts/src/osp/OneStepProverHostIo.sol/OneStepProverHostIo.dbg.json +1 -1
- package/build/contracts/src/osp/OneStepProverMath.sol/OneStepProverMath.dbg.json +1 -1
- package/build/contracts/src/osp/OneStepProverMemory.sol/OneStepProverMemory.dbg.json +1 -1
- 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/ArbWasm.sol/ArbWasm.json +4 -4
- 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 +1 -1
- package/build/contracts/src/rollup/AssertionState.sol/AssertionStateLib.dbg.json +1 -1
- package/build/contracts/src/rollup/BOLDUpgradeAction.sol/BOLDUpgradeAction.dbg.json +1 -1
- package/build/contracts/src/rollup/BOLDUpgradeAction.sol/BOLDUpgradeAction.json +2 -2
- package/build/contracts/src/rollup/BOLDUpgradeAction.sol/ConstantArrayStorage.dbg.json +1 -1
- package/build/contracts/src/rollup/BOLDUpgradeAction.sol/ConstantArrayStorage.json +2 -2
- package/build/contracts/src/rollup/BOLDUpgradeAction.sol/IOldRollup.dbg.json +1 -1
- package/build/contracts/src/rollup/BOLDUpgradeAction.sol/IOldRollupAdmin.dbg.json +1 -1
- package/build/contracts/src/rollup/BOLDUpgradeAction.sol/ISeqInboxPostUpgradeInit.dbg.json +1 -1
- package/build/contracts/src/rollup/BOLDUpgradeAction.sol/RollupReader.dbg.json +1 -1
- package/build/contracts/src/rollup/BOLDUpgradeAction.sol/RollupReader.json +2 -2
- package/build/contracts/src/rollup/BOLDUpgradeAction.sol/StateHashPreImageLookup.dbg.json +1 -1
- package/build/contracts/src/rollup/BOLDUpgradeAction.sol/StateHashPreImageLookup.json +2 -2
- package/build/contracts/src/rollup/BridgeCreator.sol/BridgeCreator.dbg.json +1 -1
- package/build/contracts/src/rollup/BridgeCreator.sol/BridgeCreator.json +2 -2
- 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/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/IRollupCore.sol/IRollupCore.dbg.json +1 -1
- 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/RollupAdminLogic.sol/RollupAdminLogic.dbg.json +1 -1
- package/build/contracts/src/rollup/RollupAdminLogic.sol/RollupAdminLogic.json +2 -2
- package/build/contracts/src/rollup/RollupCore.sol/RollupCore.dbg.json +1 -1
- package/build/contracts/src/rollup/RollupCreator.sol/RollupCreator.dbg.json +1 -1
- package/build/contracts/src/rollup/RollupCreator.sol/RollupCreator.json +2 -2
- 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 +2 -2
- package/build/contracts/src/rollup/RollupUserLogic.sol/RollupUserLogic.dbg.json +1 -1
- package/build/contracts/src/rollup/RollupUserLogic.sol/RollupUserLogic.json +2 -2
- package/build/contracts/src/rollup/ValidatorWallet.sol/ValidatorWallet.dbg.json +1 -1
- package/build/contracts/src/rollup/ValidatorWallet.sol/ValidatorWallet.json +2 -2
- 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/GlobalState.sol/GlobalStateLib.dbg.json +1 -1
- package/build/contracts/src/state/Instructions.sol/Instructions.dbg.json +1 -1
- package/build/contracts/src/state/Machine.sol/MachineLib.dbg.json +1 -1
- package/build/contracts/src/state/MerkleProof.sol/MerkleProofLib.dbg.json +1 -1
- package/build/contracts/src/state/Module.sol/ModuleLib.dbg.json +1 -1
- package/build/contracts/src/state/ModuleMemory.sol/ModuleMemoryLib.dbg.json +1 -1
- package/build/contracts/src/state/ModuleMemoryCompact.sol/ModuleMemoryCompactLib.dbg.json +1 -1
- package/build/contracts/src/state/MultiStack.sol/MultiStackLib.dbg.json +1 -1
- package/build/contracts/src/state/PcArray.sol/PcArrayLib.dbg.json +1 -1
- package/build/contracts/src/state/StackFrame.sol/StackFrameLib.dbg.json +1 -1
- package/build/contracts/src/state/Value.sol/ValueLib.dbg.json +1 -1
- package/build/contracts/src/state/ValueArray.sol/ValueArrayLib.dbg.json +1 -1
- package/build/contracts/src/state/ValueStack.sol/ValueStackLib.dbg.json +1 -1
- package/build/contracts/src/test-helpers/BridgeTester.sol/BridgeTester.dbg.json +1 -1
- package/build/contracts/src/test-helpers/BridgeTester.sol/BridgeTester.json +2 -2
- package/build/contracts/src/test-helpers/CryptographyPrimitivesTester.sol/CryptographyPrimitivesTester.dbg.json +1 -1
- package/build/contracts/src/test-helpers/EthVault.sol/EthVault.dbg.json +1 -1
- package/build/contracts/src/test-helpers/MessageTester.sol/MessageTester.dbg.json +1 -1
- 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/TestToken.sol/TestToken.dbg.json +1 -1
- package/build/contracts/src/test-helpers/ValueArrayTester.sol/ValueArrayTester.dbg.json +1 -1
- package/out/yul/Reader4844.yul/Reader4844.json +1 -1
- package/package.json +1 -1
- package/src/assertionStakingPool/EdgeStakingPool.sol +3 -4
- package/src/assertionStakingPool/interfaces/IEdgeStakingPool.sol +1 -1
- package/src/bridge/AbsInbox.sol +10 -4
- package/src/bridge/IInboxBase.sol +6 -2
- package/src/bridge/Inbox.sol +3 -0
- package/src/bridge/SequencerInbox.sol +10 -11
- package/src/challengeV2/EdgeChallengeManager.sol +1 -225
- package/src/challengeV2/IAssertionChain.sol +1 -1
- package/src/challengeV2/IEdgeChallengeManager.sol +239 -0
- package/src/challengeV2/libraries/ChallengeEdgeLib.sol +1 -57
- package/src/challengeV2/libraries/EdgeChallengeManagerLib.sol +2 -113
- package/src/challengeV2/libraries/Structs.sol +176 -0
- package/src/libraries/CallerChecker.sol +18 -0
- package/src/libraries/Error.sol +3 -0
- package/src/libraries/GasRefundEnabled.sol +2 -2
- package/src/mocks/CreateTest.sol +44 -0
- package/src/mocks/HostioTest.sol +200 -0
- package/src/mocks/SimpleOneStepProofEntry.sol +1 -1
- package/src/precompiles/ArbSys.sol +2 -1
- package/src/precompiles/ArbWasm.sol +1 -1
- package/src/rollup/Config.sol +1 -1
- package/src/rollup/IRollupCore.sol +1 -1
- package/src/rollup/RollupCore.sol +1 -1
- package/src/rollup/RollupLib.sol +1 -1
- package/src/rollup/RollupUserLogic.sol +1 -0
- package/build/contracts/src/challengeV2/EdgeChallengeManager.sol/IEdgeChallengeManager.dbg.json +0 -4
|
@@ -1 +1 @@
|
|
|
1
|
-
{"abi":null,"bytecode":{"object":"
|
|
1
|
+
{"abi":null,"bytecode":{"object":"0x605780600a5f395ff3fe346053575f3560e01c8063e83a2d8214602757631f6d6ef714601f575f80fd5b4a5f5260205ff35b5f5b804990811560415760019160408260051b0152016029565b60409060205f528060205260051b015ff35b5f80fd","sourceMap":"65:19:0:-:0;109:21;;106:1;97:38;155:1;148:13","linkReferences":{}},"deployedBytecode":{"object":"0x346053575f3560e01c8063e83a2d8214602757631f6d6ef714601f575f80fd5b4a5f5260205ff35b5f5b804990811560415760019160408260051b0152016029565b60409060205f528060205260051b015ff35b5f80fd","sourceMap":"249:11:0:-:0;246:31;;324:1;311:15;305:4;301:26;344:467;349:10;344:467;;;833:10;828:120;;;985:1;975:12;;844:104;876:19;873:1;866:30;927:2;924:1;917:13;360:451;391:1;447:228;485:22;;535:12;;;532:25;;651:1;593:9;604:2;593:9;597:1;593:9;589:18;582:32;644:9;423:3;;548:9;789:2;550:5;706:2;703:1;696:13;730;737:2;730:13;782:1;778:9;774:18;771:1;764:29;261:16;273:1;263:12;","linkReferences":{}},"methodIdentifiers":{}}
|
package/package.json
CHANGED
|
@@ -6,7 +6,6 @@ pragma solidity ^0.8.0;
|
|
|
6
6
|
|
|
7
7
|
import "./AbsBoldStakingPool.sol";
|
|
8
8
|
import "./interfaces/IEdgeStakingPool.sol";
|
|
9
|
-
import "../challengeV2/EdgeChallengeManager.sol";
|
|
10
9
|
|
|
11
10
|
import "@openzeppelin/contracts/token/ERC20/IERC20.sol";
|
|
12
11
|
import "@openzeppelin/contracts/token/ERC20/utils/SafeERC20.sol";
|
|
@@ -35,7 +34,7 @@ contract EdgeStakingPool is AbsBoldStakingPool, IEdgeStakingPool {
|
|
|
35
34
|
constructor(
|
|
36
35
|
address _challengeManager,
|
|
37
36
|
bytes32 _edgeId
|
|
38
|
-
) AbsBoldStakingPool(address(
|
|
37
|
+
) AbsBoldStakingPool(address(IEdgeChallengeManager(_challengeManager).stakeToken())) {
|
|
39
38
|
if (_edgeId == bytes32(0)) {
|
|
40
39
|
revert EmptyEdgeId();
|
|
41
40
|
}
|
|
@@ -47,9 +46,9 @@ contract EdgeStakingPool is AbsBoldStakingPool, IEdgeStakingPool {
|
|
|
47
46
|
function createEdge(
|
|
48
47
|
CreateEdgeArgs calldata args
|
|
49
48
|
) external {
|
|
50
|
-
uint256 requiredStake =
|
|
49
|
+
uint256 requiredStake = IEdgeChallengeManager(challengeManager).stakeAmounts(args.level);
|
|
51
50
|
IERC20(stakeToken).safeIncreaseAllowance(address(challengeManager), requiredStake);
|
|
52
|
-
bytes32 newEdgeId =
|
|
51
|
+
bytes32 newEdgeId = IEdgeChallengeManager(challengeManager).createLayerZeroEdge(args);
|
|
53
52
|
if (newEdgeId != edgeId) {
|
|
54
53
|
revert IncorrectEdgeId(newEdgeId, edgeId);
|
|
55
54
|
}
|
package/src/bridge/AbsInbox.sol
CHANGED
|
@@ -6,12 +6,12 @@ pragma solidity ^0.8.4;
|
|
|
6
6
|
|
|
7
7
|
import {
|
|
8
8
|
DataTooLarge,
|
|
9
|
-
Deprecated,
|
|
10
9
|
GasLimitTooLarge,
|
|
11
10
|
InsufficientValue,
|
|
12
11
|
InsufficientSubmissionCost,
|
|
13
12
|
L1Forked,
|
|
14
13
|
NotAllowedOrigin,
|
|
14
|
+
NotCodelessOrigin,
|
|
15
15
|
NotRollupOrOwner,
|
|
16
16
|
RetryableData
|
|
17
17
|
} from "../libraries/Error.sol";
|
|
@@ -19,6 +19,7 @@ import "./IInboxBase.sol";
|
|
|
19
19
|
import "./ISequencerInbox.sol";
|
|
20
20
|
import "./IBridge.sol";
|
|
21
21
|
import "../libraries/AddressAliasHelper.sol";
|
|
22
|
+
import "../libraries/CallerChecker.sol";
|
|
22
23
|
import "../libraries/DelegateCallAware.sol";
|
|
23
24
|
import {
|
|
24
25
|
L1MessageType_submitRetryableTx,
|
|
@@ -136,9 +137,14 @@ abstract contract AbsInbox is DelegateCallAware, PausableUpgradeable, IInboxBase
|
|
|
136
137
|
|
|
137
138
|
/// @inheritdoc IInboxBase
|
|
138
139
|
function sendL2MessageFromOrigin(
|
|
139
|
-
bytes calldata
|
|
140
|
-
) external
|
|
141
|
-
revert
|
|
140
|
+
bytes calldata messageData
|
|
141
|
+
) external whenNotPaused onlyAllowed returns (uint256) {
|
|
142
|
+
if (_chainIdChanged()) revert L1Forked();
|
|
143
|
+
if (!CallerChecker.isCallerCodelessOrigin()) revert NotCodelessOrigin();
|
|
144
|
+
if (messageData.length > maxDataSize) revert DataTooLarge(messageData.length, maxDataSize);
|
|
145
|
+
uint256 msgNum = _deliverToBridge(L2_MSG, msg.sender, keccak256(messageData), 0);
|
|
146
|
+
emit InboxMessageDeliveredFromOrigin(msgNum);
|
|
147
|
+
return msgNum;
|
|
142
148
|
}
|
|
143
149
|
|
|
144
150
|
/// @inheritdoc IInboxBase
|
|
@@ -16,9 +16,13 @@ interface IInboxBase is IDelayedMessageProvider {
|
|
|
16
16
|
|
|
17
17
|
function maxDataSize() external view returns (uint256);
|
|
18
18
|
|
|
19
|
-
|
|
19
|
+
/**
|
|
20
|
+
* @notice Send a generic L2 message to the chain
|
|
21
|
+
* @dev This method is an optimization to avoid having to emit the entirety of the messageData in a log. Instead validators are expected to be able to parse the data from the transaction's input
|
|
22
|
+
* @param messageData Data of the message being sent
|
|
23
|
+
*/
|
|
20
24
|
function sendL2MessageFromOrigin(
|
|
21
|
-
bytes calldata
|
|
25
|
+
bytes calldata messageData
|
|
22
26
|
) external returns (uint256);
|
|
23
27
|
|
|
24
28
|
/**
|
package/src/bridge/Inbox.sol
CHANGED
|
@@ -109,6 +109,7 @@ contract Inbox is AbsInbox, IInbox {
|
|
|
109
109
|
if (!_chainIdChanged()) revert NotForked();
|
|
110
110
|
// solhint-disable-next-line avoid-tx-origin
|
|
111
111
|
if (msg.sender != tx.origin) revert NotOrigin();
|
|
112
|
+
// no code size check required because we only want to know if msg.sender is an EOA to undo alias
|
|
112
113
|
// arbos will discard unsigned tx with gas limit too large
|
|
113
114
|
if (gasLimit > type(uint64).max) {
|
|
114
115
|
revert GasLimitTooLarge();
|
|
@@ -142,6 +143,7 @@ contract Inbox is AbsInbox, IInbox {
|
|
|
142
143
|
if (!_chainIdChanged()) revert NotForked();
|
|
143
144
|
// solhint-disable-next-line avoid-tx-origin
|
|
144
145
|
if (msg.sender != tx.origin) revert NotOrigin();
|
|
146
|
+
// no code size check required because we only want to know if msg.sender is an EOA to undo alias
|
|
145
147
|
// arbos will discard unsigned tx with gas limit too large
|
|
146
148
|
if (gasLimit > type(uint64).max) {
|
|
147
149
|
revert GasLimitTooLarge();
|
|
@@ -174,6 +176,7 @@ contract Inbox is AbsInbox, IInbox {
|
|
|
174
176
|
if (!_chainIdChanged()) revert NotForked();
|
|
175
177
|
// solhint-disable-next-line avoid-tx-origin
|
|
176
178
|
if (msg.sender != tx.origin) revert NotOrigin();
|
|
179
|
+
// no code size check required because we only want to know if msg.sender is an EOA to undo alias
|
|
177
180
|
// arbos will discard unsigned tx with gas limit too large
|
|
178
181
|
if (gasLimit > type(uint64).max) {
|
|
179
182
|
revert GasLimitTooLarge();
|
|
@@ -19,6 +19,7 @@ import {
|
|
|
19
19
|
NoSuchKeyset,
|
|
20
20
|
NotForked,
|
|
21
21
|
NotBatchPosterManager,
|
|
22
|
+
NotCodelessOrigin,
|
|
22
23
|
RollupNotChanged,
|
|
23
24
|
DataBlobsNotSupported,
|
|
24
25
|
InitParamZero,
|
|
@@ -42,6 +43,7 @@ import "../rollup/IRollupLogic.sol";
|
|
|
42
43
|
import "./Messages.sol";
|
|
43
44
|
import "../precompiles/ArbGasInfo.sol";
|
|
44
45
|
import "../precompiles/ArbSys.sol";
|
|
46
|
+
import "../libraries/CallerChecker.sol";
|
|
45
47
|
import "../libraries/IReader4844.sol";
|
|
46
48
|
|
|
47
49
|
import "../libraries/DelegateCallAware.sol";
|
|
@@ -333,8 +335,7 @@ contract SequencerInbox is DelegateCallAware, GasRefundEnabled, ISequencerInbox
|
|
|
333
335
|
uint256 prevMessageCount,
|
|
334
336
|
uint256 newMessageCount
|
|
335
337
|
) external refundsGas(gasRefunder, IReader4844(address(0))) {
|
|
336
|
-
|
|
337
|
-
if (msg.sender != tx.origin) revert NotOrigin();
|
|
338
|
+
if (!CallerChecker.isCallerCodelessOrigin()) revert NotCodelessOrigin();
|
|
338
339
|
if (!isBatchPoster[msg.sender]) revert NotBatchPoster();
|
|
339
340
|
if (isDelayProofRequired(afterDelayedMessagesRead)) revert DelayProofRequired();
|
|
340
341
|
|
|
@@ -387,8 +388,7 @@ contract SequencerInbox is DelegateCallAware, GasRefundEnabled, ISequencerInbox
|
|
|
387
388
|
uint256 newMessageCount,
|
|
388
389
|
DelayProof calldata delayProof
|
|
389
390
|
) external refundsGas(gasRefunder, IReader4844(address(0))) {
|
|
390
|
-
|
|
391
|
-
if (msg.sender != tx.origin) revert NotOrigin();
|
|
391
|
+
if (!CallerChecker.isCallerCodelessOrigin()) revert NotCodelessOrigin();
|
|
392
392
|
if (!isBatchPoster[msg.sender]) revert NotBatchPoster();
|
|
393
393
|
if (!isDelayBufferable) revert NotDelayBufferable();
|
|
394
394
|
|
|
@@ -436,10 +436,9 @@ contract SequencerInbox is DelegateCallAware, GasRefundEnabled, ISequencerInbox
|
|
|
436
436
|
if (hostChainIsArbitrum) revert DataBlobsNotSupported();
|
|
437
437
|
|
|
438
438
|
// submit a batch spending report to refund the entity that produced the blob batch data
|
|
439
|
-
// same as using calldata, we only submit spending report if the caller is the origin
|
|
439
|
+
// same as using calldata, we only submit spending report if the caller is the origin and is codeless
|
|
440
440
|
// such that one cannot "double-claim" batch posting refund in the same tx
|
|
441
|
-
|
|
442
|
-
if (msg.sender == tx.origin && !isUsingFeeToken) {
|
|
441
|
+
if (CallerChecker.isCallerCodelessOrigin() && !isUsingFeeToken) {
|
|
443
442
|
submitBatchSpendingReport(dataHash, seqMessageIndex, block.basefee, blobGas);
|
|
444
443
|
}
|
|
445
444
|
}
|
|
@@ -450,7 +449,7 @@ contract SequencerInbox is DelegateCallAware, GasRefundEnabled, ISequencerInbox
|
|
|
450
449
|
uint256 afterDelayedMessagesRead,
|
|
451
450
|
uint256 prevMessageCount,
|
|
452
451
|
uint256 newMessageCount,
|
|
453
|
-
bool
|
|
452
|
+
bool isFromCodelessOrigin
|
|
454
453
|
) internal {
|
|
455
454
|
(bytes32 dataHash, IBridge.TimeBounds memory timeBounds) =
|
|
456
455
|
formCallDataHash(data, afterDelayedMessagesRead);
|
|
@@ -458,7 +457,7 @@ contract SequencerInbox is DelegateCallAware, GasRefundEnabled, ISequencerInbox
|
|
|
458
457
|
addSequencerL2BatchImpl(
|
|
459
458
|
dataHash,
|
|
460
459
|
afterDelayedMessagesRead,
|
|
461
|
-
|
|
460
|
+
isFromCodelessOrigin ? data.length : 0,
|
|
462
461
|
prevMessageCount,
|
|
463
462
|
newMessageCount
|
|
464
463
|
);
|
|
@@ -475,12 +474,12 @@ contract SequencerInbox is DelegateCallAware, GasRefundEnabled, ISequencerInbox
|
|
|
475
474
|
delayedAcc,
|
|
476
475
|
totalDelayedMessagesRead,
|
|
477
476
|
timeBounds,
|
|
478
|
-
|
|
477
|
+
isFromCodelessOrigin
|
|
479
478
|
? IBridge.BatchDataLocation.TxInput
|
|
480
479
|
: IBridge.BatchDataLocation.SeparateBatchEvent
|
|
481
480
|
);
|
|
482
481
|
|
|
483
|
-
if (!
|
|
482
|
+
if (!isFromCodelessOrigin) {
|
|
484
483
|
emit SequencerBatchData(seqMessageIndex, data);
|
|
485
484
|
}
|
|
486
485
|
}
|
|
@@ -6,7 +6,7 @@ pragma solidity ^0.8.17;
|
|
|
6
6
|
|
|
7
7
|
import "../rollup/Assertion.sol";
|
|
8
8
|
import "./libraries/UintUtilsLib.sol";
|
|
9
|
-
import "./
|
|
9
|
+
import "./IEdgeChallengeManager.sol";
|
|
10
10
|
import "./libraries/EdgeChallengeManagerLib.sol";
|
|
11
11
|
import "../libraries/Constants.sol";
|
|
12
12
|
import "../state/Machine.sol";
|
|
@@ -14,230 +14,6 @@ import "../state/Machine.sol";
|
|
|
14
14
|
import "@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol";
|
|
15
15
|
import "@openzeppelin/contracts/token/ERC20/utils/SafeERC20.sol";
|
|
16
16
|
|
|
17
|
-
/// @title EdgeChallengeManager interface
|
|
18
|
-
interface IEdgeChallengeManager {
|
|
19
|
-
/// @notice Initialize the EdgeChallengeManager. EdgeChallengeManagers are upgradeable
|
|
20
|
-
/// so use the initializer paradigm
|
|
21
|
-
/// @param _assertionChain The assertion chain contract
|
|
22
|
-
/// @param _challengePeriodBlocks The amount of cumulative time an edge must spend unrivaled before it can be confirmed
|
|
23
|
-
/// This should be the censorship period + the cumulative amount of time needed to do any
|
|
24
|
-
/// offchain calculation. We currently estimate around 10 mins for each layer zero edge and 1
|
|
25
|
-
/// one minute for each other edge.
|
|
26
|
-
/// @param _oneStepProofEntry The one step proof logic
|
|
27
|
-
/// @param layerZeroBlockEdgeHeight The end height of layer zero edges of type Block
|
|
28
|
-
/// @param layerZeroBigStepEdgeHeight The end height of layer zero edges of type BigStep
|
|
29
|
-
/// @param layerZeroSmallStepEdgeHeight The end height of layer zero edges of type SmallStep
|
|
30
|
-
/// @param _stakeToken The token that stake will be provided in when creating zero layer block edges
|
|
31
|
-
/// @param _excessStakeReceiver The address that excess stake will be sent to when 2nd+ block edge is created
|
|
32
|
-
/// @param _numBigStepLevel The number of bigstep levels
|
|
33
|
-
/// @param _stakeAmounts The stake amount for each level. (first element is for block level)
|
|
34
|
-
function initialize(
|
|
35
|
-
IAssertionChain _assertionChain,
|
|
36
|
-
uint64 _challengePeriodBlocks,
|
|
37
|
-
IOneStepProofEntry _oneStepProofEntry,
|
|
38
|
-
uint256 layerZeroBlockEdgeHeight,
|
|
39
|
-
uint256 layerZeroBigStepEdgeHeight,
|
|
40
|
-
uint256 layerZeroSmallStepEdgeHeight,
|
|
41
|
-
IERC20 _stakeToken,
|
|
42
|
-
address _excessStakeReceiver,
|
|
43
|
-
uint8 _numBigStepLevel,
|
|
44
|
-
uint256[] calldata _stakeAmounts
|
|
45
|
-
) external;
|
|
46
|
-
|
|
47
|
-
function challengePeriodBlocks() external view returns (uint64);
|
|
48
|
-
|
|
49
|
-
/// @notice The one step proof resolver used to decide between rival SmallStep edges of length 1
|
|
50
|
-
function oneStepProofEntry() external view returns (IOneStepProofEntry);
|
|
51
|
-
|
|
52
|
-
/// @notice Performs necessary checks and creates a new layer zero edge
|
|
53
|
-
/// @param args Edge creation args
|
|
54
|
-
function createLayerZeroEdge(
|
|
55
|
-
CreateEdgeArgs calldata args
|
|
56
|
-
) external returns (bytes32);
|
|
57
|
-
|
|
58
|
-
/// @notice Bisect an edge. This creates two child edges:
|
|
59
|
-
/// lowerChild: has the same start root and height as this edge, but a different end root and height
|
|
60
|
-
/// upperChild: has the same end root and height as this edge, but a different start root and height
|
|
61
|
-
/// The lower child end root and height are equal to the upper child start root and height. This height
|
|
62
|
-
/// is the mandatoryBisectionHeight.
|
|
63
|
-
/// The lower child may already exist, however it's not possible for the upper child to exist as that would
|
|
64
|
-
/// mean that the edge has already been bisected
|
|
65
|
-
/// @param edgeId Edge to bisect
|
|
66
|
-
/// @param bisectionHistoryRoot The new history root to be used in the lower and upper children
|
|
67
|
-
/// @param prefixProof A proof to show that the bisectionHistoryRoot commits to a prefix of the current endHistoryRoot
|
|
68
|
-
/// @return lowerChildId The id of the newly created lower child edge
|
|
69
|
-
/// @return upperChildId The id of the newly created upper child edge
|
|
70
|
-
function bisectEdge(
|
|
71
|
-
bytes32 edgeId,
|
|
72
|
-
bytes32 bisectionHistoryRoot,
|
|
73
|
-
bytes calldata prefixProof
|
|
74
|
-
) external returns (bytes32, bytes32);
|
|
75
|
-
|
|
76
|
-
/// @notice An edge can be confirmed if the total amount of time it and a single chain of its direct ancestors
|
|
77
|
-
/// has spent unrivaled is greater than the challenge period.
|
|
78
|
-
/// @dev Edges inherit time from their parents, so the sum of unrivaled timers is compared against the threshold.
|
|
79
|
-
/// Given that an edge cannot become unrivaled after becoming rivaled, once the threshold is passed
|
|
80
|
-
/// it will always remain passed. The direct ancestors of an edge are linked by parent-child links for edges
|
|
81
|
-
/// of the same level, and claimId-edgeId links for zero layer edges that claim an edge in the level below.
|
|
82
|
-
/// This method also includes the amount of time the assertion being claimed spent without a sibling
|
|
83
|
-
/// @param edgeId The id of the edge to confirm
|
|
84
|
-
function confirmEdgeByTime(
|
|
85
|
-
bytes32 edgeId,
|
|
86
|
-
AssertionStateData calldata claimStateData
|
|
87
|
-
) external;
|
|
88
|
-
|
|
89
|
-
/// @notice Update multiple edges' timer cache by their children. Equivalent to calling updateTimerCacheByChildren for each edge.
|
|
90
|
-
/// May update timer cache above maximum if the last edge's timer cache was below maximumCachedTime.
|
|
91
|
-
/// Revert when the last edge's timer cache is already equal to or above maximumCachedTime.
|
|
92
|
-
/// @param edgeIds The ids of the edges to update
|
|
93
|
-
/// @param maximumCachedTime The maximum amount of cached time allowed on the last edge (β∗)
|
|
94
|
-
function multiUpdateTimeCacheByChildren(
|
|
95
|
-
bytes32[] calldata edgeIds,
|
|
96
|
-
uint256 maximumCachedTime
|
|
97
|
-
) external;
|
|
98
|
-
|
|
99
|
-
/// @notice Update an edge's timer cache by its children.
|
|
100
|
-
/// Sets the edge's timer cache to its timeUnrivaled + (minimum timer cache of its children).
|
|
101
|
-
/// May update timer cache above maximum if the last edge's timer cache was below maximumCachedTime.
|
|
102
|
-
/// Revert when the edge's timer cache is already equal to or above maximumCachedTime.
|
|
103
|
-
/// @param edgeId The id of the edge to update
|
|
104
|
-
/// @param maximumCachedTime The maximum amount of cached time allowed on the edge (β∗)
|
|
105
|
-
function updateTimerCacheByChildren(bytes32 edgeId, uint256 maximumCachedTime) external;
|
|
106
|
-
|
|
107
|
-
/// @notice Given a one step fork edge and an edge with matching claim id,
|
|
108
|
-
/// set the one step fork edge's timer cache to its timeUnrivaled + claiming edge's timer cache.
|
|
109
|
-
/// May update timer cache above maximum if the last edge's timer cache was below maximumCachedTime.
|
|
110
|
-
/// Revert when the edge's timer cache is already equal to or above maximumCachedTime.
|
|
111
|
-
/// @param edgeId The id of the edge to update
|
|
112
|
-
/// @param claimingEdgeId The id of the edge which has a claimId equal to edgeId
|
|
113
|
-
/// @param maximumCachedTime The maximum amount of cached time allowed on the edge (β∗)
|
|
114
|
-
function updateTimerCacheByClaim(
|
|
115
|
-
bytes32 edgeId,
|
|
116
|
-
bytes32 claimingEdgeId,
|
|
117
|
-
uint256 maximumCachedTime
|
|
118
|
-
) external;
|
|
119
|
-
|
|
120
|
-
/// @notice Confirm an edge by executing a one step proof
|
|
121
|
-
/// @dev One step proofs can only be executed against edges that have length one and of type SmallStep
|
|
122
|
-
/// @param edgeId The id of the edge to confirm
|
|
123
|
-
/// @param oneStepData Input data to the one step proof
|
|
124
|
-
/// @param prevConfig Data about the config set in prev
|
|
125
|
-
/// @param beforeHistoryInclusionProof Proof that the state which is the start of the edge is committed to by the startHistoryRoot
|
|
126
|
-
/// @param afterHistoryInclusionProof Proof that the state which is the end of the edge is committed to by the endHistoryRoot
|
|
127
|
-
function confirmEdgeByOneStepProof(
|
|
128
|
-
bytes32 edgeId,
|
|
129
|
-
OneStepData calldata oneStepData,
|
|
130
|
-
ConfigData calldata prevConfig,
|
|
131
|
-
bytes32[] calldata beforeHistoryInclusionProof,
|
|
132
|
-
bytes32[] calldata afterHistoryInclusionProof
|
|
133
|
-
) external;
|
|
134
|
-
|
|
135
|
-
/// @notice When zero layer block edges are created a stake is also provided
|
|
136
|
-
/// The stake on this edge can be refunded if the edge is confirme
|
|
137
|
-
function refundStake(
|
|
138
|
-
bytes32 edgeId
|
|
139
|
-
) external;
|
|
140
|
-
|
|
141
|
-
/// @notice Zero layer edges have to be a fixed height.
|
|
142
|
-
/// This function returns the end height for a given edge type
|
|
143
|
-
function getLayerZeroEndHeight(
|
|
144
|
-
EdgeType eType
|
|
145
|
-
) external view returns (uint256);
|
|
146
|
-
|
|
147
|
-
/// @notice Calculate the unique id of an edge
|
|
148
|
-
/// @param level The level of the edge
|
|
149
|
-
/// @param originId The origin id of the edge
|
|
150
|
-
/// @param startHeight The start height of the edge
|
|
151
|
-
/// @param startHistoryRoot The start history root of the edge
|
|
152
|
-
/// @param endHeight The end height of the edge
|
|
153
|
-
/// @param endHistoryRoot The end history root of the edge
|
|
154
|
-
function calculateEdgeId(
|
|
155
|
-
uint8 level,
|
|
156
|
-
bytes32 originId,
|
|
157
|
-
uint256 startHeight,
|
|
158
|
-
bytes32 startHistoryRoot,
|
|
159
|
-
uint256 endHeight,
|
|
160
|
-
bytes32 endHistoryRoot
|
|
161
|
-
) external pure returns (bytes32);
|
|
162
|
-
|
|
163
|
-
/// @notice Calculate the mutual id of the edge
|
|
164
|
-
/// Edges that are rivals share the same mutual id
|
|
165
|
-
/// @param level The level of the edge
|
|
166
|
-
/// @param originId The origin id of the edge
|
|
167
|
-
/// @param startHeight The start height of the edge
|
|
168
|
-
/// @param startHistoryRoot The start history root of the edge
|
|
169
|
-
/// @param endHeight The end height of the edge
|
|
170
|
-
function calculateMutualId(
|
|
171
|
-
uint8 level,
|
|
172
|
-
bytes32 originId,
|
|
173
|
-
uint256 startHeight,
|
|
174
|
-
bytes32 startHistoryRoot,
|
|
175
|
-
uint256 endHeight
|
|
176
|
-
) external pure returns (bytes32);
|
|
177
|
-
|
|
178
|
-
/// @notice Has the edge already been stored in the manager
|
|
179
|
-
function edgeExists(
|
|
180
|
-
bytes32 edgeId
|
|
181
|
-
) external view returns (bool);
|
|
182
|
-
|
|
183
|
-
/// @notice Get full edge data for an edge
|
|
184
|
-
function getEdge(
|
|
185
|
-
bytes32 edgeId
|
|
186
|
-
) external view returns (ChallengeEdge memory);
|
|
187
|
-
|
|
188
|
-
/// @notice The length of the edge, from start height to end height
|
|
189
|
-
function edgeLength(
|
|
190
|
-
bytes32 edgeId
|
|
191
|
-
) external view returns (uint256);
|
|
192
|
-
|
|
193
|
-
/// @notice Does this edge currently have one or more rivals
|
|
194
|
-
/// Rival edges share the same mutual id
|
|
195
|
-
function hasRival(
|
|
196
|
-
bytes32 edgeId
|
|
197
|
-
) external view returns (bool);
|
|
198
|
-
|
|
199
|
-
/// @notice The confirmed rival of this mutual id
|
|
200
|
-
/// Returns 0 if one does not exist
|
|
201
|
-
function confirmedRival(
|
|
202
|
-
bytes32 mutualId
|
|
203
|
-
) external view returns (bytes32);
|
|
204
|
-
|
|
205
|
-
/// @notice Does the edge have at least one rival, and it has length one
|
|
206
|
-
function hasLengthOneRival(
|
|
207
|
-
bytes32 edgeId
|
|
208
|
-
) external view returns (bool);
|
|
209
|
-
|
|
210
|
-
/// @notice The amount of time this edge has spent without rivals
|
|
211
|
-
/// This value is increasing whilst an edge is unrivaled, once a rival is created
|
|
212
|
-
/// it is fixed. If an edge has rivals from the moment it is created then it will have
|
|
213
|
-
/// a zero time unrivaled
|
|
214
|
-
function timeUnrivaled(
|
|
215
|
-
bytes32 edgeId
|
|
216
|
-
) external view returns (uint256);
|
|
217
|
-
|
|
218
|
-
/// @notice Get the id of the prev assertion that this edge is originates from
|
|
219
|
-
/// @dev Uses the parent chain to traverse upwards SmallStep->BigStep->Block->Assertion
|
|
220
|
-
/// until it gets to the origin assertion
|
|
221
|
-
function getPrevAssertionHash(
|
|
222
|
-
bytes32 edgeId
|
|
223
|
-
) external view returns (bytes32);
|
|
224
|
-
|
|
225
|
-
/// @notice Fetch the raw first rival record for the given mutual id
|
|
226
|
-
/// @dev Returns 0 if there is no edge with the given mutual id
|
|
227
|
-
/// Returns a magic value if there is one edge but it is unrivaled
|
|
228
|
-
/// Returns the id of the second edge created with the mutual id, if > 1 exists
|
|
229
|
-
function firstRival(
|
|
230
|
-
bytes32 mutualId
|
|
231
|
-
) external view returns (bytes32);
|
|
232
|
-
|
|
233
|
-
/// @notice True if an account has made a layer zero edge with the given mutual id.
|
|
234
|
-
/// This is only tracked when the validator whitelist is enabled
|
|
235
|
-
function hasMadeLayerZeroRival(
|
|
236
|
-
address account,
|
|
237
|
-
bytes32 mutualId
|
|
238
|
-
) external view returns (bool);
|
|
239
|
-
}
|
|
240
|
-
|
|
241
17
|
/// @title A challenge manager that uses edge structures to decide between Assertions
|
|
242
18
|
/// @notice When two assertions are created that have the same predecessor the protocol needs to decide which of the two is correct
|
|
243
19
|
/// This challenge manager allows the staker who has created the valid assertion to enforce that it will be confirmed, and all
|