@arbitrum/nitro-contracts 3.0.0-alpha.2 → 3.0.0-beta.1
Sign up to get free protection for your applications and to get access to all the features.
- package/LICENSE.md +1 -1
- package/README.md +3 -3
- package/build/contracts/@openzeppelin/contracts/access/Ownable.sol/Ownable.dbg.json +1 -1
- package/build/contracts/@openzeppelin/contracts/interfaces/draft-IERC1822.sol/IERC1822Proxiable.dbg.json +1 -1
- package/build/contracts/@openzeppelin/contracts/proxy/ERC1967/ERC1967Proxy.sol/ERC1967Proxy.dbg.json +1 -1
- package/build/contracts/@openzeppelin/contracts/proxy/ERC1967/ERC1967Upgrade.sol/ERC1967Upgrade.dbg.json +1 -1
- package/build/contracts/@openzeppelin/contracts/proxy/Proxy.sol/Proxy.dbg.json +1 -1
- package/build/contracts/@openzeppelin/contracts/proxy/beacon/IBeacon.sol/IBeacon.dbg.json +1 -1
- package/build/contracts/@openzeppelin/contracts/proxy/beacon/UpgradeableBeacon.sol/UpgradeableBeacon.dbg.json +1 -1
- package/build/contracts/@openzeppelin/contracts/proxy/transparent/ProxyAdmin.sol/ProxyAdmin.dbg.json +1 -1
- package/build/contracts/@openzeppelin/contracts/proxy/transparent/TransparentUpgradeableProxy.sol/TransparentUpgradeableProxy.dbg.json +1 -1
- package/build/contracts/@openzeppelin/contracts/proxy/utils/UUPSUpgradeable.sol/UUPSUpgradeable.dbg.json +1 -1
- package/build/contracts/@openzeppelin/contracts/security/ReentrancyGuard.sol/ReentrancyGuard.dbg.json +1 -1
- package/build/contracts/@openzeppelin/contracts/token/ERC20/ERC20.sol/ERC20.dbg.json +1 -1
- package/build/contracts/@openzeppelin/contracts/token/ERC20/IERC20.sol/IERC20.dbg.json +1 -1
- package/build/contracts/@openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata.sol/IERC20Metadata.dbg.json +1 -1
- package/build/contracts/@openzeppelin/contracts/token/ERC20/extensions/draft-IERC20Permit.sol/IERC20Permit.dbg.json +1 -1
- package/build/contracts/@openzeppelin/contracts/token/ERC20/utils/SafeERC20.sol/SafeERC20.dbg.json +1 -1
- package/build/contracts/@openzeppelin/contracts/utils/Address.sol/Address.dbg.json +1 -1
- package/build/contracts/@openzeppelin/contracts/utils/Context.sol/Context.dbg.json +1 -1
- package/build/contracts/@openzeppelin/contracts/utils/Create2.sol/Create2.dbg.json +1 -1
- package/build/contracts/@openzeppelin/contracts/utils/StorageSlot.sol/StorageSlot.dbg.json +1 -1
- package/build/contracts/@openzeppelin/contracts/utils/Strings.sol/Strings.dbg.json +1 -1
- package/build/contracts/@openzeppelin/contracts/utils/cryptography/ECDSA.sol/ECDSA.dbg.json +4 -0
- package/build/contracts/@openzeppelin/contracts/utils/cryptography/ECDSA.sol/ECDSA.json +10 -0
- package/build/contracts/@openzeppelin/contracts-upgradeable/access/AccessControlEnumerableUpgradeable.sol/AccessControlEnumerableUpgradeable.dbg.json +4 -0
- package/build/contracts/@openzeppelin/contracts-upgradeable/access/AccessControlEnumerableUpgradeable.sol/AccessControlEnumerableUpgradeable.json +271 -0
- 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 +4 -0
- package/build/contracts/@openzeppelin/contracts-upgradeable/access/IAccessControlEnumerableUpgradeable.sol/IAccessControlEnumerableUpgradeable.json +226 -0
- package/build/contracts/@openzeppelin/contracts-upgradeable/access/IAccessControlUpgradeable.sol/IAccessControlUpgradeable.dbg.json +1 -1
- package/build/contracts/@openzeppelin/contracts-upgradeable/access/OwnableUpgradeable.sol/OwnableUpgradeable.dbg.json +1 -1
- package/build/contracts/@openzeppelin/contracts-upgradeable/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 +4 -0
- package/build/contracts/@openzeppelin/contracts-upgradeable/token/ERC20/ERC20Upgradeable.sol/ERC20Upgradeable.json +294 -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/token/ERC20/extensions/ERC20BurnableUpgradeable.sol/ERC20BurnableUpgradeable.dbg.json +4 -0
- package/build/contracts/@openzeppelin/contracts-upgradeable/token/ERC20/extensions/ERC20BurnableUpgradeable.sol/ERC20BurnableUpgradeable.json +325 -0
- package/build/contracts/@openzeppelin/contracts-upgradeable/token/ERC20/extensions/IERC20MetadataUpgradeable.sol/IERC20MetadataUpgradeable.dbg.json +4 -0
- package/build/contracts/@openzeppelin/contracts-upgradeable/token/ERC20/extensions/IERC20MetadataUpgradeable.sol/IERC20MetadataUpgradeable.json +233 -0
- package/build/contracts/@openzeppelin/contracts-upgradeable/utils/AddressUpgradeable.sol/AddressUpgradeable.dbg.json +1 -1
- package/build/contracts/@openzeppelin/contracts-upgradeable/utils/ContextUpgradeable.sol/ContextUpgradeable.dbg.json +1 -1
- package/build/contracts/@openzeppelin/contracts-upgradeable/utils/Create2Upgradeable.sol/Create2Upgradeable.dbg.json +1 -1
- package/build/contracts/@openzeppelin/contracts-upgradeable/utils/StorageSlotUpgradeable.sol/StorageSlotUpgradeable.dbg.json +1 -1
- package/build/contracts/@openzeppelin/contracts-upgradeable/utils/StringsUpgradeable.sol/StringsUpgradeable.dbg.json +1 -1
- package/build/contracts/@openzeppelin/contracts-upgradeable/utils/cryptography/ECDSAUpgradeable.sol/ECDSAUpgradeable.dbg.json +4 -0
- package/build/contracts/@openzeppelin/contracts-upgradeable/utils/cryptography/ECDSAUpgradeable.sol/ECDSAUpgradeable.json +10 -0
- package/build/contracts/@openzeppelin/contracts-upgradeable/utils/cryptography/draft-EIP712Upgradeable.sol/EIP712Upgradeable.dbg.json +4 -0
- package/build/contracts/@openzeppelin/contracts-upgradeable/utils/cryptography/draft-EIP712Upgradeable.sol/EIP712Upgradeable.json +24 -0
- package/build/contracts/@openzeppelin/contracts-upgradeable/utils/introspection/ERC165Upgradeable.sol/ERC165Upgradeable.dbg.json +1 -1
- package/build/contracts/@openzeppelin/contracts-upgradeable/utils/introspection/IERC165Upgradeable.sol/IERC165Upgradeable.dbg.json +1 -1
- package/build/contracts/@openzeppelin/contracts-upgradeable/utils/structs/EnumerableSetUpgradeable.sol/EnumerableSetUpgradeable.dbg.json +1 -1
- package/build/contracts/src/assertionStakingPool/AbsBoldStakingPool.sol/AbsBoldStakingPool.dbg.json +1 -1
- package/build/contracts/src/assertionStakingPool/AssertionStakingPool.sol/AssertionStakingPool.dbg.json +1 -1
- package/build/contracts/src/assertionStakingPool/AssertionStakingPoolCreator.sol/AssertionStakingPoolCreator.dbg.json +1 -1
- package/build/contracts/src/assertionStakingPool/EdgeStakingPool.sol/EdgeStakingPool.dbg.json +1 -1
- package/build/contracts/src/assertionStakingPool/EdgeStakingPoolCreator.sol/EdgeStakingPoolCreator.dbg.json +1 -1
- package/build/contracts/src/assertionStakingPool/StakingPoolCreatorUtils.sol/StakingPoolCreatorUtils.dbg.json +1 -1
- package/build/contracts/src/assertionStakingPool/interfaces/IAbsBoldStakingPool.sol/IAbsBoldStakingPool.dbg.json +1 -1
- package/build/contracts/src/assertionStakingPool/interfaces/IAssertionStakingPool.sol/IAssertionStakingPool.dbg.json +1 -1
- package/build/contracts/src/assertionStakingPool/interfaces/IAssertionStakingPoolCreator.sol/IAssertionStakingPoolCreator.dbg.json +1 -1
- package/build/contracts/src/assertionStakingPool/interfaces/IEdgeStakingPool.sol/IEdgeStakingPool.dbg.json +1 -1
- package/build/contracts/src/assertionStakingPool/interfaces/IEdgeStakingPoolCreator.sol/IEdgeStakingPoolCreator.dbg.json +1 -1
- package/build/contracts/src/bridge/AbsBridge.sol/AbsBridge.dbg.json +1 -1
- package/build/contracts/src/bridge/AbsInbox.sol/AbsInbox.dbg.json +1 -1
- package/build/contracts/src/bridge/AbsOutbox.sol/AbsOutbox.dbg.json +1 -1
- package/build/contracts/src/bridge/Bridge.sol/Bridge.dbg.json +1 -1
- package/build/contracts/src/bridge/Bridge.sol/Bridge.json +2 -2
- package/build/contracts/src/bridge/DelayBuffer.sol/DelayBuffer.dbg.json +1 -1
- package/build/contracts/src/bridge/ERC20Bridge.sol/ERC20Bridge.dbg.json +1 -1
- package/build/contracts/src/bridge/ERC20Bridge.sol/ERC20Bridge.json +2 -2
- package/build/contracts/src/bridge/ERC20Inbox.sol/ERC20Inbox.dbg.json +1 -1
- package/build/contracts/src/bridge/ERC20Outbox.sol/ERC20Outbox.dbg.json +1 -1
- package/build/contracts/src/bridge/GasRefunder.sol/GasRefunder.dbg.json +1 -1
- package/build/contracts/src/bridge/IBridge.sol/IBridge.dbg.json +1 -1
- package/build/contracts/src/bridge/IDelayedMessageProvider.sol/IDelayedMessageProvider.dbg.json +1 -1
- package/build/contracts/src/bridge/IERC20Bridge.sol/IERC20Bridge.dbg.json +1 -1
- package/build/contracts/src/bridge/IERC20Inbox.sol/IERC20Inbox.dbg.json +1 -1
- package/build/contracts/src/bridge/IEthBridge.sol/IEthBridge.dbg.json +1 -1
- package/build/contracts/src/bridge/IInbox.sol/IInbox.dbg.json +1 -1
- package/build/contracts/src/bridge/IInboxBase.sol/IInboxBase.dbg.json +1 -1
- package/build/contracts/src/bridge/IOutbox.sol/IOutbox.dbg.json +1 -1
- package/build/contracts/src/bridge/IOwnable.sol/IOwnable.dbg.json +1 -1
- package/build/contracts/src/bridge/ISequencerInbox.sol/ISequencerInbox.dbg.json +1 -1
- package/build/contracts/src/bridge/Inbox.sol/Inbox.dbg.json +1 -1
- package/build/contracts/src/bridge/Messages.sol/Messages.dbg.json +1 -1
- package/build/contracts/src/bridge/Outbox.sol/Outbox.dbg.json +1 -1
- package/build/contracts/src/bridge/SequencerInbox.sol/SequencerInbox.dbg.json +1 -1
- package/build/contracts/src/chain/CacheManager.sol/CacheManager.dbg.json +1 -1
- 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/ChallengeEdgeLib.sol/ChallengeEdgeLib.dbg.json +1 -1
- package/build/contracts/src/challengeV2/libraries/EdgeChallengeManagerLib.sol/EdgeChallengeManagerLib.dbg.json +1 -1
- package/build/contracts/src/challengeV2/libraries/MerkleTreeAccumulatorLib.sol/MerkleTreeAccumulatorLib.dbg.json +1 -1
- package/build/contracts/src/challengeV2/libraries/UintUtilsLib.sol/UintUtilsLib.dbg.json +1 -1
- package/build/contracts/src/express-lane-auction/Balance.sol/BalanceLib.dbg.json +4 -0
- package/build/contracts/src/express-lane-auction/Balance.sol/BalanceLib.json +10 -0
- package/build/contracts/src/express-lane-auction/Burner.sol/Burner.dbg.json +4 -0
- package/build/contracts/src/express-lane-auction/Burner.sol/Burner.json +47 -0
- package/build/contracts/src/express-lane-auction/ELCRound.sol/LatestELCRoundsLib.dbg.json +4 -0
- package/build/contracts/src/express-lane-auction/ELCRound.sol/LatestELCRoundsLib.json +10 -0
- package/build/contracts/src/express-lane-auction/ExpressLaneAuction.sol/ExpressLaneAuction.dbg.json +4 -0
- package/build/contracts/src/express-lane-auction/ExpressLaneAuction.sol/ExpressLaneAuction.json +1601 -0
- package/build/contracts/src/express-lane-auction/IExpressLaneAuction.sol/IExpressLaneAuction.dbg.json +4 -0
- package/build/contracts/src/express-lane-auction/IExpressLaneAuction.sol/IExpressLaneAuction.json +1296 -0
- package/build/contracts/src/express-lane-auction/RoundTimingInfo.sol/RoundTimingInfoLib.dbg.json +4 -0
- package/build/contracts/src/express-lane-auction/RoundTimingInfo.sol/RoundTimingInfoLib.json +10 -0
- package/build/contracts/src/libraries/AddressAliasHelper.sol/AddressAliasHelper.dbg.json +1 -1
- package/build/contracts/src/libraries/AdminFallbackProxy.sol/AdminFallbackProxy.dbg.json +1 -1
- package/build/contracts/src/libraries/AdminFallbackProxy.sol/DoubleLogicERC1967Upgrade.dbg.json +1 -1
- package/build/contracts/src/libraries/ArbitrumChecker.sol/ArbitrumChecker.dbg.json +1 -1
- package/build/contracts/src/libraries/CallerChecker.sol/CallerChecker.dbg.json +1 -1
- package/build/contracts/src/libraries/CryptographyPrimitives.sol/CryptographyPrimitives.dbg.json +1 -1
- package/build/contracts/src/libraries/DecimalsConverterHelper.sol/DecimalsConverterHelper.dbg.json +1 -1
- package/build/contracts/src/libraries/DelegateCallAware.sol/DelegateCallAware.dbg.json +1 -1
- package/build/contracts/src/libraries/DoubleLogicUUPSUpgradeable.sol/DoubleLogicUUPSUpgradeable.dbg.json +1 -1
- package/build/contracts/src/libraries/GasRefundEnabled.sol/GasRefundEnabled.dbg.json +1 -1
- package/build/contracts/src/libraries/IGasRefunder.sol/IGasRefunder.dbg.json +1 -1
- package/build/contracts/src/libraries/IReader4844.sol/IReader4844.dbg.json +1 -1
- package/build/contracts/src/libraries/MerkleLib.sol/MerkleLib.dbg.json +1 -1
- package/build/contracts/src/libraries/UUPSNotUpgradeable.sol/UUPSNotUpgradeable.dbg.json +1 -1
- package/build/contracts/src/mocks/Benchmarks.sol/Benchmarks.dbg.json +1 -1
- package/build/contracts/src/mocks/BridgeStub.sol/BridgeStub.dbg.json +1 -1
- package/build/contracts/src/mocks/BridgeUnproxied.sol/BridgeUnproxied.dbg.json +1 -1
- package/build/contracts/src/mocks/BridgeUnproxied.sol/BridgeUnproxied.json +2 -2
- package/build/contracts/src/mocks/CreateTest.sol/CreateTest.dbg.json +1 -1
- package/build/contracts/src/mocks/InboxStub.sol/InboxStub.dbg.json +1 -1
- package/build/contracts/src/mocks/MerkleTreeAccess.sol/MerkleTreeAccess.dbg.json +1 -1
- package/build/contracts/src/mocks/MockRollupEventInbox.sol/MockRollupEventInbox.dbg.json +1 -1
- package/build/contracts/src/mocks/MultiCallTest.sol/MultiCallTest.dbg.json +1 -1
- package/build/contracts/src/mocks/PendingBlkTimeAndNrAdvanceCheck.sol/PendingBlkTimeAndNrAdvanceCheck.dbg.json +1 -1
- package/build/contracts/src/mocks/Program.sol/ProgramTest.dbg.json +1 -1
- package/build/contracts/src/mocks/ProxyAdminForBinding.sol/ProxyAdminForBinding.dbg.json +1 -1
- package/build/contracts/src/mocks/SdkStorage.sol/SdkStorage.dbg.json +1 -1
- package/build/contracts/src/mocks/SequencerInboxBlobMock.sol/SequencerInboxBlobMock.dbg.json +1 -1
- package/build/contracts/src/mocks/SequencerInboxStub.sol/SequencerInboxStub.dbg.json +1 -1
- package/build/contracts/src/mocks/Simple.sol/Simple.dbg.json +1 -1
- package/build/contracts/src/mocks/SimpleCacheManager.sol/SimpleCacheManager.dbg.json +1 -1
- package/build/contracts/src/mocks/SimpleOneStepProofEntry.sol/SimpleOneStepProofEntry.dbg.json +1 -1
- package/build/contracts/src/mocks/SimpleProxy.sol/SimpleProxy.dbg.json +1 -1
- package/build/contracts/src/mocks/TestWETH9.sol/IWETH9.dbg.json +1 -1
- package/build/contracts/src/mocks/TestWETH9.sol/TestWETH9.dbg.json +1 -1
- package/build/contracts/src/mocks/UpgradeExecutorMock.sol/UpgradeExecutorMock.dbg.json +1 -1
- package/build/contracts/src/node-interface/NodeInterface.sol/NodeInterface.dbg.json +1 -1
- package/build/contracts/src/node-interface/NodeInterfaceDebug.sol/NodeInterfaceDebug.dbg.json +1 -1
- package/build/contracts/src/osp/HashProofHelper.sol/HashProofHelper.dbg.json +1 -1
- package/build/contracts/src/osp/IOneStepProofEntry.sol/IOneStepProofEntry.dbg.json +1 -1
- package/build/contracts/src/osp/IOneStepProofEntry.sol/OneStepProofEntryLib.dbg.json +1 -1
- package/build/contracts/src/osp/IOneStepProver.sol/IOneStepProver.dbg.json +1 -1
- package/build/contracts/src/osp/OneStepProofEntry.sol/OneStepProofEntry.dbg.json +1 -1
- package/build/contracts/src/osp/OneStepProver0.sol/OneStepProver0.dbg.json +1 -1
- package/build/contracts/src/osp/OneStepProverHostIo.sol/OneStepProverHostIo.dbg.json +1 -1
- package/build/contracts/src/osp/OneStepProverMath.sol/OneStepProverMath.dbg.json +1 -1
- package/build/contracts/src/osp/OneStepProverMemory.sol/OneStepProverMemory.dbg.json +1 -1
- package/build/contracts/src/precompiles/ArbAddressTable.sol/ArbAddressTable.dbg.json +1 -1
- package/build/contracts/src/precompiles/ArbAggregator.sol/ArbAggregator.dbg.json +1 -1
- package/build/contracts/src/precompiles/ArbBLS.sol/ArbBLS.dbg.json +1 -1
- package/build/contracts/src/precompiles/ArbDebug.sol/ArbDebug.dbg.json +1 -1
- package/build/contracts/src/precompiles/ArbFunctionTable.sol/ArbFunctionTable.dbg.json +1 -1
- package/build/contracts/src/precompiles/ArbGasInfo.sol/ArbGasInfo.dbg.json +1 -1
- package/build/contracts/src/precompiles/ArbInfo.sol/ArbInfo.dbg.json +1 -1
- package/build/contracts/src/precompiles/ArbOwner.sol/ArbOwner.dbg.json +1 -1
- package/build/contracts/src/precompiles/ArbOwnerPublic.sol/ArbOwnerPublic.dbg.json +1 -1
- package/build/contracts/src/precompiles/ArbRetryableTx.sol/ArbRetryableTx.dbg.json +1 -1
- package/build/contracts/src/precompiles/ArbStatistics.sol/ArbStatistics.dbg.json +1 -1
- package/build/contracts/src/precompiles/ArbSys.sol/ArbSys.dbg.json +1 -1
- package/build/contracts/src/precompiles/ArbWasm.sol/ArbWasm.dbg.json +1 -1
- package/build/contracts/src/precompiles/ArbWasmCache.sol/ArbWasmCache.dbg.json +1 -1
- package/build/contracts/src/precompiles/ArbosActs.sol/ArbosActs.dbg.json +1 -1
- package/build/contracts/src/precompiles/ArbosTest.sol/ArbosTest.dbg.json +1 -1
- package/build/contracts/src/rollup/AbsRollupEventInbox.sol/AbsRollupEventInbox.dbg.json +1 -1
- package/build/contracts/src/rollup/Assertion.sol/AssertionNodeLib.dbg.json +1 -1
- package/build/contracts/src/rollup/AssertionState.sol/AssertionStateLib.dbg.json +1 -1
- package/build/contracts/src/rollup/BOLDUpgradeAction.sol/BOLDUpgradeAction.dbg.json +1 -1
- package/build/contracts/src/rollup/BOLDUpgradeAction.sol/BOLDUpgradeAction.json +84 -32
- 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/IOldRollup.json +45 -0
- 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 -2
- package/build/contracts/src/rollup/DeployHelper.sol/DeployHelper.dbg.json +1 -1
- package/build/contracts/src/rollup/ERC20RollupEventInbox.sol/ERC20RollupEventInbox.dbg.json +1 -1
- package/build/contracts/src/rollup/FactoryDeployerHelper.sol/FactoryDeployerHelper.dbg.json +1 -1
- package/build/contracts/src/rollup/FactoryDeployerHelper.sol/IDeployHelper.dbg.json +1 -1
- package/build/contracts/src/rollup/FactoryDeployerHelper.sol/IERC20.dbg.json +1 -1
- package/build/contracts/src/rollup/FactoryDeployerHelper.sol/IERC20Bridge.dbg.json +1 -1
- package/build/contracts/src/rollup/FactoryDeployerHelper.sol/IInboxBase.dbg.json +1 -1
- package/build/contracts/src/rollup/IRollupAdmin.sol/IRollupAdmin.dbg.json +1 -1
- package/build/contracts/src/rollup/IRollupAdmin.sol/IRollupAdmin.json +10 -0
- package/build/contracts/src/rollup/IRollupCore.sol/IRollupCore.dbg.json +1 -1
- package/build/contracts/src/rollup/IRollupEventInbox.sol/IRollupEventInbox.dbg.json +1 -1
- package/build/contracts/src/rollup/IRollupLogic.sol/IRollupUser.dbg.json +1 -1
- package/build/contracts/src/rollup/RollupAdminLogic.sol/RollupAdminLogic.dbg.json +1 -1
- package/build/contracts/src/rollup/RollupAdminLogic.sol/RollupAdminLogic.json +12 -2
- package/build/contracts/src/rollup/RollupCore.sol/RollupCore.dbg.json +1 -1
- package/build/contracts/src/rollup/RollupCreator.sol/RollupCreator.dbg.json +1 -1
- package/build/contracts/src/rollup/RollupCreator.sol/RollupCreator.json +12 -2
- package/build/contracts/src/rollup/RollupEventInbox.sol/RollupEventInbox.dbg.json +1 -1
- package/build/contracts/src/rollup/RollupLib.sol/RollupLib.dbg.json +1 -1
- package/build/contracts/src/rollup/RollupProxy.sol/RollupProxy.dbg.json +1 -1
- package/build/contracts/src/rollup/RollupProxy.sol/RollupProxy.json +12 -2
- package/build/contracts/src/rollup/ValidatorWallet.sol/ValidatorWallet.dbg.json +1 -1
- package/build/contracts/src/rollup/ValidatorWalletCreator.sol/ValidatorWalletCreator.dbg.json +1 -1
- package/build/contracts/src/state/Deserialize.sol/Deserialize.dbg.json +1 -1
- package/build/contracts/src/state/GlobalState.sol/GlobalStateLib.dbg.json +1 -1
- package/build/contracts/src/state/Instructions.sol/Instructions.dbg.json +1 -1
- package/build/contracts/src/state/Machine.sol/MachineLib.dbg.json +1 -1
- package/build/contracts/src/state/MerkleProof.sol/MerkleProofLib.dbg.json +1 -1
- package/build/contracts/src/state/Module.sol/ModuleLib.dbg.json +1 -1
- package/build/contracts/src/state/ModuleMemory.sol/ModuleMemoryLib.dbg.json +1 -1
- package/build/contracts/src/state/ModuleMemoryCompact.sol/ModuleMemoryCompactLib.dbg.json +1 -1
- package/build/contracts/src/state/MultiStack.sol/MultiStackLib.dbg.json +1 -1
- package/build/contracts/src/state/PcArray.sol/PcArrayLib.dbg.json +1 -1
- package/build/contracts/src/state/StackFrame.sol/StackFrameLib.dbg.json +1 -1
- package/build/contracts/src/state/Value.sol/ValueLib.dbg.json +1 -1
- package/build/contracts/src/state/ValueArray.sol/ValueArrayLib.dbg.json +1 -1
- package/build/contracts/src/state/ValueStack.sol/ValueStackLib.dbg.json +1 -1
- package/build/contracts/src/test-helpers/BridgeTester.sol/BridgeTester.dbg.json +1 -1
- package/build/contracts/src/test-helpers/CryptographyPrimitivesTester.sol/CryptographyPrimitivesTester.dbg.json +1 -1
- package/build/contracts/src/test-helpers/EthVault.sol/EthVault.dbg.json +1 -1
- package/build/contracts/src/test-helpers/MessageTester.sol/MessageTester.dbg.json +1 -1
- package/build/contracts/src/test-helpers/OutboxWithoutOptTester.sol/OutboxWithoutOptTester.dbg.json +1 -1
- package/build/contracts/src/test-helpers/RollupMock.sol/RollupMock.dbg.json +1 -1
- package/build/contracts/src/test-helpers/TestToken.sol/TestToken.dbg.json +1 -1
- package/build/contracts/src/test-helpers/ValueArrayTester.sol/ValueArrayTester.dbg.json +1 -1
- package/package.json +2 -3
- package/src/bridge/AbsBridge.sol +2 -2
- package/src/bridge/ERC20Bridge.sol +6 -2
- package/src/express-lane-auction/Balance.sol +137 -0
- package/src/express-lane-auction/Burner.sol +26 -0
- package/src/express-lane-auction/ELCRound.sol +70 -0
- package/src/express-lane-auction/Errors.sol +31 -0
- package/src/express-lane-auction/ExpressLaneAuction.sol +567 -0
- package/src/express-lane-auction/IExpressLaneAuction.sol +441 -0
- package/src/express-lane-auction/RoundTimingInfo.sol +118 -0
- package/src/rollup/BOLDUpgradeAction.sol +53 -104
- package/src/rollup/BridgeCreator.sol +23 -5
- package/src/rollup/Config.sol +2 -0
- package/src/rollup/RollupAdminLogic.sol +4 -4
- package/build/contracts/src/rollup/BOLDUpgradeAction.sol/RollupReader.dbg.json +0 -4
- package/build/contracts/src/rollup/BOLDUpgradeAction.sol/RollupReader.json +0 -385
@@ -64,6 +64,12 @@ interface IOldRollup {
|
|
64
64
|
uint256 inboxMaxCount
|
65
65
|
);
|
66
66
|
|
67
|
+
function paused() external view returns (bool);
|
68
|
+
function isZombie(
|
69
|
+
address staker
|
70
|
+
) external view returns (bool);
|
71
|
+
function withdrawStakerFunds() external returns (uint256);
|
72
|
+
|
67
73
|
function wasmModuleRoot() external view returns (bytes32);
|
68
74
|
function latestConfirmed() external view returns (uint64);
|
69
75
|
function getNode(
|
@@ -136,65 +142,6 @@ contract StateHashPreImageLookup {
|
|
136
142
|
}
|
137
143
|
}
|
138
144
|
|
139
|
-
/// @title Forwards calls to the rollup so that they can be interpreted as a user
|
140
|
-
/// @notice In the upgrade executor we need to access functions on the rollup
|
141
|
-
/// but since the upgrade executor is the admin it will always be forwarded to the
|
142
|
-
/// rollup admin logic. We create a separate forwarder contract here that just relays
|
143
|
-
/// information, since it's not the admin it can access rollup user logic.
|
144
|
-
contract RollupReader is IOldRollup {
|
145
|
-
IOldRollup public immutable rollup;
|
146
|
-
|
147
|
-
constructor(
|
148
|
-
IOldRollup _rollup
|
149
|
-
) {
|
150
|
-
rollup = _rollup;
|
151
|
-
}
|
152
|
-
|
153
|
-
function wasmModuleRoot() external view returns (bytes32) {
|
154
|
-
return rollup.wasmModuleRoot();
|
155
|
-
}
|
156
|
-
|
157
|
-
function latestConfirmed() external view returns (uint64) {
|
158
|
-
return rollup.latestConfirmed();
|
159
|
-
}
|
160
|
-
|
161
|
-
function getNode(
|
162
|
-
uint64 nodeNum
|
163
|
-
) external view returns (Node memory) {
|
164
|
-
return rollup.getNode(nodeNum);
|
165
|
-
}
|
166
|
-
|
167
|
-
function getStakerAddress(
|
168
|
-
uint64 stakerNum
|
169
|
-
) external view returns (address) {
|
170
|
-
return rollup.getStakerAddress(stakerNum);
|
171
|
-
}
|
172
|
-
|
173
|
-
function stakerCount() external view returns (uint64) {
|
174
|
-
return rollup.stakerCount();
|
175
|
-
}
|
176
|
-
|
177
|
-
function getStaker(
|
178
|
-
address staker
|
179
|
-
) external view returns (OldStaker memory) {
|
180
|
-
return rollup.getStaker(staker);
|
181
|
-
}
|
182
|
-
|
183
|
-
function isValidator(
|
184
|
-
address validator
|
185
|
-
) external view returns (bool) {
|
186
|
-
return rollup.isValidator(validator);
|
187
|
-
}
|
188
|
-
|
189
|
-
function validatorWalletCreator() external view returns (address) {
|
190
|
-
return rollup.validatorWalletCreator();
|
191
|
-
}
|
192
|
-
|
193
|
-
function anyTrustFastConfirmer() external view returns (address) {
|
194
|
-
return rollup.anyTrustFastConfirmer();
|
195
|
-
}
|
196
|
-
}
|
197
|
-
|
198
145
|
/// @notice Stores an array specified during construction.
|
199
146
|
/// Since the BOLDUpgradeAction is not allowed to have storage,
|
200
147
|
/// we use this contract so it can keep an immutable pointer to an array.
|
@@ -216,6 +163,7 @@ contract ConstantArrayStorage {
|
|
216
163
|
/// @notice Requires implementation contracts to be pre-deployed and provided in the constructor
|
217
164
|
/// Also requires a lookup contract to be provided that contains the pre-image of the state hash
|
218
165
|
/// that is in the latest confirmed assertion in the current rollup.
|
166
|
+
/// The old rollup should be on v1.1.0 or later to allow stake withdrawals after the upgrade
|
219
167
|
contract BOLDUpgradeAction {
|
220
168
|
using AssertionStateLib for AssertionState;
|
221
169
|
|
@@ -237,6 +185,9 @@ contract BOLDUpgradeAction {
|
|
237
185
|
address public immutable STAKE_TOKEN;
|
238
186
|
uint256 public immutable STAKE_AMOUNT;
|
239
187
|
uint256 public immutable CHAIN_ID;
|
188
|
+
uint256 public immutable MINIMUM_ASSERTION_PERIOD;
|
189
|
+
uint64 public immutable VALIDATOR_AFK_BLOCKS;
|
190
|
+
|
240
191
|
bool public immutable DISABLE_VALIDATOR_WHITELIST;
|
241
192
|
uint64 public immutable CHALLENGE_GRACE_PERIOD_BLOCKS;
|
242
193
|
address public immutable MINI_STAKE_AMOUNTS_STORAGE;
|
@@ -255,7 +206,6 @@ contract BOLDUpgradeAction {
|
|
255
206
|
ProxyAdmin public immutable PROXY_ADMIN_SEQUENCER_INBOX;
|
256
207
|
ProxyAdmin public immutable PROXY_ADMIN_INBOX;
|
257
208
|
StateHashPreImageLookup public immutable PREIMAGE_LOOKUP;
|
258
|
-
RollupReader public immutable ROLLUP_READER;
|
259
209
|
|
260
210
|
// new contract implementations
|
261
211
|
address public immutable IMPL_BRIDGE;
|
@@ -263,8 +213,6 @@ contract BOLDUpgradeAction {
|
|
263
213
|
address public immutable IMPL_INBOX;
|
264
214
|
address public immutable IMPL_REI;
|
265
215
|
address public immutable IMPL_OUTBOX;
|
266
|
-
// the old rollup, but with whenNotPaused protection removed from stake withdrawal functions
|
267
|
-
address public immutable IMPL_PATCHED_OLD_ROLLUP_USER;
|
268
216
|
address public immutable IMPL_NEW_ROLLUP_USER;
|
269
217
|
address public immutable IMPL_NEW_ROLLUP_ADMIN;
|
270
218
|
address public immutable IMPL_CHALLENGE_MANAGER;
|
@@ -278,6 +226,8 @@ contract BOLDUpgradeAction {
|
|
278
226
|
uint256 stakeAmt;
|
279
227
|
uint256[] miniStakeAmounts;
|
280
228
|
uint256 chainId;
|
229
|
+
uint256 minimumAssertionPeriod;
|
230
|
+
uint64 validatorAfkBlocks;
|
281
231
|
bool disableValidatorWhitelist;
|
282
232
|
uint256 blockLeafSize;
|
283
233
|
uint256 bigStepLeafSize;
|
@@ -303,7 +253,6 @@ contract BOLDUpgradeAction {
|
|
303
253
|
address inbox;
|
304
254
|
address rei;
|
305
255
|
address outbox;
|
306
|
-
address oldRollupUser;
|
307
256
|
address newRollupUser;
|
308
257
|
address newRollupAdmin;
|
309
258
|
address challengeManager;
|
@@ -341,19 +290,19 @@ contract BOLDUpgradeAction {
|
|
341
290
|
PROXY_ADMIN_SEQUENCER_INBOX = ProxyAdmin(proxyAdmins.seqInbox);
|
342
291
|
PROXY_ADMIN_INBOX = ProxyAdmin(proxyAdmins.inbox);
|
343
292
|
PREIMAGE_LOOKUP = new StateHashPreImageLookup();
|
344
|
-
ROLLUP_READER = new RollupReader(contracts.rollup);
|
345
293
|
|
346
294
|
IMPL_BRIDGE = implementations.bridge;
|
347
295
|
IMPL_SEQUENCER_INBOX = implementations.seqInbox;
|
348
296
|
IMPL_INBOX = implementations.inbox;
|
349
297
|
IMPL_REI = implementations.rei;
|
350
298
|
IMPL_OUTBOX = implementations.outbox;
|
351
|
-
IMPL_PATCHED_OLD_ROLLUP_USER = implementations.oldRollupUser;
|
352
299
|
IMPL_NEW_ROLLUP_USER = implementations.newRollupUser;
|
353
300
|
IMPL_NEW_ROLLUP_ADMIN = implementations.newRollupAdmin;
|
354
301
|
IMPL_CHALLENGE_MANAGER = implementations.challengeManager;
|
355
302
|
|
356
303
|
CHAIN_ID = settings.chainId;
|
304
|
+
MINIMUM_ASSERTION_PERIOD = settings.minimumAssertionPeriod;
|
305
|
+
VALIDATOR_AFK_BLOCKS = settings.validatorAfkBlocks;
|
357
306
|
CONFIRM_PERIOD_BLOCKS = settings.confirmPeriodBlocks;
|
358
307
|
CHALLENGE_PERIOD_BLOCKS = settings.challengePeriodBlocks;
|
359
308
|
STAKE_TOKEN = settings.stakeToken;
|
@@ -376,15 +325,15 @@ contract BOLDUpgradeAction {
|
|
376
325
|
function cleanupOldRollup() private {
|
377
326
|
IOldRollupAdmin(address(OLD_ROLLUP)).pause();
|
378
327
|
|
379
|
-
uint64 stakerCount =
|
328
|
+
uint64 stakerCount = OLD_ROLLUP.stakerCount();
|
380
329
|
// since we for-loop these stakers we set an arbitrary limit - we dont
|
381
330
|
// expect any instances to have close to this number of stakers
|
382
331
|
if (stakerCount > 50) {
|
383
332
|
stakerCount = 50;
|
384
333
|
}
|
385
334
|
for (uint64 i = 0; i < stakerCount;) {
|
386
|
-
address stakerAddr =
|
387
|
-
OldStaker memory staker =
|
335
|
+
address stakerAddr = OLD_ROLLUP.getStakerAddress(i);
|
336
|
+
OldStaker memory staker = OLD_ROLLUP.getStaker(stakerAddr);
|
388
337
|
if (staker.isStaked && staker.currentChallenge == 0) {
|
389
338
|
address[] memory stakersToRefund = new address[](1);
|
390
339
|
stakersToRefund[0] = stakerAddr;
|
@@ -395,11 +344,6 @@ contract BOLDUpgradeAction {
|
|
395
344
|
i++;
|
396
345
|
}
|
397
346
|
}
|
398
|
-
|
399
|
-
// upgrade the rollup to one that allows validators to withdraw even whilst paused
|
400
|
-
DoubleLogicUUPSUpgradeable(address(OLD_ROLLUP)).upgradeSecondaryTo(
|
401
|
-
IMPL_PATCHED_OLD_ROLLUP_USER
|
402
|
-
);
|
403
347
|
}
|
404
348
|
|
405
349
|
/// @dev Create a config for the new rollup - fetches the latest confirmed
|
@@ -407,7 +351,7 @@ contract BOLDUpgradeAction {
|
|
407
351
|
function createConfig() private view returns (Config memory) {
|
408
352
|
// fetch the assertion associated with the latest confirmed state
|
409
353
|
bytes32 latestConfirmedStateHash =
|
410
|
-
|
354
|
+
OLD_ROLLUP.getNode(OLD_ROLLUP.latestConfirmed()).stateHash;
|
411
355
|
(ExecutionState memory genesisExecState, uint256 inboxMaxCount) =
|
412
356
|
PREIMAGE_LOOKUP.get(latestConfirmedStateHash);
|
413
357
|
|
@@ -431,11 +375,13 @@ contract BOLDUpgradeAction {
|
|
431
375
|
confirmPeriodBlocks: CONFIRM_PERIOD_BLOCKS,
|
432
376
|
stakeToken: STAKE_TOKEN,
|
433
377
|
baseStake: STAKE_AMOUNT,
|
434
|
-
wasmModuleRoot:
|
378
|
+
wasmModuleRoot: OLD_ROLLUP.wasmModuleRoot(),
|
435
379
|
owner: address(this), // upgrade executor is the owner
|
436
380
|
loserStakeEscrow: EXCESS_STAKE_RECEIVER, // additional funds get sent to the l1 timelock
|
437
381
|
chainId: CHAIN_ID,
|
438
382
|
chainConfig: "", // we can use an empty chain config it wont be used in the rollup initialization because we check if the rei is already connected there
|
383
|
+
minimumAssertionPeriod: MINIMUM_ASSERTION_PERIOD,
|
384
|
+
validatorAfkBlocks: VALIDATOR_AFK_BLOCKS,
|
439
385
|
miniStakeValues: ConstantArrayStorage(MINI_STAKE_AMOUNTS_STORAGE).array(),
|
440
386
|
sequencerInboxMaxTimeVariation: maxTimeVariation,
|
441
387
|
layerZeroBlockEdgeHeight: BLOCK_LEAF_SIZE,
|
@@ -496,17 +442,6 @@ contract BOLDUpgradeAction {
|
|
496
442
|
PROXY_ADMIN_SEQUENCER_INBOX.upgrade(sequencerInbox, IMPL_SEQUENCER_INBOX);
|
497
443
|
}
|
498
444
|
|
499
|
-
// verify
|
500
|
-
require(
|
501
|
-
PROXY_ADMIN_SEQUENCER_INBOX.getProxyImplementation(sequencerInbox)
|
502
|
-
== IMPL_SEQUENCER_INBOX,
|
503
|
-
"DelayBuffer: new seq inbox implementation not set"
|
504
|
-
);
|
505
|
-
require(
|
506
|
-
ISequencerInbox(SEQ_INBOX).isDelayBufferable() == IS_DELAY_BUFFERABLE,
|
507
|
-
"DelayBuffer: isDelayBufferable not set"
|
508
|
-
);
|
509
|
-
|
510
445
|
(uint256 delayBlocks, uint256 futureBlocks, uint256 delaySeconds, uint256 futureSeconds) =
|
511
446
|
ISequencerInbox(SEQ_INBOX).maxTimeVariation();
|
512
447
|
|
@@ -528,17 +463,31 @@ contract BOLDUpgradeAction {
|
|
528
463
|
})
|
529
464
|
);
|
530
465
|
|
531
|
-
// verify
|
532
|
-
(uint256 _delayBlocks, uint256 _futureBlocks, uint256 _delaySeconds, uint256 _futureSeconds)
|
533
|
-
= ISequencerInbox(SEQ_INBOX).maxTimeVariation();
|
534
|
-
require(_delayBlocks == delayBlocks, "DelayBuffer: delayBlocks not set");
|
535
|
-
require(_delaySeconds == delaySeconds, "DelayBuffer: delaySeconds not set");
|
536
|
-
require(_futureBlocks == futureBlocks, "DelayBuffer: futureBlocks not set");
|
537
|
-
require(_futureSeconds == futureSeconds, "DelayBuffer: futureSeconds not set");
|
538
|
-
|
539
466
|
ISequencerInbox(SEQ_INBOX).updateRollupAddress();
|
540
467
|
}
|
541
468
|
|
469
|
+
function expectedRollupAddress(
|
470
|
+
address deployer,
|
471
|
+
uint256 chainId
|
472
|
+
) public pure returns (address) {
|
473
|
+
bytes32 rollupSalt = keccak256(abi.encode(chainId));
|
474
|
+
return Create2Upgradeable.computeAddress(
|
475
|
+
rollupSalt, keccak256(type(RollupProxy).creationCode), deployer
|
476
|
+
);
|
477
|
+
}
|
478
|
+
|
479
|
+
function validateRollupDeployedAtAddress(
|
480
|
+
address rollupAddress,
|
481
|
+
address deployer,
|
482
|
+
uint256 chainId
|
483
|
+
) external view {
|
484
|
+
require(
|
485
|
+
(rollupAddress.code.length > 0)
|
486
|
+
&& expectedRollupAddress(deployer, chainId) == rollupAddress,
|
487
|
+
"ADDR_MISMATCH"
|
488
|
+
);
|
489
|
+
}
|
490
|
+
|
542
491
|
function perform(
|
543
492
|
address[] memory validators
|
544
493
|
) external {
|
@@ -570,18 +519,18 @@ contract BOLDUpgradeAction {
|
|
570
519
|
challengeManager: challengeManager,
|
571
520
|
rollupAdminLogic: IMPL_NEW_ROLLUP_ADMIN,
|
572
521
|
rollupUserLogic: IRollupUser(IMPL_NEW_ROLLUP_USER),
|
573
|
-
validatorWalletCreator:
|
522
|
+
validatorWalletCreator: OLD_ROLLUP.validatorWalletCreator()
|
574
523
|
});
|
575
524
|
|
576
525
|
// upgrade the surrounding contracts eg bridge, outbox, seq inbox, rollup event inbox
|
577
526
|
// to set of the new rollup address
|
578
|
-
|
579
|
-
|
580
|
-
|
581
|
-
upgradeSurroundingContracts(
|
527
|
+
// this is different from the typical salt, it is ok because the caller should deploy the upgrade only once for each chainid
|
528
|
+
bytes32 rollupSalt = keccak256(abi.encode(config.chainId));
|
529
|
+
address _expectedRollupAddress = expectedRollupAddress(address(this), config.chainId);
|
530
|
+
upgradeSurroundingContracts(_expectedRollupAddress);
|
582
531
|
|
583
532
|
challengeManager.initialize({
|
584
|
-
_assertionChain: IAssertionChain(
|
533
|
+
_assertionChain: IAssertionChain(_expectedRollupAddress),
|
585
534
|
_challengePeriodBlocks: CHALLENGE_PERIOD_BLOCKS,
|
586
535
|
_oneStepProofEntry: OSP,
|
587
536
|
layerZeroBlockEdgeHeight: config.layerZeroBlockEdgeHeight,
|
@@ -594,7 +543,7 @@ contract BOLDUpgradeAction {
|
|
594
543
|
});
|
595
544
|
|
596
545
|
RollupProxy rollup = new RollupProxy{salt: rollupSalt}();
|
597
|
-
require(address(rollup) ==
|
546
|
+
require(address(rollup) == _expectedRollupAddress, "UNEXPCTED_ROLLUP_ADDR");
|
598
547
|
|
599
548
|
// initialize the rollup with this contract as owner to set batch poster and validators
|
600
549
|
// it will transfer the ownership back to the actual owner later
|
@@ -606,7 +555,7 @@ contract BOLDUpgradeAction {
|
|
606
555
|
if (validators.length != 0) {
|
607
556
|
bool[] memory _vals = new bool[](validators.length);
|
608
557
|
for (uint256 i = 0; i < validators.length; i++) {
|
609
|
-
require(
|
558
|
+
require(OLD_ROLLUP.isValidator(validators[i]), "UNEXPECTED_NEW_VALIDATOR");
|
610
559
|
_vals[i] = true;
|
611
560
|
}
|
612
561
|
IRollupAdmin(address(rollup)).setValidator(validators, _vals);
|
@@ -616,7 +565,7 @@ contract BOLDUpgradeAction {
|
|
616
565
|
}
|
617
566
|
|
618
567
|
// anyTrustFastConfirmer only exists since v2.0.0, but the old rollup can be on an older version
|
619
|
-
try
|
568
|
+
try OLD_ROLLUP.anyTrustFastConfirmer() returns (address anyTrustFastConfirmer) {
|
620
569
|
if (anyTrustFastConfirmer != address(0)) {
|
621
570
|
IRollupAdmin(address(rollup)).setAnyTrustFastConfirmer(anyTrustFastConfirmer);
|
622
571
|
}
|
@@ -626,6 +575,6 @@ contract BOLDUpgradeAction {
|
|
626
575
|
|
627
576
|
IRollupAdmin(address(rollup)).setOwner(actualOwner);
|
628
577
|
|
629
|
-
emit RollupMigrated(
|
578
|
+
emit RollupMigrated(_expectedRollupAddress, address(challengeManager));
|
630
579
|
}
|
631
580
|
}
|
@@ -65,17 +65,22 @@ contract BridgeCreator is Ownable {
|
|
65
65
|
}
|
66
66
|
|
67
67
|
function _createBridge(
|
68
|
+
bytes32 create2Salt,
|
68
69
|
address adminProxy,
|
69
70
|
BridgeTemplates memory templates,
|
70
71
|
bool isDelayBufferable
|
71
72
|
) internal returns (BridgeContracts memory) {
|
72
73
|
BridgeContracts memory frame;
|
73
74
|
frame.bridge = IBridge(
|
74
|
-
address(
|
75
|
+
address(
|
76
|
+
new TransparentUpgradeableProxy{salt: create2Salt}(
|
77
|
+
address(templates.bridge), adminProxy, ""
|
78
|
+
)
|
79
|
+
)
|
75
80
|
);
|
76
81
|
frame.sequencerInbox = ISequencerInbox(
|
77
82
|
address(
|
78
|
-
new TransparentUpgradeableProxy(
|
83
|
+
new TransparentUpgradeableProxy{salt: create2Salt}(
|
79
84
|
address(
|
80
85
|
isDelayBufferable
|
81
86
|
? templates.delayBufferableSequencerInbox
|
@@ -87,15 +92,25 @@ contract BridgeCreator is Ownable {
|
|
87
92
|
)
|
88
93
|
);
|
89
94
|
frame.inbox = IInboxBase(
|
90
|
-
address(
|
95
|
+
address(
|
96
|
+
new TransparentUpgradeableProxy{salt: create2Salt}(
|
97
|
+
address(templates.inbox), adminProxy, ""
|
98
|
+
)
|
99
|
+
)
|
91
100
|
);
|
92
101
|
frame.rollupEventInbox = IRollupEventInbox(
|
93
102
|
address(
|
94
|
-
new TransparentUpgradeableProxy(
|
103
|
+
new TransparentUpgradeableProxy{salt: create2Salt}(
|
104
|
+
address(templates.rollupEventInbox), adminProxy, ""
|
105
|
+
)
|
95
106
|
)
|
96
107
|
);
|
97
108
|
frame.outbox = IOutbox(
|
98
|
-
address(
|
109
|
+
address(
|
110
|
+
new TransparentUpgradeableProxy{salt: create2Salt}(
|
111
|
+
address(templates.outbox), adminProxy, ""
|
112
|
+
)
|
113
|
+
)
|
99
114
|
);
|
100
115
|
return frame;
|
101
116
|
}
|
@@ -107,11 +122,14 @@ contract BridgeCreator is Ownable {
|
|
107
122
|
ISequencerInbox.MaxTimeVariation calldata maxTimeVariation,
|
108
123
|
BufferConfig calldata bufferConfig
|
109
124
|
) external returns (BridgeContracts memory) {
|
125
|
+
// use create2 salt to ensure deterministic addresses
|
126
|
+
bytes32 create2Salt = keccak256(abi.encode(msg.data, msg.sender));
|
110
127
|
// create delay bufferable sequencer inbox if threshold is non-zero
|
111
128
|
bool isDelayBufferable = bufferConfig.threshold != 0;
|
112
129
|
|
113
130
|
// create ETH-based bridge if address zero is provided for native token, otherwise create ERC20-based bridge
|
114
131
|
BridgeContracts memory frame = _createBridge(
|
132
|
+
create2Salt,
|
115
133
|
adminProxy,
|
116
134
|
nativeToken == address(0) ? ethBasedTemplates : erc20BasedTemplates,
|
117
135
|
isDelayBufferable
|
package/src/rollup/Config.sol
CHANGED
@@ -23,6 +23,8 @@ struct Config {
|
|
23
23
|
address loserStakeEscrow;
|
24
24
|
uint256 chainId;
|
25
25
|
string chainConfig;
|
26
|
+
uint256 minimumAssertionPeriod;
|
27
|
+
uint64 validatorAfkBlocks;
|
26
28
|
uint256[] miniStakeValues;
|
27
29
|
ISequencerInbox.MaxTimeVariation sequencerInboxMaxTimeVariation;
|
28
30
|
uint256 layerZeroBlockEdgeHeight;
|
@@ -53,12 +53,12 @@ contract RollupAdminLogic is RollupCore, IRollupAdmin, DoubleLogicUUPSUpgradeabl
|
|
53
53
|
chainId = config.chainId;
|
54
54
|
baseStake = config.baseStake;
|
55
55
|
wasmModuleRoot = config.wasmModuleRoot;
|
56
|
-
//
|
57
|
-
minimumAssertionPeriod =
|
58
|
-
// ValidatorAfkBlocks
|
56
|
+
// minimumAssertionPeriod was defaulted to 75 which is a little over 15 minutes
|
57
|
+
minimumAssertionPeriod = config.minimumAssertionPeriod;
|
58
|
+
// ValidatorAfkBlocks was defaulted to 201600 which is 28 days assuming a 12 seconds block time.
|
59
59
|
// Since it can take 14 days under normal circumstances to confirm an assertion, this means
|
60
60
|
// the validators will have been inactive for a further 14 days before the whitelist is removed.
|
61
|
-
validatorAfkBlocks =
|
61
|
+
validatorAfkBlocks = config.validatorAfkBlocks;
|
62
62
|
challengeGracePeriodBlocks = config.challengeGracePeriodBlocks;
|
63
63
|
|
64
64
|
// loser stake is now sent directly to loserStakeEscrow, it must not
|