@arbitrum/nitro-contracts 2.0.0 → 3.0.0-alpha.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 (503) hide show
  1. package/build/contracts/@openzeppelin/contracts/access/Ownable.sol/Ownable.dbg.json +1 -1
  2. package/build/contracts/@openzeppelin/contracts/interfaces/draft-IERC1822.sol/IERC1822Proxiable.dbg.json +1 -1
  3. package/build/contracts/@openzeppelin/contracts/proxy/ERC1967/ERC1967Proxy.sol/ERC1967Proxy.dbg.json +1 -1
  4. package/build/contracts/@openzeppelin/contracts/proxy/ERC1967/ERC1967Proxy.sol/ERC1967Proxy.json +2 -2
  5. package/build/contracts/@openzeppelin/contracts/proxy/ERC1967/ERC1967Upgrade.sol/ERC1967Upgrade.dbg.json +1 -1
  6. package/build/contracts/@openzeppelin/contracts/proxy/Proxy.sol/Proxy.dbg.json +1 -1
  7. package/build/contracts/@openzeppelin/contracts/proxy/beacon/IBeacon.sol/IBeacon.dbg.json +1 -1
  8. package/build/contracts/@openzeppelin/contracts/proxy/beacon/UpgradeableBeacon.sol/UpgradeableBeacon.dbg.json +1 -1
  9. package/build/contracts/@openzeppelin/contracts/proxy/beacon/UpgradeableBeacon.sol/UpgradeableBeacon.json +2 -2
  10. package/build/contracts/@openzeppelin/contracts/proxy/transparent/ProxyAdmin.sol/ProxyAdmin.dbg.json +1 -1
  11. package/build/contracts/@openzeppelin/contracts/proxy/transparent/ProxyAdmin.sol/ProxyAdmin.json +2 -2
  12. package/build/contracts/@openzeppelin/contracts/proxy/transparent/TransparentUpgradeableProxy.sol/TransparentUpgradeableProxy.dbg.json +1 -1
  13. package/build/contracts/@openzeppelin/contracts/proxy/transparent/TransparentUpgradeableProxy.sol/TransparentUpgradeableProxy.json +2 -2
  14. package/build/contracts/@openzeppelin/contracts/proxy/utils/UUPSUpgradeable.sol/UUPSUpgradeable.dbg.json +1 -1
  15. package/build/contracts/@openzeppelin/contracts/security/ReentrancyGuard.sol/ReentrancyGuard.dbg.json +1 -1
  16. package/build/contracts/@openzeppelin/contracts/token/ERC20/ERC20.sol/ERC20.dbg.json +1 -1
  17. package/build/contracts/@openzeppelin/contracts/token/ERC20/ERC20.sol/ERC20.json +2 -2
  18. package/build/contracts/@openzeppelin/contracts/token/ERC20/IERC20.sol/IERC20.dbg.json +1 -1
  19. package/build/contracts/@openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata.sol/IERC20Metadata.dbg.json +1 -1
  20. package/build/contracts/@openzeppelin/contracts/token/ERC20/extensions/draft-IERC20Permit.sol/IERC20Permit.dbg.json +4 -0
  21. package/build/contracts/@openzeppelin/contracts/token/ERC20/extensions/draft-IERC20Permit.sol/IERC20Permit.json +86 -0
  22. package/build/contracts/@openzeppelin/contracts/token/ERC20/utils/SafeERC20.sol/SafeERC20.dbg.json +1 -1
  23. package/build/contracts/@openzeppelin/contracts/token/ERC20/utils/SafeERC20.sol/SafeERC20.json +2 -2
  24. package/build/contracts/@openzeppelin/contracts/utils/Address.sol/Address.dbg.json +1 -1
  25. package/build/contracts/@openzeppelin/contracts/utils/Address.sol/Address.json +2 -2
  26. package/build/contracts/@openzeppelin/contracts/utils/Context.sol/Context.dbg.json +1 -1
  27. package/build/contracts/@openzeppelin/contracts/utils/Create2.sol/Create2.dbg.json +4 -0
  28. package/build/contracts/@openzeppelin/contracts/utils/Create2.sol/Create2.json +10 -0
  29. package/build/contracts/@openzeppelin/contracts/utils/StorageSlot.sol/StorageSlot.dbg.json +1 -1
  30. package/build/contracts/@openzeppelin/contracts/utils/StorageSlot.sol/StorageSlot.json +2 -2
  31. package/build/contracts/@openzeppelin/contracts/utils/Strings.sol/Strings.dbg.json +1 -1
  32. package/build/contracts/@openzeppelin/contracts/utils/Strings.sol/Strings.json +2 -2
  33. package/build/contracts/@openzeppelin/contracts-upgradeable/access/AccessControlUpgradeable.sol/AccessControlUpgradeable.dbg.json +1 -1
  34. package/build/contracts/@openzeppelin/contracts-upgradeable/access/AccessControlUpgradeable.sol/AccessControlUpgradeable.json +13 -0
  35. package/build/contracts/@openzeppelin/contracts-upgradeable/access/IAccessControlUpgradeable.sol/IAccessControlUpgradeable.dbg.json +1 -1
  36. package/build/contracts/@openzeppelin/contracts-upgradeable/access/OwnableUpgradeable.sol/OwnableUpgradeable.dbg.json +1 -1
  37. package/build/contracts/@openzeppelin/contracts-upgradeable/access/OwnableUpgradeable.sol/OwnableUpgradeable.json +13 -0
  38. package/build/contracts/@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol/Initializable.dbg.json +1 -1
  39. package/build/contracts/@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol/Initializable.json +15 -1
  40. package/build/contracts/@openzeppelin/contracts-upgradeable/security/PausableUpgradeable.sol/PausableUpgradeable.dbg.json +1 -1
  41. package/build/contracts/@openzeppelin/contracts-upgradeable/security/PausableUpgradeable.sol/PausableUpgradeable.json +13 -0
  42. package/build/contracts/@openzeppelin/contracts-upgradeable/utils/AddressUpgradeable.sol/AddressUpgradeable.dbg.json +1 -1
  43. package/build/contracts/@openzeppelin/contracts-upgradeable/utils/AddressUpgradeable.sol/AddressUpgradeable.json +2 -2
  44. package/build/contracts/@openzeppelin/contracts-upgradeable/utils/ContextUpgradeable.sol/ContextUpgradeable.dbg.json +1 -1
  45. package/build/contracts/@openzeppelin/contracts-upgradeable/utils/ContextUpgradeable.sol/ContextUpgradeable.json +15 -1
  46. package/build/contracts/@openzeppelin/contracts-upgradeable/utils/Create2Upgradeable.sol/Create2Upgradeable.dbg.json +4 -0
  47. package/build/contracts/@openzeppelin/contracts-upgradeable/utils/Create2Upgradeable.sol/Create2Upgradeable.json +10 -0
  48. package/build/contracts/@openzeppelin/contracts-upgradeable/utils/StorageSlotUpgradeable.sol/StorageSlotUpgradeable.dbg.json +1 -1
  49. package/build/contracts/@openzeppelin/contracts-upgradeable/utils/StorageSlotUpgradeable.sol/StorageSlotUpgradeable.json +2 -2
  50. package/build/contracts/@openzeppelin/contracts-upgradeable/utils/StringsUpgradeable.sol/StringsUpgradeable.dbg.json +1 -1
  51. package/build/contracts/@openzeppelin/contracts-upgradeable/utils/StringsUpgradeable.sol/StringsUpgradeable.json +2 -2
  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/ERC165Upgradeable.sol/ERC165Upgradeable.json +13 -0
  54. package/build/contracts/@openzeppelin/contracts-upgradeable/utils/introspection/IERC165Upgradeable.sol/IERC165Upgradeable.dbg.json +1 -1
  55. package/build/contracts/@openzeppelin/contracts-upgradeable/utils/structs/EnumerableSetUpgradeable.sol/EnumerableSetUpgradeable.dbg.json +4 -0
  56. package/build/contracts/@openzeppelin/contracts-upgradeable/utils/structs/EnumerableSetUpgradeable.sol/EnumerableSetUpgradeable.json +10 -0
  57. package/build/contracts/src/assertionStakingPool/AbsBoldStakingPool.sol/AbsBoldStakingPool.dbg.json +4 -0
  58. package/build/contracts/{@openzeppelin/contracts-upgradeable/token/ERC20/IERC20Upgradeable.sol/IERC20Upgradeable.json → src/assertionStakingPool/AbsBoldStakingPool.sol/AbsBoldStakingPool.json} +41 -95
  59. package/build/contracts/src/assertionStakingPool/AssertionStakingPool.sol/AssertionStakingPool.dbg.json +4 -0
  60. package/build/contracts/src/assertionStakingPool/AssertionStakingPool.sol/AssertionStakingPool.json +340 -0
  61. package/build/contracts/src/assertionStakingPool/AssertionStakingPoolCreator.sol/AssertionStakingPoolCreator.dbg.json +4 -0
  62. package/build/contracts/src/assertionStakingPool/AssertionStakingPoolCreator.sol/AssertionStakingPoolCreator.json +89 -0
  63. package/build/contracts/src/assertionStakingPool/EdgeStakingPool.sol/EdgeStakingPool.dbg.json +4 -0
  64. package/build/contracts/src/assertionStakingPool/EdgeStakingPool.sol/EdgeStakingPool.json +248 -0
  65. package/build/contracts/src/assertionStakingPool/EdgeStakingPoolCreator.sol/EdgeStakingPoolCreator.dbg.json +4 -0
  66. package/build/contracts/src/assertionStakingPool/EdgeStakingPoolCreator.sol/EdgeStakingPoolCreator.json +83 -0
  67. package/build/contracts/src/assertionStakingPool/StakingPoolCreatorUtils.sol/StakingPoolCreatorUtils.dbg.json +4 -0
  68. package/build/contracts/src/assertionStakingPool/StakingPoolCreatorUtils.sol/StakingPoolCreatorUtils.json +16 -0
  69. package/build/contracts/src/assertionStakingPool/interfaces/IAbsBoldStakingPool.sol/IAbsBoldStakingPool.dbg.json +4 -0
  70. package/build/contracts/src/assertionStakingPool/interfaces/IAbsBoldStakingPool.sol/IAbsBoldStakingPool.json +140 -0
  71. package/build/contracts/src/assertionStakingPool/interfaces/IAssertionStakingPool.sol/IAssertionStakingPool.dbg.json +4 -0
  72. package/build/contracts/src/assertionStakingPool/interfaces/IAssertionStakingPool.sol/IAssertionStakingPool.json +324 -0
  73. package/build/contracts/src/assertionStakingPool/interfaces/IAssertionStakingPoolCreator.sol/IAssertionStakingPoolCreator.dbg.json +4 -0
  74. package/build/contracts/src/assertionStakingPool/interfaces/IAssertionStakingPoolCreator.sol/IAssertionStakingPoolCreator.json +84 -0
  75. package/build/contracts/src/assertionStakingPool/interfaces/IEdgeStakingPool.sol/IEdgeStakingPool.dbg.json +4 -0
  76. package/build/contracts/src/assertionStakingPool/interfaces/IEdgeStakingPool.sol/IEdgeStakingPool.json +232 -0
  77. package/build/contracts/src/assertionStakingPool/interfaces/IEdgeStakingPoolCreator.sol/IEdgeStakingPoolCreator.dbg.json +4 -0
  78. package/build/contracts/src/assertionStakingPool/interfaces/IEdgeStakingPoolCreator.sol/IEdgeStakingPoolCreator.json +78 -0
  79. package/build/contracts/src/bridge/AbsBridge.sol/AbsBridge.dbg.json +1 -1
  80. package/build/contracts/src/bridge/AbsBridge.sol/AbsBridge.json +13 -0
  81. package/build/contracts/src/bridge/AbsInbox.sol/AbsInbox.dbg.json +1 -1
  82. package/build/contracts/src/bridge/AbsInbox.sol/AbsInbox.json +20 -7
  83. package/build/contracts/src/bridge/AbsOutbox.sol/AbsOutbox.dbg.json +1 -1
  84. package/build/contracts/src/bridge/Bridge.sol/Bridge.dbg.json +1 -1
  85. package/build/contracts/src/bridge/Bridge.sol/Bridge.json +15 -2
  86. package/build/contracts/src/bridge/DelayBuffer.sol/DelayBuffer.dbg.json +4 -0
  87. package/build/contracts/src/bridge/DelayBuffer.sol/DelayBuffer.json +24 -0
  88. package/build/contracts/src/bridge/ERC20Bridge.sol/ERC20Bridge.dbg.json +1 -1
  89. package/build/contracts/src/bridge/ERC20Bridge.sol/ERC20Bridge.json +15 -2
  90. package/build/contracts/src/bridge/ERC20Inbox.sol/ERC20Inbox.dbg.json +1 -1
  91. package/build/contracts/src/bridge/ERC20Inbox.sol/ERC20Inbox.json +22 -9
  92. package/build/contracts/src/bridge/ERC20Outbox.sol/ERC20Outbox.dbg.json +1 -1
  93. package/build/contracts/src/bridge/ERC20Outbox.sol/ERC20Outbox.json +2 -2
  94. package/build/contracts/src/bridge/GasRefunder.sol/GasRefunder.dbg.json +1 -1
  95. package/build/contracts/src/bridge/GasRefunder.sol/GasRefunder.json +2 -2
  96. package/build/contracts/src/bridge/IBridge.sol/IBridge.dbg.json +1 -1
  97. package/build/contracts/src/bridge/IDelayedMessageProvider.sol/IDelayedMessageProvider.dbg.json +1 -1
  98. package/build/contracts/src/bridge/IERC20Bridge.sol/IERC20Bridge.dbg.json +1 -1
  99. package/build/contracts/src/bridge/IERC20Inbox.sol/IERC20Inbox.dbg.json +1 -1
  100. package/build/contracts/src/bridge/IERC20Inbox.sol/IERC20Inbox.json +1 -1
  101. package/build/contracts/src/bridge/IEthBridge.sol/IEthBridge.dbg.json +1 -1
  102. package/build/contracts/src/bridge/IInbox.sol/IInbox.dbg.json +1 -1
  103. package/build/contracts/src/bridge/IInbox.sol/IInbox.json +1 -1
  104. package/build/contracts/src/bridge/IInboxBase.sol/IInboxBase.dbg.json +1 -1
  105. package/build/contracts/src/bridge/IInboxBase.sol/IInboxBase.json +1 -1
  106. package/build/contracts/src/bridge/IOutbox.sol/IOutbox.dbg.json +1 -1
  107. package/build/contracts/src/bridge/IOwnable.sol/IOwnable.dbg.json +1 -1
  108. package/build/contracts/src/bridge/ISequencerInbox.sol/ISequencerInbox.dbg.json +1 -1
  109. package/build/contracts/src/bridge/ISequencerInbox.sol/ISequencerInbox.json +441 -0
  110. package/build/contracts/src/bridge/Inbox.sol/Inbox.dbg.json +1 -1
  111. package/build/contracts/src/bridge/Inbox.sol/Inbox.json +22 -4
  112. package/build/contracts/src/bridge/Messages.sol/Messages.dbg.json +1 -1
  113. package/build/contracts/src/bridge/Messages.sol/Messages.json +2 -2
  114. package/build/contracts/src/bridge/Outbox.sol/Outbox.dbg.json +1 -1
  115. package/build/contracts/src/bridge/Outbox.sol/Outbox.json +2 -2
  116. package/build/contracts/src/bridge/SequencerInbox.sol/SequencerInbox.dbg.json +1 -1
  117. package/build/contracts/src/bridge/SequencerInbox.sol/SequencerInbox.json +564 -7
  118. package/build/contracts/src/chain/CacheManager.sol/CacheManager.dbg.json +1 -1
  119. package/build/contracts/src/chain/CacheManager.sol/CacheManager.json +15 -2
  120. package/build/contracts/src/challengeV2/EdgeChallengeManager.sol/EdgeChallengeManager.dbg.json +4 -0
  121. package/build/contracts/src/challengeV2/EdgeChallengeManager.sol/EdgeChallengeManager.json +1631 -0
  122. package/build/contracts/src/challengeV2/EdgeChallengeManager.sol/IEdgeChallengeManager.dbg.json +4 -0
  123. package/build/contracts/src/challengeV2/EdgeChallengeManager.sol/IEdgeChallengeManager.json +762 -0
  124. package/build/contracts/src/challengeV2/IAssertionChain.sol/IAssertionChain.dbg.json +4 -0
  125. package/build/contracts/src/challengeV2/IAssertionChain.sol/IAssertionChain.json +247 -0
  126. package/build/contracts/src/challengeV2/libraries/ArrayUtilsLib.sol/ArrayUtilsLib.dbg.json +4 -0
  127. package/build/contracts/src/challengeV2/libraries/ArrayUtilsLib.sol/ArrayUtilsLib.json +10 -0
  128. package/build/contracts/src/challengeV2/libraries/ChallengeEdgeLib.sol/ChallengeEdgeLib.dbg.json +4 -0
  129. package/build/contracts/src/challengeV2/libraries/ChallengeEdgeLib.sol/ChallengeEdgeLib.json +10 -0
  130. package/build/contracts/src/challengeV2/libraries/EdgeChallengeManagerLib.sol/EdgeChallengeManagerLib.dbg.json +4 -0
  131. package/build/contracts/src/challengeV2/libraries/EdgeChallengeManagerLib.sol/EdgeChallengeManagerLib.json +24 -0
  132. package/build/contracts/src/challengeV2/libraries/MerkleTreeAccumulatorLib.sol/MerkleTreeAccumulatorLib.dbg.json +4 -0
  133. package/build/contracts/src/challengeV2/libraries/MerkleTreeAccumulatorLib.sol/MerkleTreeAccumulatorLib.json +24 -0
  134. package/build/contracts/src/challengeV2/libraries/UintUtilsLib.sol/UintUtilsLib.dbg.json +4 -0
  135. package/build/contracts/src/challengeV2/libraries/UintUtilsLib.sol/UintUtilsLib.json +10 -0
  136. package/build/contracts/src/libraries/AddressAliasHelper.sol/AddressAliasHelper.dbg.json +1 -1
  137. package/build/contracts/src/libraries/AddressAliasHelper.sol/AddressAliasHelper.json +2 -2
  138. package/build/contracts/src/libraries/AdminFallbackProxy.sol/AdminFallbackProxy.dbg.json +1 -1
  139. package/build/contracts/src/libraries/AdminFallbackProxy.sol/AdminFallbackProxy.json +2 -2
  140. package/build/contracts/src/libraries/AdminFallbackProxy.sol/DoubleLogicERC1967Upgrade.dbg.json +1 -1
  141. package/build/contracts/src/libraries/ArbitrumChecker.sol/ArbitrumChecker.dbg.json +1 -1
  142. package/build/contracts/src/libraries/ArbitrumChecker.sol/ArbitrumChecker.json +2 -2
  143. package/build/contracts/src/libraries/CryptographyPrimitives.sol/CryptographyPrimitives.dbg.json +1 -1
  144. package/build/contracts/src/libraries/CryptographyPrimitives.sol/CryptographyPrimitives.json +2 -2
  145. package/build/contracts/src/libraries/DecimalsConverterHelper.sol/DecimalsConverterHelper.dbg.json +1 -1
  146. package/build/contracts/src/libraries/DecimalsConverterHelper.sol/DecimalsConverterHelper.json +2 -2
  147. package/build/contracts/src/libraries/DelegateCallAware.sol/DelegateCallAware.dbg.json +1 -1
  148. package/build/contracts/src/libraries/DoubleLogicUUPSUpgradeable.sol/DoubleLogicUUPSUpgradeable.dbg.json +1 -1
  149. package/build/contracts/src/libraries/GasRefundEnabled.sol/GasRefundEnabled.dbg.json +1 -1
  150. package/build/contracts/src/libraries/IGasRefunder.sol/IGasRefunder.dbg.json +1 -1
  151. package/build/contracts/src/libraries/IReader4844.sol/IReader4844.dbg.json +1 -1
  152. package/build/contracts/src/libraries/MerkleLib.sol/MerkleLib.dbg.json +1 -1
  153. package/build/contracts/src/libraries/MerkleLib.sol/MerkleLib.json +2 -2
  154. package/build/contracts/src/libraries/UUPSNotUpgradeable.sol/UUPSNotUpgradeable.dbg.json +1 -1
  155. package/build/contracts/src/mocks/Benchmarks.sol/Benchmarks.dbg.json +1 -1
  156. package/build/contracts/src/mocks/Benchmarks.sol/Benchmarks.json +2 -2
  157. package/build/contracts/src/mocks/BridgeStub.sol/BridgeStub.dbg.json +1 -1
  158. package/build/contracts/src/mocks/BridgeStub.sol/BridgeStub.json +8 -8
  159. package/build/contracts/src/mocks/BridgeUnproxied.sol/BridgeUnproxied.dbg.json +1 -1
  160. package/build/contracts/src/mocks/BridgeUnproxied.sol/BridgeUnproxied.json +28 -2
  161. package/build/contracts/src/mocks/InboxStub.sol/InboxStub.dbg.json +1 -1
  162. package/build/contracts/src/mocks/InboxStub.sol/InboxStub.json +2 -2
  163. package/build/contracts/src/mocks/MerkleTreeAccess.sol/MerkleTreeAccess.dbg.json +4 -0
  164. package/build/contracts/src/mocks/MerkleTreeAccess.sol/MerkleTreeAccess.json +227 -0
  165. package/build/contracts/src/mocks/MockRollupEventInbox.sol/MockRollupEventInbox.dbg.json +4 -0
  166. package/build/contracts/src/mocks/MockRollupEventInbox.sol/MockRollupEventInbox.json +133 -0
  167. package/build/contracts/src/mocks/MultiCallTest.sol/MultiCallTest.dbg.json +1 -1
  168. package/build/contracts/src/mocks/MultiCallTest.sol/MultiCallTest.json +2 -2
  169. package/build/contracts/src/mocks/PendingBlkTimeAndNrAdvanceCheck.sol/PendingBlkTimeAndNrAdvanceCheck.dbg.json +1 -1
  170. package/build/contracts/src/mocks/PendingBlkTimeAndNrAdvanceCheck.sol/PendingBlkTimeAndNrAdvanceCheck.json +2 -2
  171. package/build/contracts/src/mocks/Program.sol/ProgramTest.dbg.json +1 -1
  172. package/build/contracts/src/mocks/Program.sol/ProgramTest.json +2 -2
  173. package/build/contracts/src/mocks/ProxyAdminForBinding.sol/ProxyAdminForBinding.dbg.json +1 -1
  174. package/build/contracts/src/mocks/ProxyAdminForBinding.sol/ProxyAdminForBinding.json +2 -2
  175. package/build/contracts/src/mocks/SdkStorage.sol/SdkStorage.dbg.json +1 -1
  176. package/build/contracts/src/mocks/SdkStorage.sol/SdkStorage.json +2 -2
  177. package/build/contracts/src/mocks/SequencerInboxBlobMock.sol/SequencerInboxBlobMock.dbg.json +4 -0
  178. package/build/contracts/src/mocks/SequencerInboxBlobMock.sol/SequencerInboxBlobMock.json +1632 -0
  179. package/build/contracts/src/mocks/SequencerInboxStub.sol/SequencerInboxStub.dbg.json +1 -1
  180. package/build/contracts/src/mocks/SequencerInboxStub.sol/SequencerInboxStub.json +564 -7
  181. package/build/contracts/src/mocks/Simple.sol/Simple.dbg.json +1 -1
  182. package/build/contracts/src/mocks/Simple.sol/Simple.json +2 -2
  183. package/build/contracts/src/mocks/SimpleCacheManager.sol/SimpleCacheManager.dbg.json +1 -1
  184. package/build/contracts/src/mocks/SimpleCacheManager.sol/SimpleCacheManager.json +2 -2
  185. package/build/contracts/src/mocks/SimpleOneStepProofEntry.sol/SimpleOneStepProofEntry.dbg.json +4 -0
  186. package/build/contracts/src/mocks/SimpleOneStepProofEntry.sol/SimpleOneStepProofEntry.json +142 -0
  187. package/build/contracts/src/mocks/SimpleProxy.sol/SimpleProxy.dbg.json +1 -1
  188. package/build/contracts/src/mocks/SimpleProxy.sol/SimpleProxy.json +2 -2
  189. package/build/contracts/src/mocks/TestWETH9.sol/IWETH9.dbg.json +4 -0
  190. package/build/contracts/src/mocks/TestWETH9.sol/IWETH9.json +31 -0
  191. package/build/contracts/src/mocks/TestWETH9.sol/TestWETH9.dbg.json +4 -0
  192. package/build/contracts/src/mocks/TestWETH9.sol/TestWETH9.json +317 -0
  193. package/build/contracts/src/mocks/UpgradeExecutorMock.sol/UpgradeExecutorMock.dbg.json +1 -1
  194. package/build/contracts/src/mocks/UpgradeExecutorMock.sol/UpgradeExecutorMock.json +15 -2
  195. package/build/contracts/src/node-interface/NodeInterface.sol/NodeInterface.dbg.json +1 -1
  196. package/build/contracts/src/node-interface/NodeInterfaceDebug.sol/NodeInterfaceDebug.dbg.json +1 -1
  197. package/build/contracts/src/osp/HashProofHelper.sol/HashProofHelper.dbg.json +1 -1
  198. package/build/contracts/src/osp/HashProofHelper.sol/HashProofHelper.json +2 -2
  199. package/build/contracts/src/osp/IOneStepProofEntry.sol/IOneStepProofEntry.dbg.json +1 -1
  200. package/build/contracts/src/osp/IOneStepProofEntry.sol/IOneStepProofEntry.json +33 -9
  201. package/build/contracts/src/osp/IOneStepProofEntry.sol/OneStepProofEntryLib.dbg.json +1 -1
  202. package/build/contracts/src/osp/IOneStepProofEntry.sol/OneStepProofEntryLib.json +2 -2
  203. package/build/contracts/src/osp/IOneStepProver.sol/IOneStepProver.dbg.json +1 -1
  204. package/build/contracts/src/osp/IOneStepProver.sol/IOneStepProver.json +5 -0
  205. package/build/contracts/src/osp/OneStepProofEntry.sol/OneStepProofEntry.dbg.json +1 -1
  206. package/build/contracts/src/osp/OneStepProofEntry.sol/OneStepProofEntry.json +35 -11
  207. package/build/contracts/src/osp/OneStepProver0.sol/OneStepProver0.dbg.json +1 -1
  208. package/build/contracts/src/osp/OneStepProver0.sol/OneStepProver0.json +7 -2
  209. package/build/contracts/src/osp/OneStepProverHostIo.sol/OneStepProverHostIo.dbg.json +1 -1
  210. package/build/contracts/src/osp/OneStepProverHostIo.sol/OneStepProverHostIo.json +7 -2
  211. package/build/contracts/src/osp/OneStepProverMath.sol/OneStepProverMath.dbg.json +1 -1
  212. package/build/contracts/src/osp/OneStepProverMath.sol/OneStepProverMath.json +7 -2
  213. package/build/contracts/src/osp/OneStepProverMemory.sol/OneStepProverMemory.dbg.json +1 -1
  214. package/build/contracts/src/osp/OneStepProverMemory.sol/OneStepProverMemory.json +7 -2
  215. package/build/contracts/src/precompiles/ArbAddressTable.sol/ArbAddressTable.dbg.json +1 -1
  216. package/build/contracts/src/precompiles/ArbAggregator.sol/ArbAggregator.dbg.json +1 -1
  217. package/build/contracts/src/precompiles/ArbBLS.sol/ArbBLS.dbg.json +1 -1
  218. package/build/contracts/src/precompiles/ArbDebug.sol/ArbDebug.dbg.json +1 -1
  219. package/build/contracts/src/precompiles/ArbFunctionTable.sol/ArbFunctionTable.dbg.json +1 -1
  220. package/build/contracts/src/precompiles/ArbGasInfo.sol/ArbGasInfo.dbg.json +1 -1
  221. package/build/contracts/src/precompiles/ArbInfo.sol/ArbInfo.dbg.json +1 -1
  222. package/build/contracts/src/precompiles/ArbOwner.sol/ArbOwner.dbg.json +1 -1
  223. package/build/contracts/src/precompiles/ArbOwnerPublic.sol/ArbOwnerPublic.dbg.json +1 -1
  224. package/build/contracts/src/precompiles/ArbRetryableTx.sol/ArbRetryableTx.dbg.json +1 -1
  225. package/build/contracts/src/precompiles/ArbStatistics.sol/ArbStatistics.dbg.json +1 -1
  226. package/build/contracts/src/precompiles/ArbSys.sol/ArbSys.dbg.json +1 -1
  227. package/build/contracts/src/precompiles/ArbWasm.sol/ArbWasm.dbg.json +1 -1
  228. package/build/contracts/src/precompiles/ArbWasmCache.sol/ArbWasmCache.dbg.json +1 -1
  229. package/build/contracts/src/precompiles/ArbosActs.sol/ArbosActs.dbg.json +1 -1
  230. package/build/contracts/src/precompiles/ArbosTest.sol/ArbosTest.dbg.json +1 -1
  231. package/build/contracts/src/rollup/AbsRollupEventInbox.sol/AbsRollupEventInbox.dbg.json +1 -1
  232. package/build/contracts/src/rollup/Assertion.sol/AssertionNodeLib.dbg.json +4 -0
  233. package/build/contracts/src/rollup/{Node.sol/NodeLib.json → Assertion.sol/AssertionNodeLib.json} +4 -4
  234. package/build/contracts/src/rollup/AssertionState.sol/AssertionStateLib.dbg.json +4 -0
  235. package/build/contracts/src/{challenge/ChallengeLib.sol/ChallengeLib.json → rollup/AssertionState.sol/AssertionStateLib.json} +4 -4
  236. package/build/contracts/src/rollup/BOLDUpgradeAction.sol/BOLDUpgradeAction.dbg.json +4 -0
  237. package/build/contracts/src/rollup/BOLDUpgradeAction.sol/BOLDUpgradeAction.json +807 -0
  238. package/build/contracts/src/rollup/BOLDUpgradeAction.sol/ConstantArrayStorage.dbg.json +4 -0
  239. package/build/contracts/src/rollup/BOLDUpgradeAction.sol/ConstantArrayStorage.json +35 -0
  240. package/build/contracts/src/rollup/BOLDUpgradeAction.sol/IOldRollup.dbg.json +4 -0
  241. package/build/contracts/src/rollup/BOLDUpgradeAction.sol/IOldRollup.json +361 -0
  242. package/build/contracts/src/rollup/BOLDUpgradeAction.sol/IOldRollupAdmin.dbg.json +4 -0
  243. package/build/contracts/src/rollup/BOLDUpgradeAction.sol/IOldRollupAdmin.json +38 -0
  244. package/build/contracts/src/rollup/BOLDUpgradeAction.sol/ISeqInboxPostUpgradeInit.dbg.json +4 -0
  245. package/build/contracts/src/rollup/BOLDUpgradeAction.sol/ISeqInboxPostUpgradeInit.json +41 -0
  246. package/build/contracts/src/rollup/BOLDUpgradeAction.sol/RollupReader.dbg.json +4 -0
  247. package/build/contracts/src/rollup/BOLDUpgradeAction.sol/RollupReader.json +385 -0
  248. package/build/contracts/src/rollup/BOLDUpgradeAction.sol/StateHashPreImageLookup.dbg.json +4 -0
  249. package/build/contracts/src/rollup/BOLDUpgradeAction.sol/StateHashPreImageLookup.json +203 -0
  250. package/build/contracts/src/rollup/BridgeCreator.sol/BridgeCreator.dbg.json +1 -1
  251. package/build/contracts/src/rollup/BridgeCreator.sol/BridgeCreator.json +62 -10
  252. package/build/contracts/src/rollup/DeployHelper.sol/DeployHelper.dbg.json +1 -1
  253. package/build/contracts/src/rollup/DeployHelper.sol/DeployHelper.json +2 -2
  254. package/build/contracts/src/rollup/ERC20RollupEventInbox.sol/ERC20RollupEventInbox.dbg.json +1 -1
  255. package/build/contracts/src/rollup/ERC20RollupEventInbox.sol/ERC20RollupEventInbox.json +2 -2
  256. package/build/contracts/src/rollup/FactoryDeployerHelper.sol/FactoryDeployerHelper.dbg.json +1 -1
  257. package/build/contracts/src/rollup/FactoryDeployerHelper.sol/FactoryDeployerHelper.json +2 -2
  258. package/build/contracts/src/rollup/FactoryDeployerHelper.sol/IDeployHelper.dbg.json +1 -1
  259. package/build/contracts/src/rollup/FactoryDeployerHelper.sol/IERC20.dbg.json +1 -1
  260. package/build/contracts/src/rollup/FactoryDeployerHelper.sol/IERC20Bridge.dbg.json +1 -1
  261. package/build/contracts/src/rollup/FactoryDeployerHelper.sol/IInboxBase.dbg.json +1 -1
  262. package/build/contracts/src/rollup/IRollupAdmin.sol/IRollupAdmin.dbg.json +1 -1
  263. package/build/contracts/src/rollup/IRollupAdmin.sol/IRollupAdmin.json +473 -99
  264. package/build/contracts/src/rollup/IRollupCore.sol/IRollupCore.dbg.json +1 -1
  265. package/build/contracts/src/rollup/IRollupCore.sol/IRollupCore.json +315 -221
  266. package/build/contracts/src/rollup/IRollupEventInbox.sol/IRollupEventInbox.dbg.json +1 -1
  267. package/build/contracts/src/rollup/IRollupLogic.sol/IRollupUser.dbg.json +1 -1
  268. package/build/contracts/src/rollup/IRollupLogic.sol/IRollupUser.json +678 -494
  269. package/build/contracts/src/rollup/RollupAdminLogic.sol/RollupAdminLogic.dbg.json +1 -1
  270. package/build/contracts/src/rollup/RollupAdminLogic.sol/RollupAdminLogic.json +806 -435
  271. package/build/contracts/src/rollup/RollupCore.sol/RollupCore.dbg.json +1 -1
  272. package/build/contracts/src/rollup/RollupCore.sol/RollupCore.json +323 -235
  273. package/build/contracts/src/rollup/RollupCreator.sol/RollupCreator.dbg.json +1 -1
  274. package/build/contracts/src/rollup/RollupCreator.sol/RollupCreator.json +98 -36
  275. package/build/contracts/src/rollup/RollupEventInbox.sol/RollupEventInbox.dbg.json +1 -1
  276. package/build/contracts/src/rollup/RollupEventInbox.sol/RollupEventInbox.json +2 -2
  277. package/build/contracts/src/rollup/RollupLib.sol/RollupLib.dbg.json +1 -1
  278. package/build/contracts/src/rollup/RollupLib.sol/RollupLib.json +2 -2
  279. package/build/contracts/src/rollup/RollupProxy.sol/RollupProxy.dbg.json +1 -1
  280. package/build/contracts/src/rollup/RollupProxy.sol/RollupProxy.json +97 -16
  281. package/build/contracts/src/rollup/RollupUserLogic.sol/RollupUserLogic.dbg.json +1 -1
  282. package/build/contracts/src/rollup/RollupUserLogic.sol/RollupUserLogic.json +924 -530
  283. package/build/contracts/src/rollup/ValidatorWallet.sol/ValidatorWallet.dbg.json +1 -1
  284. package/build/contracts/src/rollup/ValidatorWallet.sol/ValidatorWallet.json +15 -43
  285. package/build/contracts/src/rollup/ValidatorWalletCreator.sol/ValidatorWalletCreator.dbg.json +1 -1
  286. package/build/contracts/src/rollup/ValidatorWalletCreator.sol/ValidatorWalletCreator.json +2 -2
  287. package/build/contracts/src/state/Deserialize.sol/Deserialize.dbg.json +1 -1
  288. package/build/contracts/src/state/Deserialize.sol/Deserialize.json +2 -2
  289. package/build/contracts/src/state/GlobalState.sol/GlobalStateLib.dbg.json +1 -1
  290. package/build/contracts/src/state/GlobalState.sol/GlobalStateLib.json +2 -2
  291. package/build/contracts/src/state/Instructions.sol/Instructions.dbg.json +1 -1
  292. package/build/contracts/src/state/Instructions.sol/Instructions.json +2 -2
  293. package/build/contracts/src/state/Machine.sol/MachineLib.dbg.json +1 -1
  294. package/build/contracts/src/state/Machine.sol/MachineLib.json +2 -2
  295. package/build/contracts/src/state/MerkleProof.sol/MerkleProofLib.dbg.json +1 -1
  296. package/build/contracts/src/state/MerkleProof.sol/MerkleProofLib.json +2 -2
  297. package/build/contracts/src/state/Module.sol/ModuleLib.dbg.json +1 -1
  298. package/build/contracts/src/state/Module.sol/ModuleLib.json +2 -2
  299. package/build/contracts/src/state/ModuleMemory.sol/ModuleMemoryLib.dbg.json +1 -1
  300. package/build/contracts/src/state/ModuleMemory.sol/ModuleMemoryLib.json +2 -2
  301. package/build/contracts/src/state/ModuleMemoryCompact.sol/ModuleMemoryCompactLib.dbg.json +1 -1
  302. package/build/contracts/src/state/ModuleMemoryCompact.sol/ModuleMemoryCompactLib.json +2 -2
  303. package/build/contracts/src/state/MultiStack.sol/MultiStackLib.dbg.json +1 -1
  304. package/build/contracts/src/state/MultiStack.sol/MultiStackLib.json +2 -2
  305. package/build/contracts/src/state/PcArray.sol/PcArrayLib.dbg.json +1 -1
  306. package/build/contracts/src/state/PcArray.sol/PcArrayLib.json +2 -2
  307. package/build/contracts/src/state/StackFrame.sol/StackFrameLib.dbg.json +1 -1
  308. package/build/contracts/src/state/StackFrame.sol/StackFrameLib.json +2 -2
  309. package/build/contracts/src/state/Value.sol/ValueLib.dbg.json +1 -1
  310. package/build/contracts/src/state/Value.sol/ValueLib.json +2 -2
  311. package/build/contracts/src/state/ValueArray.sol/ValueArrayLib.dbg.json +1 -1
  312. package/build/contracts/src/state/ValueArray.sol/ValueArrayLib.json +2 -2
  313. package/build/contracts/src/state/ValueStack.sol/ValueStackLib.dbg.json +1 -1
  314. package/build/contracts/src/state/ValueStack.sol/ValueStackLib.json +2 -2
  315. package/build/contracts/src/test-helpers/BridgeTester.sol/BridgeTester.dbg.json +1 -1
  316. package/build/contracts/src/test-helpers/BridgeTester.sol/BridgeTester.json +15 -2
  317. package/build/contracts/src/test-helpers/CryptographyPrimitivesTester.sol/CryptographyPrimitivesTester.dbg.json +1 -1
  318. package/build/contracts/src/test-helpers/CryptographyPrimitivesTester.sol/CryptographyPrimitivesTester.json +2 -2
  319. package/build/contracts/src/test-helpers/EthVault.sol/EthVault.dbg.json +1 -1
  320. package/build/contracts/src/test-helpers/EthVault.sol/EthVault.json +2 -2
  321. package/build/contracts/src/test-helpers/MessageTester.sol/MessageTester.dbg.json +1 -1
  322. package/build/contracts/src/test-helpers/MessageTester.sol/MessageTester.json +2 -2
  323. package/build/contracts/src/test-helpers/OutboxWithoutOptTester.sol/OutboxWithoutOptTester.dbg.json +1 -1
  324. package/build/contracts/src/test-helpers/OutboxWithoutOptTester.sol/OutboxWithoutOptTester.json +2 -2
  325. package/build/contracts/src/test-helpers/RollupMock.sol/RollupMock.dbg.json +1 -1
  326. package/build/contracts/src/test-helpers/RollupMock.sol/RollupMock.json +2 -15
  327. package/build/contracts/src/test-helpers/TestToken.sol/TestToken.dbg.json +1 -1
  328. package/build/contracts/src/test-helpers/TestToken.sol/TestToken.json +2 -2
  329. package/build/contracts/src/test-helpers/ValueArrayTester.sol/ValueArrayTester.dbg.json +1 -1
  330. package/build/contracts/src/test-helpers/ValueArrayTester.sol/ValueArrayTester.json +2 -2
  331. package/out/yul/Reader4844.yul/Reader4844.json +1 -1
  332. package/package.json +16 -6
  333. package/src/assertionStakingPool/AbsBoldStakingPool.sol +66 -0
  334. package/src/assertionStakingPool/AssertionStakingPool.sol +70 -0
  335. package/src/assertionStakingPool/AssertionStakingPoolCreator.sol +35 -0
  336. package/src/assertionStakingPool/EdgeStakingPool.sol +57 -0
  337. package/src/assertionStakingPool/EdgeStakingPoolCreator.sol +34 -0
  338. package/src/assertionStakingPool/StakingPoolCreatorUtils.sol +25 -0
  339. package/src/assertionStakingPool/interfaces/IAbsBoldStakingPool.sol +41 -0
  340. package/src/assertionStakingPool/interfaces/IAssertionStakingPool.sol +36 -0
  341. package/src/assertionStakingPool/interfaces/IAssertionStakingPoolCreator.sol +31 -0
  342. package/src/assertionStakingPool/interfaces/IEdgeStakingPool.sol +27 -0
  343. package/src/assertionStakingPool/interfaces/IEdgeStakingPoolCreator.sol +28 -0
  344. package/src/bridge/AbsBridge.sol +38 -48
  345. package/src/bridge/AbsInbox.sol +88 -97
  346. package/src/bridge/AbsOutbox.sol +23 -37
  347. package/src/bridge/Bridge.sol +6 -4
  348. package/src/bridge/DelayBuffer.sol +123 -0
  349. package/src/bridge/DelayBufferTypes.sol +38 -0
  350. package/src/bridge/ERC20Bridge.sol +8 -4
  351. package/src/bridge/ERC20Inbox.sol +46 -53
  352. package/src/bridge/ERC20Outbox.sol +7 -3
  353. package/src/bridge/GasRefunder.sol +38 -24
  354. package/src/bridge/IBridge.sol +30 -21
  355. package/src/bridge/IERC20Bridge.sol +1 -1
  356. package/src/bridge/IERC20Inbox.sol +4 -2
  357. package/src/bridge/IEthBridge.sol +4 -2
  358. package/src/bridge/IInbox.sol +4 -2
  359. package/src/bridge/IInboxBase.sol +17 -13
  360. package/src/bridge/IOutbox.sol +13 -8
  361. package/src/bridge/ISequencerInbox.sol +118 -13
  362. package/src/bridge/Inbox.sol +131 -151
  363. package/src/bridge/Messages.sol +48 -18
  364. package/src/bridge/Outbox.sol +6 -2
  365. package/src/bridge/SequencerInbox.sol +339 -274
  366. package/src/chain/CacheManager.sol +49 -18
  367. package/src/challengeV2/EdgeChallengeManager.sol +783 -0
  368. package/src/challengeV2/IAssertionChain.sol +39 -0
  369. package/src/challengeV2/libraries/ArrayUtilsLib.sol +61 -0
  370. package/src/challengeV2/libraries/ChallengeEdgeLib.sol +333 -0
  371. package/src/challengeV2/libraries/ChallengeErrors.sol +108 -0
  372. package/src/challengeV2/libraries/EdgeChallengeManagerLib.sol +930 -0
  373. package/src/challengeV2/libraries/Enums.sol +26 -0
  374. package/src/challengeV2/libraries/MerkleTreeAccumulatorLib.sol +390 -0
  375. package/src/challengeV2/libraries/UintUtilsLib.sol +74 -0
  376. package/src/libraries/AddressAliasHelper.sol +6 -2
  377. package/src/libraries/AdminFallbackProxy.sol +8 -4
  378. package/src/libraries/ArbitrumChecker.sol +3 -4
  379. package/src/libraries/CryptographyPrimitives.sol +39 -46
  380. package/src/libraries/DecimalsConverterHelper.sol +2 -4
  381. package/src/libraries/DoubleLogicUUPSUpgradeable.sol +10 -7
  382. package/src/libraries/Error.sol +18 -12
  383. package/src/libraries/GasRefundEnabled.sol +3 -4
  384. package/src/libraries/MerkleLib.sol +6 -5
  385. package/src/libraries/UUPSNotUpgradeable.sol +2 -4
  386. package/src/mocks/BridgeStub.sol +50 -48
  387. package/src/mocks/BridgeUnproxied.sol +2 -0
  388. package/src/mocks/InboxStub.sol +22 -17
  389. package/src/mocks/MerkleTreeAccess.sol +72 -0
  390. package/src/mocks/MockRollupEventInbox.sol +59 -0
  391. package/src/mocks/MultiCallTest.sol +3 -1
  392. package/src/mocks/PendingBlkTimeAndNrAdvanceCheck.sol +3 -1
  393. package/src/mocks/Program.sol +9 -7
  394. package/src/mocks/SequencerInboxBlobMock.sol +38 -0
  395. package/src/mocks/SequencerInboxStub.sol +9 -12
  396. package/src/mocks/Simple.sol +13 -25
  397. package/src/mocks/SimpleCacheManager.sol +10 -3
  398. package/src/mocks/SimpleOneStepProofEntry.sol +60 -0
  399. package/src/mocks/SimpleProxy.sol +3 -1
  400. package/src/mocks/TestWETH9.sol +30 -0
  401. package/src/mocks/UpgradeExecutorMock.sol +10 -17
  402. package/src/node-interface/NodeInterface.sol +23 -22
  403. package/src/node-interface/NodeInterfaceDebug.sol +5 -3
  404. package/src/osp/HashProofHelper.sol +9 -10
  405. package/src/osp/IOneStepProofEntry.sol +14 -9
  406. package/src/osp/IOneStepProver.sol +1 -0
  407. package/src/osp/OneStepProofEntry.sol +63 -54
  408. package/src/osp/OneStepProver0.sol +14 -27
  409. package/src/osp/OneStepProverHostIo.sol +31 -58
  410. package/src/osp/OneStepProverMath.sol +15 -23
  411. package/src/osp/OneStepProverMemory.sol +9 -23
  412. package/src/precompiles/ArbAddressTable.sol +19 -9
  413. package/src/precompiles/ArbAggregator.sol +12 -4
  414. package/src/precompiles/ArbBLS.sol +1 -3
  415. package/src/precompiles/ArbDebug.sol +5 -11
  416. package/src/precompiles/ArbFunctionTable.sol +7 -10
  417. package/src/precompiles/ArbGasInfo.sol +9 -43
  418. package/src/precompiles/ArbInfo.sol +6 -2
  419. package/src/precompiles/ArbOwner.sol +101 -34
  420. package/src/precompiles/ArbOwnerPublic.sol +6 -2
  421. package/src/precompiles/ArbRetryableTx.sol +15 -5
  422. package/src/precompiles/ArbStatistics.sol +1 -8
  423. package/src/precompiles/ArbSys.sol +16 -18
  424. package/src/precompiles/ArbWasm.sol +24 -14
  425. package/src/precompiles/ArbWasmCache.sol +15 -5
  426. package/src/precompiles/ArbosTest.sol +3 -1
  427. package/src/rollup/AbsRollupEventInbox.sol +15 -16
  428. package/src/rollup/Assertion.sol +100 -0
  429. package/src/rollup/AssertionState.sol +29 -0
  430. package/src/rollup/BOLDUpgradeAction.sol +631 -0
  431. package/src/rollup/BridgeCreator.sol +42 -15
  432. package/src/rollup/Config.sol +15 -7
  433. package/src/rollup/DeployHelper.sol +12 -31
  434. package/src/rollup/ERC20RollupEventInbox.sol +8 -9
  435. package/src/rollup/FactoryDeployerHelper.sol +8 -10
  436. package/src/rollup/IRollupAdmin.sol +127 -45
  437. package/src/rollup/IRollupCore.sol +64 -84
  438. package/src/rollup/IRollupEventInbox.sol +3 -1
  439. package/src/rollup/IRollupLogic.sol +36 -69
  440. package/src/rollup/RollupAdminLogic.sol +224 -203
  441. package/src/rollup/RollupCore.sol +407 -428
  442. package/src/rollup/RollupCreator.sol +88 -75
  443. package/src/rollup/RollupEventInbox.sol +7 -7
  444. package/src/rollup/RollupLib.sol +50 -86
  445. package/src/rollup/RollupProxy.sol +8 -12
  446. package/src/rollup/RollupUserLogic.sol +279 -642
  447. package/src/rollup/ValidatorUtils.sol +0 -242
  448. package/src/rollup/ValidatorWallet.sol +22 -38
  449. package/src/rollup/ValidatorWalletCreator.sol +8 -8
  450. package/src/state/Deserialize.sol +74 -96
  451. package/src/state/GlobalState.sol +74 -20
  452. package/src/state/Instructions.sol +4 -3
  453. package/src/state/Machine.sol +18 -19
  454. package/src/state/Module.sol +14 -13
  455. package/src/state/ModuleMemory.sol +6 -25
  456. package/src/state/ModuleMemoryCompact.sol +3 -1
  457. package/src/state/MultiStack.sol +16 -20
  458. package/src/state/PcArray.sol +7 -7
  459. package/src/state/StackFrame.sol +21 -14
  460. package/src/state/Value.sol +18 -6
  461. package/src/state/ValueArray.sol +7 -7
  462. package/src/state/ValueStack.sol +9 -3
  463. package/src/test-helpers/BridgeTester.sol +32 -42
  464. package/src/test-helpers/CryptographyPrimitivesTester.sol +12 -13
  465. package/src/test-helpers/EthVault.sol +4 -2
  466. package/src/test-helpers/InterfaceCompatibilityTester.sol +1 -1
  467. package/src/test-helpers/MessageTester.sol +3 -10
  468. package/src/test-helpers/OutboxWithoutOptTester.sol +12 -19
  469. package/src/test-helpers/RollupMock.sol +3 -7
  470. package/src/test-helpers/TestToken.sol +4 -2
  471. package/build/contracts/@openzeppelin/contracts-upgradeable/token/ERC20/IERC20Upgradeable.sol/IERC20Upgradeable.dbg.json +0 -4
  472. package/build/contracts/src/challenge/ChallengeLib.sol/ChallengeLib.dbg.json +0 -4
  473. package/build/contracts/src/challenge/ChallengeManager.sol/ChallengeManager.dbg.json +0 -4
  474. package/build/contracts/src/challenge/ChallengeManager.sol/ChallengeManager.json +0 -746
  475. package/build/contracts/src/challenge/IChallengeManager.sol/IChallengeManager.dbg.json +0 -4
  476. package/build/contracts/src/challenge/IChallengeManager.sol/IChallengeManager.json +0 -441
  477. package/build/contracts/src/challenge/IChallengeResultReceiver.sol/IChallengeResultReceiver.dbg.json +0 -4
  478. package/build/contracts/src/challenge/IChallengeResultReceiver.sol/IChallengeResultReceiver.json +0 -34
  479. package/build/contracts/src/mocks/MockResultReceiver.sol/MockResultReceiver.dbg.json +0 -4
  480. package/build/contracts/src/mocks/MockResultReceiver.sol/MockResultReceiver.json +0 -188
  481. package/build/contracts/src/mocks/SingleExecutionChallenge.sol/SingleExecutionChallenge.dbg.json +0 -4
  482. package/build/contracts/src/mocks/SingleExecutionChallenge.sol/SingleExecutionChallenge.json +0 -797
  483. package/build/contracts/src/mocks/TimedOutChallengeManager.sol/TimedOutChallengeManager.dbg.json +0 -4
  484. package/build/contracts/src/mocks/TimedOutChallengeManager.sol/TimedOutChallengeManager.json +0 -746
  485. package/build/contracts/src/rollup/IRollupLogic.sol/IRollupUserAbs.dbg.json +0 -4
  486. package/build/contracts/src/rollup/IRollupLogic.sol/IRollupUserAbs.json +0 -1327
  487. package/build/contracts/src/rollup/IRollupLogic.sol/IRollupUserERC20.dbg.json +0 -4
  488. package/build/contracts/src/rollup/IRollupLogic.sol/IRollupUserERC20.json +0 -1461
  489. package/build/contracts/src/rollup/Node.sol/NodeLib.dbg.json +0 -4
  490. package/build/contracts/src/rollup/RollupUserLogic.sol/AbsRollupUserLogic.dbg.json +0 -4
  491. package/build/contracts/src/rollup/RollupUserLogic.sol/AbsRollupUserLogic.json +0 -1609
  492. package/build/contracts/src/rollup/RollupUserLogic.sol/ERC20RollupUserLogic.dbg.json +0 -4
  493. package/build/contracts/src/rollup/RollupUserLogic.sol/ERC20RollupUserLogic.json +0 -1743
  494. package/build/contracts/src/rollup/ValidatorUtils.sol/ValidatorUtils.dbg.json +0 -4
  495. package/build/contracts/src/rollup/ValidatorUtils.sol/ValidatorUtils.json +0 -379
  496. package/src/challenge/ChallengeLib.sol +0 -88
  497. package/src/challenge/ChallengeManager.sol +0 -375
  498. package/src/challenge/IChallengeManager.sol +0 -86
  499. package/src/challenge/IChallengeResultReceiver.sol +0 -13
  500. package/src/mocks/MockResultReceiver.sol +0 -59
  501. package/src/mocks/SingleExecutionChallenge.sol +0 -41
  502. package/src/mocks/TimedOutChallengeManager.sol +0 -13
  503. package/src/rollup/Node.sol +0 -113
