@arbitrum/nitro-contracts 3.1.1 → 3.2.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/LICENSE.md +1 -1
- package/README.md +1 -1
- package/build/contracts/@openzeppelin/contracts/access/AccessControl.sol/AccessControl.dbg.json +4 -0
- package/build/contracts/@openzeppelin/contracts/access/AccessControl.sol/AccessControl.json +215 -0
- package/build/contracts/@openzeppelin/contracts/access/AccessControlEnumerable.sol/AccessControlEnumerable.dbg.json +4 -0
- package/build/contracts/@openzeppelin/contracts/access/AccessControlEnumerable.sol/AccessControlEnumerable.json +258 -0
- package/build/contracts/@openzeppelin/contracts/access/IAccessControl.sol/IAccessControl.dbg.json +4 -0
- package/build/contracts/@openzeppelin/contracts/access/IAccessControl.sol/IAccessControl.json +183 -0
- package/build/contracts/@openzeppelin/contracts/access/IAccessControlEnumerable.sol/IAccessControlEnumerable.dbg.json +4 -0
- package/build/contracts/@openzeppelin/contracts/access/IAccessControlEnumerable.sol/IAccessControlEnumerable.json +226 -0
- package/build/contracts/@openzeppelin/contracts/access/Ownable.sol/Ownable.dbg.json +1 -1
- package/build/contracts/@openzeppelin/contracts/interfaces/draft-IERC1822.sol/IERC1822Proxiable.dbg.json +1 -1
- package/build/contracts/@openzeppelin/contracts/proxy/ERC1967/ERC1967Proxy.sol/ERC1967Proxy.dbg.json +1 -1
- package/build/contracts/@openzeppelin/contracts/proxy/ERC1967/ERC1967Proxy.sol/ERC1967Proxy.json +2 -2
- package/build/contracts/@openzeppelin/contracts/proxy/ERC1967/ERC1967Upgrade.sol/ERC1967Upgrade.dbg.json +1 -1
- package/build/contracts/@openzeppelin/contracts/proxy/Proxy.sol/Proxy.dbg.json +1 -1
- package/build/contracts/@openzeppelin/contracts/proxy/beacon/IBeacon.sol/IBeacon.dbg.json +1 -1
- package/build/contracts/@openzeppelin/contracts/proxy/transparent/ProxyAdmin.sol/ProxyAdmin.dbg.json +1 -1
- package/build/contracts/@openzeppelin/contracts/proxy/transparent/ProxyAdmin.sol/ProxyAdmin.json +2 -2
- package/build/contracts/@openzeppelin/contracts/proxy/transparent/TransparentUpgradeableProxy.sol/TransparentUpgradeableProxy.dbg.json +1 -1
- package/build/contracts/@openzeppelin/contracts/proxy/transparent/TransparentUpgradeableProxy.sol/TransparentUpgradeableProxy.json +2 -2
- package/build/contracts/@openzeppelin/contracts/proxy/utils/UUPSUpgradeable.sol/UUPSUpgradeable.dbg.json +1 -1
- package/build/contracts/@openzeppelin/contracts/security/ReentrancyGuard.sol/ReentrancyGuard.dbg.json +1 -1
- package/build/contracts/@openzeppelin/contracts/token/ERC20/ERC20.sol/ERC20.dbg.json +1 -1
- package/build/contracts/@openzeppelin/contracts/token/ERC20/ERC20.sol/ERC20.json +2 -2
- package/build/contracts/@openzeppelin/contracts/token/ERC20/IERC20.sol/IERC20.dbg.json +1 -1
- package/build/contracts/@openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata.sol/IERC20Metadata.dbg.json +1 -1
- package/build/contracts/@openzeppelin/contracts/token/ERC20/extensions/draft-IERC20Permit.sol/IERC20Permit.dbg.json +1 -1
- package/build/contracts/@openzeppelin/contracts/token/ERC20/utils/SafeERC20.sol/SafeERC20.dbg.json +1 -1
- package/build/contracts/@openzeppelin/contracts/token/ERC20/utils/SafeERC20.sol/SafeERC20.json +2 -2
- package/build/contracts/@openzeppelin/contracts/utils/Address.sol/Address.dbg.json +1 -1
- package/build/contracts/@openzeppelin/contracts/utils/Address.sol/Address.json +2 -2
- package/build/contracts/@openzeppelin/contracts/utils/Context.sol/Context.dbg.json +1 -1
- package/build/contracts/@openzeppelin/contracts/utils/Create2.sol/Create2.dbg.json +1 -1
- package/build/contracts/@openzeppelin/contracts/utils/Create2.sol/Create2.json +2 -2
- package/build/contracts/@openzeppelin/contracts/utils/StorageSlot.sol/StorageSlot.dbg.json +1 -1
- package/build/contracts/@openzeppelin/contracts/utils/StorageSlot.sol/StorageSlot.json +2 -2
- package/build/contracts/@openzeppelin/contracts/utils/Strings.sol/Strings.dbg.json +1 -1
- package/build/contracts/@openzeppelin/contracts/utils/Strings.sol/Strings.json +2 -2
- package/build/contracts/@openzeppelin/contracts/utils/cryptography/ECDSA.sol/ECDSA.dbg.json +1 -1
- package/build/contracts/@openzeppelin/contracts/utils/cryptography/ECDSA.sol/ECDSA.json +2 -2
- package/build/contracts/@openzeppelin/contracts/utils/introspection/ERC165.sol/ERC165.dbg.json +4 -0
- package/build/contracts/@openzeppelin/contracts/utils/introspection/ERC165.sol/ERC165.json +30 -0
- package/build/contracts/@openzeppelin/contracts/utils/introspection/IERC165.sol/IERC165.dbg.json +4 -0
- package/build/contracts/@openzeppelin/contracts/utils/introspection/IERC165.sol/IERC165.json +30 -0
- package/build/contracts/@openzeppelin/contracts/utils/structs/EnumerableSet.sol/EnumerableSet.dbg.json +4 -0
- package/build/contracts/@openzeppelin/contracts/utils/structs/EnumerableSet.sol/EnumerableSet.json +10 -0
- package/build/contracts/@openzeppelin/contracts-upgradeable/access/AccessControlEnumerableUpgradeable.sol/AccessControlEnumerableUpgradeable.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/IAccessControlEnumerableUpgradeable.sol/IAccessControlEnumerableUpgradeable.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/token/ERC20/ERC20Upgradeable.sol/ERC20Upgradeable.dbg.json +1 -1
- package/build/contracts/@openzeppelin/contracts-upgradeable/token/ERC20/ERC20Upgradeable.sol/ERC20Upgradeable.json +2 -2
- package/build/contracts/@openzeppelin/contracts-upgradeable/token/ERC20/IERC20Upgradeable.sol/IERC20Upgradeable.dbg.json +1 -1
- package/build/contracts/@openzeppelin/contracts-upgradeable/token/ERC20/extensions/ERC20BurnableUpgradeable.sol/ERC20BurnableUpgradeable.dbg.json +1 -1
- package/build/contracts/@openzeppelin/contracts-upgradeable/token/ERC20/extensions/IERC20MetadataUpgradeable.sol/IERC20MetadataUpgradeable.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/AddressUpgradeable.sol/AddressUpgradeable.json +2 -2
- package/build/contracts/@openzeppelin/contracts-upgradeable/utils/ContextUpgradeable.sol/ContextUpgradeable.dbg.json +1 -1
- package/build/contracts/@openzeppelin/contracts-upgradeable/utils/Create2Upgradeable.sol/Create2Upgradeable.dbg.json +1 -1
- package/build/contracts/@openzeppelin/contracts-upgradeable/utils/Create2Upgradeable.sol/Create2Upgradeable.json +2 -2
- package/build/contracts/@openzeppelin/contracts-upgradeable/utils/StorageSlotUpgradeable.sol/StorageSlotUpgradeable.dbg.json +1 -1
- package/build/contracts/@openzeppelin/contracts-upgradeable/utils/StorageSlotUpgradeable.sol/StorageSlotUpgradeable.json +2 -2
- package/build/contracts/@openzeppelin/contracts-upgradeable/utils/StringsUpgradeable.sol/StringsUpgradeable.dbg.json +1 -1
- package/build/contracts/@openzeppelin/contracts-upgradeable/utils/StringsUpgradeable.sol/StringsUpgradeable.json +2 -2
- package/build/contracts/@openzeppelin/contracts-upgradeable/utils/cryptography/ECDSAUpgradeable.sol/ECDSAUpgradeable.dbg.json +1 -1
- package/build/contracts/@openzeppelin/contracts-upgradeable/utils/cryptography/ECDSAUpgradeable.sol/ECDSAUpgradeable.json +2 -2
- package/build/contracts/@openzeppelin/contracts-upgradeable/utils/cryptography/draft-EIP712Upgradeable.sol/EIP712Upgradeable.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/@openzeppelin/contracts-upgradeable/utils/structs/EnumerableSetUpgradeable.sol/EnumerableSetUpgradeable.json +2 -2
- 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/StakingPoolCreatorUtils.sol/StakingPoolCreatorUtils.json +2 -2
- 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/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/DelayBuffer.sol/DelayBuffer.json +2 -2
- 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 +2 -2
- package/build/contracts/src/bridge/ERC20Outbox.sol/ERC20Outbox.dbg.json +1 -1
- package/build/contracts/src/bridge/ERC20Outbox.sol/ERC20Outbox.json +2 -2
- package/build/contracts/src/bridge/GasRefunder.sol/GasRefunder.dbg.json +1 -1
- package/build/contracts/src/bridge/GasRefunder.sol/GasRefunder.json +2 -2
- package/build/contracts/src/bridge/IBridge.sol/IBridge.dbg.json +1 -1
- package/build/contracts/src/bridge/IDelayedMessageProvider.sol/IDelayedMessageProvider.dbg.json +1 -1
- package/build/contracts/src/bridge/IERC20Bridge.sol/IERC20Bridge.dbg.json +1 -1
- package/build/contracts/src/bridge/IERC20Inbox.sol/IERC20Inbox.dbg.json +1 -1
- package/build/contracts/src/bridge/IEthBridge.sol/IEthBridge.dbg.json +1 -1
- package/build/contracts/src/bridge/IInbox.sol/IInbox.dbg.json +1 -1
- package/build/contracts/src/bridge/IInboxBase.sol/IInboxBase.dbg.json +1 -1
- package/build/contracts/src/bridge/IOutbox.sol/IOutbox.dbg.json +1 -1
- package/build/contracts/src/bridge/IOwnable.sol/IOwnable.dbg.json +1 -1
- package/build/contracts/src/bridge/ISequencerInbox.sol/IFeeTokenPricer.dbg.json +1 -1
- package/build/contracts/src/bridge/ISequencerInbox.sol/ISequencerInbox.dbg.json +1 -1
- package/build/contracts/src/bridge/ISequencerInbox.sol/ISequencerInbox.json +13 -0
- package/build/contracts/src/bridge/Inbox.sol/Inbox.dbg.json +1 -1
- package/build/contracts/src/bridge/Inbox.sol/Inbox.json +2 -2
- package/build/contracts/src/bridge/Messages.sol/Messages.dbg.json +1 -1
- package/build/contracts/src/bridge/Messages.sol/Messages.json +2 -2
- package/build/contracts/src/bridge/Outbox.sol/Outbox.dbg.json +1 -1
- package/build/contracts/src/bridge/Outbox.sol/Outbox.json +2 -2
- package/build/contracts/src/bridge/SequencerInbox.sol/SequencerInbox.dbg.json +1 -1
- package/build/contracts/src/bridge/SequencerInbox.sol/SequencerInbox.json +15 -2
- package/build/contracts/src/bridge/extra/ERC20MigrationOutbox.sol/ERC20MigrationOutbox.dbg.json +1 -1
- package/build/contracts/src/bridge/extra/ERC20MigrationOutbox.sol/ERC20MigrationOutbox.json +2 -2
- package/build/contracts/src/bridge/extra/IERC20MigrationOutbox.sol/IERC20MigrationOutbox.dbg.json +1 -1
- 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/chain/ResourceConstraintManager.sol/ResourceConstraintManager.dbg.json +4 -0
- package/build/contracts/src/chain/ResourceConstraintManager.sol/ResourceConstraintManager.json +388 -0
- 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 +1 -1
- package/build/contracts/src/challengeV2/libraries/ArrayUtilsLib.sol/ArrayUtilsLib.dbg.json +1 -1
- package/build/contracts/src/challengeV2/libraries/ArrayUtilsLib.sol/ArrayUtilsLib.json +2 -2
- 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/challengeV2/libraries/UintUtilsLib.sol/UintUtilsLib.json +2 -2
- package/build/contracts/src/express-lane-auction/Balance.sol/BalanceLib.dbg.json +1 -1
- package/build/contracts/src/express-lane-auction/Balance.sol/BalanceLib.json +2 -2
- package/build/contracts/src/express-lane-auction/Burner.sol/Burner.dbg.json +1 -1
- package/build/contracts/src/express-lane-auction/Burner.sol/Burner.json +2 -2
- package/build/contracts/src/express-lane-auction/ELCRound.sol/LatestELCRoundsLib.dbg.json +1 -1
- package/build/contracts/src/express-lane-auction/ELCRound.sol/LatestELCRoundsLib.json +2 -2
- package/build/contracts/src/express-lane-auction/ExpressLaneAuction.sol/ExpressLaneAuction.dbg.json +1 -1
- package/build/contracts/src/express-lane-auction/ExpressLaneAuction.sol/ExpressLaneAuction.json +2 -2
- package/build/contracts/src/express-lane-auction/IExpressLaneAuction.sol/IExpressLaneAuction.dbg.json +1 -1
- package/build/contracts/src/express-lane-auction/RoundTimingInfo.sol/RoundTimingInfoLib.dbg.json +1 -1
- package/build/contracts/src/express-lane-auction/RoundTimingInfo.sol/RoundTimingInfoLib.json +2 -2
- package/build/contracts/src/libraries/AddressAliasHelper.sol/AddressAliasHelper.dbg.json +1 -1
- package/build/contracts/src/libraries/AddressAliasHelper.sol/AddressAliasHelper.json +2 -2
- package/build/contracts/src/libraries/AdminFallbackProxy.sol/AdminFallbackProxy.dbg.json +1 -1
- package/build/contracts/src/libraries/AdminFallbackProxy.sol/AdminFallbackProxy.json +2 -2
- package/build/contracts/src/libraries/AdminFallbackProxy.sol/DoubleLogicERC1967Upgrade.dbg.json +1 -1
- package/build/contracts/src/libraries/ArbitrumChecker.sol/ArbitrumChecker.dbg.json +1 -1
- package/build/contracts/src/libraries/ArbitrumChecker.sol/ArbitrumChecker.json +2 -2
- package/build/contracts/src/libraries/CallerChecker.sol/CallerChecker.dbg.json +1 -1
- package/build/contracts/src/libraries/CallerChecker.sol/CallerChecker.json +2 -2
- package/build/contracts/src/libraries/CryptographyPrimitives.sol/CryptographyPrimitives.dbg.json +1 -1
- package/build/contracts/src/libraries/CryptographyPrimitives.sol/CryptographyPrimitives.json +2 -2
- package/build/contracts/src/libraries/DecimalsConverterHelper.sol/DecimalsConverterHelper.dbg.json +1 -1
- package/build/contracts/src/libraries/DecimalsConverterHelper.sol/DecimalsConverterHelper.json +2 -2
- package/build/contracts/src/libraries/DelegateCallAware.sol/DelegateCallAware.dbg.json +1 -1
- package/build/contracts/src/libraries/DoubleLogicUUPSUpgradeable.sol/DoubleLogicUUPSUpgradeable.dbg.json +1 -1
- package/build/contracts/src/libraries/GasRefundEnabled.sol/GasRefundEnabled.dbg.json +1 -1
- package/build/contracts/src/libraries/IGasRefunder.sol/IGasRefunder.dbg.json +1 -1
- package/build/contracts/src/libraries/IReader4844.sol/IReader4844.dbg.json +1 -1
- package/build/contracts/src/libraries/MerkleLib.sol/MerkleLib.dbg.json +1 -1
- package/build/contracts/src/libraries/MerkleLib.sol/MerkleLib.json +2 -2
- package/build/contracts/src/libraries/UUPSNotUpgradeable.sol/UUPSNotUpgradeable.dbg.json +1 -1
- package/build/contracts/src/mocks/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/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 +7 -2
- package/build/contracts/src/mocks/SequencerInboxBlobMock.sol/SequencerInboxBlobMock.dbg.json +1 -1
- package/build/contracts/src/mocks/SequencerInboxBlobMock.sol/SequencerInboxBlobMock.json +15 -2
- package/build/contracts/src/mocks/SequencerInboxStub.sol/SequencerInboxStub.dbg.json +1 -1
- package/build/contracts/src/mocks/SequencerInboxStub.sol/SequencerInboxStub.json +15 -2
- 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/TestWETH9.sol/IWETH9.dbg.json +1 -1
- package/build/contracts/src/mocks/TestWETH9.sol/TestWETH9.dbg.json +1 -1
- package/build/contracts/src/mocks/TestWETH9.sol/TestWETH9.json +2 -2
- package/build/contracts/src/mocks/UpgradeExecutorMock.sol/UpgradeExecutorMock.dbg.json +1 -1
- package/build/contracts/src/mocks/UpgradeExecutorMock.sol/UpgradeExecutorMock.json +2 -2
- package/build/contracts/src/node-interface/NodeInterface.sol/NodeInterface.dbg.json +1 -1
- package/build/contracts/src/node-interface/NodeInterfaceDebug.sol/NodeInterfaceDebug.dbg.json +1 -1
- package/build/contracts/src/osp/HashProofHelper.sol/HashProofHelper.dbg.json +1 -1
- package/build/contracts/src/osp/HashProofHelper.sol/HashProofHelper.json +2 -2
- package/build/contracts/src/osp/ICustomDAProofValidator.sol/ICustomDAProofValidator.dbg.json +4 -0
- package/build/contracts/src/osp/ICustomDAProofValidator.sol/ICustomDAProofValidator.json +59 -0
- 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/IOneStepProofEntry.sol/OneStepProofEntryLib.json +2 -2
- 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/OneStepProofEntry.sol/OneStepProofEntry.json +2 -2
- package/build/contracts/src/osp/OneStepProver0.sol/OneStepProver0.dbg.json +1 -1
- package/build/contracts/src/osp/OneStepProver0.sol/OneStepProver0.json +2 -2
- package/build/contracts/src/osp/OneStepProverHostIo.sol/OneStepProverHostIo.dbg.json +1 -1
- package/build/contracts/src/osp/OneStepProverHostIo.sol/OneStepProverHostIo.json +26 -2
- package/build/contracts/src/osp/OneStepProverMath.sol/OneStepProverMath.dbg.json +1 -1
- package/build/contracts/src/osp/OneStepProverMath.sol/OneStepProverMath.json +2 -2
- package/build/contracts/src/osp/OneStepProverMemory.sol/OneStepProverMemory.dbg.json +1 -1
- package/build/contracts/src/osp/OneStepProverMemory.sol/OneStepProverMemory.json +2 -2
- package/build/contracts/src/precompiles/ArbAddressTable.sol/ArbAddressTable.dbg.json +1 -1
- package/build/contracts/src/precompiles/ArbAggregator.sol/ArbAggregator.dbg.json +1 -1
- package/build/contracts/src/precompiles/ArbBLS.sol/ArbBLS.dbg.json +1 -1
- package/build/contracts/src/precompiles/ArbDebug.sol/ArbDebug.dbg.json +1 -1
- package/build/contracts/src/precompiles/ArbDebug.sol/ArbDebug.json +24 -0
- 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/ArbGasInfo.sol/ArbGasInfo.json +39 -0
- package/build/contracts/src/precompiles/ArbInfo.sol/ArbInfo.dbg.json +1 -1
- package/build/contracts/src/precompiles/ArbNativeTokenManager.sol/ArbNativeTokenManager.dbg.json +1 -1
- package/build/contracts/src/precompiles/ArbOwner.sol/ArbOwner.dbg.json +1 -1
- package/build/contracts/src/precompiles/ArbOwner.sol/ArbOwner.json +52 -0
- package/build/contracts/src/precompiles/ArbOwnerPublic.sol/ArbOwnerPublic.dbg.json +1 -1
- package/build/contracts/src/precompiles/ArbOwnerPublic.sol/ArbOwnerPublic.json +26 -0
- package/build/contracts/src/precompiles/ArbRetryableTx.sol/ArbRetryableTx.dbg.json +1 -1
- package/build/contracts/src/precompiles/ArbStatistics.sol/ArbStatistics.dbg.json +1 -1
- package/build/contracts/src/precompiles/ArbSys.sol/ArbSys.dbg.json +1 -1
- package/build/contracts/src/precompiles/ArbWasm.sol/ArbWasm.dbg.json +1 -1
- package/build/contracts/src/precompiles/ArbWasmCache.sol/ArbWasmCache.dbg.json +1 -1
- package/build/contracts/src/precompiles/ArbosActs.sol/ArbosActs.dbg.json +1 -1
- package/build/contracts/src/precompiles/ArbosActs.sol/ArbosActs.json +43 -0
- 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/AbsRollupEventInbox.sol/AbsRollupEventInbox.json +5 -0
- package/build/contracts/src/rollup/Assertion.sol/AssertionNodeLib.dbg.json +1 -1
- package/build/contracts/src/rollup/Assertion.sol/AssertionNodeLib.json +2 -2
- package/build/contracts/src/rollup/AssertionState.sol/AssertionStateLib.dbg.json +1 -1
- package/build/contracts/src/rollup/AssertionState.sol/AssertionStateLib.json +2 -2
- 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/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 -144
- 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 +7 -2
- package/build/contracts/src/rollup/IRollupAdmin.sol/IRollupAdmin.dbg.json +1 -1
- package/build/contracts/src/rollup/IRollupAdmin.sol/IRollupAdmin.json +36 -13
- 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/IRollupEventInbox.sol/IRollupEventInbox.json +5 -0
- 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 +38 -15
- 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 +59 -3
- package/build/contracts/src/rollup/RollupEventInbox.sol/RollupEventInbox.dbg.json +1 -1
- package/build/contracts/src/rollup/RollupEventInbox.sol/RollupEventInbox.json +7 -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 +7 -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 -78
- package/build/contracts/src/state/Deserialize.sol/Deserialize.dbg.json +1 -1
- package/build/contracts/src/state/Deserialize.sol/Deserialize.json +2 -2
- package/build/contracts/src/state/GlobalState.sol/GlobalStateLib.dbg.json +1 -1
- package/build/contracts/src/state/GlobalState.sol/GlobalStateLib.json +2 -2
- package/build/contracts/src/state/Instructions.sol/Instructions.dbg.json +1 -1
- package/build/contracts/src/state/Instructions.sol/Instructions.json +2 -2
- package/build/contracts/src/state/Machine.sol/MachineLib.dbg.json +1 -1
- package/build/contracts/src/state/Machine.sol/MachineLib.json +2 -2
- package/build/contracts/src/state/MerkleProof.sol/MerkleProofLib.dbg.json +1 -1
- package/build/contracts/src/state/MerkleProof.sol/MerkleProofLib.json +2 -2
- package/build/contracts/src/state/Module.sol/ModuleLib.dbg.json +1 -1
- package/build/contracts/src/state/Module.sol/ModuleLib.json +2 -2
- package/build/contracts/src/state/ModuleMemory.sol/ModuleMemoryLib.dbg.json +1 -1
- package/build/contracts/src/state/ModuleMemory.sol/ModuleMemoryLib.json +2 -2
- package/build/contracts/src/state/ModuleMemoryCompact.sol/ModuleMemoryCompactLib.dbg.json +1 -1
- package/build/contracts/src/state/ModuleMemoryCompact.sol/ModuleMemoryCompactLib.json +2 -2
- package/build/contracts/src/state/MultiStack.sol/MultiStackLib.dbg.json +1 -1
- package/build/contracts/src/state/MultiStack.sol/MultiStackLib.json +2 -2
- package/build/contracts/src/state/PcArray.sol/PcArrayLib.dbg.json +1 -1
- package/build/contracts/src/state/PcArray.sol/PcArrayLib.json +2 -2
- package/build/contracts/src/state/StackFrame.sol/StackFrameLib.dbg.json +1 -1
- package/build/contracts/src/state/StackFrame.sol/StackFrameLib.json +2 -2
- package/build/contracts/src/state/Value.sol/ValueLib.dbg.json +1 -1
- package/build/contracts/src/state/Value.sol/ValueLib.json +2 -2
- package/build/contracts/src/state/ValueArray.sol/ValueArrayLib.dbg.json +1 -1
- package/build/contracts/src/state/ValueArray.sol/ValueArrayLib.json +2 -2
- package/build/contracts/src/state/ValueStack.sol/ValueStackLib.dbg.json +1 -1
- package/build/contracts/src/state/ValueStack.sol/ValueStackLib.json +2 -2
- package/build/contracts/src/stylus/StylusDeployer.sol/StylusDeployer.dbg.json +1 -1
- package/build/contracts/src/stylus/StylusDeployer.sol/StylusDeployer.json +2 -2
- package/build/contracts/src/test-helpers/BridgeTester.sol/BridgeTester.dbg.json +1 -1
- package/build/contracts/src/test-helpers/BridgeTester.sol/BridgeTester.json +2 -2
- package/build/contracts/src/test-helpers/CryptographyPrimitivesTester.sol/CryptographyPrimitivesTester.dbg.json +1 -1
- package/build/contracts/src/test-helpers/CryptographyPrimitivesTester.sol/CryptographyPrimitivesTester.json +2 -2
- package/build/contracts/src/test-helpers/EthVault.sol/EthVault.dbg.json +1 -1
- package/build/contracts/src/test-helpers/EthVault.sol/EthVault.json +2 -2
- package/build/contracts/src/test-helpers/MessageTester.sol/MessageTester.dbg.json +1 -1
- package/build/contracts/src/test-helpers/MessageTester.sol/MessageTester.json +2 -2
- package/build/contracts/src/test-helpers/NoReceiveForwarder.sol/ConstructorError.dbg.json +1 -1
- package/build/contracts/src/test-helpers/NoReceiveForwarder.sol/ConstructorError.json +1 -1
- package/build/contracts/src/test-helpers/NoReceiveForwarder.sol/ConstructorFine.dbg.json +1 -1
- package/build/contracts/src/test-helpers/NoReceiveForwarder.sol/ConstructorFine.json +2 -2
- package/build/contracts/src/test-helpers/NoReceiveForwarder.sol/NoReceiveForwarder.dbg.json +1 -1
- package/build/contracts/src/test-helpers/NoReceiveForwarder.sol/NoReceiveForwarder.json +2 -2
- package/build/contracts/src/test-helpers/NoReceiveForwarder.sol/ReceivingForwarder.dbg.json +1 -1
- package/build/contracts/src/test-helpers/NoReceiveForwarder.sol/ReceivingForwarder.json +2 -2
- package/build/contracts/src/test-helpers/OutboxWithoutOptTester.sol/OutboxWithoutOptTester.dbg.json +1 -1
- package/build/contracts/src/test-helpers/OutboxWithoutOptTester.sol/OutboxWithoutOptTester.json +2 -2
- package/build/contracts/src/test-helpers/RollupMock.sol/RollupMock.dbg.json +1 -1
- package/build/contracts/src/test-helpers/RollupMock.sol/RollupMock.json +2 -2
- package/build/contracts/src/test-helpers/TestToken.sol/TestToken.dbg.json +1 -1
- package/build/contracts/src/test-helpers/TestToken.sol/TestToken.json +2 -2
- package/build/contracts/src/test-helpers/ValueArrayTester.sol/ValueArrayTester.dbg.json +1 -1
- package/build/contracts/src/test-helpers/ValueArrayTester.sol/ValueArrayTester.json +2 -2
- package/out/yul/Reader4844.yul/Reader4844.json +1 -1
- package/package.json +6 -5
- package/src/bridge/ISequencerInbox.sol +5 -0
- package/src/bridge/SequencerInbox.sol +11 -3
- package/src/chain/ResourceConstraintManager.sol +88 -0
- package/src/mocks/BridgeStub.sol +5 -1
- package/src/mocks/MockRollupEventInbox.sol +10 -4
- package/src/osp/ICustomDAProofValidator.sol +43 -0
- package/src/osp/OneStepProofEntry.sol +2 -1
- package/src/osp/OneStepProver0.sol +2 -3
- package/src/osp/OneStepProverHostIo.sol +132 -12
- package/src/osp/OneStepProverMath.sol +2 -3
- package/src/osp/OneStepProverMemory.sol +2 -3
- package/src/precompiles/.github/workflows/contract-tests.yml +39 -0
- package/src/precompiles/ArbDebug.sol +7 -0
- package/src/precompiles/ArbGasInfo.sol +34 -8
- package/src/precompiles/ArbNativeTokenManager.sol +1 -1
- package/src/precompiles/ArbOwner.sol +73 -14
- package/src/precompiles/ArbOwnerPublic.sol +19 -13
- package/src/precompiles/ArbWasm.sol +1 -0
- package/src/precompiles/ArbWasmCache.sol +3 -0
- package/src/precompiles/ArbosActs.sol +10 -0
- package/src/precompiles/LICENSE.md +116 -0
- package/src/precompiles/README.md +11 -0
- package/src/precompiles/foundry.toml +20 -0
- package/src/precompiles/package.json +24 -0
- package/src/precompiles/yarn.lock +4 -0
- package/src/rollup/AbsRollupEventInbox.sol +8 -2
- package/src/rollup/BOLDUpgradeAction.sol +2 -2
- package/src/rollup/BridgeCreator.sol +2 -16
- package/src/rollup/Config.sol +2 -0
- package/src/rollup/IRollupAdmin.sol +15 -3
- package/src/rollup/IRollupEventInbox.sol +5 -1
- package/src/rollup/RollupAdminLogic.sol +68 -9
- package/src/rollup/RollupCore.sol +6 -1
- package/src/rollup/RollupCreator.sol +35 -6
- package/src/rollup/RollupUserLogic.sol +6 -0
- package/src/rollup/ValidatorWalletCreator.sol +2 -15
- package/src/state/Instructions.sol +1 -0
- package/build/contracts/@openzeppelin/contracts/proxy/beacon/UpgradeableBeacon.sol/UpgradeableBeacon.dbg.json +0 -4
- package/build/contracts/@openzeppelin/contracts/proxy/beacon/UpgradeableBeacon.sol/UpgradeableBeacon.json +0 -113
- package/build/contracts/src/rollup/FactoryDeployerHelper.sol/FactoryDeployerHelper.dbg.json +0 -4
- package/build/contracts/src/rollup/FactoryDeployerHelper.sol/FactoryDeployerHelper.json +0 -68
- package/build/contracts/src/rollup/FactoryDeployerHelper.sol/IDeployHelper.dbg.json +0 -4
- package/build/contracts/src/rollup/FactoryDeployerHelper.sol/IDeployHelper.json +0 -58
- package/build/contracts/src/rollup/FactoryDeployerHelper.sol/IERC20.dbg.json +0 -4
- package/build/contracts/src/rollup/FactoryDeployerHelper.sol/IERC20.json +0 -40
- package/build/contracts/src/rollup/FactoryDeployerHelper.sol/IERC20Bridge.dbg.json +0 -4
- package/build/contracts/src/rollup/FactoryDeployerHelper.sol/IERC20Bridge.json +0 -24
- package/build/contracts/src/rollup/FactoryDeployerHelper.sol/IInboxBase.dbg.json +0 -4
- package/build/contracts/src/rollup/FactoryDeployerHelper.sol/IInboxBase.json +0 -24
- package/src/rollup/FactoryDeployerHelper.sol +0 -52
|
@@ -12,11 +12,9 @@ interface ArbOwnerPublic {
|
|
|
12
12
|
address addr
|
|
13
13
|
) external view returns (bool);
|
|
14
14
|
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
* Available in ArbOS version 11
|
|
19
|
-
*/
|
|
15
|
+
/// @notice Rectify the list of chain owners
|
|
16
|
+
/// @notice If successful, emits ChainOwnerRectified event
|
|
17
|
+
/// @notice Available in ArbOS version 11 and above
|
|
20
18
|
function rectifyChainOwner(
|
|
21
19
|
address ownerToRectify
|
|
22
20
|
) external;
|
|
@@ -24,14 +22,19 @@ interface ArbOwnerPublic {
|
|
|
24
22
|
/// @notice Retrieves the list of chain owners
|
|
25
23
|
function getAllChainOwners() external view returns (address[] memory);
|
|
26
24
|
|
|
25
|
+
/// @notice Retrieves the timestamp from when the native token management
|
|
26
|
+
/// modifications are enabled.
|
|
27
|
+
/// @notice Available in ArbOS version 50 and above
|
|
28
|
+
function getNativeTokenManagementFrom() external view returns (uint64);
|
|
29
|
+
|
|
27
30
|
/// @notice See if the user is a native token owner
|
|
28
|
-
/// Available in ArbOS version 41
|
|
31
|
+
/// @notice Available in ArbOS version 41 and above
|
|
29
32
|
function isNativeTokenOwner(
|
|
30
33
|
address addr
|
|
31
34
|
) external view returns (bool);
|
|
32
35
|
|
|
33
36
|
/// @notice Retrieves the list of native token owners
|
|
34
|
-
/// Available in ArbOS version 41
|
|
37
|
+
/// @notice Available in ArbOS version 41 and above
|
|
35
38
|
function getAllNativeTokenOwners() external view returns (address[] memory);
|
|
36
39
|
|
|
37
40
|
/// @notice Gets the network fee collector
|
|
@@ -41,20 +44,23 @@ interface ArbOwnerPublic {
|
|
|
41
44
|
function getInfraFeeAccount() external view returns (address);
|
|
42
45
|
|
|
43
46
|
/// @notice Get the Brotli compression level used for fast compression
|
|
47
|
+
/// @notice Available in ArbOS version 20 and above
|
|
44
48
|
function getBrotliCompressionLevel() external view returns (uint64);
|
|
45
49
|
|
|
50
|
+
/// @notice Get how much L1 charges per non-zero byte of calldata
|
|
51
|
+
/// @notice Available in ArbOS version 50 and above
|
|
52
|
+
function getParentGasFloorPerToken() external view returns (uint64);
|
|
53
|
+
|
|
46
54
|
/// @notice Get the next scheduled ArbOS version upgrade and its activation timestamp.
|
|
47
|
-
/// Returns (0, 0) if no ArbOS upgrade is scheduled.
|
|
48
|
-
/// Available in ArbOS version 20
|
|
55
|
+
/// @notice Returns (0, 0) if no ArbOS upgrade is scheduled.
|
|
56
|
+
/// @notice Available in ArbOS version 20 and above
|
|
49
57
|
function getScheduledUpgrade()
|
|
50
58
|
external
|
|
51
59
|
view
|
|
52
60
|
returns (uint64 arbosVersion, uint64 scheduledForTimestamp);
|
|
53
61
|
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
* Available in ArbOS version 40 with default as false
|
|
57
|
-
*/
|
|
62
|
+
/// @notice Checks if the increased calldata price feature (EIP-7623) is enabled
|
|
63
|
+
/// @notice Available in ArbOS version 40 with default as false
|
|
58
64
|
function isCalldataPriceIncreaseEnabled() external view returns (bool);
|
|
59
65
|
|
|
60
66
|
event ChainOwnerRectified(address rectifiedOwner);
|
|
@@ -7,6 +7,7 @@ pragma solidity >=0.4.21 <0.9.0;
|
|
|
7
7
|
/**
|
|
8
8
|
* @title Methods for managing user programs
|
|
9
9
|
* @notice Precompiled contract that exists in every Arbitrum chain at 0x0000000000000000000000000000000000000071.
|
|
10
|
+
* @notice Available in ArbOS version 30 and above
|
|
10
11
|
*/
|
|
11
12
|
interface ArbWasm {
|
|
12
13
|
/// @notice Activate a wasm program
|
|
@@ -7,6 +7,7 @@ pragma solidity >=0.4.21 <0.9.0;
|
|
|
7
7
|
/**
|
|
8
8
|
* @title Methods for managing Stylus caches
|
|
9
9
|
* @notice Precompiled contract that exists in every Arbitrum chain at 0x0000000000000000000000000000000000000072.
|
|
10
|
+
* @notice Available in ArbOS version 30 and above
|
|
10
11
|
*/
|
|
11
12
|
interface ArbWasmCache {
|
|
12
13
|
/// @notice See if the user is a cache manager.
|
|
@@ -19,6 +20,7 @@ interface ArbWasmCache {
|
|
|
19
20
|
function allCacheManagers() external view returns (address[] memory managers);
|
|
20
21
|
|
|
21
22
|
/// @dev Deprecated, replaced with cacheProgram
|
|
23
|
+
/// @notice Available in ArbOS version 30 only
|
|
22
24
|
function cacheCodehash(
|
|
23
25
|
bytes32 codehash
|
|
24
26
|
) external;
|
|
@@ -27,6 +29,7 @@ interface ArbWasmCache {
|
|
|
27
29
|
/// @notice Reverts if the programs have expired.
|
|
28
30
|
/// @notice Caller must be a cache manager or chain owner.
|
|
29
31
|
/// @notice If you're looking for how to bid for position, interact with the chain's cache manager contract.
|
|
32
|
+
/// @notice Available in ArbOS version 31 and above
|
|
30
33
|
function cacheProgram(
|
|
31
34
|
address addr
|
|
32
35
|
) external;
|
|
@@ -44,5 +44,15 @@ interface ArbosActs {
|
|
|
44
44
|
uint256 l1BaseFeeWei
|
|
45
45
|
) external;
|
|
46
46
|
|
|
47
|
+
function batchPostingReportV2(
|
|
48
|
+
uint256 batchTimestamp,
|
|
49
|
+
address batchPosterAddress,
|
|
50
|
+
uint64 batchNumber,
|
|
51
|
+
uint64 batchCalldataLength,
|
|
52
|
+
uint64 batchCalldataNonZeros,
|
|
53
|
+
uint64 batchExtraGas,
|
|
54
|
+
uint256 l1BaseFeeWei
|
|
55
|
+
) external;
|
|
56
|
+
|
|
47
57
|
error CallerNotArbOS();
|
|
48
58
|
}
|
|
@@ -0,0 +1,116 @@
|
|
|
1
|
+
Business Source License 1.1
|
|
2
|
+
|
|
3
|
+
License text copyright (c) 2017 MariaDB Corporation Ab, All Rights Reserved.
|
|
4
|
+
"Business Source License" is a trademark of MariaDB Corporation Ab.
|
|
5
|
+
|
|
6
|
+
-----------------------------------------------------------------------------
|
|
7
|
+
|
|
8
|
+
Parameters
|
|
9
|
+
|
|
10
|
+
Licensor: Offchain Labs
|
|
11
|
+
|
|
12
|
+
Licensed Work: Arbitrum Nitro Contracts
|
|
13
|
+
The Licensed Work is (c) 2021-2024 Offchain Labs
|
|
14
|
+
|
|
15
|
+
Additional Use Grant: You may use the Licensed Work in a production environment solely
|
|
16
|
+
to provide a point of interface to permit end users or applications
|
|
17
|
+
utilizing the Covered Arbitrum Chains to interact and query the
|
|
18
|
+
state of a Covered Arbitrum Chain, including without limitation
|
|
19
|
+
validating the correctness of the posted chain state, or to deploy
|
|
20
|
+
and operate (x) a blockchain that settles to a Covered Arbitrum Chain
|
|
21
|
+
or (y) a blockchain in accordance with, and subject to, the [Arbitrum
|
|
22
|
+
Expansion Program Term of Use](https://docs.arbitrum.foundation/aep/ArbitrumExpansionProgramTerms.pdf). For purposes of this
|
|
23
|
+
Additional Use Grant, the "Covered Arbitrum Chains" are
|
|
24
|
+
(a) Arbitrum One (chainid:42161), Arbitrum Nova (chainid:42170),
|
|
25
|
+
Arbitrum Rinkeby testnet/Rinkarby (chainid:421611),Arbitrum Nitro
|
|
26
|
+
Goerli testnet (chainid:421613), and Arbitrum Sepolia Testnet
|
|
27
|
+
(chainid:421614); (b) any future blockchains authorized to be
|
|
28
|
+
designated as Covered Arbitrum Chains by the decentralized autonomous
|
|
29
|
+
organization governing the Arbitrum network; and (c) any “Layer 3”
|
|
30
|
+
Arbitrum-based blockchain that is built on and settles to another
|
|
31
|
+
Covered Arbitrum Chain.
|
|
32
|
+
|
|
33
|
+
|
|
34
|
+
|
|
35
|
+
Change Date: Dec 31, 2028
|
|
36
|
+
|
|
37
|
+
Change License: Apache License Version 2.0
|
|
38
|
+
|
|
39
|
+
-----------------------------------------------------------------------------
|
|
40
|
+
|
|
41
|
+
Terms
|
|
42
|
+
|
|
43
|
+
The Licensor hereby grants you the right to copy, modify, create derivative
|
|
44
|
+
works, redistribute, and make non-production use of the Licensed Work. The
|
|
45
|
+
Licensor may make an Additional Use Grant, above, permitting limited
|
|
46
|
+
production use.
|
|
47
|
+
|
|
48
|
+
Effective on the Change Date, or the fourth anniversary of the first publicly
|
|
49
|
+
available distribution of a specific version of the Licensed Work under this
|
|
50
|
+
License, whichever comes first, the Licensor hereby grants you rights under
|
|
51
|
+
the terms of the Change License, and the rights granted in the paragraph
|
|
52
|
+
above terminate.
|
|
53
|
+
|
|
54
|
+
If your use of the Licensed Work does not comply with the requirements
|
|
55
|
+
currently in effect as described in this License, you must purchase a
|
|
56
|
+
commercial license from the Licensor, its affiliated entities, or authorized
|
|
57
|
+
resellers, or you must refrain from using the Licensed Work.
|
|
58
|
+
|
|
59
|
+
All copies of the original and modified Licensed Work, and derivative works
|
|
60
|
+
of the Licensed Work, are subject to this License. This License applies
|
|
61
|
+
separately for each version of the Licensed Work and the Change Date may vary
|
|
62
|
+
for each version of the Licensed Work released by Licensor.
|
|
63
|
+
|
|
64
|
+
You must conspicuously display this License on each original or modified copy
|
|
65
|
+
of the Licensed Work. If you receive the Licensed Work in original or
|
|
66
|
+
modified form from a third party, the terms and conditions set forth in this
|
|
67
|
+
License apply to your use of that work.
|
|
68
|
+
|
|
69
|
+
Any use of the Licensed Work in violation of this License will automatically
|
|
70
|
+
terminate your rights under this License for the current and all other
|
|
71
|
+
versions of the Licensed Work.
|
|
72
|
+
|
|
73
|
+
This License does not grant you any right in any trademark or logo of
|
|
74
|
+
Licensor or its affiliates (provided that you may use a trademark or logo of
|
|
75
|
+
Licensor as expressly required by this License).
|
|
76
|
+
|
|
77
|
+
TO THE EXTENT PERMITTED BY APPLICABLE LAW, THE LICENSED WORK IS PROVIDED ON
|
|
78
|
+
AN "AS IS" BASIS. LICENSOR HEREBY DISCLAIMS ALL WARRANTIES AND CONDITIONS,
|
|
79
|
+
EXPRESS OR IMPLIED, INCLUDING (WITHOUT LIMITATION) WARRANTIES OF
|
|
80
|
+
MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE, NON-INFRINGEMENT, AND
|
|
81
|
+
TITLE.
|
|
82
|
+
|
|
83
|
+
MariaDB hereby grants you permission to use this License’s text to license
|
|
84
|
+
your works, and to refer to it using the trademark "Business Source License",
|
|
85
|
+
as long as you comply with the Covenants of Licensor below.
|
|
86
|
+
|
|
87
|
+
-----------------------------------------------------------------------------
|
|
88
|
+
|
|
89
|
+
Covenants of Licensor
|
|
90
|
+
|
|
91
|
+
In consideration of the right to use this License’s text and the "Business
|
|
92
|
+
Source License" name and trademark, Licensor covenants to MariaDB, and to all
|
|
93
|
+
other recipients of the licensed work to be provided by Licensor:
|
|
94
|
+
|
|
95
|
+
1. To specify as the Change License the GPL Version 2.0 or any later version,
|
|
96
|
+
or a license that is compatible with GPL Version 2.0 or a later version,
|
|
97
|
+
where "compatible" means that software provided under the Change License can
|
|
98
|
+
be included in a program with software provided under GPL Version 2.0 or a
|
|
99
|
+
later version. Licensor may specify additional Change Licenses without
|
|
100
|
+
limitation.
|
|
101
|
+
|
|
102
|
+
2. To either: (a) specify an additional grant of rights to use that does not
|
|
103
|
+
impose any additional restriction on the right granted in this License, as
|
|
104
|
+
the Additional Use Grant; or (b) insert the text "None".
|
|
105
|
+
|
|
106
|
+
3. To specify a Change Date.
|
|
107
|
+
|
|
108
|
+
4. Not to modify this License in any other way.
|
|
109
|
+
|
|
110
|
+
-----------------------------------------------------------------------------
|
|
111
|
+
|
|
112
|
+
Notice
|
|
113
|
+
|
|
114
|
+
The Business Source License (this document, or the "License") is not an Open
|
|
115
|
+
Source license. However, the Licensed Work will eventually be made available
|
|
116
|
+
under an Open Source License, as stated in this License.
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
# Nitro Precompile Interfaces
|
|
2
|
+
|
|
3
|
+
Solidity interfaces for Arbitrum Nitro precompiled contracts.
|
|
4
|
+
|
|
5
|
+
## Overview
|
|
6
|
+
|
|
7
|
+
This repository contains the Solidity interface definitions for Arbitrum Nitro's precompiled contracts.
|
|
8
|
+
|
|
9
|
+
## License
|
|
10
|
+
|
|
11
|
+
Licensed under BUSL-1.1. See individual files for specific license information.
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
[profile.default]
|
|
2
|
+
src = ''
|
|
3
|
+
|
|
4
|
+
[fmt]
|
|
5
|
+
line_length = 100
|
|
6
|
+
tab_width = 4
|
|
7
|
+
bracket_spacing = false
|
|
8
|
+
int_types = "long"
|
|
9
|
+
multiline_func_header = "params_first"
|
|
10
|
+
quote_style = "double"
|
|
11
|
+
number_underscore = "preserve"
|
|
12
|
+
hex_underscore = "remove"
|
|
13
|
+
single_line_statement_blocks = "preserve"
|
|
14
|
+
override_spacing = false
|
|
15
|
+
wrap_comments = false
|
|
16
|
+
ignore = []
|
|
17
|
+
contract_new_lines = false
|
|
18
|
+
sort_imports = false
|
|
19
|
+
|
|
20
|
+
# See more config options https://github.com/foundry-rs/foundry/tree/master/config
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "@arbitrum/nitro-precompile-interfaces",
|
|
3
|
+
"version": "41.0.0",
|
|
4
|
+
"description": "Solidity interfaces for Arbitrum Nitro precompiled contracts",
|
|
5
|
+
"author": "Offchain Labs, Inc.",
|
|
6
|
+
"license": "BUSL-1.1",
|
|
7
|
+
"repository": {
|
|
8
|
+
"type": "git",
|
|
9
|
+
"url": "git+https://github.com/offchainlabs/nitro-precompile-interfaces.git"
|
|
10
|
+
},
|
|
11
|
+
"files": [
|
|
12
|
+
"*.sol",
|
|
13
|
+
"README.md",
|
|
14
|
+
"LICENSE.md"
|
|
15
|
+
],
|
|
16
|
+
"bugs": {
|
|
17
|
+
"url": "https://github.com/offchainlabs/nitro-precompile-interfaces/issues"
|
|
18
|
+
},
|
|
19
|
+
"scripts": {
|
|
20
|
+
"build": "forge build",
|
|
21
|
+
"format": "forge fmt"
|
|
22
|
+
},
|
|
23
|
+
"private": false
|
|
24
|
+
}
|
|
@@ -50,11 +50,17 @@ abstract contract AbsRollupEventInbox is
|
|
|
50
50
|
|
|
51
51
|
function rollupInitialized(
|
|
52
52
|
uint256 chainId,
|
|
53
|
-
string calldata chainConfig
|
|
53
|
+
string calldata chainConfig,
|
|
54
|
+
uint256 dataCostEstimate
|
|
54
55
|
) external override onlyRollup {
|
|
55
56
|
require(bytes(chainConfig).length > 0, "EMPTY_CHAIN_CONFIG");
|
|
56
57
|
uint8 initMsgVersion = 1;
|
|
57
|
-
uint256 currentDataCost
|
|
58
|
+
uint256 currentDataCost;
|
|
59
|
+
if (dataCostEstimate != 0) {
|
|
60
|
+
currentDataCost = dataCostEstimate;
|
|
61
|
+
} else {
|
|
62
|
+
currentDataCost = _currentDataCostToReport();
|
|
63
|
+
}
|
|
58
64
|
bytes memory initMsg =
|
|
59
65
|
abi.encodePacked(chainId, initMsgVersion, currentDataCost, chainConfig);
|
|
60
66
|
uint256 num = _enqueueInitializationMsg(initMsg);
|
|
@@ -8,7 +8,6 @@ import "@openzeppelin/contracts-upgradeable/utils/Create2Upgradeable.sol";
|
|
|
8
8
|
import "@openzeppelin/contracts/proxy/transparent/ProxyAdmin.sol";
|
|
9
9
|
import "./RollupProxy.sol";
|
|
10
10
|
import "./RollupLib.sol";
|
|
11
|
-
import "./RollupAdminLogic.sol";
|
|
12
11
|
|
|
13
12
|
struct Node {
|
|
14
13
|
// Hash of the state of the chain as of this node
|
|
@@ -392,7 +391,8 @@ contract BOLDUpgradeAction {
|
|
|
392
391
|
anyTrustFastConfirmer: address(0), // fast confirmer would be migrated from the old rollup if existed
|
|
393
392
|
numBigStepLevel: NUM_BIGSTEP_LEVEL,
|
|
394
393
|
challengeGracePeriodBlocks: CHALLENGE_GRACE_PERIOD_BLOCKS,
|
|
395
|
-
bufferConfig: bufferConfig
|
|
394
|
+
bufferConfig: bufferConfig,
|
|
395
|
+
dataCostEstimate: 0
|
|
396
396
|
});
|
|
397
397
|
}
|
|
398
398
|
|
|
@@ -18,7 +18,7 @@ import "../bridge/IBridge.sol";
|
|
|
18
18
|
import "@openzeppelin/contracts/access/Ownable.sol";
|
|
19
19
|
import "@openzeppelin/contracts/proxy/transparent/ProxyAdmin.sol";
|
|
20
20
|
|
|
21
|
-
contract BridgeCreator
|
|
21
|
+
contract BridgeCreator {
|
|
22
22
|
BridgeTemplates public ethBasedTemplates;
|
|
23
23
|
BridgeTemplates public erc20BasedTemplates;
|
|
24
24
|
|
|
@@ -45,25 +45,11 @@ contract BridgeCreator is Ownable {
|
|
|
45
45
|
constructor(
|
|
46
46
|
BridgeTemplates memory _ethBasedTemplates,
|
|
47
47
|
BridgeTemplates memory _erc20BasedTemplates
|
|
48
|
-
)
|
|
48
|
+
) {
|
|
49
49
|
ethBasedTemplates = _ethBasedTemplates;
|
|
50
50
|
erc20BasedTemplates = _erc20BasedTemplates;
|
|
51
51
|
}
|
|
52
52
|
|
|
53
|
-
function updateTemplates(
|
|
54
|
-
BridgeTemplates calldata _newTemplates
|
|
55
|
-
) external onlyOwner {
|
|
56
|
-
ethBasedTemplates = _newTemplates;
|
|
57
|
-
emit TemplatesUpdated();
|
|
58
|
-
}
|
|
59
|
-
|
|
60
|
-
function updateERC20Templates(
|
|
61
|
-
BridgeTemplates calldata _newTemplates
|
|
62
|
-
) external onlyOwner {
|
|
63
|
-
erc20BasedTemplates = _newTemplates;
|
|
64
|
-
emit ERC20TemplatesUpdated();
|
|
65
|
-
}
|
|
66
|
-
|
|
67
53
|
function _createBridge(
|
|
68
54
|
bytes32 create2Salt,
|
|
69
55
|
address adminProxy,
|
package/src/rollup/Config.sol
CHANGED
|
@@ -38,6 +38,8 @@ struct Config {
|
|
|
38
38
|
uint8 numBigStepLevel;
|
|
39
39
|
uint64 challengeGracePeriodBlocks;
|
|
40
40
|
BufferConfig bufferConfig;
|
|
41
|
+
/// @notice Parent chain's base fee estimate for rollup initialization, if 0 block.basefee will be used
|
|
42
|
+
uint256 dataCostEstimate;
|
|
41
43
|
}
|
|
42
44
|
|
|
43
45
|
struct ContractDependencies {
|
|
@@ -150,10 +150,22 @@ interface IRollupAdmin {
|
|
|
150
150
|
) external;
|
|
151
151
|
|
|
152
152
|
/**
|
|
153
|
-
* @notice
|
|
154
|
-
* @
|
|
153
|
+
* @notice Decrease the base stake required for creating an assertion
|
|
154
|
+
* @dev Can only be called on permissioned chains with whitelist enabled
|
|
155
|
+
* Can only be called when there is exactly one stake on a pending assertion - this ensures a linear chain of assertions
|
|
156
|
+
* Cannot be called immediately after genesis since there are no pending assertions
|
|
157
|
+
* After decreasing the base stake the current staker will still have full stake locked up. They can release it by creating a new staker with the
|
|
158
|
+
* new smaller amount, and using it to create a child of the latest pending assertion. This will make the old staker inactive and withdrawable.
|
|
159
|
+
* @param newBaseStake New base stake to be set. Must be less than current base stake, otherwise use increaseBaseStake
|
|
160
|
+
* @param latestNextInboxPosition The nextInboxPosition of the only pending latestStakedAssertion
|
|
155
161
|
*/
|
|
156
|
-
function
|
|
162
|
+
function decreaseBaseStake(uint256 newBaseStake, uint64 latestNextInboxPosition) external;
|
|
163
|
+
|
|
164
|
+
/**
|
|
165
|
+
* @notice Increase the base stake required for creating an assertion
|
|
166
|
+
* @param newBaseStake New base stake to be set. Must be greater than current base stake, otherwise use reduceBaseStake
|
|
167
|
+
*/
|
|
168
|
+
function increaseBaseStake(
|
|
157
169
|
uint256 newBaseStake
|
|
158
170
|
) external;
|
|
159
171
|
|
|
@@ -17,5 +17,9 @@ interface IRollupEventInbox {
|
|
|
17
17
|
|
|
18
18
|
function updateRollupAddress() external;
|
|
19
19
|
|
|
20
|
-
function rollupInitialized(
|
|
20
|
+
function rollupInitialized(
|
|
21
|
+
uint256 chainId,
|
|
22
|
+
string calldata chainConfig,
|
|
23
|
+
uint256 l1BaseFeeEstimate
|
|
24
|
+
) external;
|
|
21
25
|
}
|
|
@@ -10,7 +10,6 @@ import "./RollupCore.sol";
|
|
|
10
10
|
import "../bridge/IOutbox.sol";
|
|
11
11
|
import "../bridge/ISequencerInbox.sol";
|
|
12
12
|
import "../libraries/DoubleLogicUUPSUpgradeable.sol";
|
|
13
|
-
import "@openzeppelin/contracts/proxy/beacon/UpgradeableBeacon.sol";
|
|
14
13
|
|
|
15
14
|
contract RollupAdminLogic is RollupCore, IRollupAdmin, DoubleLogicUUPSUpgradeable {
|
|
16
15
|
using AssertionStateLib for AssertionState;
|
|
@@ -36,7 +35,7 @@ contract RollupAdminLogic is RollupCore, IRollupAdmin, DoubleLogicUUPSUpgradeabl
|
|
|
36
35
|
address(connectedContracts.rollupEventInbox), true
|
|
37
36
|
);
|
|
38
37
|
connectedContracts.rollupEventInbox.rollupInitialized(
|
|
39
|
-
config.chainId, config.chainConfig
|
|
38
|
+
config.chainId, config.chainConfig, config.dataCostEstimate
|
|
40
39
|
);
|
|
41
40
|
}
|
|
42
41
|
|
|
@@ -264,20 +263,80 @@ contract RollupAdminLogic is RollupCore, IRollupAdmin, DoubleLogicUUPSUpgradeabl
|
|
|
264
263
|
}
|
|
265
264
|
|
|
266
265
|
/**
|
|
267
|
-
* @
|
|
268
|
-
* @param newBaseStake minimum amount of stake required
|
|
266
|
+
* @inheritdoc IRollupAdmin
|
|
269
267
|
*/
|
|
270
|
-
function
|
|
271
|
-
uint256 newBaseStake
|
|
268
|
+
function decreaseBaseStake(
|
|
269
|
+
uint256 newBaseStake,
|
|
270
|
+
uint64 latestNextInboxPosition
|
|
272
271
|
) external override {
|
|
273
|
-
|
|
272
|
+
require(newBaseStake < baseStake, "BASE_STAKE_NOT_DECREASED");
|
|
273
|
+
|
|
274
|
+
// if we're decreasing the stake we need to be more careful not to allow a malicious party
|
|
274
275
|
// to withdraw some (up to the difference between baseStake and newBaseStake) honest funds from this contract
|
|
275
276
|
// The sequence of events is as follows:
|
|
276
277
|
// 1. The malicious party creates a sibling assertion, stake size is currently S
|
|
277
|
-
// 2. The base stake is then
|
|
278
|
+
// 2. The base stake is then decreased to S'
|
|
278
279
|
// 3. The malicious party uses a different address to create a child of the malicious assertion, using stake size S'
|
|
279
280
|
// 4. This allows the malicious party to withdraw the stake S, since assertions with children set the staker to "inactive"
|
|
280
|
-
|
|
281
|
+
|
|
282
|
+
// for this reason the base stake can only be decreased on permissioned chains where the creation of pending assertions can be controlled
|
|
283
|
+
// In a permissionless setting, it's possible for a staker to DOS base stake decrease by creating themselves as a staker.
|
|
284
|
+
// we can do a basic safety check to ensure that we're in the permissioned setting by checking that there is only one
|
|
285
|
+
// staker on a pending assertion. It could be that we're in the permissionless setting and that pending assertion is a malicious one
|
|
286
|
+
// but we assume that the rollup admin will ensure that's not the case before calling this function by checking that a staker they trust is
|
|
287
|
+
// on a correct pending assertion.
|
|
288
|
+
require(validatorWhitelistDisabled == false, "DECREASE_ONLY_FOR_PERMISSIONED_CHAINS");
|
|
289
|
+
|
|
290
|
+
bytes32 currentConfigHash = RollupLib.configHash({
|
|
291
|
+
wasmModuleRoot: wasmModuleRoot,
|
|
292
|
+
requiredStake: baseStake,
|
|
293
|
+
challengeManager: address(challengeManager),
|
|
294
|
+
confirmPeriodBlocks: confirmPeriodBlocks,
|
|
295
|
+
nextInboxPosition: uint64(latestNextInboxPosition)
|
|
296
|
+
});
|
|
297
|
+
|
|
298
|
+
uint256 pendingCount = 0;
|
|
299
|
+
uint64 nStakers = stakerCount();
|
|
300
|
+
for (uint64 i = 0; i < nStakers; i++) {
|
|
301
|
+
bytes32 latestStaked = latestStakedAssertion(getStakerAddress(i));
|
|
302
|
+
AssertionNode storage latestAssertion = getAssertionStorage(latestStaked);
|
|
303
|
+
if (latestAssertion.status == AssertionStatus.Pending) {
|
|
304
|
+
// check that in overwriting the config hash, we'll only be updating the required stake field
|
|
305
|
+
require(latestAssertion.configHash == currentConfigHash, "EXPIRED_CONFIG_HASH");
|
|
306
|
+
// In order to support transitioning from permissioned to permissionless, we need to ensure that after the transition
|
|
307
|
+
// a malicious party cannot created decreased stake assertions as children of historical (even confirmed) assertions.
|
|
308
|
+
// To avoid this an additional check has been added in RollupUserLogic.createNewAssertion to ensure that the base stake
|
|
309
|
+
// is always >= the required stake of the prev assertion. Having added this check we also need to override the config hash of
|
|
310
|
+
// the latest staked assertion so that children can be created from it in the normal way. We do that below
|
|
311
|
+
latestAssertion.configHash = RollupLib.configHash({
|
|
312
|
+
wasmModuleRoot: wasmModuleRoot,
|
|
313
|
+
requiredStake: newBaseStake,
|
|
314
|
+
challengeManager: address(challengeManager),
|
|
315
|
+
confirmPeriodBlocks: confirmPeriodBlocks,
|
|
316
|
+
nextInboxPosition: uint64(latestNextInboxPosition)
|
|
317
|
+
});
|
|
318
|
+
|
|
319
|
+
pendingCount++;
|
|
320
|
+
}
|
|
321
|
+
|
|
322
|
+
require(pendingCount <= 1, "TOO_MANY_PENDING_STAKERS");
|
|
323
|
+
}
|
|
324
|
+
|
|
325
|
+
// we need to have a non zero pending count to ensure that exactly one config hash was updated
|
|
326
|
+
// if no config hashes are updated then no new assertions will be created, since they will all trigger STAKE_TOO_LOW
|
|
327
|
+
require(pendingCount == 1, "PENDING_ASSERTION_NOT_UPDATED");
|
|
328
|
+
|
|
329
|
+
baseStake = newBaseStake;
|
|
330
|
+
emit BaseStakeSet(newBaseStake);
|
|
331
|
+
}
|
|
332
|
+
|
|
333
|
+
/**
|
|
334
|
+
* @inheritdoc IRollupAdmin
|
|
335
|
+
*/
|
|
336
|
+
function increaseBaseStake(
|
|
337
|
+
uint256 newBaseStake
|
|
338
|
+
) external override {
|
|
339
|
+
require(newBaseStake > baseStake, "BASE_STAKE_NOT_INCREASED");
|
|
281
340
|
baseStake = newBaseStake;
|
|
282
341
|
emit BaseStakeSet(newBaseStake);
|
|
283
342
|
// previously: emit OwnerFunctionCalled(12);
|
|
@@ -171,7 +171,7 @@ abstract contract RollupCore is IRollupCore, PausableUpgradeable {
|
|
|
171
171
|
*/
|
|
172
172
|
function getStakerAddress(
|
|
173
173
|
uint64 stakerNum
|
|
174
|
-
)
|
|
174
|
+
) public view override returns (address) {
|
|
175
175
|
return _stakerList[stakerNum];
|
|
176
176
|
}
|
|
177
177
|
|
|
@@ -576,6 +576,11 @@ abstract contract RollupCore is IRollupCore, PausableUpgradeable {
|
|
|
576
576
|
}
|
|
577
577
|
}
|
|
578
578
|
|
|
579
|
+
/**
|
|
580
|
+
* @notice Returns an empty genesis assertion hash
|
|
581
|
+
* @dev In chains that were created with a non-empty genesis state, this function
|
|
582
|
+
* will return a different value than the actual genesis assertion hash.
|
|
583
|
+
*/
|
|
579
584
|
function genesisAssertionHash() external pure returns (bytes32) {
|
|
580
585
|
GlobalState memory emptyGlobalState;
|
|
581
586
|
AssertionState memory emptyAssertionState =
|
|
@@ -13,6 +13,8 @@ import "@openzeppelin/contracts/proxy/transparent/TransparentUpgradeableProxy.so
|
|
|
13
13
|
import "@openzeppelin/contracts/access/Ownable.sol";
|
|
14
14
|
import {DeployHelper} from "./DeployHelper.sol";
|
|
15
15
|
import {SafeERC20, IERC20} from "@openzeppelin/contracts/token/ERC20/utils/SafeERC20.sol";
|
|
16
|
+
import {OneStepProofEntry, IOneStepProofEntry, IOneStepProver} from "../osp/OneStepProofEntry.sol";
|
|
17
|
+
import {OneStepProverHostIo} from "../osp/OneStepProverHostIo.sol";
|
|
16
18
|
|
|
17
19
|
contract RollupCreator is Ownable {
|
|
18
20
|
using SafeERC20 for IERC20;
|
|
@@ -42,6 +44,7 @@ contract RollupCreator is Ownable {
|
|
|
42
44
|
address[] batchPosters;
|
|
43
45
|
address batchPosterManager;
|
|
44
46
|
IFeeTokenPricer feeTokenPricer;
|
|
47
|
+
address customOsp;
|
|
45
48
|
}
|
|
46
49
|
|
|
47
50
|
BridgeCreator public bridgeCreator;
|
|
@@ -55,7 +58,29 @@ contract RollupCreator is Ownable {
|
|
|
55
58
|
|
|
56
59
|
DeployHelper public l2FactoriesDeployer;
|
|
57
60
|
|
|
58
|
-
constructor(
|
|
61
|
+
constructor(
|
|
62
|
+
address initialOwner,
|
|
63
|
+
BridgeCreator _bridgeCreator,
|
|
64
|
+
IOneStepProofEntry _osp,
|
|
65
|
+
IEdgeChallengeManager _challengeManagerLogic,
|
|
66
|
+
IRollupAdmin _rollupAdminLogic,
|
|
67
|
+
IRollupUser _rollupUserLogic,
|
|
68
|
+
IUpgradeExecutor _upgradeExecutorLogic,
|
|
69
|
+
address _validatorWalletCreator,
|
|
70
|
+
DeployHelper _l2FactoriesDeployer
|
|
71
|
+
) Ownable() {
|
|
72
|
+
setTemplates(
|
|
73
|
+
_bridgeCreator,
|
|
74
|
+
_osp,
|
|
75
|
+
_challengeManagerLogic,
|
|
76
|
+
_rollupAdminLogic,
|
|
77
|
+
_rollupUserLogic,
|
|
78
|
+
_upgradeExecutorLogic,
|
|
79
|
+
_validatorWalletCreator,
|
|
80
|
+
_l2FactoriesDeployer
|
|
81
|
+
);
|
|
82
|
+
_transferOwnership(initialOwner);
|
|
83
|
+
}
|
|
59
84
|
|
|
60
85
|
// creator receives back excess fees (for deploying L2 factories) so it can refund the caller
|
|
61
86
|
receive() external payable {}
|
|
@@ -69,7 +94,7 @@ contract RollupCreator is Ownable {
|
|
|
69
94
|
IUpgradeExecutor _upgradeExecutorLogic,
|
|
70
95
|
address _validatorWalletCreator,
|
|
71
96
|
DeployHelper _l2FactoriesDeployer
|
|
72
|
-
)
|
|
97
|
+
) public onlyOwner {
|
|
73
98
|
bridgeCreator = _bridgeCreator;
|
|
74
99
|
osp = _osp;
|
|
75
100
|
challengeManagerTemplate = _challengeManagerLogic;
|
|
@@ -85,7 +110,8 @@ contract RollupCreator is Ownable {
|
|
|
85
110
|
function createChallengeManager(
|
|
86
111
|
address rollupAddr,
|
|
87
112
|
address proxyAdminAddr,
|
|
88
|
-
Config memory config
|
|
113
|
+
Config memory config,
|
|
114
|
+
address customOsp
|
|
89
115
|
) internal returns (IEdgeChallengeManager) {
|
|
90
116
|
IEdgeChallengeManager challengeManager = IEdgeChallengeManager(
|
|
91
117
|
address(
|
|
@@ -98,7 +124,7 @@ contract RollupCreator is Ownable {
|
|
|
98
124
|
challengeManager.initialize({
|
|
99
125
|
_assertionChain: IAssertionChain(rollupAddr),
|
|
100
126
|
_challengePeriodBlocks: config.confirmPeriodBlocks,
|
|
101
|
-
_oneStepProofEntry: osp,
|
|
127
|
+
_oneStepProofEntry: customOsp == address(0) ? osp : IOneStepProofEntry(customOsp),
|
|
102
128
|
layerZeroBlockEdgeHeight: config.layerZeroBlockEdgeHeight,
|
|
103
129
|
layerZeroBigStepEdgeHeight: config.layerZeroBigStepEdgeHeight,
|
|
104
130
|
layerZeroSmallStepEdgeHeight: config.layerZeroSmallStepEdgeHeight,
|
|
@@ -132,6 +158,8 @@ contract RollupCreator is Ownable {
|
|
|
132
158
|
* - maxFeePerGasForRetryables price bid for L2 execution.
|
|
133
159
|
* - batchPosters The list of batch poster addresses, not used when set to empty list
|
|
134
160
|
* - batchPosterManager The address which has the ability to rotate batch poster keys
|
|
161
|
+
* - feeTokenPricer Fee token pricer contract for converting custom fee token to ETH
|
|
162
|
+
* - customOsp Custom OSP address, if set to address(0) the default OSP will be used
|
|
135
163
|
* @return The address of the newly created rollup
|
|
136
164
|
*/
|
|
137
165
|
function createRollup(
|
|
@@ -191,8 +219,9 @@ contract RollupCreator is Ownable {
|
|
|
191
219
|
deployParams.feeTokenPricer
|
|
192
220
|
);
|
|
193
221
|
|
|
194
|
-
IEdgeChallengeManager challengeManager =
|
|
195
|
-
|
|
222
|
+
IEdgeChallengeManager challengeManager = createChallengeManager(
|
|
223
|
+
address(rollup), address(proxyAdmin), deployParams.config, deployParams.customOsp
|
|
224
|
+
);
|
|
196
225
|
|
|
197
226
|
// deploy and init upgrade executor
|
|
198
227
|
address upgradeExecutor = _deployUpgradeExecutor(deployParams.config.owner, proxyAdmin);
|
|
@@ -184,6 +184,12 @@ contract RollupUserLogic is RollupCore, UUPSNotUpgradeable, IRollupUser {
|
|
|
184
184
|
"INSUFFICIENT_STAKE"
|
|
185
185
|
);
|
|
186
186
|
|
|
187
|
+
// the new assertion will be created with requiredStake equal to the baseStake
|
|
188
|
+
// however, for the reasons explained in RollupAdminLogic.decreaseBaseStake we cannot allow an assertion to be created
|
|
189
|
+
// base stake than it's prev. In order to reduce the base stake the config hash of the latest assertion
|
|
190
|
+
// must be overridden, this occurs in the RollupAdminLogic.decreaseBaseStake function
|
|
191
|
+
require(baseStake >= assertion.beforeStateData.configData.requiredStake, "STAKE_TOO_LOW");
|
|
192
|
+
|
|
187
193
|
bytes32 prevAssertion = RollupLib.assertionHash(
|
|
188
194
|
assertion.beforeStateData.prevPrevAssertionHash,
|
|
189
195
|
assertion.beforeState,
|