@arbitrum/nitro-contracts 1.0.2 → 1.0.3-beta.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/LICENSE +114 -0
- package/README.md +2 -2
- package/build/contracts/@openzeppelin/contracts/access/Ownable.sol/Ownable.dbg.json +4 -0
- package/build/contracts/@openzeppelin/contracts/access/Ownable.sol/Ownable.json +63 -0
- package/build/contracts/@openzeppelin/contracts/interfaces/draft-IERC1822.sol/IERC1822Proxiable.dbg.json +4 -0
- package/build/contracts/@openzeppelin/contracts/interfaces/draft-IERC1822.sol/IERC1822Proxiable.json +24 -0
- package/build/contracts/@openzeppelin/contracts/proxy/ERC1967/ERC1967Proxy.sol/ERC1967Proxy.dbg.json +4 -0
- package/build/contracts/@openzeppelin/contracts/proxy/ERC1967/ERC1967Proxy.sol/ERC1967Proxy.json +80 -0
- package/build/contracts/@openzeppelin/contracts/proxy/ERC1967/ERC1967Upgrade.sol/ERC1967Upgrade.dbg.json +4 -0
- package/build/contracts/@openzeppelin/contracts/proxy/ERC1967/ERC1967Upgrade.sol/ERC1967Upgrade.json +56 -0
- package/build/contracts/@openzeppelin/contracts/proxy/Proxy.sol/Proxy.dbg.json +4 -0
- package/build/contracts/@openzeppelin/contracts/proxy/Proxy.sol/Proxy.json +19 -0
- package/build/contracts/@openzeppelin/contracts/proxy/beacon/IBeacon.sol/IBeacon.dbg.json +4 -0
- package/build/contracts/@openzeppelin/contracts/proxy/beacon/IBeacon.sol/IBeacon.json +24 -0
- package/build/contracts/@openzeppelin/contracts/proxy/beacon/UpgradeableBeacon.sol/UpgradeableBeacon.dbg.json +4 -0
- package/build/contracts/@openzeppelin/contracts/proxy/beacon/UpgradeableBeacon.sol/UpgradeableBeacon.json +113 -0
- package/build/contracts/@openzeppelin/contracts/proxy/transparent/ProxyAdmin.sol/ProxyAdmin.dbg.json +4 -0
- package/build/contracts/@openzeppelin/contracts/proxy/transparent/ProxyAdmin.sol/ProxyAdmin.json +160 -0
- package/build/contracts/@openzeppelin/contracts/proxy/transparent/TransparentUpgradeableProxy.sol/TransparentUpgradeableProxy.dbg.json +4 -0
- package/build/contracts/@openzeppelin/contracts/proxy/transparent/TransparentUpgradeableProxy.sol/TransparentUpgradeableProxy.json +155 -0
- package/build/contracts/@openzeppelin/contracts/proxy/utils/UUPSUpgradeable.sol/UUPSUpgradeable.dbg.json +4 -0
- package/build/contracts/@openzeppelin/contracts/proxy/utils/UUPSUpgradeable.sol/UUPSUpgradeable.json +100 -0
- package/build/contracts/@openzeppelin/contracts/utils/Address.sol/Address.dbg.json +4 -0
- package/build/contracts/@openzeppelin/contracts/utils/Address.sol/Address.json +10 -0
- package/build/contracts/@openzeppelin/contracts/utils/Context.sol/Context.dbg.json +4 -0
- package/build/contracts/@openzeppelin/contracts/utils/Context.sol/Context.json +10 -0
- package/build/contracts/@openzeppelin/contracts/utils/StorageSlot.sol/StorageSlot.dbg.json +4 -0
- package/build/contracts/@openzeppelin/contracts/utils/StorageSlot.sol/StorageSlot.json +10 -0
- package/build/contracts/@openzeppelin/contracts-upgradeable/access/OwnableUpgradeable.sol/OwnableUpgradeable.dbg.json +4 -0
- package/build/contracts/@openzeppelin/contracts-upgradeable/access/OwnableUpgradeable.sol/OwnableUpgradeable.json +63 -0
- package/build/contracts/@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol/Initializable.dbg.json +4 -0
- package/build/contracts/@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol/Initializable.json +10 -0
- package/build/contracts/@openzeppelin/contracts-upgradeable/security/PausableUpgradeable.sol/PausableUpgradeable.dbg.json +4 -0
- package/build/contracts/@openzeppelin/contracts-upgradeable/security/PausableUpgradeable.sol/PausableUpgradeable.json +50 -0
- package/build/contracts/@openzeppelin/contracts-upgradeable/token/ERC20/IERC20Upgradeable.sol/IERC20Upgradeable.dbg.json +4 -0
- package/build/contracts/@openzeppelin/contracts-upgradeable/token/ERC20/IERC20Upgradeable.sol/IERC20Upgradeable.json +194 -0
- package/build/contracts/@openzeppelin/contracts-upgradeable/utils/AddressUpgradeable.sol/AddressUpgradeable.dbg.json +4 -0
- package/build/contracts/@openzeppelin/contracts-upgradeable/utils/AddressUpgradeable.sol/AddressUpgradeable.json +10 -0
- package/build/contracts/@openzeppelin/contracts-upgradeable/utils/ContextUpgradeable.sol/ContextUpgradeable.dbg.json +4 -0
- package/build/contracts/@openzeppelin/contracts-upgradeable/utils/ContextUpgradeable.sol/ContextUpgradeable.json +10 -0
- package/build/contracts/src/bridge/Bridge.sol/Bridge.dbg.json +4 -0
- package/build/contracts/src/bridge/Bridge.sol/Bridge.json +650 -0
- package/build/contracts/src/bridge/IBridge.sol/IBridge.dbg.json +4 -0
- package/build/contracts/src/bridge/IBridge.sol/IBridge.json +538 -0
- package/build/contracts/src/bridge/IDelayedMessageProvider.sol/IDelayedMessageProvider.dbg.json +4 -0
- package/build/contracts/src/bridge/IDelayedMessageProvider.sol/IDelayedMessageProvider.json +43 -0
- package/build/contracts/src/bridge/IInbox.sol/IInbox.dbg.json +4 -0
- package/build/contracts/src/bridge/IInbox.sol/IInbox.json +575 -0
- package/build/contracts/src/bridge/IOutbox.sol/IOutbox.dbg.json +4 -0
- package/build/contracts/src/bridge/IOutbox.sol/IOutbox.json +419 -0
- package/build/contracts/src/bridge/IOwnable.sol/IOwnable.dbg.json +4 -0
- package/build/contracts/src/bridge/IOwnable.sol/IOwnable.json +24 -0
- package/build/contracts/src/bridge/ISequencerInbox.sol/ISequencerInbox.dbg.json +4 -0
- package/build/contracts/src/bridge/ISequencerInbox.sol/ISequencerInbox.json +651 -0
- package/build/contracts/src/bridge/Inbox.sol/Inbox.dbg.json +4 -0
- package/build/contracts/src/bridge/Inbox.sol/Inbox.json +954 -0
- package/build/contracts/src/bridge/Messages.sol/Messages.dbg.json +4 -0
- package/build/contracts/src/bridge/Messages.sol/Messages.json +10 -0
- package/build/contracts/src/bridge/Outbox.sol/Outbox.dbg.json +4 -0
- package/build/contracts/src/bridge/Outbox.sol/Outbox.json +546 -0
- package/build/contracts/src/bridge/SequencerInbox.sol/SequencerInbox.dbg.json +4 -0
- package/build/contracts/src/bridge/SequencerInbox.sol/SequencerInbox.json +814 -0
- package/build/contracts/src/challenge/ChallengeLib.sol/ChallengeLib.dbg.json +4 -0
- package/build/contracts/src/challenge/ChallengeLib.sol/ChallengeLib.json +10 -0
- package/build/contracts/src/challenge/ChallengeManager.sol/ChallengeManager.dbg.json +4 -0
- package/build/contracts/src/challenge/ChallengeManager.sol/ChallengeManager.json +669 -0
- package/build/contracts/src/challenge/IChallengeManager.sol/IChallengeManager.dbg.json +4 -0
- package/build/contracts/src/challenge/IChallengeManager.sol/IChallengeManager.json +386 -0
- package/build/contracts/src/challenge/IChallengeResultReceiver.sol/IChallengeResultReceiver.dbg.json +4 -0
- package/build/contracts/src/challenge/IChallengeResultReceiver.sol/IChallengeResultReceiver.json +34 -0
- package/build/contracts/src/libraries/AddressAliasHelper.sol/AddressAliasHelper.dbg.json +4 -0
- package/build/contracts/src/libraries/AddressAliasHelper.sol/AddressAliasHelper.json +10 -0
- package/build/contracts/src/libraries/AdminFallbackProxy.sol/AdminFallbackProxy.dbg.json +4 -0
- package/build/contracts/src/libraries/AdminFallbackProxy.sol/AdminFallbackProxy.json +77 -0
- package/build/contracts/src/libraries/AdminFallbackProxy.sol/DoubleLogicERC1967Upgrade.dbg.json +4 -0
- package/build/contracts/src/libraries/AdminFallbackProxy.sol/DoubleLogicERC1967Upgrade.json +69 -0
- package/build/contracts/src/libraries/ArbitrumChecker.sol/ArbitrumChecker.dbg.json +4 -0
- package/build/contracts/src/libraries/ArbitrumChecker.sol/ArbitrumChecker.json +10 -0
- package/build/contracts/src/libraries/CryptographyPrimitives.sol/CryptographyPrimitives.dbg.json +4 -0
- package/build/contracts/src/libraries/CryptographyPrimitives.sol/CryptographyPrimitives.json +10 -0
- package/build/contracts/src/libraries/DelegateCallAware.sol/DelegateCallAware.dbg.json +4 -0
- package/build/contracts/src/libraries/DelegateCallAware.sol/DelegateCallAware.json +10 -0
- package/build/contracts/src/libraries/DoubleLogicUUPSUpgradeable.sol/DoubleLogicUUPSUpgradeable.dbg.json +4 -0
- package/build/contracts/src/libraries/DoubleLogicUUPSUpgradeable.sol/DoubleLogicUUPSUpgradeable.json +144 -0
- package/build/contracts/src/libraries/IGasRefunder.sol/GasRefundEnabled.dbg.json +4 -0
- package/build/contracts/src/libraries/IGasRefunder.sol/GasRefundEnabled.json +10 -0
- package/build/contracts/src/libraries/IGasRefunder.sol/IGasRefunder.dbg.json +4 -0
- package/build/contracts/src/libraries/IGasRefunder.sol/IGasRefunder.json +40 -0
- package/build/contracts/src/libraries/MerkleLib.sol/MerkleLib.dbg.json +4 -0
- package/build/contracts/src/libraries/MerkleLib.sol/MerkleLib.json +10 -0
- package/build/contracts/src/libraries/UUPSNotUpgradeable.sol/UUPSNotUpgradeable.dbg.json +4 -0
- package/build/contracts/src/libraries/UUPSNotUpgradeable.sol/UUPSNotUpgradeable.json +82 -0
- package/build/contracts/src/mocks/BridgeStub.sol/BridgeStub.dbg.json +4 -0
- package/build/contracts/src/mocks/BridgeStub.sol/BridgeStub.json +561 -0
- package/build/contracts/src/mocks/BridgeUnproxied.sol/BridgeUnproxied.dbg.json +4 -0
- package/build/contracts/src/mocks/BridgeUnproxied.sol/BridgeUnproxied.json +655 -0
- package/build/contracts/src/mocks/InboxStub.sol/InboxStub.dbg.json +4 -0
- package/build/contracts/src/mocks/InboxStub.sol/InboxStub.json +588 -0
- package/build/contracts/src/mocks/MockResultReceiver.sol/MockResultReceiver.dbg.json +4 -0
- package/build/contracts/src/mocks/MockResultReceiver.sol/MockResultReceiver.json +188 -0
- package/build/contracts/src/mocks/ProxyAdminForBinding.sol/ProxyAdminForBinding.dbg.json +4 -0
- package/build/contracts/src/mocks/ProxyAdminForBinding.sol/ProxyAdminForBinding.json +160 -0
- package/build/contracts/src/mocks/SequencerInboxStub.sol/SequencerInboxStub.dbg.json +4 -0
- package/build/contracts/src/mocks/SequencerInboxStub.sol/SequencerInboxStub.json +870 -0
- package/build/contracts/src/mocks/Simple.sol/Simple.dbg.json +4 -0
- package/build/contracts/src/mocks/Simple.sol/Simple.json +242 -0
- package/build/contracts/src/mocks/SimpleProxy.sol/SimpleProxy.dbg.json +4 -0
- package/build/contracts/src/mocks/SimpleProxy.sol/SimpleProxy.json +30 -0
- package/build/contracts/src/mocks/SingleExecutionChallenge.sol/SingleExecutionChallenge.dbg.json +4 -0
- package/build/contracts/src/mocks/SingleExecutionChallenge.sol/SingleExecutionChallenge.json +720 -0
- package/build/contracts/src/mocks/TimedOutChallengeManager.sol/TimedOutChallengeManager.dbg.json +4 -0
- package/build/contracts/src/mocks/TimedOutChallengeManager.sol/TimedOutChallengeManager.json +669 -0
- package/build/contracts/src/node-interface/NodeInterface.sol/NodeInterface.dbg.json +4 -0
- package/build/contracts/src/node-interface/NodeInterface.sol/NodeInterface.json +286 -0
- package/build/contracts/src/node-interface/NodeInterfaceDebug.sol/NodeInterfaceDebug.dbg.json +4 -0
- package/build/contracts/src/node-interface/NodeInterfaceDebug.sol/NodeInterfaceDebug.json +67 -0
- package/build/contracts/src/osp/HashProofHelper.sol/HashProofHelper.dbg.json +4 -0
- package/build/contracts/src/osp/HashProofHelper.sol/HashProofHelper.json +165 -0
- package/build/contracts/src/osp/IOneStepProofEntry.sol/IOneStepProofEntry.dbg.json +4 -0
- package/build/contracts/src/osp/IOneStepProofEntry.sol/IOneStepProofEntry.json +57 -0
- package/build/contracts/src/osp/IOneStepProofEntry.sol/OneStepProofEntryLib.dbg.json +4 -0
- package/build/contracts/src/osp/IOneStepProofEntry.sol/OneStepProofEntryLib.json +10 -0
- package/build/contracts/src/osp/IOneStepProver.sol/IOneStepProver.dbg.json +4 -0
- package/build/contracts/src/osp/IOneStepProver.sol/IOneStepProver.json +477 -0
- package/build/contracts/src/osp/OneStepProofEntry.sol/OneStepProofEntry.dbg.json +4 -0
- package/build/contracts/src/osp/OneStepProofEntry.sol/OneStepProofEntry.json +135 -0
- package/build/contracts/src/osp/OneStepProver0.sol/OneStepProver0.dbg.json +4 -0
- package/build/contracts/src/osp/OneStepProver0.sol/OneStepProver0.json +477 -0
- package/build/contracts/src/osp/OneStepProverHostIo.sol/OneStepProverHostIo.dbg.json +4 -0
- package/build/contracts/src/osp/OneStepProverHostIo.sol/OneStepProverHostIo.json +477 -0
- package/build/contracts/src/osp/OneStepProverMath.sol/OneStepProverMath.dbg.json +4 -0
- package/build/contracts/src/osp/OneStepProverMath.sol/OneStepProverMath.json +477 -0
- package/build/contracts/src/osp/OneStepProverMemory.sol/OneStepProverMemory.dbg.json +4 -0
- package/build/contracts/src/osp/OneStepProverMemory.sol/OneStepProverMemory.json +477 -0
- package/build/contracts/src/precompiles/ArbAddressTable.sol/ArbAddressTable.dbg.json +4 -0
- package/build/contracts/src/precompiles/ArbAddressTable.sol/ArbAddressTable.json +148 -0
- package/build/contracts/src/precompiles/ArbAggregator.sol/ArbAggregator.dbg.json +4 -0
- package/build/contracts/src/precompiles/ArbAggregator.sol/ArbAggregator.json +148 -0
- package/build/contracts/src/precompiles/ArbBLS.sol/ArbBLS.dbg.json +4 -0
- package/build/contracts/src/precompiles/ArbBLS.sol/ArbBLS.json +10 -0
- package/build/contracts/src/precompiles/ArbDebug.sol/ArbDebug.dbg.json +4 -0
- package/build/contracts/src/precompiles/ArbDebug.sol/ArbDebug.json +193 -0
- package/build/contracts/src/precompiles/ArbFunctionTable.sol/ArbFunctionTable.dbg.json +4 -0
- package/build/contracts/src/precompiles/ArbFunctionTable.sol/ArbFunctionTable.json +77 -0
- package/build/contracts/src/precompiles/ArbGasInfo.sol/ArbGasInfo.dbg.json +4 -0
- package/build/contracts/src/precompiles/ArbGasInfo.sol/ArbGasInfo.json +350 -0
- package/build/contracts/src/precompiles/ArbInfo.sol/ArbInfo.dbg.json +4 -0
- package/build/contracts/src/precompiles/ArbInfo.sol/ArbInfo.json +49 -0
- package/build/contracts/src/precompiles/ArbOwner.sol/ArbOwner.dbg.json +4 -0
- package/build/contracts/src/precompiles/ArbOwner.sol/ArbOwner.json +378 -0
- package/build/contracts/src/precompiles/ArbOwnerPublic.sol/ArbOwnerPublic.dbg.json +4 -0
- package/build/contracts/src/precompiles/ArbOwnerPublic.sol/ArbOwnerPublic.json +95 -0
- package/build/contracts/src/precompiles/ArbRetryableTx.sol/ArbRetryableTx.dbg.json +4 -0
- package/build/contracts/src/precompiles/ArbRetryableTx.sol/ArbRetryableTx.json +306 -0
- package/build/contracts/src/precompiles/ArbStatistics.sol/ArbStatistics.dbg.json +4 -0
- package/build/contracts/src/precompiles/ArbStatistics.sol/ArbStatistics.json +49 -0
- package/build/contracts/src/precompiles/ArbSys.sol/ArbSys.dbg.json +4 -0
- package/build/contracts/src/precompiles/ArbSys.sol/ArbSys.json +380 -0
- package/build/contracts/src/precompiles/ArbosActs.sol/ArbosActs.dbg.json +4 -0
- package/build/contracts/src/precompiles/ArbosActs.sol/ArbosActs.json +77 -0
- package/build/contracts/src/precompiles/ArbosTest.sol/ArbosTest.dbg.json +4 -0
- package/build/contracts/src/precompiles/ArbosTest.sol/ArbosTest.json +24 -0
- package/build/contracts/src/rollup/BridgeCreator.sol/BridgeCreator.dbg.json +4 -0
- package/build/contracts/src/rollup/BridgeCreator.sol/BridgeCreator.json +243 -0
- package/build/contracts/src/rollup/DeployHelper.sol/DeployHelper.dbg.json +4 -0
- package/build/contracts/src/rollup/DeployHelper.sol/DeployHelper.json +128 -0
- package/build/contracts/src/rollup/IRollupAdmin.sol/IRollupAdmin.dbg.json +4 -0
- package/build/contracts/src/rollup/IRollupAdmin.sol/IRollupAdmin.json +544 -0
- package/build/contracts/src/rollup/IRollupCore.sol/IRollupCore.dbg.json +4 -0
- package/build/contracts/src/rollup/IRollupCore.sol/IRollupCore.json +889 -0
- package/build/contracts/src/rollup/IRollupEventInbox.sol/IRollupEventInbox.dbg.json +4 -0
- package/build/contracts/src/rollup/IRollupEventInbox.sol/IRollupEventInbox.json +68 -0
- package/build/contracts/src/rollup/IRollupLogic.sol/IRollupUser.dbg.json +4 -0
- package/build/contracts/src/rollup/IRollupLogic.sol/IRollupUser.json +1428 -0
- package/build/contracts/src/rollup/IRollupLogic.sol/IRollupUserAbs.dbg.json +4 -0
- package/build/contracts/src/rollup/IRollupLogic.sol/IRollupUserAbs.json +1309 -0
- package/build/contracts/src/rollup/IRollupLogic.sol/IRollupUserERC20.dbg.json +4 -0
- package/build/contracts/src/rollup/IRollupLogic.sol/IRollupUserERC20.json +1443 -0
- package/build/contracts/src/rollup/Node.sol/NodeLib.dbg.json +4 -0
- package/build/contracts/src/rollup/Node.sol/NodeLib.json +10 -0
- package/build/contracts/src/rollup/RollupAdminLogic.sol/RollupAdminLogic.dbg.json +4 -0
- package/build/contracts/src/rollup/RollupAdminLogic.sol/RollupAdminLogic.json +1808 -0
- package/build/contracts/src/rollup/RollupCore.sol/RollupCore.dbg.json +4 -0
- package/build/contracts/src/rollup/RollupCore.sol/RollupCore.json +1051 -0
- package/build/contracts/src/rollup/RollupCreator.sol/RollupCreator.dbg.json +4 -0
- package/build/contracts/src/rollup/RollupCreator.sol/RollupCreator.json +383 -0
- package/build/contracts/src/rollup/RollupEventInbox.sol/RollupEventInbox.dbg.json +4 -0
- package/build/contracts/src/rollup/RollupEventInbox.sol/RollupEventInbox.json +110 -0
- package/build/contracts/src/rollup/RollupLib.sol/RollupLib.dbg.json +4 -0
- package/build/contracts/src/rollup/RollupLib.sol/RollupLib.json +10 -0
- package/build/contracts/src/rollup/RollupProxy.sol/RollupProxy.dbg.json +4 -0
- package/build/contracts/src/rollup/RollupProxy.sol/RollupProxy.json +226 -0
- package/build/contracts/src/rollup/RollupUserLogic.sol/AbsRollupUserLogic.dbg.json +4 -0
- package/build/contracts/src/rollup/RollupUserLogic.sol/AbsRollupUserLogic.json +1578 -0
- package/build/contracts/src/rollup/RollupUserLogic.sol/ERC20RollupUserLogic.dbg.json +4 -0
- package/build/contracts/src/rollup/RollupUserLogic.sol/ERC20RollupUserLogic.json +1712 -0
- package/build/contracts/src/rollup/RollupUserLogic.sol/RollupUserLogic.dbg.json +4 -0
- package/build/contracts/src/rollup/RollupUserLogic.sol/RollupUserLogic.json +1697 -0
- package/build/contracts/src/rollup/ValidatorUtils.sol/ValidatorUtils.dbg.json +4 -0
- package/build/contracts/src/rollup/ValidatorUtils.sol/ValidatorUtils.json +379 -0
- package/build/contracts/src/rollup/ValidatorWallet.sol/ValidatorWallet.dbg.json +4 -0
- package/build/contracts/src/rollup/ValidatorWallet.sol/ValidatorWallet.json +435 -0
- package/build/contracts/src/rollup/ValidatorWalletCreator.sol/ValidatorWalletCreator.dbg.json +4 -0
- package/build/contracts/src/rollup/ValidatorWalletCreator.sol/ValidatorWalletCreator.json +150 -0
- package/build/contracts/src/state/Deserialize.sol/Deserialize.dbg.json +4 -0
- package/build/contracts/src/state/Deserialize.sol/Deserialize.json +10 -0
- package/build/contracts/src/state/GlobalState.sol/GlobalStateLib.dbg.json +4 -0
- package/build/contracts/src/state/GlobalState.sol/GlobalStateLib.json +10 -0
- package/build/contracts/src/state/Instructions.sol/Instructions.dbg.json +4 -0
- package/build/contracts/src/state/Instructions.sol/Instructions.json +10 -0
- package/build/contracts/src/state/Machine.sol/MachineLib.dbg.json +4 -0
- package/build/contracts/src/state/Machine.sol/MachineLib.json +10 -0
- package/build/contracts/src/state/MerkleProof.sol/MerkleProofLib.dbg.json +4 -0
- package/build/contracts/src/state/MerkleProof.sol/MerkleProofLib.json +10 -0
- package/build/contracts/src/state/Module.sol/ModuleLib.dbg.json +4 -0
- package/build/contracts/src/state/Module.sol/ModuleLib.json +10 -0
- package/build/contracts/src/state/ModuleMemory.sol/ModuleMemoryLib.dbg.json +4 -0
- package/build/contracts/src/state/ModuleMemory.sol/ModuleMemoryLib.json +10 -0
- package/build/contracts/src/state/ModuleMemoryCompact.sol/ModuleMemoryCompactLib.dbg.json +4 -0
- package/build/contracts/src/state/ModuleMemoryCompact.sol/ModuleMemoryCompactLib.json +10 -0
- package/build/contracts/src/state/PcArray.sol/PcArrayLib.dbg.json +4 -0
- package/build/contracts/src/state/PcArray.sol/PcArrayLib.json +10 -0
- package/build/contracts/src/state/StackFrame.sol/StackFrameLib.dbg.json +4 -0
- package/build/contracts/src/state/StackFrame.sol/StackFrameLib.json +10 -0
- package/build/contracts/src/state/Value.sol/ValueLib.dbg.json +4 -0
- package/build/contracts/src/state/Value.sol/ValueLib.json +10 -0
- package/build/contracts/src/state/ValueArray.sol/ValueArrayLib.dbg.json +4 -0
- package/build/contracts/src/state/ValueArray.sol/ValueArrayLib.json +10 -0
- package/build/contracts/src/state/ValueStack.sol/ValueStackLib.dbg.json +4 -0
- package/build/contracts/src/state/ValueStack.sol/ValueStackLib.json +10 -0
- package/build/contracts/src/test-helpers/BridgeTester.sol/BridgeTester.dbg.json +4 -0
- package/build/contracts/src/test-helpers/BridgeTester.sol/BridgeTester.json +603 -0
- package/build/contracts/src/test-helpers/CryptographyPrimitivesTester.sol/CryptographyPrimitivesTester.dbg.json +4 -0
- package/build/contracts/src/test-helpers/CryptographyPrimitivesTester.sol/CryptographyPrimitivesTester.json +54 -0
- package/build/contracts/src/test-helpers/MessageTester.sol/MessageTester.dbg.json +4 -0
- package/build/contracts/src/test-helpers/MessageTester.sol/MessageTester.json +84 -0
- package/build/contracts/src/test-helpers/OutboxWithoutOptTester.sol/OutboxWithoutOptTester.dbg.json +4 -0
- package/build/contracts/src/test-helpers/OutboxWithoutOptTester.sol/OutboxWithoutOptTester.json +520 -0
- package/build/contracts/src/test-helpers/RollupMock.sol/RollupMock.dbg.json +4 -0
- package/build/contracts/src/test-helpers/RollupMock.sol/RollupMock.json +49 -0
- package/build/contracts/src/test-helpers/ValueArrayTester.sol/ValueArrayTester.dbg.json +4 -0
- package/build/contracts/src/test-helpers/ValueArrayTester.sol/ValueArrayTester.json +18 -0
- package/package.json +5 -3
- package/src/bridge/Bridge.sol +3 -3
- package/src/bridge/IBridge.sol +1 -1
- package/src/bridge/IDelayedMessageProvider.sol +1 -1
- package/src/bridge/IInbox.sol +1 -1
- package/src/bridge/IOutbox.sol +1 -1
- package/src/bridge/IOwnable.sol +1 -1
- package/src/bridge/ISequencerInbox.sol +22 -4
- package/src/bridge/Inbox.sol +2 -2
- package/src/bridge/Messages.sol +1 -1
- package/src/bridge/Outbox.sol +1 -1
- package/src/bridge/SequencerInbox.sol +9 -1
- package/src/challenge/ChallengeLib.sol +1 -1
- package/src/challenge/ChallengeManager.sol +1 -1
- package/src/challenge/IChallengeManager.sol +1 -1
- package/src/challenge/IChallengeResultReceiver.sol +1 -1
- package/src/libraries/AddressAliasHelper.sol +1 -1
- package/src/libraries/AdminFallbackProxy.sol +3 -3
- package/src/libraries/Constants.sol +1 -1
- package/src/libraries/CryptographyPrimitives.sol +1 -1
- package/src/libraries/DelegateCallAware.sol +1 -1
- package/src/libraries/DoubleLogicUUPSUpgradeable.sol +1 -1
- package/src/libraries/Error.sol +1 -1
- package/src/libraries/IGasRefunder.sol +2 -5
- package/src/libraries/MerkleLib.sol +1 -1
- package/src/libraries/MessageTypes.sol +1 -1
- package/src/mocks/BridgeStub.sol +2 -2
- package/src/mocks/BridgeUnproxied.sol +1 -1
- package/src/mocks/InboxStub.sol +1 -1
- package/src/mocks/MockResultReceiver.sol +1 -1
- package/src/mocks/ProxyAdminForBinding.sol +1 -1
- package/src/mocks/SequencerInboxStub.sol +1 -1
- package/src/mocks/Simple.sol +5 -1
- package/src/mocks/SimpleProxy.sol +1 -1
- package/src/mocks/SingleExecutionChallenge.sol +1 -1
- package/src/mocks/TimedOutChallengeManager.sol +1 -1
- package/src/node-interface/NodeInterface.sol +4 -2
- package/src/node-interface/NodeInterfaceDebug.sol +1 -1
- package/src/osp/HashProofHelper.sol +1 -1
- package/src/osp/IOneStepProofEntry.sol +1 -1
- package/src/osp/IOneStepProver.sol +2 -1
- package/src/osp/OneStepProofEntry.sol +1 -1
- package/src/osp/OneStepProver0.sol +1 -1
- package/src/osp/OneStepProverHostIo.sol +2 -1
- package/src/osp/OneStepProverMath.sol +1 -1
- package/src/osp/OneStepProverMemory.sol +2 -1
- package/src/precompiles/ArbAddressTable.sol +1 -1
- package/src/precompiles/ArbAggregator.sol +1 -1
- package/src/precompiles/ArbBLS.sol +1 -1
- package/src/precompiles/ArbDebug.sol +1 -1
- package/src/precompiles/ArbFunctionTable.sol +1 -1
- package/src/precompiles/ArbGasInfo.sol +1 -1
- package/src/precompiles/ArbInfo.sol +1 -1
- package/src/precompiles/ArbOwner.sol +4 -1
- package/src/precompiles/ArbOwnerPublic.sol +1 -1
- package/src/precompiles/ArbRetryableTx.sol +1 -1
- package/src/precompiles/ArbStatistics.sol +1 -1
- package/src/precompiles/ArbSys.sol +1 -1
- package/src/precompiles/ArbosTest.sol +1 -1
- package/src/rollup/BridgeCreator.sol +1 -1
- package/src/rollup/Config.sol +43 -0
- package/src/rollup/IRollupAdmin.sol +138 -0
- package/src/rollup/IRollupCore.sol +16 -3
- package/src/rollup/IRollupEventInbox.sol +2 -2
- package/src/rollup/IRollupLogic.sol +4 -132
- package/src/rollup/Node.sol +15 -1
- package/src/rollup/RollupAdminLogic.sol +7 -9
- package/src/rollup/RollupCore.sol +46 -3
- package/src/rollup/RollupCreator.sol +33 -45
- package/src/rollup/RollupEventInbox.sol +8 -3
- package/src/rollup/RollupLib.sol +2 -40
- package/src/rollup/RollupProxy.sol +26 -11
- package/src/rollup/RollupUserLogic.sol +6 -4
- package/src/rollup/ValidatorUtils.sol +2 -1
- package/src/rollup/ValidatorWallet.sol +1 -1
- package/src/rollup/ValidatorWalletCreator.sol +1 -1
- package/src/state/Deserialize.sol +2 -2
- package/src/state/GlobalState.sol +1 -1
- package/src/state/Instructions.sol +1 -1
- package/src/state/Machine.sol +1 -1
- package/src/state/MerkleProof.sol +1 -1
- package/src/state/Module.sol +3 -3
- package/src/state/ModuleMemory.sol +3 -8
- package/src/state/ModuleMemoryCompact.sol +17 -0
- package/src/state/PcArray.sol +1 -1
- package/src/state/StackFrame.sol +1 -1
- package/src/state/Value.sol +1 -1
- package/src/state/ValueArray.sol +1 -1
- package/src/state/ValueStack.sol +1 -1
- package/src/test-helpers/BridgeTester.sol +1 -1
- package/src/test-helpers/CryptographyPrimitivesTester.sol +1 -1
- package/src/test-helpers/InterfaceCompatibilityTester.sol +1 -1
- package/src/test-helpers/MessageTester.sol +1 -1
- package/src/test-helpers/OutboxWithoutOptTester.sol +1 -1
- package/src/test-helpers/RollupMock.sol +1 -1
- package/src/test-helpers/ValueArrayTester.sol +1 -1
@@ -1,5 +1,5 @@
|
|
1
1
|
// Copyright 2021-2022, Offchain Labs, Inc.
|
2
|
-
// For license information, see https://github.com/nitro/blob/
|
2
|
+
// For license information, see https://github.com/OffchainLabs/nitro-contracts/blob/main/LICENSE
|
3
3
|
// SPDX-License-Identifier: BUSL-1.1
|
4
4
|
|
5
5
|
pragma solidity >=0.4.21 <0.9.0;
|
@@ -1,5 +1,5 @@
|
|
1
1
|
// Copyright 2021-2022, Offchain Labs, Inc.
|
2
|
-
// For license information, see https://github.com/nitro/blob/
|
2
|
+
// For license information, see https://github.com/OffchainLabs/nitro-contracts/blob/main/LICENSE
|
3
3
|
// SPDX-License-Identifier: BUSL-1.1
|
4
4
|
|
5
5
|
pragma solidity >=0.4.21 <0.9.0;
|
@@ -1,5 +1,5 @@
|
|
1
1
|
// Copyright 2021-2022, Offchain Labs, Inc.
|
2
|
-
// For license information, see https://github.com/nitro/blob/
|
2
|
+
// For license information, see https://github.com/OffchainLabs/nitro-contracts/blob/main/LICENSE
|
3
3
|
// SPDX-License-Identifier: BUSL-1.1
|
4
4
|
|
5
5
|
pragma solidity >=0.4.21 <0.9.0;
|
@@ -1,5 +1,5 @@
|
|
1
1
|
// Copyright 2021-2022, Offchain Labs, Inc.
|
2
|
-
// For license information, see https://github.com/nitro/blob/
|
2
|
+
// For license information, see https://github.com/OffchainLabs/nitro-contracts/blob/main/LICENSE
|
3
3
|
// SPDX-License-Identifier: BUSL-1.1
|
4
4
|
|
5
5
|
pragma solidity >=0.4.21 <0.9.0;
|
@@ -1,5 +1,5 @@
|
|
1
1
|
// Copyright 2021-2022, Offchain Labs, Inc.
|
2
|
-
// For license information, see https://github.com/nitro/blob/
|
2
|
+
// For license information, see https://github.com/OffchainLabs/nitro-contracts/blob/main/LICENSE
|
3
3
|
// SPDX-License-Identifier: BUSL-1.1
|
4
4
|
|
5
5
|
pragma solidity >=0.4.21 <0.9.0;
|
@@ -1,5 +1,5 @@
|
|
1
1
|
// Copyright 2021-2022, Offchain Labs, Inc.
|
2
|
-
// For license information, see https://github.com/nitro/blob/
|
2
|
+
// For license information, see https://github.com/OffchainLabs/nitro-contracts/blob/main/LICENSE
|
3
3
|
// SPDX-License-Identifier: BUSL-1.1
|
4
4
|
|
5
5
|
pragma solidity ^0.8.0;
|
@@ -0,0 +1,43 @@
|
|
1
|
+
// Copyright 2021-2022, Offchain Labs, Inc.
|
2
|
+
// For license information, see https://github.com/OffchainLabs/nitro-contracts/blob/main/LICENSE
|
3
|
+
// SPDX-License-Identifier: BUSL-1.1
|
4
|
+
|
5
|
+
pragma solidity ^0.8.0;
|
6
|
+
|
7
|
+
import "../state/GlobalState.sol";
|
8
|
+
import "../state/Machine.sol";
|
9
|
+
import "../bridge/ISequencerInbox.sol";
|
10
|
+
import "../bridge/IBridge.sol";
|
11
|
+
import "../bridge/IOutbox.sol";
|
12
|
+
import "../bridge/IInbox.sol";
|
13
|
+
import "./IRollupEventInbox.sol";
|
14
|
+
import "./IRollupLogic.sol";
|
15
|
+
import "../challenge/IChallengeManager.sol";
|
16
|
+
|
17
|
+
struct Config {
|
18
|
+
uint64 confirmPeriodBlocks;
|
19
|
+
uint64 extraChallengeTimeBlocks;
|
20
|
+
address stakeToken;
|
21
|
+
uint256 baseStake;
|
22
|
+
bytes32 wasmModuleRoot;
|
23
|
+
address owner;
|
24
|
+
address loserStakeEscrow;
|
25
|
+
uint256 chainId;
|
26
|
+
string chainConfig;
|
27
|
+
uint64 genesisBlockNum;
|
28
|
+
ISequencerInbox.MaxTimeVariation sequencerInboxMaxTimeVariation;
|
29
|
+
}
|
30
|
+
|
31
|
+
struct ContractDependencies {
|
32
|
+
IBridge bridge;
|
33
|
+
ISequencerInbox sequencerInbox;
|
34
|
+
IInbox inbox;
|
35
|
+
IOutbox outbox;
|
36
|
+
IRollupEventInbox rollupEventInbox;
|
37
|
+
IChallengeManager challengeManager;
|
38
|
+
address rollupAdminLogic;
|
39
|
+
IRollupUser rollupUserLogic;
|
40
|
+
// misc contracts that are useful when interacting with the rollup
|
41
|
+
address validatorUtils;
|
42
|
+
address validatorWalletCreator;
|
43
|
+
}
|
@@ -0,0 +1,138 @@
|
|
1
|
+
// Copyright 2021-2022, Offchain Labs, Inc.
|
2
|
+
// For license information, see https://github.com/OffchainLabs/nitro-contracts/blob/main/LICENSE
|
3
|
+
// SPDX-License-Identifier: BUSL-1.1
|
4
|
+
|
5
|
+
pragma solidity ^0.8.0;
|
6
|
+
|
7
|
+
import "./IRollupCore.sol";
|
8
|
+
import "../bridge/ISequencerInbox.sol";
|
9
|
+
import "../bridge/IOutbox.sol";
|
10
|
+
import "../bridge/IOwnable.sol";
|
11
|
+
import "./Config.sol";
|
12
|
+
|
13
|
+
interface IRollupAdmin {
|
14
|
+
event OwnerFunctionCalled(uint256 indexed id);
|
15
|
+
|
16
|
+
function initialize(Config calldata config, ContractDependencies calldata connectedContracts)
|
17
|
+
external;
|
18
|
+
|
19
|
+
/**
|
20
|
+
* @notice Add a contract authorized to put messages into this rollup's inbox
|
21
|
+
* @param _outbox Outbox contract to add
|
22
|
+
*/
|
23
|
+
function setOutbox(IOutbox _outbox) external;
|
24
|
+
|
25
|
+
/**
|
26
|
+
* @notice Disable an old outbox from interacting with the bridge
|
27
|
+
* @param _outbox Outbox contract to remove
|
28
|
+
*/
|
29
|
+
function removeOldOutbox(address _outbox) external;
|
30
|
+
|
31
|
+
/**
|
32
|
+
* @notice Enable or disable an inbox contract
|
33
|
+
* @param _inbox Inbox contract to add or remove
|
34
|
+
* @param _enabled New status of inbox
|
35
|
+
*/
|
36
|
+
function setDelayedInbox(address _inbox, bool _enabled) external;
|
37
|
+
|
38
|
+
/**
|
39
|
+
* @notice Pause interaction with the rollup contract
|
40
|
+
*/
|
41
|
+
function pause() external;
|
42
|
+
|
43
|
+
/**
|
44
|
+
* @notice Resume interaction with the rollup contract
|
45
|
+
*/
|
46
|
+
function resume() external;
|
47
|
+
|
48
|
+
/**
|
49
|
+
* @notice Set the addresses of the validator whitelist
|
50
|
+
* @dev It is expected that both arrays are same length, and validator at
|
51
|
+
* position i corresponds to the value at position i
|
52
|
+
* @param _validator addresses to set in the whitelist
|
53
|
+
* @param _val value to set in the whitelist for corresponding address
|
54
|
+
*/
|
55
|
+
function setValidator(address[] memory _validator, bool[] memory _val) external;
|
56
|
+
|
57
|
+
/**
|
58
|
+
* @notice Set a new owner address for the rollup proxy
|
59
|
+
* @param newOwner address of new rollup owner
|
60
|
+
*/
|
61
|
+
function setOwner(address newOwner) external;
|
62
|
+
|
63
|
+
/**
|
64
|
+
* @notice Set minimum assertion period for the rollup
|
65
|
+
* @param newPeriod new minimum period for assertions
|
66
|
+
*/
|
67
|
+
function setMinimumAssertionPeriod(uint256 newPeriod) external;
|
68
|
+
|
69
|
+
/**
|
70
|
+
* @notice Set number of blocks until a node is considered confirmed
|
71
|
+
* @param newConfirmPeriod new number of blocks until a node is confirmed
|
72
|
+
*/
|
73
|
+
function setConfirmPeriodBlocks(uint64 newConfirmPeriod) external;
|
74
|
+
|
75
|
+
/**
|
76
|
+
* @notice Set number of extra blocks after a challenge
|
77
|
+
* @param newExtraTimeBlocks new number of blocks
|
78
|
+
*/
|
79
|
+
function setExtraChallengeTimeBlocks(uint64 newExtraTimeBlocks) external;
|
80
|
+
|
81
|
+
/**
|
82
|
+
* @notice Set base stake required for an assertion
|
83
|
+
* @param newBaseStake maximum avmgas to be used per block
|
84
|
+
*/
|
85
|
+
function setBaseStake(uint256 newBaseStake) external;
|
86
|
+
|
87
|
+
/**
|
88
|
+
* @notice Set the token used for stake, where address(0) == eth
|
89
|
+
* @dev Before changing the base stake token, you might need to change the
|
90
|
+
* implementation of the Rollup User logic!
|
91
|
+
* @param newStakeToken address of token used for staking
|
92
|
+
*/
|
93
|
+
function setStakeToken(address newStakeToken) external;
|
94
|
+
|
95
|
+
/**
|
96
|
+
* @notice Upgrades the implementation of a beacon controlled by the rollup
|
97
|
+
* @param beacon address of beacon to be upgraded
|
98
|
+
* @param newImplementation new address of implementation
|
99
|
+
*/
|
100
|
+
function upgradeBeacon(address beacon, address newImplementation) external;
|
101
|
+
|
102
|
+
function forceResolveChallenge(address[] memory stackerA, address[] memory stackerB) external;
|
103
|
+
|
104
|
+
function forceRefundStaker(address[] memory stacker) external;
|
105
|
+
|
106
|
+
function forceCreateNode(
|
107
|
+
uint64 prevNode,
|
108
|
+
uint256 prevNodeInboxMaxCount,
|
109
|
+
Assertion memory assertion,
|
110
|
+
bytes32 expectedNodeHash
|
111
|
+
) external;
|
112
|
+
|
113
|
+
function forceConfirmNode(
|
114
|
+
uint64 nodeNum,
|
115
|
+
bytes32 blockHash,
|
116
|
+
bytes32 sendRoot
|
117
|
+
) external;
|
118
|
+
|
119
|
+
function setLoserStakeEscrow(address newLoserStakerEscrow) external;
|
120
|
+
|
121
|
+
/**
|
122
|
+
* @notice Set the proving WASM module root
|
123
|
+
* @param newWasmModuleRoot new module root
|
124
|
+
*/
|
125
|
+
function setWasmModuleRoot(bytes32 newWasmModuleRoot) external;
|
126
|
+
|
127
|
+
/**
|
128
|
+
* @notice set a new sequencer inbox contract
|
129
|
+
* @param _sequencerInbox new address of sequencer inbox
|
130
|
+
*/
|
131
|
+
function setSequencerInbox(address _sequencerInbox) external;
|
132
|
+
|
133
|
+
/**
|
134
|
+
* @notice set the validatorWhitelistDisabled flag
|
135
|
+
* @param _validatorWhitelistDisabled new value of validatorWhitelistDisabled, i.e. true = disabled
|
136
|
+
*/
|
137
|
+
function setValidatorWhitelistDisabled(bool _validatorWhitelistDisabled) external;
|
138
|
+
}
|
@@ -1,11 +1,15 @@
|
|
1
1
|
// Copyright 2021-2022, Offchain Labs, Inc.
|
2
|
-
// For license information, see https://github.com/nitro/blob/
|
2
|
+
// For license information, see https://github.com/OffchainLabs/nitro-contracts/blob/main/LICENSE
|
3
3
|
// SPDX-License-Identifier: BUSL-1.1
|
4
4
|
|
5
5
|
pragma solidity ^0.8.0;
|
6
6
|
|
7
7
|
import "./Node.sol";
|
8
|
-
import "
|
8
|
+
import "../bridge/IBridge.sol";
|
9
|
+
import "../bridge/IOutbox.sol";
|
10
|
+
import "../bridge/IInbox.sol";
|
11
|
+
import "./IRollupEventInbox.sol";
|
12
|
+
import "../challenge/IChallengeManager.sol";
|
9
13
|
|
10
14
|
interface IRollupCore {
|
11
15
|
struct Staker {
|
@@ -24,7 +28,7 @@ interface IRollupCore {
|
|
24
28
|
bytes32 indexed parentNodeHash,
|
25
29
|
bytes32 indexed nodeHash,
|
26
30
|
bytes32 executionHash,
|
27
|
-
|
31
|
+
Assertion assertion,
|
28
32
|
bytes32 afterInboxBatchAcc,
|
29
33
|
bytes32 wasmModuleRoot,
|
30
34
|
uint256 inboxMaxCount
|
@@ -84,6 +88,15 @@ interface IRollupCore {
|
|
84
88
|
*/
|
85
89
|
function getNode(uint64 nodeNum) external view returns (Node memory);
|
86
90
|
|
91
|
+
/**
|
92
|
+
* @notice Returns the block in which the given node was created for looking up its creation event.
|
93
|
+
* Unlike the Node's createdAtBlock field, this will be the ArbSys blockNumber if the host chain is an Arbitrum chain.
|
94
|
+
* That means that the block number returned for this is usable for event queries.
|
95
|
+
* This function will revert if the given node number does not exist.
|
96
|
+
* @dev This function is meant for internal use only and has no stability guarantees.
|
97
|
+
*/
|
98
|
+
function getNodeCreationBlockForLogLookup(uint64 nodeNum) external view returns (uint256);
|
99
|
+
|
87
100
|
/**
|
88
101
|
* @notice Check if the specified node has been staked on by the provided staker.
|
89
102
|
* Only accurate at the latest confirmed node and afterwards.
|
@@ -1,5 +1,5 @@
|
|
1
1
|
// Copyright 2021-2022, Offchain Labs, Inc.
|
2
|
-
// For license information, see https://github.com/nitro/blob/
|
2
|
+
// For license information, see https://github.com/OffchainLabs/nitro-contracts/blob/main/LICENSE
|
3
3
|
// SPDX-License-Identifier: BUSL-1.1
|
4
4
|
|
5
5
|
pragma solidity ^0.8.0;
|
@@ -13,5 +13,5 @@ interface IRollupEventInbox {
|
|
13
13
|
|
14
14
|
function rollup() external view returns (address);
|
15
15
|
|
16
|
-
function rollupInitialized(uint256 chainId) external;
|
16
|
+
function rollupInitialized(uint256 chainId, string calldata chainConfig) external;
|
17
17
|
}
|
@@ -1,10 +1,9 @@
|
|
1
1
|
// Copyright 2021-2022, Offchain Labs, Inc.
|
2
|
-
// For license information, see https://github.com/nitro/blob/
|
2
|
+
// For license information, see https://github.com/OffchainLabs/nitro-contracts/blob/main/LICENSE
|
3
3
|
// SPDX-License-Identifier: BUSL-1.1
|
4
4
|
|
5
5
|
pragma solidity ^0.8.0;
|
6
6
|
|
7
|
-
import "./RollupLib.sol";
|
8
7
|
import "./IRollupCore.sol";
|
9
8
|
import "../bridge/ISequencerInbox.sol";
|
10
9
|
import "../bridge/IOutbox.sol";
|
@@ -28,7 +27,7 @@ interface IRollupUserAbs is IRollupCore, IOwnable {
|
|
28
27
|
function stakeOnExistingNode(uint64 nodeNum, bytes32 nodeHash) external;
|
29
28
|
|
30
29
|
function stakeOnNewNode(
|
31
|
-
|
30
|
+
Assertion memory assertion,
|
32
31
|
bytes32 expectedNodeHash,
|
33
32
|
uint256 prevNodeInboxMaxCount
|
34
33
|
) external;
|
@@ -75,7 +74,7 @@ interface IRollupUser is IRollupUserAbs {
|
|
75
74
|
function newStakeOnExistingNode(uint64 nodeNum, bytes32 nodeHash) external payable;
|
76
75
|
|
77
76
|
function newStakeOnNewNode(
|
78
|
-
|
77
|
+
Assertion calldata assertion,
|
79
78
|
bytes32 expectedNodeHash,
|
80
79
|
uint256 prevNodeInboxMaxCount
|
81
80
|
) external payable;
|
@@ -92,137 +91,10 @@ interface IRollupUserERC20 is IRollupUserAbs {
|
|
92
91
|
|
93
92
|
function newStakeOnNewNode(
|
94
93
|
uint256 tokenAmount,
|
95
|
-
|
94
|
+
Assertion calldata assertion,
|
96
95
|
bytes32 expectedNodeHash,
|
97
96
|
uint256 prevNodeInboxMaxCount
|
98
97
|
) external;
|
99
98
|
|
100
99
|
function addToDeposit(address stakerAddress, uint256 tokenAmount) external;
|
101
100
|
}
|
102
|
-
|
103
|
-
interface IRollupAdmin {
|
104
|
-
event OwnerFunctionCalled(uint256 indexed id);
|
105
|
-
|
106
|
-
function initialize(Config calldata config, ContractDependencies calldata connectedContracts)
|
107
|
-
external;
|
108
|
-
|
109
|
-
/**
|
110
|
-
* @notice Add a contract authorized to put messages into this rollup's inbox
|
111
|
-
* @param _outbox Outbox contract to add
|
112
|
-
*/
|
113
|
-
function setOutbox(IOutbox _outbox) external;
|
114
|
-
|
115
|
-
/**
|
116
|
-
* @notice Disable an old outbox from interacting with the bridge
|
117
|
-
* @param _outbox Outbox contract to remove
|
118
|
-
*/
|
119
|
-
function removeOldOutbox(address _outbox) external;
|
120
|
-
|
121
|
-
/**
|
122
|
-
* @notice Enable or disable an inbox contract
|
123
|
-
* @param _inbox Inbox contract to add or remove
|
124
|
-
* @param _enabled New status of inbox
|
125
|
-
*/
|
126
|
-
function setDelayedInbox(address _inbox, bool _enabled) external;
|
127
|
-
|
128
|
-
/**
|
129
|
-
* @notice Pause interaction with the rollup contract
|
130
|
-
*/
|
131
|
-
function pause() external;
|
132
|
-
|
133
|
-
/**
|
134
|
-
* @notice Resume interaction with the rollup contract
|
135
|
-
*/
|
136
|
-
function resume() external;
|
137
|
-
|
138
|
-
/**
|
139
|
-
* @notice Set the addresses of the validator whitelist
|
140
|
-
* @dev It is expected that both arrays are same length, and validator at
|
141
|
-
* position i corresponds to the value at position i
|
142
|
-
* @param _validator addresses to set in the whitelist
|
143
|
-
* @param _val value to set in the whitelist for corresponding address
|
144
|
-
*/
|
145
|
-
function setValidator(address[] memory _validator, bool[] memory _val) external;
|
146
|
-
|
147
|
-
/**
|
148
|
-
* @notice Set a new owner address for the rollup proxy
|
149
|
-
* @param newOwner address of new rollup owner
|
150
|
-
*/
|
151
|
-
function setOwner(address newOwner) external;
|
152
|
-
|
153
|
-
/**
|
154
|
-
* @notice Set minimum assertion period for the rollup
|
155
|
-
* @param newPeriod new minimum period for assertions
|
156
|
-
*/
|
157
|
-
function setMinimumAssertionPeriod(uint256 newPeriod) external;
|
158
|
-
|
159
|
-
/**
|
160
|
-
* @notice Set number of blocks until a node is considered confirmed
|
161
|
-
* @param newConfirmPeriod new number of blocks until a node is confirmed
|
162
|
-
*/
|
163
|
-
function setConfirmPeriodBlocks(uint64 newConfirmPeriod) external;
|
164
|
-
|
165
|
-
/**
|
166
|
-
* @notice Set number of extra blocks after a challenge
|
167
|
-
* @param newExtraTimeBlocks new number of blocks
|
168
|
-
*/
|
169
|
-
function setExtraChallengeTimeBlocks(uint64 newExtraTimeBlocks) external;
|
170
|
-
|
171
|
-
/**
|
172
|
-
* @notice Set base stake required for an assertion
|
173
|
-
* @param newBaseStake maximum avmgas to be used per block
|
174
|
-
*/
|
175
|
-
function setBaseStake(uint256 newBaseStake) external;
|
176
|
-
|
177
|
-
/**
|
178
|
-
* @notice Set the token used for stake, where address(0) == eth
|
179
|
-
* @dev Before changing the base stake token, you might need to change the
|
180
|
-
* implementation of the Rollup User logic!
|
181
|
-
* @param newStakeToken address of token used for staking
|
182
|
-
*/
|
183
|
-
function setStakeToken(address newStakeToken) external;
|
184
|
-
|
185
|
-
/**
|
186
|
-
* @notice Upgrades the implementation of a beacon controlled by the rollup
|
187
|
-
* @param beacon address of beacon to be upgraded
|
188
|
-
* @param newImplementation new address of implementation
|
189
|
-
*/
|
190
|
-
function upgradeBeacon(address beacon, address newImplementation) external;
|
191
|
-
|
192
|
-
function forceResolveChallenge(address[] memory stackerA, address[] memory stackerB) external;
|
193
|
-
|
194
|
-
function forceRefundStaker(address[] memory stacker) external;
|
195
|
-
|
196
|
-
function forceCreateNode(
|
197
|
-
uint64 prevNode,
|
198
|
-
uint256 prevNodeInboxMaxCount,
|
199
|
-
RollupLib.Assertion memory assertion,
|
200
|
-
bytes32 expectedNodeHash
|
201
|
-
) external;
|
202
|
-
|
203
|
-
function forceConfirmNode(
|
204
|
-
uint64 nodeNum,
|
205
|
-
bytes32 blockHash,
|
206
|
-
bytes32 sendRoot
|
207
|
-
) external;
|
208
|
-
|
209
|
-
function setLoserStakeEscrow(address newLoserStakerEscrow) external;
|
210
|
-
|
211
|
-
/**
|
212
|
-
* @notice Set the proving WASM module root
|
213
|
-
* @param newWasmModuleRoot new module root
|
214
|
-
*/
|
215
|
-
function setWasmModuleRoot(bytes32 newWasmModuleRoot) external;
|
216
|
-
|
217
|
-
/**
|
218
|
-
* @notice set a new sequencer inbox contract
|
219
|
-
* @param _sequencerInbox new address of sequencer inbox
|
220
|
-
*/
|
221
|
-
function setSequencerInbox(address _sequencerInbox) external;
|
222
|
-
|
223
|
-
/**
|
224
|
-
* @notice set the validatorWhitelistDisabled flag
|
225
|
-
* @param _validatorWhitelistDisabled new value of validatorWhitelistDisabled, i.e. true = disabled
|
226
|
-
*/
|
227
|
-
function setValidatorWhitelistDisabled(bool _validatorWhitelistDisabled) external;
|
228
|
-
}
|
package/src/rollup/Node.sol
CHANGED
@@ -1,9 +1,23 @@
|
|
1
1
|
// Copyright 2021-2022, Offchain Labs, Inc.
|
2
|
-
// For license information, see https://github.com/nitro/blob/
|
2
|
+
// For license information, see https://github.com/OffchainLabs/nitro-contracts/blob/main/LICENSE
|
3
3
|
// SPDX-License-Identifier: BUSL-1.1
|
4
4
|
|
5
5
|
pragma solidity ^0.8.0;
|
6
6
|
|
7
|
+
import "../state/GlobalState.sol";
|
8
|
+
import "../state/Machine.sol";
|
9
|
+
|
10
|
+
struct ExecutionState {
|
11
|
+
GlobalState globalState;
|
12
|
+
MachineStatus machineStatus;
|
13
|
+
}
|
14
|
+
|
15
|
+
struct Assertion {
|
16
|
+
ExecutionState beforeState;
|
17
|
+
ExecutionState afterState;
|
18
|
+
uint64 numBlocks;
|
19
|
+
}
|
20
|
+
|
7
21
|
struct Node {
|
8
22
|
// Hash of the state of the chain as of this node
|
9
23
|
bytes32 stateHash;
|
@@ -1,10 +1,11 @@
|
|
1
1
|
// Copyright 2021-2022, Offchain Labs, Inc.
|
2
|
-
// For license information, see https://github.com/nitro/blob/
|
2
|
+
// For license information, see https://github.com/OffchainLabs/nitro-contracts/blob/main/LICENSE
|
3
3
|
// SPDX-License-Identifier: BUSL-1.1
|
4
4
|
|
5
5
|
pragma solidity ^0.8.0;
|
6
6
|
|
7
|
-
import
|
7
|
+
import "./IRollupAdmin.sol";
|
8
|
+
import "./IRollupLogic.sol";
|
8
9
|
import "./RollupCore.sol";
|
9
10
|
import "../bridge/IOutbox.sol";
|
10
11
|
import "../bridge/ISequencerInbox.sol";
|
@@ -36,7 +37,7 @@ contract RollupAdminLogic is RollupCore, IRollupAdmin, DoubleLogicUUPSUpgradeabl
|
|
36
37
|
true
|
37
38
|
);
|
38
39
|
|
39
|
-
connectedContracts.rollupEventInbox.rollupInitialized(config.chainId);
|
40
|
+
connectedContracts.rollupEventInbox.rollupInitialized(config.chainId, config.chainConfig);
|
40
41
|
connectedContracts.sequencerInbox.addSequencerL2Batch(
|
41
42
|
0,
|
42
43
|
"",
|
@@ -76,7 +77,7 @@ contract RollupAdminLogic is RollupCore, IRollupAdmin, DoubleLogicUUPSUpgradeabl
|
|
76
77
|
function createInitialNode() private view returns (Node memory) {
|
77
78
|
GlobalState memory emptyGlobalState;
|
78
79
|
bytes32 state = RollupLib.stateHashMem(
|
79
|
-
|
80
|
+
ExecutionState(emptyGlobalState, MachineStatus.FINISHED),
|
80
81
|
1 // inboxMaxCount - force the first assertion to read a message
|
81
82
|
);
|
82
83
|
return
|
@@ -285,7 +286,7 @@ contract RollupAdminLogic is RollupCore, IRollupAdmin, DoubleLogicUUPSUpgradeabl
|
|
285
286
|
function forceCreateNode(
|
286
287
|
uint64 prevNode,
|
287
288
|
uint256 prevNodeInboxMaxCount,
|
288
|
-
|
289
|
+
Assertion calldata assertion,
|
289
290
|
bytes32 expectedNodeHash
|
290
291
|
) external override whenPaused {
|
291
292
|
require(prevNode == latestConfirmed(), "ONLY_LATEST_CONFIRMED");
|
@@ -340,10 +341,7 @@ contract RollupAdminLogic is RollupCore, IRollupAdmin, DoubleLogicUUPSUpgradeabl
|
|
340
341
|
emit OwnerFunctionCalled(28);
|
341
342
|
}
|
342
343
|
|
343
|
-
function createNitroMigrationGenesis(
|
344
|
-
external
|
345
|
-
whenPaused
|
346
|
-
{
|
344
|
+
function createNitroMigrationGenesis(Assertion calldata assertion) external whenPaused {
|
347
345
|
bytes32 expectedSendRoot = bytes32(0);
|
348
346
|
uint64 expectedInboxCount = 1;
|
349
347
|
|
@@ -1,5 +1,5 @@
|
|
1
1
|
// Copyright 2021-2022, Offchain Labs, Inc.
|
2
|
-
// For license information, see https://github.com/nitro/blob/
|
2
|
+
// For license information, see https://github.com/OffchainLabs/nitro-contracts/blob/main/LICENSE
|
3
3
|
// SPDX-License-Identifier: BUSL-1.1
|
4
4
|
|
5
5
|
pragma solidity ^0.8.0;
|
@@ -7,7 +7,6 @@ pragma solidity ^0.8.0;
|
|
7
7
|
import "@openzeppelin/contracts-upgradeable/security/PausableUpgradeable.sol";
|
8
8
|
|
9
9
|
import "./Node.sol";
|
10
|
-
import "./IRollupCore.sol";
|
11
10
|
import "./RollupLib.sol";
|
12
11
|
import "./IRollupEventInbox.sol";
|
13
12
|
import "./IRollupCore.sol";
|
@@ -18,6 +17,8 @@ import "../bridge/ISequencerInbox.sol";
|
|
18
17
|
import "../bridge/IBridge.sol";
|
19
18
|
import "../bridge/IOutbox.sol";
|
20
19
|
|
20
|
+
import "../precompiles/ArbSys.sol";
|
21
|
+
|
21
22
|
import {NO_CHAL_INDEX} from "../libraries/Constants.sol";
|
22
23
|
|
23
24
|
abstract contract RollupCore is IRollupCore, PausableUpgradeable {
|
@@ -76,6 +77,18 @@ abstract contract RollupCore is IRollupCore, PausableUpgradeable {
|
|
76
77
|
|
77
78
|
bool public validatorWhitelistDisabled;
|
78
79
|
|
80
|
+
// If the chain this RollupCore is deployed on is an Arbitrum chain.
|
81
|
+
bool internal immutable _hostChainIsArbitrum;
|
82
|
+
// If the chain RollupCore is deployed on, this will contain the ArbSys.blockNumber() at each node's creation.
|
83
|
+
mapping(uint64 => uint256) internal _nodeCreatedAtArbSysBlock;
|
84
|
+
|
85
|
+
constructor() {
|
86
|
+
(bool ok, bytes memory data) = address(100).staticcall(
|
87
|
+
abi.encodeWithSelector(ArbSys.arbOSVersion.selector)
|
88
|
+
);
|
89
|
+
_hostChainIsArbitrum = ok && data.length == 32;
|
90
|
+
}
|
91
|
+
|
79
92
|
/**
|
80
93
|
* @notice Get a storage reference to the Node for the given node index
|
81
94
|
* @param nodeNum Index of the node
|
@@ -92,6 +105,30 @@ abstract contract RollupCore is IRollupCore, PausableUpgradeable {
|
|
92
105
|
return getNodeStorage(nodeNum);
|
93
106
|
}
|
94
107
|
|
108
|
+
/**
|
109
|
+
* @notice Returns the block in which the given node was created for looking up its creation event.
|
110
|
+
* Unlike the Node's createdAtBlock field, this will be the ArbSys blockNumber if the host chain is an Arbitrum chain.
|
111
|
+
* That means that the block number returned for this is usable for event queries.
|
112
|
+
* This function will revert if the given node number does not exist.
|
113
|
+
* @dev This function is meant for internal use only and has no stability guarantees.
|
114
|
+
*/
|
115
|
+
function getNodeCreationBlockForLogLookup(uint64 nodeNum)
|
116
|
+
external
|
117
|
+
view
|
118
|
+
override
|
119
|
+
returns (uint256)
|
120
|
+
{
|
121
|
+
if (_hostChainIsArbitrum) {
|
122
|
+
uint256 blockNum = _nodeCreatedAtArbSysBlock[nodeNum];
|
123
|
+
require(blockNum > 0, "NO_NODE");
|
124
|
+
return blockNum;
|
125
|
+
} else {
|
126
|
+
Node storage node = getNodeStorage(nodeNum);
|
127
|
+
require(node.deadlineBlock != 0, "NO_NODE");
|
128
|
+
return node.createdAtBlock;
|
129
|
+
}
|
130
|
+
}
|
131
|
+
|
95
132
|
/**
|
96
133
|
* @notice Check if the specified node has been staked on by the provided staker.
|
97
134
|
* Only accurate at the latest confirmed node and afterwards.
|
@@ -250,6 +287,9 @@ abstract contract RollupCore is IRollupCore, PausableUpgradeable {
|
|
250
287
|
__Pausable_init();
|
251
288
|
_nodes[GENESIS_NODE] = initialNode;
|
252
289
|
_firstUnresolvedNode = GENESIS_NODE + 1;
|
290
|
+
if (_hostChainIsArbitrum) {
|
291
|
+
_nodeCreatedAtArbSysBlock[GENESIS_NODE] = ArbSys(address(100)).arbBlockNumber();
|
292
|
+
}
|
253
293
|
}
|
254
294
|
|
255
295
|
/**
|
@@ -259,6 +299,9 @@ abstract contract RollupCore is IRollupCore, PausableUpgradeable {
|
|
259
299
|
function nodeCreated(Node memory node) internal {
|
260
300
|
_latestNodeCreated++;
|
261
301
|
_nodes[_latestNodeCreated] = node;
|
302
|
+
if (_hostChainIsArbitrum) {
|
303
|
+
_nodeCreatedAtArbSysBlock[_latestNodeCreated] = ArbSys(address(100)).arbBlockNumber();
|
304
|
+
}
|
262
305
|
}
|
263
306
|
|
264
307
|
/// @notice Reject the next unresolved node
|
@@ -524,7 +567,7 @@ abstract contract RollupCore is IRollupCore, PausableUpgradeable {
|
|
524
567
|
}
|
525
568
|
|
526
569
|
function createNewNode(
|
527
|
-
|
570
|
+
Assertion calldata assertion,
|
528
571
|
uint64 prevNodeNum,
|
529
572
|
uint256 prevNodeInboxMaxCount,
|
530
573
|
bytes32 expectedNodeHash
|