@arbitrum/nitro-contracts 2.0.0 → 3.0.0-alpha.0

Sign up to get free protection for your applications and to get access to all the features.
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
@@ -9,22 +9,19 @@ import "./IRollupLogic.sol";
9
9
  import "./RollupCore.sol";
10
10
  import "../bridge/IOutbox.sol";
11
11
  import "../bridge/ISequencerInbox.sol";
12
- import "../challenge/IChallengeManager.sol";
13
12
  import "../libraries/DoubleLogicUUPSUpgradeable.sol";
14
13
  import "@openzeppelin/contracts/proxy/beacon/UpgradeableBeacon.sol";
15
14
 
16
- import {NO_CHAL_INDEX} from "../libraries/Constants.sol";
17
-
18
15
  contract RollupAdminLogic is RollupCore, IRollupAdmin, DoubleLogicUUPSUpgradeable {
19
- function initialize(Config calldata config, ContractDependencies calldata connectedContracts)
20
- external
21
- override
22
- onlyProxy
23
- initializer
24
- {
16
+ using AssertionStateLib for AssertionState;
17
+ using EnumerableSetUpgradeable for EnumerableSetUpgradeable.AddressSet;
18
+
19
+ function initialize(
20
+ Config calldata config,
21
+ ContractDependencies calldata connectedContracts
22
+ ) external override onlyProxy initializer {
25
23
  rollupDeploymentBlock = block.number;
26
24
  bridge = connectedContracts.bridge;
27
- sequencerInbox = connectedContracts.sequencerInbox;
28
25
  connectedContracts.bridge.setDelayedInbox(address(connectedContracts.inbox), true);
29
26
  connectedContracts.bridge.setSequencerInbox(address(connectedContracts.sequencerInbox));
30
27
 
@@ -32,65 +29,91 @@ contract RollupAdminLogic is RollupCore, IRollupAdmin, DoubleLogicUUPSUpgradeabl
32
29
  outbox = connectedContracts.outbox;
33
30
  connectedContracts.bridge.setOutbox(address(connectedContracts.outbox), true);
34
31
  rollupEventInbox = connectedContracts.rollupEventInbox;
35
- connectedContracts.bridge.setDelayedInbox(
36
- address(connectedContracts.rollupEventInbox),
37
- true
38
- );
39
32
 
40
- connectedContracts.rollupEventInbox.rollupInitialized(config.chainId, config.chainConfig);
41
- connectedContracts.sequencerInbox.addSequencerL2Batch(
42
- 0,
43
- "",
44
- 1,
45
- IGasRefunder(address(0)),
46
- 0,
47
- 1
48
- );
33
+ // dont need to connect and initialize the event inbox if it's already been initialized
34
+ if (!bridge.allowedDelayedInboxes(address(connectedContracts.rollupEventInbox))) {
35
+ connectedContracts.bridge.setDelayedInbox(
36
+ address(connectedContracts.rollupEventInbox), true
37
+ );
38
+ connectedContracts.rollupEventInbox.rollupInitialized(
39
+ config.chainId, config.chainConfig
40
+ );
41
+ }
42
+
43
+ if (connectedContracts.sequencerInbox.totalDelayedMessagesRead() == 0) {
44
+ connectedContracts.sequencerInbox.addSequencerL2Batch(
45
+ 0, "", 1, IGasRefunder(address(0)), 0, 1
46
+ );
47
+ }
49
48
 
50
- validatorUtils = connectedContracts.validatorUtils;
51
49
  validatorWalletCreator = connectedContracts.validatorWalletCreator;
52
50
  challengeManager = connectedContracts.challengeManager;
53
51
 
54
- Node memory node = createInitialNode();
55
- initializeCore(node);
56
-
57
52
  confirmPeriodBlocks = config.confirmPeriodBlocks;
58
- extraChallengeTimeBlocks = config.extraChallengeTimeBlocks;
59
53
  chainId = config.chainId;
60
54
  baseStake = config.baseStake;
61
55
  wasmModuleRoot = config.wasmModuleRoot;
62
56
  // A little over 15 minutes
63
57
  minimumAssertionPeriod = 75;
64
-
65
- // the owner can't access the rollup user facet where escrow is redeemable
66
- require(config.loserStakeEscrow != _getAdmin(), "INVALID_ESCROW_ADMIN");
67
- // this next check shouldn't be an issue if the owner controls an AdminProxy
68
- // that accesses the admin facet, but still seems like a good extra precaution
69
- require(config.loserStakeEscrow != config.owner, "INVALID_ESCROW_OWNER");
58
+ // ValidatorAfkBlocks is defaulted to 28 days assuming a 12 seconds block time.
59
+ // Since it can take 14 days under normal circumstances to confirm an assertion, this means
60
+ // the validators will have been inactive for a further 14 days before the whitelist is removed.
61
+ validatorAfkBlocks = 201600;
62
+ challengeGracePeriodBlocks = config.challengeGracePeriodBlocks;
63
+
64
+ // loser stake is now sent directly to loserStakeEscrow, it must not
65
+ // be address(0) because some token do not allow transfers to address(0)
66
+ require(config.loserStakeEscrow != address(0), "INVALID_ESCROW_0");
70
67
  loserStakeEscrow = config.loserStakeEscrow;
71
68
 
72
69
  stakeToken = config.stakeToken;
70
+ anyTrustFastConfirmer = config.anyTrustFastConfirmer;
71
+
72
+ bytes32 parentAssertionHash = bytes32(0);
73
+ bytes32 inboxAcc = bytes32(0);
74
+ bytes32 genesisHash = RollupLib.assertionHash({
75
+ parentAssertionHash: parentAssertionHash,
76
+ afterStateHash: config.genesisAssertionState.hash(),
77
+ inboxAcc: inboxAcc
78
+ });
79
+
80
+ uint256 currentInboxCount = bridge.sequencerMessageCount();
81
+ // ensure to move the inbox forward by at least one message
82
+ if (currentInboxCount == config.genesisInboxCount) {
83
+ currentInboxCount += 1;
84
+ }
85
+ AssertionNode memory initialAssertion = AssertionNodeLib.createAssertion(
86
+ true,
87
+ RollupLib.configHash({
88
+ wasmModuleRoot: wasmModuleRoot,
89
+ requiredStake: baseStake,
90
+ challengeManager: address(challengeManager),
91
+ confirmPeriodBlocks: confirmPeriodBlocks,
92
+ nextInboxPosition: uint64(currentInboxCount)
93
+ })
94
+ );
95
+ initializeCore(initialAssertion, genesisHash);
96
+
97
+ AssertionInputs memory assertionInputs;
98
+ assertionInputs.afterState = config.genesisAssertionState;
99
+ emit AssertionCreated(
100
+ genesisHash,
101
+ parentAssertionHash,
102
+ assertionInputs,
103
+ inboxAcc,
104
+ currentInboxCount,
105
+ wasmModuleRoot,
106
+ baseStake,
107
+ address(challengeManager),
108
+ confirmPeriodBlocks
109
+ );
110
+ if (_hostChainIsArbitrum) {
111
+ _assertionCreatedAtArbSysBlock[genesisHash] = ArbSys(address(100)).arbBlockNumber();
112
+ }
73
113
 
74
114
  emit RollupInitialized(config.wasmModuleRoot, config.chainId);
75
115
  }
76
116
 
77
- function createInitialNode() private view returns (Node memory) {
78
- GlobalState memory emptyGlobalState;
79
- bytes32 state = RollupLib.stateHashMem(
80
- ExecutionState(emptyGlobalState, MachineStatus.FINISHED),
81
- 1 // inboxMaxCount - force the first assertion to read a message
82
- );
83
- return
84
- NodeLib.createNode(
85
- state,
86
- 0, // challenge hash (not challengeable)
87
- 0, // confirm data
88
- 0, // prev node
89
- uint64(block.number), // deadline block (not challengeable)
90
- 0 // initial node has a node hash of 0
91
- );
92
- }
93
-
94
117
  /**
95
118
  * Functions are only to reach this logic contract if the caller is the owner
96
119
  * so there is no need for a redundant onlyOwner check
@@ -100,20 +123,26 @@ contract RollupAdminLogic is RollupCore, IRollupAdmin, DoubleLogicUUPSUpgradeabl
100
123
  * @notice Add a contract authorized to put messages into this rollup's inbox
101
124
  * @param _outbox Outbox contract to add
102
125
  */
103
- function setOutbox(IOutbox _outbox) external override {
126
+ function setOutbox(
127
+ IOutbox _outbox
128
+ ) external override {
104
129
  outbox = _outbox;
105
130
  bridge.setOutbox(address(_outbox), true);
106
- emit OwnerFunctionCalled(0);
131
+ emit OutboxSet(address(_outbox));
132
+ // previously: emit OwnerFunctionCalled(0);
107
133
  }
108
134
 
109
135
  /**
110
136
  * @notice Disable an old outbox from interacting with the bridge
111
137
  * @param _outbox Outbox contract to remove
112
138
  */
113
- function removeOldOutbox(address _outbox) external override {
139
+ function removeOldOutbox(
140
+ address _outbox
141
+ ) external override {
114
142
  require(_outbox != address(outbox), "CUR_OUTBOX");
115
143
  bridge.setOutbox(_outbox, false);
116
- emit OwnerFunctionCalled(1);
144
+ emit OldOutboxRemoved(address(_outbox));
145
+ // previously: emit OwnerFunctionCalled(1);
117
146
  }
118
147
 
119
148
  /**
@@ -123,19 +152,20 @@ contract RollupAdminLogic is RollupCore, IRollupAdmin, DoubleLogicUUPSUpgradeabl
123
152
  */
124
153
  function setDelayedInbox(address _inbox, bool _enabled) external override {
125
154
  bridge.setDelayedInbox(address(_inbox), _enabled);
126
- emit OwnerFunctionCalled(2);
155
+ emit DelayedInboxSet(address(_inbox), _enabled);
156
+ // previously: emit OwnerFunctionCalled(2);
127
157
  }
128
158
 
129
159
  /**
130
160
  * @notice Pause interaction with the rollup contract.
131
- * The time spent paused is not incremented in the rollup's timing for node validation.
132
- * @dev this function may be frontrun by a validator (ie to create a node before the system is paused).
161
+ * The time spent paused is not incremented in the rollup's timing for assertion validation.
162
+ * @dev this function may be frontrun by a validator (ie to create a assertion before the system is paused).
133
163
  * The pause should be called atomically with required checks to be sure the system is paused in a consistent state.
134
- * The RollupAdmin may execute a check against the Rollup's latest node num or the ChallengeManager, then execute this function atomically with it.
164
+ * The RollupAdmin may execute a check against the Rollup's latest assertion num or the OldChallengeManager, then execute this function atomically with it.
135
165
  */
136
166
  function pause() external override {
137
167
  _pause();
138
- emit OwnerFunctionCalled(3);
168
+ // previously: emit OwnerFunctionCalled(3);
139
169
  }
140
170
 
141
171
  /**
@@ -143,18 +173,22 @@ contract RollupAdminLogic is RollupCore, IRollupAdmin, DoubleLogicUUPSUpgradeabl
143
173
  */
144
174
  function resume() external override {
145
175
  _unpause();
146
- emit OwnerFunctionCalled(4);
176
+ // previously: emit OwnerFunctionCalled(4);
147
177
  }
148
178
 
149
179
  /// @notice allows the admin to upgrade the primary logic contract (ie rollup admin logic, aka this)
150
180
  /// @dev this function doesn't revert as this primary logic contract is only
151
181
  /// reachable by the proxy's admin
152
- function _authorizeUpgrade(address newImplementation) internal override {}
182
+ function _authorizeUpgrade(
183
+ address newImplementation
184
+ ) internal override {}
153
185
 
154
186
  /// @notice allows the admin to upgrade the secondary logic contract (ie rollup user logic)
155
187
  /// @dev this function doesn't revert as this primary logic contract is only
156
188
  /// reachable by the proxy's admin
157
- function _authorizeSecondaryUpgrade(address newImplementation) internal override {}
189
+ function _authorizeSecondaryUpgrade(
190
+ address newImplementation
191
+ ) internal override {}
158
192
 
159
193
  /**
160
194
  * @notice Set the addresses of the validator whitelist
@@ -168,9 +202,12 @@ contract RollupAdminLogic is RollupCore, IRollupAdmin, DoubleLogicUUPSUpgradeabl
168
202
  require(_validator.length == _val.length, "WRONG_LENGTH");
169
203
 
170
204
  for (uint256 i = 0; i < _validator.length; i++) {
171
- isValidator[_validator[i]] = _val[i];
205
+ if (_val[i]) validators.add(_validator[i]);
206
+ else validators.remove(_validator[i]);
172
207
  }
173
- emit OwnerFunctionCalled(6);
208
+
209
+ emit ValidatorsSet(_validator, _val);
210
+ // previously: emit OwnerFunctionCalled(6);
174
211
  }
175
212
 
176
213
  /**
@@ -178,216 +215,200 @@ contract RollupAdminLogic is RollupCore, IRollupAdmin, DoubleLogicUUPSUpgradeabl
178
215
  * @dev it is expected that only the rollup admin can use this facet to set a new owner
179
216
  * @param newOwner address of new rollup owner
180
217
  */
181
- function setOwner(address newOwner) external override {
218
+ function setOwner(
219
+ address newOwner
220
+ ) external override {
182
221
  _changeAdmin(newOwner);
183
- emit OwnerFunctionCalled(7);
222
+ // previously: emit OwnerFunctionCalled(7);
184
223
  }
185
224
 
186
225
  /**
187
226
  * @notice Set minimum assertion period for the rollup
188
227
  * @param newPeriod new minimum period for assertions
189
228
  */
190
- function setMinimumAssertionPeriod(uint256 newPeriod) external override {
229
+ function setMinimumAssertionPeriod(
230
+ uint256 newPeriod
231
+ ) external override {
191
232
  minimumAssertionPeriod = newPeriod;
192
- emit OwnerFunctionCalled(8);
233
+ emit MinimumAssertionPeriodSet(newPeriod);
234
+ // previously: emit OwnerFunctionCalled(8);
193
235
  }
194
236
 
195
237
  /**
196
- * @notice Set number of blocks until a node is considered confirmed
197
- * @param newConfirmPeriod new number of blocks
238
+ * @notice Set validator afk blocks for the rollup
239
+ * @param newAfkBlocks new number of blocks before a validator is considered afk (0 to disable)
240
+ * @dev ValidatorAfkBlocks is the number of blocks since the last confirmed
241
+ * assertion (or its first child) before the validator whitelist is removed.
242
+ * It's important that this time is greater than the max amount of time it can take to
243
+ * to confirm an assertion via the normal method. Therefore we need it to be greater
244
+ * than max(2* confirmPeriod, 2 * challengePeriod) with some additional margin.
198
245
  */
199
- function setConfirmPeriodBlocks(uint64 newConfirmPeriod) external override {
200
- require(newConfirmPeriod > 0, "INVALID_CONFIRM_PERIOD");
201
- confirmPeriodBlocks = newConfirmPeriod;
202
- emit OwnerFunctionCalled(9);
246
+ function setValidatorAfkBlocks(
247
+ uint64 newAfkBlocks
248
+ ) external override {
249
+ validatorAfkBlocks = newAfkBlocks;
250
+ emit ValidatorAfkBlocksSet(newAfkBlocks);
203
251
  }
204
252
 
205
253
  /**
206
- * @notice Set number of extra blocks after a challenge
207
- * @param newExtraTimeBlocks new number of blocks
254
+ * @notice Set number of blocks until a assertion is considered confirmed
255
+ * @param newConfirmPeriod new number of blocks
208
256
  */
209
- function setExtraChallengeTimeBlocks(uint64 newExtraTimeBlocks) external override {
210
- extraChallengeTimeBlocks = newExtraTimeBlocks;
211
- emit OwnerFunctionCalled(10);
257
+ function setConfirmPeriodBlocks(
258
+ uint64 newConfirmPeriod
259
+ ) external override {
260
+ require(newConfirmPeriod > 0, "INVALID_CONFIRM_PERIOD");
261
+ confirmPeriodBlocks = newConfirmPeriod;
262
+ emit ConfirmPeriodBlocksSet(newConfirmPeriod);
263
+ // previously: emit OwnerFunctionCalled(9);
212
264
  }
213
265
 
214
266
  /**
215
267
  * @notice Set base stake required for an assertion
216
268
  * @param newBaseStake minimum amount of stake required
217
269
  */
218
- function setBaseStake(uint256 newBaseStake) external override {
270
+ function setBaseStake(
271
+ uint256 newBaseStake
272
+ ) external override {
273
+ // we do not currently allow base stake to be reduced since as doing so might allow a malicious party
274
+ // to withdraw some (up to the difference between baseStake and newBaseStake) honest funds from this contract
275
+ // The sequence of events is as follows:
276
+ // 1. The malicious party creates a sibling assertion, stake size is currently S
277
+ // 2. The base stake is then reduced to S'
278
+ // 3. The malicious party uses a different address to create a child of the malicious assertion, using stake size S'
279
+ // 4. This allows the malicious party to withdraw the stake S, since assertions with children set the staker to "inactive"
280
+ require(newBaseStake > baseStake, "BASE_STAKE_MUST_BE_INCREASED");
219
281
  baseStake = newBaseStake;
220
- emit OwnerFunctionCalled(12);
282
+ emit BaseStakeSet(newBaseStake);
283
+ // previously: emit OwnerFunctionCalled(12);
221
284
  }
222
285
 
223
- /**
224
- * @notice Set the token used for stake, where address(0) == eth
225
- * @dev Before changing the base stake token, you might need to change the
226
- * implementation of the Rollup User facet!
227
- * @param newStakeToken address of token used for staking
228
- */
229
- function setStakeToken(address newStakeToken) external override whenPaused {
230
- /*
231
- * To change the stake token without breaking consistency one would need to:
232
- * Pause the system, have all stakers remove their funds,
233
- * update the user logic to handle ERC20s, change the stake token, then resume.
234
- *
235
- * Note: To avoid loss of funds stakers must remove their funds and claim all the
236
- * available withdrawable funds before the system is paused.
237
- */
238
- bool expectERC20Support = newStakeToken != address(0);
239
- // this assumes the rollup isn't its own admin. if needed, instead use a ProxyAdmin by OZ!
240
- bool actualERC20Support = IRollupUser(address(this)).isERC20Enabled();
241
- require(actualERC20Support == expectERC20Support, "NO_USER_LOGIC_SUPPORT");
242
- require(stakerCount() == 0, "NO_ACTIVE_STAKERS");
243
- require(totalWithdrawableFunds == 0, "NO_PENDING_WITHDRAW");
244
- stakeToken = newStakeToken;
245
- emit OwnerFunctionCalled(13);
246
- }
247
-
248
- /**
249
- * @notice Upgrades the implementation of a beacon controlled by the rollup
250
- * @param beacon address of beacon to be upgraded
251
- * @param newImplementation new address of implementation
252
- */
253
- function upgradeBeacon(address beacon, address newImplementation) external override {
254
- UpgradeableBeacon(beacon).upgradeTo(newImplementation);
255
- emit OwnerFunctionCalled(20);
256
- }
257
-
258
- function forceResolveChallenge(address[] calldata stakerA, address[] calldata stakerB)
259
- external
260
- override
261
- whenPaused
262
- {
263
- require(stakerA.length > 0, "EMPTY_ARRAY");
264
- require(stakerA.length == stakerB.length, "WRONG_LENGTH");
265
- for (uint256 i = 0; i < stakerA.length; i++) {
266
- uint64 chall = inChallenge(stakerA[i], stakerB[i]);
267
-
268
- require(chall != NO_CHAL_INDEX, "NOT_IN_CHALL");
269
- clearChallenge(stakerA[i]);
270
- clearChallenge(stakerB[i]);
271
- challengeManager.clearChallenge(chall);
272
- }
273
- emit OwnerFunctionCalled(21);
274
- }
275
-
276
- function forceRefundStaker(address[] calldata staker) external override whenPaused {
286
+ function forceRefundStaker(
287
+ address[] calldata staker
288
+ ) external override whenPaused {
277
289
  require(staker.length > 0, "EMPTY_ARRAY");
278
290
  for (uint256 i = 0; i < staker.length; i++) {
279
- require(_stakerMap[staker[i]].currentChallenge == NO_CHAL_INDEX, "STAKER_IN_CHALL");
291
+ requireInactiveStaker(staker[i]);
280
292
  reduceStakeTo(staker[i], 0);
281
- turnIntoZombie(staker[i]);
282
293
  }
283
- emit OwnerFunctionCalled(22);
294
+ emit StakersForceRefunded(staker);
295
+ // previously: emit OwnerFunctionCalled(22);
284
296
  }
285
297
 
286
- function forceCreateNode(
287
- uint64 prevNode,
288
- uint256 prevNodeInboxMaxCount,
289
- Assertion calldata assertion,
290
- bytes32 expectedNodeHash
298
+ function forceCreateAssertion(
299
+ bytes32 prevAssertionHash,
300
+ AssertionInputs calldata assertion,
301
+ bytes32 expectedAssertionHash
291
302
  ) external override whenPaused {
292
- require(prevNode == latestConfirmed(), "ONLY_LATEST_CONFIRMED");
293
-
294
- createNewNode(assertion, prevNode, prevNodeInboxMaxCount, expectedNodeHash);
295
-
296
- emit OwnerFunctionCalled(23);
303
+ // To update the wasm module root in the case of a bug:
304
+ // 0. pause the contract
305
+ // 1. update the wasm module root in the contract
306
+ // 2. update the config hash of the assertion after which you wish to use the new wasm module root (functionality not written yet)
307
+ // 3. force refund the stake of the current leaf assertion(s)
308
+ // 4. create a new assertion using the assertion with the updated config has as a prev
309
+ // 5. force confirm it - this is necessary to set latestConfirmed on the correct line
310
+ // 6. unpause the contract
311
+
312
+ // Normally, a new assertion is created using its prev's confirmPeriodBlocks
313
+ // in the case of a force create, we use the rollup's current confirmPeriodBlocks
314
+ createNewAssertion(assertion, prevAssertionHash, expectedAssertionHash);
315
+
316
+ emit AssertionForceCreated(expectedAssertionHash);
317
+ // previously: emit OwnerFunctionCalled(23);
297
318
  }
298
319
 
299
- function forceConfirmNode(
300
- uint64 nodeNum,
301
- bytes32 blockHash,
302
- bytes32 sendRoot
320
+ function forceConfirmAssertion(
321
+ bytes32 assertionHash,
322
+ bytes32 parentAssertionHash,
323
+ AssertionState calldata confirmState,
324
+ bytes32 inboxAcc
303
325
  ) external override whenPaused {
304
- // this skips deadline, staker and zombie validation
305
- confirmNode(nodeNum, blockHash, sendRoot);
306
- emit OwnerFunctionCalled(24);
326
+ // this skip deadline, prev, challenge validations
327
+ confirmAssertionInternal(assertionHash, parentAssertionHash, confirmState, inboxAcc);
328
+ emit AssertionForceConfirmed(assertionHash);
329
+ // previously: emit OwnerFunctionCalled(24);
307
330
  }
308
331
 
309
- function setLoserStakeEscrow(address newLoserStakerEscrow) external override {
310
- // escrow holder can't be proxy admin, since escrow is only redeemable through
311
- // the primary user logic contract
312
- require(newLoserStakerEscrow != _getAdmin(), "INVALID_ESCROW");
332
+ function setLoserStakeEscrow(
333
+ address newLoserStakerEscrow
334
+ ) external override {
335
+ // loser stake is now sent directly to loserStakeEscrow, it must not
336
+ // be address(0) because some token do not allow transfers to address(0)
337
+ require(newLoserStakerEscrow != address(0), "INVALID_ESCROW_0");
313
338
  loserStakeEscrow = newLoserStakerEscrow;
314
- emit OwnerFunctionCalled(25);
339
+ emit LoserStakeEscrowSet(newLoserStakerEscrow);
340
+ // previously: emit OwnerFunctionCalled(25);
315
341
  }
316
342
 
317
343
  /**
318
344
  * @notice Set the proving WASM module root
319
345
  * @param newWasmModuleRoot new module root
320
346
  */
321
- function setWasmModuleRoot(bytes32 newWasmModuleRoot) external override {
347
+ function setWasmModuleRoot(
348
+ bytes32 newWasmModuleRoot
349
+ ) external override {
322
350
  wasmModuleRoot = newWasmModuleRoot;
323
- emit OwnerFunctionCalled(26);
351
+ emit WasmModuleRootSet(newWasmModuleRoot);
352
+ // previously: emit OwnerFunctionCalled(26);
324
353
  }
325
354
 
326
355
  /**
327
356
  * @notice set a new sequencer inbox contract
328
357
  * @param _sequencerInbox new address of sequencer inbox
329
358
  */
330
- function setSequencerInbox(address _sequencerInbox) external override {
359
+ function setSequencerInbox(
360
+ address _sequencerInbox
361
+ ) external override {
331
362
  bridge.setSequencerInbox(_sequencerInbox);
332
- emit OwnerFunctionCalled(27);
363
+ emit SequencerInboxSet(_sequencerInbox);
364
+ // previously: emit OwnerFunctionCalled(27);
333
365
  }
334
366
 
335
367
  /**
336
368
  * @notice sets the rollup's inbox reference. Does not update the bridge's view.
337
369
  * @param newInbox new address of inbox
338
370
  */
339
- function setInbox(IInboxBase newInbox) external {
371
+ function setInbox(
372
+ IInboxBase newInbox
373
+ ) external {
340
374
  inbox = newInbox;
341
- emit OwnerFunctionCalled(28);
342
- }
343
-
344
- function createNitroMigrationGenesis(Assertion calldata assertion) external whenPaused {
345
- bytes32 expectedSendRoot = bytes32(0);
346
- uint64 expectedInboxCount = 1;
347
-
348
- require(latestNodeCreated() == 0, "NON_GENESIS_NODES_EXIST");
349
- require(GlobalStateLib.isEmpty(assertion.beforeState.globalState), "NOT_EMPTY_BEFORE");
350
- require(
351
- assertion.beforeState.machineStatus == MachineStatus.FINISHED,
352
- "BEFORE_MACHINE_NOT_FINISHED"
353
- );
354
- // accessors such as state.getSendRoot not available for calldata structs, only memory
355
- require(
356
- assertion.afterState.globalState.bytes32Vals[1] == expectedSendRoot,
357
- "NOT_ZERO_SENDROOT"
358
- );
359
- require(
360
- assertion.afterState.globalState.u64Vals[0] == expectedInboxCount,
361
- "INBOX_NOT_AT_ONE"
362
- );
363
- require(assertion.afterState.globalState.u64Vals[1] == 0, "POSITION_IN_MESSAGE_NOT_ZERO");
364
- require(
365
- assertion.afterState.machineStatus == MachineStatus.FINISHED,
366
- "AFTER_MACHINE_NOT_FINISHED"
367
- );
368
- bytes32 genesisBlockHash = assertion.afterState.globalState.bytes32Vals[0];
369
- createNewNode(assertion, 0, expectedInboxCount, bytes32(0));
370
- confirmNode(1, genesisBlockHash, expectedSendRoot);
371
- emit OwnerFunctionCalled(29);
375
+ emit InboxSet(address(newInbox));
376
+ // previously: emit OwnerFunctionCalled(28);
372
377
  }
373
378
 
374
379
  /**
375
380
  * @notice set the validatorWhitelistDisabled flag
376
381
  * @param _validatorWhitelistDisabled new value of validatorWhitelistDisabled, i.e. true = disabled
377
382
  */
378
- function setValidatorWhitelistDisabled(bool _validatorWhitelistDisabled) external {
383
+ function setValidatorWhitelistDisabled(
384
+ bool _validatorWhitelistDisabled
385
+ ) external {
379
386
  validatorWhitelistDisabled = _validatorWhitelistDisabled;
380
- emit OwnerFunctionCalled(30);
387
+ emit ValidatorWhitelistDisabledSet(_validatorWhitelistDisabled);
388
+ // previously: emit OwnerFunctionCalled(30);
381
389
  }
382
390
 
383
391
  /**
384
392
  * @notice set the anyTrustFastConfirmer address
385
- * must also call `setValidator` to set the same address as a validator to work
386
- * old fast confirmer need to be removed from the validator list manually
387
393
  * @param _anyTrustFastConfirmer new value of anyTrustFastConfirmer
388
394
  */
389
- function setAnyTrustFastConfirmer(address _anyTrustFastConfirmer) external {
395
+ function setAnyTrustFastConfirmer(
396
+ address _anyTrustFastConfirmer
397
+ ) external {
390
398
  anyTrustFastConfirmer = _anyTrustFastConfirmer;
391
- emit OwnerFunctionCalled(31);
399
+ emit AnyTrustFastConfirmerSet(_anyTrustFastConfirmer);
400
+ // previously: emit OwnerFunctionCalled(31);
401
+ }
402
+
403
+ /**
404
+ * @notice set a new challengeManager contract
405
+ * @param _challengeManager new value of challengeManager
406
+ */
407
+ function setChallengeManager(
408
+ address _challengeManager
409
+ ) external {
410
+ challengeManager = IEdgeChallengeManager(_challengeManager);
411
+ emit ChallengeManagerSet(_challengeManager);
412
+ // previously: emit OwnerFunctionCalled(32);
392
413
  }
393
414
  }