@@ -0,0 +1,631 @@
1
+ // Copyright 2021-2022, Offchain Labs, Inc.
2
+ // For license information, see https://github.com/OffchainLabs/nitro-contracts/blob/main/LICENSE
3
+ // SPDX-License-Identifier: BUSL-1.1
4
+
5
+ pragma solidity ^0.8.0;
6
+
7
+ import "@openzeppelin/contracts-upgradeable/utils/Create2Upgradeable.sol";
8
+ import "@openzeppelin/contracts/proxy/transparent/ProxyAdmin.sol";
9
+ import "./RollupProxy.sol";
10
+ import "./RollupLib.sol";
11
+ import "./RollupAdminLogic.sol";
12
+
13
+ struct Node {
14
+ // Hash of the state of the chain as of this node
15
+ bytes32 stateHash;
16
+ // Hash of the data that can be challenged
17
+ bytes32 challengeHash;
18
+ // Hash of the data that will be committed if this node is confirmed
19
+ bytes32 confirmData;
20
+ // Index of the node previous to this one
21
+ uint64 prevNum;
22
+ // Deadline at which this node can be confirmed
23
+ uint64 deadlineBlock;
24
+ // Deadline at which a child of this node can be confirmed
25
+ uint64 noChildConfirmedBeforeBlock;
26
+ // Number of stakers staked on this node. This includes real stakers and zombies
27
+ uint64 stakerCount;
28
+ // Number of stakers staked on a child node. This includes real stakers and zombies
29
+ uint64 childStakerCount;
30
+ // This value starts at zero and is set to a value when the first child is created. After that it is constant until the node is destroyed or the owner destroys pending nodes
31
+ uint64 firstChildBlock;
32
+ // The number of the latest child of this node to be created
33
+ uint64 latestChildNumber;
34
+ // The block number when this node was created
35
+ uint64 createdAtBlock;
36
+ // A hash of all the data needed to determine this node's validity, to protect against reorgs
37
+ bytes32 nodeHash;
38
+ }
39
+
40
+ struct OldStaker {
41
+ uint256 amountStaked;
42
+ uint64 index;
43
+ uint64 latestStakedNode;
44
+ // currentChallenge is 0 if staker is not in a challenge
45
+ uint64 currentChallenge; // 1. cannot have current challenge
46
+ bool isStaked; // 2. must be staked
47
+ }
48
+
49
+ interface IOldRollup {
50
+ struct Assertion {
51
+ ExecutionState beforeState;
52
+ ExecutionState afterState;
53
+ uint64 numBlocks;
54
+ }
55
+
56
+ event NodeCreated(
57
+ uint64 indexed nodeNum,
58
+ bytes32 indexed parentNodeHash,
59
+ bytes32 indexed nodeHash,
60
+ bytes32 executionHash,
61
+ Assertion assertion,
62
+ bytes32 afterInboxBatchAcc,
63
+ bytes32 wasmModuleRoot,
64
+ uint256 inboxMaxCount
65
+ );
66
+
67
+ function wasmModuleRoot() external view returns (bytes32);
68
+ function latestConfirmed() external view returns (uint64);
69
+ function getNode(
70
+ uint64 nodeNum
71
+ ) external view returns (Node memory);
72
+ function getStakerAddress(
73
+ uint64 stakerNum
74
+ ) external view returns (address);
75
+ function stakerCount() external view returns (uint64);
76
+ function getStaker(
77
+ address staker
78
+ ) external view returns (OldStaker memory);
79
+ function isValidator(
80
+ address validator
81
+ ) external view returns (bool);
82
+ function validatorWalletCreator() external view returns (address);
83
+ function anyTrustFastConfirmer() external view returns (address);
84
+ }
85
+
86
+ interface IOldRollupAdmin {
87
+ function forceRefundStaker(
88
+ address[] memory stacker
89
+ ) external;
90
+ function pause() external;
91
+ function resume() external;
92
+ }
93
+
94
+ interface ISeqInboxPostUpgradeInit {
95
+ function postUpgradeInit(
96
+ BufferConfig memory bufferConfig_
97
+ ) external;
98
+ }
99
+
100
+ /// @title Provides pre-images to a state hash
101
+ /// @notice We need to use the execution state of the latest confirmed node as the genesis
102
+ /// in the new rollup. However the this full state is not available on chain, only
103
+ /// the state hash is, which commits to this. This lookup contract should be deployed
104
+ /// before the upgrade, and just before the upgrade is executed the pre-image of the
105
+ /// latest confirmed state hash should be populated here. The upgrade contact can then
106
+ /// fetch this information and verify it before using it.
107
+ contract StateHashPreImageLookup {
108
+ using GlobalStateLib for GlobalState;
109
+
110
+ event HashSet(bytes32 h, ExecutionState executionState, uint256 inboxMaxCount);
111
+
112
+ mapping(bytes32 => bytes) internal preImages;
113
+
114
+ function stateHash(
115
+ ExecutionState calldata executionState,
116
+ uint256 inboxMaxCount
117
+ ) public pure returns (bytes32) {
118
+ return keccak256(
119
+ abi.encodePacked(
120
+ executionState.globalState.hash(), inboxMaxCount, executionState.machineStatus
121
+ )
122
+ );
123
+ }
124
+
125
+ function set(bytes32 h, ExecutionState calldata executionState, uint256 inboxMaxCount) public {
126
+ require(h == stateHash(executionState, inboxMaxCount), "Invalid hash");
127
+ preImages[h] = abi.encode(executionState, inboxMaxCount);
128
+ emit HashSet(h, executionState, inboxMaxCount);
129
+ }
130
+
131
+ function get(
132
+ bytes32 h
133
+ ) public view returns (ExecutionState memory executionState, uint256 inboxMaxCount) {
134
+ (executionState, inboxMaxCount) = abi.decode(preImages[h], (ExecutionState, uint256));
135
+ require(inboxMaxCount != 0, "Hash not yet set");
136
+ }
137
+ }
138
+
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
+ /// @notice Stores an array specified during construction.
199
+ /// Since the BOLDUpgradeAction is not allowed to have storage,
200
+ /// we use this contract so it can keep an immutable pointer to an array.
201
+ contract ConstantArrayStorage {
202
+ uint256[] internal _array;
203
+
204
+ constructor(
205
+ uint256[] memory __array
206
+ ) {
207
+ _array = __array;
208
+ }
209
+
210
+ function array() public view returns (uint256[] memory) {
211
+ return _array;
212
+ }
213
+ }
214
+
215
+ /// @title Upgrades an Arbitrum rollup to the new challenge protocol
216
+ /// @notice Requires implementation contracts to be pre-deployed and provided in the constructor
217
+ /// Also requires a lookup contract to be provided that contains the pre-image of the state hash
218
+ /// that is in the latest confirmed assertion in the current rollup.
219
+ contract BOLDUpgradeAction {
220
+ using AssertionStateLib for AssertionState;
221
+
222
+ uint256 public immutable BLOCK_LEAF_SIZE;
223
+ uint256 public immutable BIGSTEP_LEAF_SIZE;
224
+ uint256 public immutable SMALLSTEP_LEAF_SIZE;
225
+ uint8 public immutable NUM_BIGSTEP_LEVEL;
226
+
227
+ address public immutable EXCESS_STAKE_RECEIVER;
228
+ IOldRollup public immutable OLD_ROLLUP;
229
+ address public immutable BRIDGE;
230
+ address public immutable SEQ_INBOX;
231
+ address public immutable REI;
232
+ address public immutable OUTBOX;
233
+ address public immutable INBOX;
234
+
235
+ uint64 public immutable CONFIRM_PERIOD_BLOCKS;
236
+ uint64 public immutable CHALLENGE_PERIOD_BLOCKS;
237
+ address public immutable STAKE_TOKEN;
238
+ uint256 public immutable STAKE_AMOUNT;
239
+ uint256 public immutable CHAIN_ID;
240
+ bool public immutable DISABLE_VALIDATOR_WHITELIST;
241
+ uint64 public immutable CHALLENGE_GRACE_PERIOD_BLOCKS;
242
+ address public immutable MINI_STAKE_AMOUNTS_STORAGE;
243
+ bool public immutable IS_DELAY_BUFFERABLE;
244
+ uint256 public constant SECONDS_PER_SLOT = 12;
245
+ // buffer config
246
+ uint64 public immutable MAX;
247
+ uint64 public immutable THRESHOLD;
248
+ uint64 public immutable REPLENISH_RATE_IN_BASIS;
249
+
250
+ IOneStepProofEntry public immutable OSP;
251
+ // proxy admins of the contracts to be upgraded
252
+ ProxyAdmin public immutable PROXY_ADMIN_OUTBOX;
253
+ ProxyAdmin public immutable PROXY_ADMIN_BRIDGE;
254
+ ProxyAdmin public immutable PROXY_ADMIN_REI;
255
+ ProxyAdmin public immutable PROXY_ADMIN_SEQUENCER_INBOX;
256
+ ProxyAdmin public immutable PROXY_ADMIN_INBOX;
257
+ StateHashPreImageLookup public immutable PREIMAGE_LOOKUP;
258
+ RollupReader public immutable ROLLUP_READER;
259
+
260
+ // new contract implementations
261
+ address public immutable IMPL_BRIDGE;
262
+ address public immutable IMPL_SEQUENCER_INBOX;
263
+ address public immutable IMPL_INBOX;
264
+ address public immutable IMPL_REI;
265
+ 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
+ address public immutable IMPL_NEW_ROLLUP_USER;
269
+ address public immutable IMPL_NEW_ROLLUP_ADMIN;
270
+ address public immutable IMPL_CHALLENGE_MANAGER;
271
+
272
+ event RollupMigrated(address rollup, address challengeManager);
273
+
274
+ struct Settings {
275
+ uint64 confirmPeriodBlocks;
276
+ uint64 challengePeriodBlocks;
277
+ address stakeToken;
278
+ uint256 stakeAmt;
279
+ uint256[] miniStakeAmounts;
280
+ uint256 chainId;
281
+ bool disableValidatorWhitelist;
282
+ uint256 blockLeafSize;
283
+ uint256 bigStepLeafSize;
284
+ uint256 smallStepLeafSize;
285
+ uint8 numBigStepLevel;
286
+ uint64 challengeGracePeriodBlocks;
287
+ bool isDelayBufferable;
288
+ BufferConfig bufferConfig;
289
+ }
290
+
291
+ // Unfortunately these are not discoverable on-chain, so we need to supply them
292
+ struct ProxyAdmins {
293
+ address outbox;
294
+ address bridge;
295
+ address rei;
296
+ address seqInbox;
297
+ address inbox;
298
+ }
299
+
300
+ struct Implementations {
301
+ address bridge;
302
+ address seqInbox;
303
+ address inbox;
304
+ address rei;
305
+ address outbox;
306
+ address oldRollupUser;
307
+ address newRollupUser;
308
+ address newRollupAdmin;
309
+ address challengeManager;
310
+ }
311
+
312
+ struct Contracts {
313
+ address excessStakeReceiver;
314
+ IOldRollup rollup;
315
+ address bridge;
316
+ address sequencerInbox;
317
+ address rollupEventInbox;
318
+ address outbox;
319
+ address inbox;
320
+ IOneStepProofEntry osp;
321
+ }
322
+
323
+ constructor(
324
+ Contracts memory contracts,
325
+ ProxyAdmins memory proxyAdmins,
326
+ Implementations memory implementations,
327
+ Settings memory settings
328
+ ) {
329
+ EXCESS_STAKE_RECEIVER = contracts.excessStakeReceiver;
330
+ OLD_ROLLUP = contracts.rollup;
331
+ BRIDGE = contracts.bridge;
332
+ SEQ_INBOX = contracts.sequencerInbox;
333
+ REI = contracts.rollupEventInbox;
334
+ OUTBOX = contracts.outbox;
335
+ INBOX = contracts.inbox;
336
+ OSP = contracts.osp;
337
+
338
+ PROXY_ADMIN_OUTBOX = ProxyAdmin(proxyAdmins.outbox);
339
+ PROXY_ADMIN_BRIDGE = ProxyAdmin(proxyAdmins.bridge);
340
+ PROXY_ADMIN_REI = ProxyAdmin(proxyAdmins.rei);
341
+ PROXY_ADMIN_SEQUENCER_INBOX = ProxyAdmin(proxyAdmins.seqInbox);
342
+ PROXY_ADMIN_INBOX = ProxyAdmin(proxyAdmins.inbox);
343
+ PREIMAGE_LOOKUP = new StateHashPreImageLookup();
344
+ ROLLUP_READER = new RollupReader(contracts.rollup);
345
+
346
+ IMPL_BRIDGE = implementations.bridge;
347
+ IMPL_SEQUENCER_INBOX = implementations.seqInbox;
348
+ IMPL_INBOX = implementations.inbox;
349
+ IMPL_REI = implementations.rei;
350
+ IMPL_OUTBOX = implementations.outbox;
351
+ IMPL_PATCHED_OLD_ROLLUP_USER = implementations.oldRollupUser;
352
+ IMPL_NEW_ROLLUP_USER = implementations.newRollupUser;
353
+ IMPL_NEW_ROLLUP_ADMIN = implementations.newRollupAdmin;
354
+ IMPL_CHALLENGE_MANAGER = implementations.challengeManager;
355
+
356
+ CHAIN_ID = settings.chainId;
357
+ CONFIRM_PERIOD_BLOCKS = settings.confirmPeriodBlocks;
358
+ CHALLENGE_PERIOD_BLOCKS = settings.challengePeriodBlocks;
359
+ STAKE_TOKEN = settings.stakeToken;
360
+ STAKE_AMOUNT = settings.stakeAmt;
361
+ MINI_STAKE_AMOUNTS_STORAGE = address(new ConstantArrayStorage(settings.miniStakeAmounts));
362
+ DISABLE_VALIDATOR_WHITELIST = settings.disableValidatorWhitelist;
363
+ BLOCK_LEAF_SIZE = settings.blockLeafSize;
364
+ BIGSTEP_LEAF_SIZE = settings.bigStepLeafSize;
365
+ SMALLSTEP_LEAF_SIZE = settings.smallStepLeafSize;
366
+ NUM_BIGSTEP_LEVEL = settings.numBigStepLevel;
367
+ CHALLENGE_GRACE_PERIOD_BLOCKS = settings.challengeGracePeriodBlocks;
368
+ IS_DELAY_BUFFERABLE = settings.isDelayBufferable;
369
+ MAX = settings.bufferConfig.max;
370
+ THRESHOLD = settings.bufferConfig.threshold;
371
+ REPLENISH_RATE_IN_BASIS = settings.bufferConfig.replenishRateInBasis;
372
+ }
373
+
374
+ /// @dev Refund the existing stakers, pause and upgrade the current rollup to
375
+ /// allow them to withdraw after pausing
376
+ function cleanupOldRollup() private {
377
+ IOldRollupAdmin(address(OLD_ROLLUP)).pause();
378
+
379
+ uint64 stakerCount = ROLLUP_READER.stakerCount();
380
+ // since we for-loop these stakers we set an arbitrary limit - we dont
381
+ // expect any instances to have close to this number of stakers
382
+ if (stakerCount > 50) {
383
+ stakerCount = 50;
384
+ }
385
+ for (uint64 i = 0; i < stakerCount;) {
386
+ address stakerAddr = ROLLUP_READER.getStakerAddress(i);
387
+ OldStaker memory staker = ROLLUP_READER.getStaker(stakerAddr);
388
+ if (staker.isStaked && staker.currentChallenge == 0) {
389
+ address[] memory stakersToRefund = new address[](1);
390
+ stakersToRefund[0] = stakerAddr;
391
+
392
+ IOldRollupAdmin(address(OLD_ROLLUP)).forceRefundStaker(stakersToRefund);
393
+ stakerCount -= 1;
394
+ } else {
395
+ i++;
396
+ }
397
+ }
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
+ }
404
+
405
+ /// @dev Create a config for the new rollup - fetches the latest confirmed
406
+ /// assertion from the old rollup and uses it as genesis
407
+ function createConfig() private view returns (Config memory) {
408
+ // fetch the assertion associated with the latest confirmed state
409
+ bytes32 latestConfirmedStateHash =
410
+ ROLLUP_READER.getNode(ROLLUP_READER.latestConfirmed()).stateHash;
411
+ (ExecutionState memory genesisExecState, uint256 inboxMaxCount) =
412
+ PREIMAGE_LOOKUP.get(latestConfirmedStateHash);
413
+
414
+ // Convert ExecutionState into AssertionState with endHistoryRoot 0
415
+ AssertionState memory genesisAssertionState;
416
+ genesisAssertionState.globalState = genesisExecState.globalState;
417
+ genesisAssertionState.machineStatus = genesisExecState.machineStatus;
418
+
419
+ // double check the hash
420
+ require(
421
+ PREIMAGE_LOOKUP.stateHash(genesisAssertionState.toExecutionState(), inboxMaxCount)
422
+ == latestConfirmedStateHash,
423
+ "Invalid latest execution hash"
424
+ );
425
+
426
+ // this isnt used during rollup creation, so we can pass in empty
427
+ ISequencerInbox.MaxTimeVariation memory maxTimeVariation;
428
+ BufferConfig memory bufferConfig;
429
+
430
+ return Config({
431
+ confirmPeriodBlocks: CONFIRM_PERIOD_BLOCKS,
432
+ stakeToken: STAKE_TOKEN,
433
+ baseStake: STAKE_AMOUNT,
434
+ wasmModuleRoot: ROLLUP_READER.wasmModuleRoot(),
435
+ owner: address(this), // upgrade executor is the owner
436
+ loserStakeEscrow: EXCESS_STAKE_RECEIVER, // additional funds get sent to the l1 timelock
437
+ chainId: CHAIN_ID,
438
+ 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
439
+ miniStakeValues: ConstantArrayStorage(MINI_STAKE_AMOUNTS_STORAGE).array(),
440
+ sequencerInboxMaxTimeVariation: maxTimeVariation,
441
+ layerZeroBlockEdgeHeight: BLOCK_LEAF_SIZE,
442
+ layerZeroBigStepEdgeHeight: BIGSTEP_LEAF_SIZE,
443
+ layerZeroSmallStepEdgeHeight: SMALLSTEP_LEAF_SIZE,
444
+ genesisAssertionState: genesisAssertionState,
445
+ genesisInboxCount: inboxMaxCount,
446
+ anyTrustFastConfirmer: address(0), // fast confirmer would be migrated from the old rollup if existed
447
+ numBigStepLevel: NUM_BIGSTEP_LEVEL,
448
+ challengeGracePeriodBlocks: CHALLENGE_GRACE_PERIOD_BLOCKS,
449
+ bufferConfig: bufferConfig
450
+ });
451
+ }
452
+
453
+ function upgradeSurroundingContracts(
454
+ address newRollupAddress
455
+ ) private {
456
+ // upgrade each of these contracts to an implementation that allows
457
+ // the rollup address to be set to the new rollup address
458
+
459
+ TransparentUpgradeableProxy bridge = TransparentUpgradeableProxy(payable(BRIDGE));
460
+ PROXY_ADMIN_BRIDGE.upgrade(bridge, IMPL_BRIDGE);
461
+ IBridge(BRIDGE).updateRollupAddress(IOwnable(newRollupAddress));
462
+
463
+ upgradeSequencerInbox();
464
+
465
+ TransparentUpgradeableProxy inbox = TransparentUpgradeableProxy(payable(INBOX));
466
+ PROXY_ADMIN_INBOX.upgrade(inbox, IMPL_INBOX);
467
+
468
+ TransparentUpgradeableProxy rollupEventInbox = TransparentUpgradeableProxy(payable(REI));
469
+ PROXY_ADMIN_REI.upgrade(rollupEventInbox, IMPL_REI);
470
+ IRollupEventInbox(REI).updateRollupAddress();
471
+
472
+ TransparentUpgradeableProxy outbox = TransparentUpgradeableProxy(payable(OUTBOX));
473
+ PROXY_ADMIN_OUTBOX.upgrade(outbox, IMPL_OUTBOX);
474
+ IOutbox(OUTBOX).updateRollupAddress();
475
+ }
476
+
477
+ function upgradeSequencerInbox() private {
478
+ TransparentUpgradeableProxy sequencerInbox = TransparentUpgradeableProxy(payable(SEQ_INBOX));
479
+
480
+ if (IS_DELAY_BUFFERABLE) {
481
+ PROXY_ADMIN_SEQUENCER_INBOX.upgradeAndCall(
482
+ sequencerInbox,
483
+ IMPL_SEQUENCER_INBOX,
484
+ abi.encodeCall(
485
+ ISeqInboxPostUpgradeInit.postUpgradeInit,
486
+ (
487
+ BufferConfig({
488
+ max: MAX,
489
+ threshold: THRESHOLD,
490
+ replenishRateInBasis: REPLENISH_RATE_IN_BASIS
491
+ })
492
+ )
493
+ )
494
+ );
495
+ } else {
496
+ PROXY_ADMIN_SEQUENCER_INBOX.upgrade(sequencerInbox, IMPL_SEQUENCER_INBOX);
497
+ }
498
+
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
+ (uint256 delayBlocks, uint256 futureBlocks, uint256 delaySeconds, uint256 futureSeconds) =
511
+ ISequencerInbox(SEQ_INBOX).maxTimeVariation();
512
+
513
+ // Force inclusion now depends on block numbers and not timestamps.
514
+ // To ensure the force inclusion window is unchanged, we need to
515
+ // update the delayBlocks if delaySeconds implies a larger delay.
516
+ uint256 implDelayBlocks = delaySeconds % SECONDS_PER_SLOT == 0
517
+ ? delaySeconds / SECONDS_PER_SLOT
518
+ : delaySeconds / SECONDS_PER_SLOT + 1;
519
+
520
+ delayBlocks = implDelayBlocks > delayBlocks ? implDelayBlocks : delayBlocks;
521
+
522
+ ISequencerInbox(SEQ_INBOX).setMaxTimeVariation(
523
+ ISequencerInbox.MaxTimeVariation({
524
+ delayBlocks: delayBlocks,
525
+ delaySeconds: delaySeconds,
526
+ futureBlocks: futureBlocks,
527
+ futureSeconds: futureSeconds
528
+ })
529
+ );
530
+
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
+ ISequencerInbox(SEQ_INBOX).updateRollupAddress();
540
+ }
541
+
542
+ function perform(
543
+ address[] memory validators
544
+ ) external {
545
+ // tidy up the old rollup - pause it and refund stakes
546
+ cleanupOldRollup();
547
+
548
+ // create the config, we do this now so that we compute the expected rollup address
549
+ Config memory config = createConfig();
550
+
551
+ // deploy the new challenge manager
552
+ IEdgeChallengeManager challengeManager = IEdgeChallengeManager(
553
+ address(
554
+ new TransparentUpgradeableProxy(
555
+ address(IMPL_CHALLENGE_MANAGER),
556
+ address(PROXY_ADMIN_BRIDGE), // use the same proxy admin as the bridge
557
+ ""
558
+ )
559
+ )
560
+ );
561
+
562
+ // now that all the dependent contracts are pointed at the new address we can
563
+ // deploy and init the new rollup
564
+ ContractDependencies memory connectedContracts = ContractDependencies({
565
+ bridge: IBridge(BRIDGE),
566
+ sequencerInbox: ISequencerInbox(SEQ_INBOX),
567
+ inbox: IInboxBase(INBOX),
568
+ outbox: IOutbox(OUTBOX),
569
+ rollupEventInbox: IRollupEventInbox(REI),
570
+ challengeManager: challengeManager,
571
+ rollupAdminLogic: IMPL_NEW_ROLLUP_ADMIN,
572
+ rollupUserLogic: IRollupUser(IMPL_NEW_ROLLUP_USER),
573
+ validatorWalletCreator: ROLLUP_READER.validatorWalletCreator()
574
+ });
575
+
576
+ // upgrade the surrounding contracts eg bridge, outbox, seq inbox, rollup event inbox
577
+ // 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);
582
+
583
+ challengeManager.initialize({
584
+ _assertionChain: IAssertionChain(expectedRollupAddress),
585
+ _challengePeriodBlocks: CHALLENGE_PERIOD_BLOCKS,
586
+ _oneStepProofEntry: OSP,
587
+ layerZeroBlockEdgeHeight: config.layerZeroBlockEdgeHeight,
588
+ layerZeroBigStepEdgeHeight: config.layerZeroBigStepEdgeHeight,
589
+ layerZeroSmallStepEdgeHeight: config.layerZeroSmallStepEdgeHeight,
590
+ _stakeToken: IERC20(config.stakeToken),
591
+ _stakeAmounts: config.miniStakeValues,
592
+ _excessStakeReceiver: EXCESS_STAKE_RECEIVER,
593
+ _numBigStepLevel: config.numBigStepLevel
594
+ });
595
+
596
+ RollupProxy rollup = new RollupProxy{salt: rollupSalt}();
597
+ require(address(rollup) == expectedRollupAddress, "UNEXPCTED_ROLLUP_ADDR");
598
+
599
+ // initialize the rollup with this contract as owner to set batch poster and validators
600
+ // it will transfer the ownership back to the actual owner later
601
+ address actualOwner = config.owner;
602
+ config.owner = address(this);
603
+
604
+ rollup.initializeProxy(config, connectedContracts);
605
+
606
+ if (validators.length != 0) {
607
+ bool[] memory _vals = new bool[](validators.length);
608
+ for (uint256 i = 0; i < validators.length; i++) {
609
+ require(ROLLUP_READER.isValidator(validators[i]), "UNEXPECTED_NEW_VALIDATOR");
610
+ _vals[i] = true;
611
+ }
612
+ IRollupAdmin(address(rollup)).setValidator(validators, _vals);
613
+ }
614
+ if (DISABLE_VALIDATOR_WHITELIST) {
615
+ IRollupAdmin(address(rollup)).setValidatorWhitelistDisabled(DISABLE_VALIDATOR_WHITELIST);
616
+ }
617
+
618
+ // 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) {
620
+ if (anyTrustFastConfirmer != address(0)) {
621
+ IRollupAdmin(address(rollup)).setAnyTrustFastConfirmer(anyTrustFastConfirmer);
622
+ }
623
+ } catch {
624
+ // do nothing if anyTrustFastConfirmer doesnt exist
625
+ }
626
+
627
+ IRollupAdmin(address(rollup)).setOwner(actualOwner);
628
+
629
+ emit RollupMigrated(expectedRollupAddress, address(challengeManager));
630
+ }
631
+ }