@arbitrum/nitro-contracts 3.0.0-alpha.2 → 3.0.0-beta.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.
Files changed (249) hide show
  1. package/LICENSE.md +1 -1
  2. package/README.md +3 -3
  3. package/build/contracts/@openzeppelin/contracts/access/Ownable.sol/Ownable.dbg.json +1 -1
  4. package/build/contracts/@openzeppelin/contracts/interfaces/draft-IERC1822.sol/IERC1822Proxiable.dbg.json +1 -1
  5. package/build/contracts/@openzeppelin/contracts/proxy/ERC1967/ERC1967Proxy.sol/ERC1967Proxy.dbg.json +1 -1
  6. package/build/contracts/@openzeppelin/contracts/proxy/ERC1967/ERC1967Upgrade.sol/ERC1967Upgrade.dbg.json +1 -1
  7. package/build/contracts/@openzeppelin/contracts/proxy/Proxy.sol/Proxy.dbg.json +1 -1
  8. package/build/contracts/@openzeppelin/contracts/proxy/beacon/IBeacon.sol/IBeacon.dbg.json +1 -1
  9. package/build/contracts/@openzeppelin/contracts/proxy/beacon/UpgradeableBeacon.sol/UpgradeableBeacon.dbg.json +1 -1
  10. package/build/contracts/@openzeppelin/contracts/proxy/transparent/ProxyAdmin.sol/ProxyAdmin.dbg.json +1 -1
  11. package/build/contracts/@openzeppelin/contracts/proxy/transparent/TransparentUpgradeableProxy.sol/TransparentUpgradeableProxy.dbg.json +1 -1
  12. package/build/contracts/@openzeppelin/contracts/proxy/utils/UUPSUpgradeable.sol/UUPSUpgradeable.dbg.json +1 -1
  13. package/build/contracts/@openzeppelin/contracts/security/ReentrancyGuard.sol/ReentrancyGuard.dbg.json +1 -1
  14. package/build/contracts/@openzeppelin/contracts/token/ERC20/ERC20.sol/ERC20.dbg.json +1 -1
  15. package/build/contracts/@openzeppelin/contracts/token/ERC20/IERC20.sol/IERC20.dbg.json +1 -1
  16. package/build/contracts/@openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata.sol/IERC20Metadata.dbg.json +1 -1
  17. package/build/contracts/@openzeppelin/contracts/token/ERC20/extensions/draft-IERC20Permit.sol/IERC20Permit.dbg.json +1 -1
  18. package/build/contracts/@openzeppelin/contracts/token/ERC20/utils/SafeERC20.sol/SafeERC20.dbg.json +1 -1
  19. package/build/contracts/@openzeppelin/contracts/utils/Address.sol/Address.dbg.json +1 -1
  20. package/build/contracts/@openzeppelin/contracts/utils/Context.sol/Context.dbg.json +1 -1
  21. package/build/contracts/@openzeppelin/contracts/utils/Create2.sol/Create2.dbg.json +1 -1
  22. package/build/contracts/@openzeppelin/contracts/utils/StorageSlot.sol/StorageSlot.dbg.json +1 -1
  23. package/build/contracts/@openzeppelin/contracts/utils/Strings.sol/Strings.dbg.json +1 -1
  24. package/build/contracts/@openzeppelin/contracts/utils/cryptography/ECDSA.sol/ECDSA.dbg.json +4 -0
  25. package/build/contracts/@openzeppelin/contracts/utils/cryptography/ECDSA.sol/ECDSA.json +10 -0
  26. package/build/contracts/@openzeppelin/contracts-upgradeable/access/AccessControlEnumerableUpgradeable.sol/AccessControlEnumerableUpgradeable.dbg.json +4 -0
  27. package/build/contracts/@openzeppelin/contracts-upgradeable/access/AccessControlEnumerableUpgradeable.sol/AccessControlEnumerableUpgradeable.json +271 -0
  28. package/build/contracts/@openzeppelin/contracts-upgradeable/access/AccessControlUpgradeable.sol/AccessControlUpgradeable.dbg.json +1 -1
  29. package/build/contracts/@openzeppelin/contracts-upgradeable/access/IAccessControlEnumerableUpgradeable.sol/IAccessControlEnumerableUpgradeable.dbg.json +4 -0
  30. package/build/contracts/@openzeppelin/contracts-upgradeable/access/IAccessControlEnumerableUpgradeable.sol/IAccessControlEnumerableUpgradeable.json +226 -0
  31. package/build/contracts/@openzeppelin/contracts-upgradeable/access/IAccessControlUpgradeable.sol/IAccessControlUpgradeable.dbg.json +1 -1
  32. package/build/contracts/@openzeppelin/contracts-upgradeable/access/OwnableUpgradeable.sol/OwnableUpgradeable.dbg.json +1 -1
  33. package/build/contracts/@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol/Initializable.dbg.json +1 -1
  34. package/build/contracts/@openzeppelin/contracts-upgradeable/security/PausableUpgradeable.sol/PausableUpgradeable.dbg.json +1 -1
  35. package/build/contracts/@openzeppelin/contracts-upgradeable/token/ERC20/ERC20Upgradeable.sol/ERC20Upgradeable.dbg.json +4 -0
  36. package/build/contracts/@openzeppelin/contracts-upgradeable/token/ERC20/ERC20Upgradeable.sol/ERC20Upgradeable.json +294 -0
  37. package/build/contracts/@openzeppelin/contracts-upgradeable/token/ERC20/IERC20Upgradeable.sol/IERC20Upgradeable.dbg.json +4 -0
  38. package/build/contracts/@openzeppelin/contracts-upgradeable/token/ERC20/IERC20Upgradeable.sol/IERC20Upgradeable.json +194 -0
  39. package/build/contracts/@openzeppelin/contracts-upgradeable/token/ERC20/extensions/ERC20BurnableUpgradeable.sol/ERC20BurnableUpgradeable.dbg.json +4 -0
  40. package/build/contracts/@openzeppelin/contracts-upgradeable/token/ERC20/extensions/ERC20BurnableUpgradeable.sol/ERC20BurnableUpgradeable.json +325 -0
  41. package/build/contracts/@openzeppelin/contracts-upgradeable/token/ERC20/extensions/IERC20MetadataUpgradeable.sol/IERC20MetadataUpgradeable.dbg.json +4 -0
  42. package/build/contracts/@openzeppelin/contracts-upgradeable/token/ERC20/extensions/IERC20MetadataUpgradeable.sol/IERC20MetadataUpgradeable.json +233 -0
  43. package/build/contracts/@openzeppelin/contracts-upgradeable/utils/AddressUpgradeable.sol/AddressUpgradeable.dbg.json +1 -1
  44. package/build/contracts/@openzeppelin/contracts-upgradeable/utils/ContextUpgradeable.sol/ContextUpgradeable.dbg.json +1 -1
  45. package/build/contracts/@openzeppelin/contracts-upgradeable/utils/Create2Upgradeable.sol/Create2Upgradeable.dbg.json +1 -1
  46. package/build/contracts/@openzeppelin/contracts-upgradeable/utils/StorageSlotUpgradeable.sol/StorageSlotUpgradeable.dbg.json +1 -1
  47. package/build/contracts/@openzeppelin/contracts-upgradeable/utils/StringsUpgradeable.sol/StringsUpgradeable.dbg.json +1 -1
  48. package/build/contracts/@openzeppelin/contracts-upgradeable/utils/cryptography/ECDSAUpgradeable.sol/ECDSAUpgradeable.dbg.json +4 -0
  49. package/build/contracts/@openzeppelin/contracts-upgradeable/utils/cryptography/ECDSAUpgradeable.sol/ECDSAUpgradeable.json +10 -0
  50. package/build/contracts/@openzeppelin/contracts-upgradeable/utils/cryptography/draft-EIP712Upgradeable.sol/EIP712Upgradeable.dbg.json +4 -0
  51. package/build/contracts/@openzeppelin/contracts-upgradeable/utils/cryptography/draft-EIP712Upgradeable.sol/EIP712Upgradeable.json +24 -0
  52. package/build/contracts/@openzeppelin/contracts-upgradeable/utils/introspection/ERC165Upgradeable.sol/ERC165Upgradeable.dbg.json +1 -1
  53. package/build/contracts/@openzeppelin/contracts-upgradeable/utils/introspection/IERC165Upgradeable.sol/IERC165Upgradeable.dbg.json +1 -1
  54. package/build/contracts/@openzeppelin/contracts-upgradeable/utils/structs/EnumerableSetUpgradeable.sol/EnumerableSetUpgradeable.dbg.json +1 -1
  55. package/build/contracts/src/assertionStakingPool/AbsBoldStakingPool.sol/AbsBoldStakingPool.dbg.json +1 -1
  56. package/build/contracts/src/assertionStakingPool/AssertionStakingPool.sol/AssertionStakingPool.dbg.json +1 -1
  57. package/build/contracts/src/assertionStakingPool/AssertionStakingPoolCreator.sol/AssertionStakingPoolCreator.dbg.json +1 -1
  58. package/build/contracts/src/assertionStakingPool/EdgeStakingPool.sol/EdgeStakingPool.dbg.json +1 -1
  59. package/build/contracts/src/assertionStakingPool/EdgeStakingPoolCreator.sol/EdgeStakingPoolCreator.dbg.json +1 -1
  60. package/build/contracts/src/assertionStakingPool/StakingPoolCreatorUtils.sol/StakingPoolCreatorUtils.dbg.json +1 -1
  61. package/build/contracts/src/assertionStakingPool/interfaces/IAbsBoldStakingPool.sol/IAbsBoldStakingPool.dbg.json +1 -1
  62. package/build/contracts/src/assertionStakingPool/interfaces/IAssertionStakingPool.sol/IAssertionStakingPool.dbg.json +1 -1
  63. package/build/contracts/src/assertionStakingPool/interfaces/IAssertionStakingPoolCreator.sol/IAssertionStakingPoolCreator.dbg.json +1 -1
  64. package/build/contracts/src/assertionStakingPool/interfaces/IEdgeStakingPool.sol/IEdgeStakingPool.dbg.json +1 -1
  65. package/build/contracts/src/assertionStakingPool/interfaces/IEdgeStakingPoolCreator.sol/IEdgeStakingPoolCreator.dbg.json +1 -1
  66. package/build/contracts/src/bridge/AbsBridge.sol/AbsBridge.dbg.json +1 -1
  67. package/build/contracts/src/bridge/AbsInbox.sol/AbsInbox.dbg.json +1 -1
  68. package/build/contracts/src/bridge/AbsOutbox.sol/AbsOutbox.dbg.json +1 -1
  69. package/build/contracts/src/bridge/Bridge.sol/Bridge.dbg.json +1 -1
  70. package/build/contracts/src/bridge/Bridge.sol/Bridge.json +2 -2
  71. package/build/contracts/src/bridge/DelayBuffer.sol/DelayBuffer.dbg.json +1 -1
  72. package/build/contracts/src/bridge/ERC20Bridge.sol/ERC20Bridge.dbg.json +1 -1
  73. package/build/contracts/src/bridge/ERC20Bridge.sol/ERC20Bridge.json +2 -2
  74. package/build/contracts/src/bridge/ERC20Inbox.sol/ERC20Inbox.dbg.json +1 -1
  75. package/build/contracts/src/bridge/ERC20Outbox.sol/ERC20Outbox.dbg.json +1 -1
  76. package/build/contracts/src/bridge/GasRefunder.sol/GasRefunder.dbg.json +1 -1
  77. package/build/contracts/src/bridge/IBridge.sol/IBridge.dbg.json +1 -1
  78. package/build/contracts/src/bridge/IDelayedMessageProvider.sol/IDelayedMessageProvider.dbg.json +1 -1
  79. package/build/contracts/src/bridge/IERC20Bridge.sol/IERC20Bridge.dbg.json +1 -1
  80. package/build/contracts/src/bridge/IERC20Inbox.sol/IERC20Inbox.dbg.json +1 -1
  81. package/build/contracts/src/bridge/IEthBridge.sol/IEthBridge.dbg.json +1 -1
  82. package/build/contracts/src/bridge/IInbox.sol/IInbox.dbg.json +1 -1
  83. package/build/contracts/src/bridge/IInboxBase.sol/IInboxBase.dbg.json +1 -1
  84. package/build/contracts/src/bridge/IOutbox.sol/IOutbox.dbg.json +1 -1
  85. package/build/contracts/src/bridge/IOwnable.sol/IOwnable.dbg.json +1 -1
  86. package/build/contracts/src/bridge/ISequencerInbox.sol/ISequencerInbox.dbg.json +1 -1
  87. package/build/contracts/src/bridge/Inbox.sol/Inbox.dbg.json +1 -1
  88. package/build/contracts/src/bridge/Messages.sol/Messages.dbg.json +1 -1
  89. package/build/contracts/src/bridge/Outbox.sol/Outbox.dbg.json +1 -1
  90. package/build/contracts/src/bridge/SequencerInbox.sol/SequencerInbox.dbg.json +1 -1
  91. package/build/contracts/src/chain/CacheManager.sol/CacheManager.dbg.json +1 -1
  92. package/build/contracts/src/challengeV2/IAssertionChain.sol/IAssertionChain.dbg.json +1 -1
  93. package/build/contracts/src/challengeV2/IEdgeChallengeManager.sol/IEdgeChallengeManager.dbg.json +1 -1
  94. package/build/contracts/src/challengeV2/libraries/ArrayUtilsLib.sol/ArrayUtilsLib.dbg.json +1 -1
  95. package/build/contracts/src/challengeV2/libraries/ChallengeEdgeLib.sol/ChallengeEdgeLib.dbg.json +1 -1
  96. package/build/contracts/src/challengeV2/libraries/EdgeChallengeManagerLib.sol/EdgeChallengeManagerLib.dbg.json +1 -1
  97. package/build/contracts/src/challengeV2/libraries/MerkleTreeAccumulatorLib.sol/MerkleTreeAccumulatorLib.dbg.json +1 -1
  98. package/build/contracts/src/challengeV2/libraries/UintUtilsLib.sol/UintUtilsLib.dbg.json +1 -1
  99. package/build/contracts/src/express-lane-auction/Balance.sol/BalanceLib.dbg.json +4 -0
  100. package/build/contracts/src/express-lane-auction/Balance.sol/BalanceLib.json +10 -0
  101. package/build/contracts/src/express-lane-auction/Burner.sol/Burner.dbg.json +4 -0
  102. package/build/contracts/src/express-lane-auction/Burner.sol/Burner.json +47 -0
  103. package/build/contracts/src/express-lane-auction/ELCRound.sol/LatestELCRoundsLib.dbg.json +4 -0
  104. package/build/contracts/src/express-lane-auction/ELCRound.sol/LatestELCRoundsLib.json +10 -0
  105. package/build/contracts/src/express-lane-auction/ExpressLaneAuction.sol/ExpressLaneAuction.dbg.json +4 -0
  106. package/build/contracts/src/express-lane-auction/ExpressLaneAuction.sol/ExpressLaneAuction.json +1601 -0
  107. package/build/contracts/src/express-lane-auction/IExpressLaneAuction.sol/IExpressLaneAuction.dbg.json +4 -0
  108. package/build/contracts/src/express-lane-auction/IExpressLaneAuction.sol/IExpressLaneAuction.json +1296 -0
  109. package/build/contracts/src/express-lane-auction/RoundTimingInfo.sol/RoundTimingInfoLib.dbg.json +4 -0
  110. package/build/contracts/src/express-lane-auction/RoundTimingInfo.sol/RoundTimingInfoLib.json +10 -0
  111. package/build/contracts/src/libraries/AddressAliasHelper.sol/AddressAliasHelper.dbg.json +1 -1
  112. package/build/contracts/src/libraries/AdminFallbackProxy.sol/AdminFallbackProxy.dbg.json +1 -1
  113. package/build/contracts/src/libraries/AdminFallbackProxy.sol/DoubleLogicERC1967Upgrade.dbg.json +1 -1
  114. package/build/contracts/src/libraries/ArbitrumChecker.sol/ArbitrumChecker.dbg.json +1 -1
  115. package/build/contracts/src/libraries/CallerChecker.sol/CallerChecker.dbg.json +1 -1
  116. package/build/contracts/src/libraries/CryptographyPrimitives.sol/CryptographyPrimitives.dbg.json +1 -1
  117. package/build/contracts/src/libraries/DecimalsConverterHelper.sol/DecimalsConverterHelper.dbg.json +1 -1
  118. package/build/contracts/src/libraries/DelegateCallAware.sol/DelegateCallAware.dbg.json +1 -1
  119. package/build/contracts/src/libraries/DoubleLogicUUPSUpgradeable.sol/DoubleLogicUUPSUpgradeable.dbg.json +1 -1
  120. package/build/contracts/src/libraries/GasRefundEnabled.sol/GasRefundEnabled.dbg.json +1 -1
  121. package/build/contracts/src/libraries/IGasRefunder.sol/IGasRefunder.dbg.json +1 -1
  122. package/build/contracts/src/libraries/IReader4844.sol/IReader4844.dbg.json +1 -1
  123. package/build/contracts/src/libraries/MerkleLib.sol/MerkleLib.dbg.json +1 -1
  124. package/build/contracts/src/libraries/UUPSNotUpgradeable.sol/UUPSNotUpgradeable.dbg.json +1 -1
  125. package/build/contracts/src/mocks/Benchmarks.sol/Benchmarks.dbg.json +1 -1
  126. package/build/contracts/src/mocks/BridgeStub.sol/BridgeStub.dbg.json +1 -1
  127. package/build/contracts/src/mocks/BridgeUnproxied.sol/BridgeUnproxied.dbg.json +1 -1
  128. package/build/contracts/src/mocks/BridgeUnproxied.sol/BridgeUnproxied.json +2 -2
  129. package/build/contracts/src/mocks/CreateTest.sol/CreateTest.dbg.json +1 -1
  130. package/build/contracts/src/mocks/InboxStub.sol/InboxStub.dbg.json +1 -1
  131. package/build/contracts/src/mocks/MerkleTreeAccess.sol/MerkleTreeAccess.dbg.json +1 -1
  132. package/build/contracts/src/mocks/MockRollupEventInbox.sol/MockRollupEventInbox.dbg.json +1 -1
  133. package/build/contracts/src/mocks/MultiCallTest.sol/MultiCallTest.dbg.json +1 -1
  134. package/build/contracts/src/mocks/PendingBlkTimeAndNrAdvanceCheck.sol/PendingBlkTimeAndNrAdvanceCheck.dbg.json +1 -1
  135. package/build/contracts/src/mocks/Program.sol/ProgramTest.dbg.json +1 -1
  136. package/build/contracts/src/mocks/ProxyAdminForBinding.sol/ProxyAdminForBinding.dbg.json +1 -1
  137. package/build/contracts/src/mocks/SdkStorage.sol/SdkStorage.dbg.json +1 -1
  138. package/build/contracts/src/mocks/SequencerInboxBlobMock.sol/SequencerInboxBlobMock.dbg.json +1 -1
  139. package/build/contracts/src/mocks/SequencerInboxStub.sol/SequencerInboxStub.dbg.json +1 -1
  140. package/build/contracts/src/mocks/Simple.sol/Simple.dbg.json +1 -1
  141. package/build/contracts/src/mocks/SimpleCacheManager.sol/SimpleCacheManager.dbg.json +1 -1
  142. package/build/contracts/src/mocks/SimpleOneStepProofEntry.sol/SimpleOneStepProofEntry.dbg.json +1 -1
  143. package/build/contracts/src/mocks/SimpleProxy.sol/SimpleProxy.dbg.json +1 -1
  144. package/build/contracts/src/mocks/TestWETH9.sol/IWETH9.dbg.json +1 -1
  145. package/build/contracts/src/mocks/TestWETH9.sol/TestWETH9.dbg.json +1 -1
  146. package/build/contracts/src/mocks/UpgradeExecutorMock.sol/UpgradeExecutorMock.dbg.json +1 -1
  147. package/build/contracts/src/node-interface/NodeInterface.sol/NodeInterface.dbg.json +1 -1
  148. package/build/contracts/src/node-interface/NodeInterfaceDebug.sol/NodeInterfaceDebug.dbg.json +1 -1
  149. package/build/contracts/src/osp/HashProofHelper.sol/HashProofHelper.dbg.json +1 -1
  150. package/build/contracts/src/osp/IOneStepProofEntry.sol/IOneStepProofEntry.dbg.json +1 -1
  151. package/build/contracts/src/osp/IOneStepProofEntry.sol/OneStepProofEntryLib.dbg.json +1 -1
  152. package/build/contracts/src/osp/IOneStepProver.sol/IOneStepProver.dbg.json +1 -1
  153. package/build/contracts/src/osp/OneStepProofEntry.sol/OneStepProofEntry.dbg.json +1 -1
  154. package/build/contracts/src/osp/OneStepProver0.sol/OneStepProver0.dbg.json +1 -1
  155. package/build/contracts/src/osp/OneStepProverHostIo.sol/OneStepProverHostIo.dbg.json +1 -1
  156. package/build/contracts/src/osp/OneStepProverMath.sol/OneStepProverMath.dbg.json +1 -1
  157. package/build/contracts/src/osp/OneStepProverMemory.sol/OneStepProverMemory.dbg.json +1 -1
  158. package/build/contracts/src/precompiles/ArbAddressTable.sol/ArbAddressTable.dbg.json +1 -1
  159. package/build/contracts/src/precompiles/ArbAggregator.sol/ArbAggregator.dbg.json +1 -1
  160. package/build/contracts/src/precompiles/ArbBLS.sol/ArbBLS.dbg.json +1 -1
  161. package/build/contracts/src/precompiles/ArbDebug.sol/ArbDebug.dbg.json +1 -1
  162. package/build/contracts/src/precompiles/ArbFunctionTable.sol/ArbFunctionTable.dbg.json +1 -1
  163. package/build/contracts/src/precompiles/ArbGasInfo.sol/ArbGasInfo.dbg.json +1 -1
  164. package/build/contracts/src/precompiles/ArbInfo.sol/ArbInfo.dbg.json +1 -1
  165. package/build/contracts/src/precompiles/ArbOwner.sol/ArbOwner.dbg.json +1 -1
  166. package/build/contracts/src/precompiles/ArbOwnerPublic.sol/ArbOwnerPublic.dbg.json +1 -1
  167. package/build/contracts/src/precompiles/ArbRetryableTx.sol/ArbRetryableTx.dbg.json +1 -1
  168. package/build/contracts/src/precompiles/ArbStatistics.sol/ArbStatistics.dbg.json +1 -1
  169. package/build/contracts/src/precompiles/ArbSys.sol/ArbSys.dbg.json +1 -1
  170. package/build/contracts/src/precompiles/ArbWasm.sol/ArbWasm.dbg.json +1 -1
  171. package/build/contracts/src/precompiles/ArbWasmCache.sol/ArbWasmCache.dbg.json +1 -1
  172. package/build/contracts/src/precompiles/ArbosActs.sol/ArbosActs.dbg.json +1 -1
  173. package/build/contracts/src/precompiles/ArbosTest.sol/ArbosTest.dbg.json +1 -1
  174. package/build/contracts/src/rollup/AbsRollupEventInbox.sol/AbsRollupEventInbox.dbg.json +1 -1
  175. package/build/contracts/src/rollup/Assertion.sol/AssertionNodeLib.dbg.json +1 -1
  176. package/build/contracts/src/rollup/AssertionState.sol/AssertionStateLib.dbg.json +1 -1
  177. package/build/contracts/src/rollup/BOLDUpgradeAction.sol/BOLDUpgradeAction.dbg.json +1 -1
  178. package/build/contracts/src/rollup/BOLDUpgradeAction.sol/BOLDUpgradeAction.json +84 -32
  179. package/build/contracts/src/rollup/BOLDUpgradeAction.sol/ConstantArrayStorage.dbg.json +1 -1
  180. package/build/contracts/src/rollup/BOLDUpgradeAction.sol/ConstantArrayStorage.json +2 -2
  181. package/build/contracts/src/rollup/BOLDUpgradeAction.sol/IOldRollup.dbg.json +1 -1
  182. package/build/contracts/src/rollup/BOLDUpgradeAction.sol/IOldRollup.json +45 -0
  183. package/build/contracts/src/rollup/BOLDUpgradeAction.sol/IOldRollupAdmin.dbg.json +1 -1
  184. package/build/contracts/src/rollup/BOLDUpgradeAction.sol/ISeqInboxPostUpgradeInit.dbg.json +1 -1
  185. package/build/contracts/src/rollup/BOLDUpgradeAction.sol/StateHashPreImageLookup.dbg.json +1 -1
  186. package/build/contracts/src/rollup/BOLDUpgradeAction.sol/StateHashPreImageLookup.json +2 -2
  187. package/build/contracts/src/rollup/BridgeCreator.sol/BridgeCreator.dbg.json +1 -1
  188. package/build/contracts/src/rollup/BridgeCreator.sol/BridgeCreator.json +2 -2
  189. package/build/contracts/src/rollup/DeployHelper.sol/DeployHelper.dbg.json +1 -1
  190. package/build/contracts/src/rollup/ERC20RollupEventInbox.sol/ERC20RollupEventInbox.dbg.json +1 -1
  191. package/build/contracts/src/rollup/FactoryDeployerHelper.sol/FactoryDeployerHelper.dbg.json +1 -1
  192. package/build/contracts/src/rollup/FactoryDeployerHelper.sol/IDeployHelper.dbg.json +1 -1
  193. package/build/contracts/src/rollup/FactoryDeployerHelper.sol/IERC20.dbg.json +1 -1
  194. package/build/contracts/src/rollup/FactoryDeployerHelper.sol/IERC20Bridge.dbg.json +1 -1
  195. package/build/contracts/src/rollup/FactoryDeployerHelper.sol/IInboxBase.dbg.json +1 -1
  196. package/build/contracts/src/rollup/IRollupAdmin.sol/IRollupAdmin.dbg.json +1 -1
  197. package/build/contracts/src/rollup/IRollupAdmin.sol/IRollupAdmin.json +10 -0
  198. package/build/contracts/src/rollup/IRollupCore.sol/IRollupCore.dbg.json +1 -1
  199. package/build/contracts/src/rollup/IRollupEventInbox.sol/IRollupEventInbox.dbg.json +1 -1
  200. package/build/contracts/src/rollup/IRollupLogic.sol/IRollupUser.dbg.json +1 -1
  201. package/build/contracts/src/rollup/RollupAdminLogic.sol/RollupAdminLogic.dbg.json +1 -1
  202. package/build/contracts/src/rollup/RollupAdminLogic.sol/RollupAdminLogic.json +12 -2
  203. package/build/contracts/src/rollup/RollupCore.sol/RollupCore.dbg.json +1 -1
  204. package/build/contracts/src/rollup/RollupCreator.sol/RollupCreator.dbg.json +1 -1
  205. package/build/contracts/src/rollup/RollupCreator.sol/RollupCreator.json +12 -2
  206. package/build/contracts/src/rollup/RollupEventInbox.sol/RollupEventInbox.dbg.json +1 -1
  207. package/build/contracts/src/rollup/RollupLib.sol/RollupLib.dbg.json +1 -1
  208. package/build/contracts/src/rollup/RollupProxy.sol/RollupProxy.dbg.json +1 -1
  209. package/build/contracts/src/rollup/RollupProxy.sol/RollupProxy.json +12 -2
  210. package/build/contracts/src/rollup/ValidatorWallet.sol/ValidatorWallet.dbg.json +1 -1
  211. package/build/contracts/src/rollup/ValidatorWalletCreator.sol/ValidatorWalletCreator.dbg.json +1 -1
  212. package/build/contracts/src/state/Deserialize.sol/Deserialize.dbg.json +1 -1
  213. package/build/contracts/src/state/GlobalState.sol/GlobalStateLib.dbg.json +1 -1
  214. package/build/contracts/src/state/Instructions.sol/Instructions.dbg.json +1 -1
  215. package/build/contracts/src/state/Machine.sol/MachineLib.dbg.json +1 -1
  216. package/build/contracts/src/state/MerkleProof.sol/MerkleProofLib.dbg.json +1 -1
  217. package/build/contracts/src/state/Module.sol/ModuleLib.dbg.json +1 -1
  218. package/build/contracts/src/state/ModuleMemory.sol/ModuleMemoryLib.dbg.json +1 -1
  219. package/build/contracts/src/state/ModuleMemoryCompact.sol/ModuleMemoryCompactLib.dbg.json +1 -1
  220. package/build/contracts/src/state/MultiStack.sol/MultiStackLib.dbg.json +1 -1
  221. package/build/contracts/src/state/PcArray.sol/PcArrayLib.dbg.json +1 -1
  222. package/build/contracts/src/state/StackFrame.sol/StackFrameLib.dbg.json +1 -1
  223. package/build/contracts/src/state/Value.sol/ValueLib.dbg.json +1 -1
  224. package/build/contracts/src/state/ValueArray.sol/ValueArrayLib.dbg.json +1 -1
  225. package/build/contracts/src/state/ValueStack.sol/ValueStackLib.dbg.json +1 -1
  226. package/build/contracts/src/test-helpers/BridgeTester.sol/BridgeTester.dbg.json +1 -1
  227. package/build/contracts/src/test-helpers/CryptographyPrimitivesTester.sol/CryptographyPrimitivesTester.dbg.json +1 -1
  228. package/build/contracts/src/test-helpers/EthVault.sol/EthVault.dbg.json +1 -1
  229. package/build/contracts/src/test-helpers/MessageTester.sol/MessageTester.dbg.json +1 -1
  230. package/build/contracts/src/test-helpers/OutboxWithoutOptTester.sol/OutboxWithoutOptTester.dbg.json +1 -1
  231. package/build/contracts/src/test-helpers/RollupMock.sol/RollupMock.dbg.json +1 -1
  232. package/build/contracts/src/test-helpers/TestToken.sol/TestToken.dbg.json +1 -1
  233. package/build/contracts/src/test-helpers/ValueArrayTester.sol/ValueArrayTester.dbg.json +1 -1
  234. package/package.json +2 -3
  235. package/src/bridge/AbsBridge.sol +2 -2
  236. package/src/bridge/ERC20Bridge.sol +6 -2
  237. package/src/express-lane-auction/Balance.sol +137 -0
  238. package/src/express-lane-auction/Burner.sol +26 -0
  239. package/src/express-lane-auction/ELCRound.sol +70 -0
  240. package/src/express-lane-auction/Errors.sol +31 -0
  241. package/src/express-lane-auction/ExpressLaneAuction.sol +567 -0
  242. package/src/express-lane-auction/IExpressLaneAuction.sol +441 -0
  243. package/src/express-lane-auction/RoundTimingInfo.sol +118 -0
  244. package/src/rollup/BOLDUpgradeAction.sol +53 -104
  245. package/src/rollup/BridgeCreator.sol +23 -5
  246. package/src/rollup/Config.sol +2 -0
  247. package/src/rollup/RollupAdminLogic.sol +4 -4
  248. package/build/contracts/src/rollup/BOLDUpgradeAction.sol/RollupReader.dbg.json +0 -4
  249. 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 = ROLLUP_READER.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 = ROLLUP_READER.getStakerAddress(i);
