@arbitrum/nitro-contracts 2.1.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 -499
  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 -535
  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 +15 -5
  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 -3
  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 +35 -72
  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 -644
  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 -1332
  487. package/build/contracts/src/rollup/IRollupLogic.sol/IRollupUserERC20.dbg.json +0 -4
  488. package/build/contracts/src/rollup/IRollupLogic.sol/IRollupUserERC20.json +0 -1466
  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 -1614
  492. package/build/contracts/src/rollup/RollupUserLogic.sol/ERC20RollupUserLogic.dbg.json +0 -4
  493. package/build/contracts/src/rollup/RollupUserLogic.sol/ERC20RollupUserLogic.json +0 -1748
  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
  }