387
- OldStaker memory staker = ROLLUP_READER.getStaker(stakerAddr);
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
- ROLLUP_READER.getNode(ROLLUP_READER.latestConfirmed()).stateHash;
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: ROLLUP_READER.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: ROLLUP_READER.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
- bytes32 rollupSalt = keccak256(abi.encode(config));
579
- address expectedRollupAddress =
580
- Create2Upgradeable.computeAddress(rollupSalt, keccak256(type(RollupProxy).creationCode));
581
- upgradeSurroundingContracts(expectedRollupAddress);
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(expectedRollupAddress),
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) == expectedRollupAddress, "UNEXPCTED_ROLLUP_ADDR");
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(ROLLUP_READER.isValidator(validators[i]), "UNEXPECTED_NEW_VALIDATOR");
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 ROLLUP_READER.anyTrustFastConfirmer() returns (address anyTrustFastConfirmer) {
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(expectedRollupAddress, address(challengeManager));
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(new TransparentUpgradeableProxy(address(templates.bridge), adminProxy, ""))
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(new TransparentUpgradeableProxy(address(templates.inbox), adminProxy, ""))
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(address(templates.rollupEventInbox), adminProxy, "")
103
+ new TransparentUpgradeableProxy{salt: create2Salt}(
104
+ address(templates.rollupEventInbox), adminProxy, ""
105
+ )
95
106
  )
96
107
  );
97
108
  frame.outbox = IOutbox(
98
- address(new TransparentUpgradeableProxy(address(templates.outbox), adminProxy, ""))
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
@@ -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
- // A little over 15 minutes
57
- minimumAssertionPeriod = 75;
58
- // ValidatorAfkBlocks is defaulted to 28 days assuming a 12 seconds block time.
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 = 201600;
61
+ validatorAfkBlocks = config.validatorAfkBlocks;
62
62
  challengeGracePeriodBlocks = config.challengeGracePeriodBlocks;
63
63
 
64
64
  // loser stake is now sent directly to loserStakeEscrow, it must not
@@ -1,4 +0,0 @@
1
- {
2
- "_format": "hh-sol-dbg-1",
3
- "buildInfo": "../../../build-info/a354aaf7cb79bc63f750c0ca36db8cc9.json"
4
- }