@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
@@ -5,21 +5,22 @@
5
5
  pragma solidity ^0.8.0;
6
6
 
7
7
  import "./IOneStepProver.sol";
8
+ import "../state/Machine.sol";
8
9
 
9
10
  library OneStepProofEntryLib {
10
11
  uint256 internal constant MAX_STEPS = 1 << 43;
11
12
  }
12
13
 
13
- interface IOneStepProofEntry {
14
- function getStartMachineHash(bytes32 globalStateHash, bytes32 wasmModuleRoot)
15
- external
16
- pure
17
- returns (bytes32);
14
+ struct ExecutionState {
15
+ GlobalState globalState;
16
+ MachineStatus machineStatus;
17
+ }
18
18
 
19
- function getEndMachineHash(MachineStatus status, bytes32 globalStateHash)
20
- external
21
- pure
22
- returns (bytes32);
19
+ interface IOneStepProofEntry {
20
+ function getStartMachineHash(
21
+ bytes32 globalStateHash,
22
+ bytes32 wasmModuleRoot
23
+ ) external pure returns (bytes32);
23
24
 
24
25
  function proveOneStep(
25
26
  ExecutionContext calldata execCtx,
@@ -27,4 +28,8 @@ interface IOneStepProofEntry {
27
28
  bytes32 beforeHash,
28
29
  bytes calldata proof
29
30
  ) external view returns (bytes32 afterHash);
31
+
32
+ function getMachineHash(
33
+ ExecutionState calldata execState
34
+ ) external pure returns (bytes32);
30
35
  }
@@ -14,6 +14,7 @@ import "../bridge/IBridge.sol";
14
14
  struct ExecutionContext {
15
15
  uint256 maxInboxMessagesRead;
16
16
  IBridge bridge;
17
+ bytes32 initialWasmModuleRoot;
17
18
  }
18
19
 
19
20
  abstract contract IOneStepProver {
@@ -1,4 +1,4 @@
1
- // Copyright 2021-2023, Offchain Labs, Inc.
1
+ // Copyright 2021-2022, Offchain Labs, Inc.
2
2
  // For license information, see https://github.com/OffchainLabs/nitro-contracts/blob/main/LICENSE
3
3
  // SPDX-License-Identifier: BUSL-1.1
4
4
 
@@ -14,6 +14,7 @@ import "./IOneStepProofEntry.sol";
14
14
  contract OneStepProofEntry is IOneStepProofEntry {
15
15
  using MerkleProofLib for MerkleProof;
16
16
  using MachineLib for Machine;
17
+ using GlobalStateLib for GlobalState;
17
18
  using MultiStackLib for MultiStack;
18
19
 
19
20
  using ValueStackLib for ValueStack;
@@ -36,12 +37,11 @@ contract OneStepProofEntry is IOneStepProofEntry {
36
37
  proverHostIo = proverHostIo_;
37
38
  }
38
39
 
39
- // Copied from ChallengeLib.sol
40
- function getStartMachineHash(bytes32 globalStateHash, bytes32 wasmModuleRoot)
41
- external
42
- pure
43
- returns (bytes32)
44
- {
40
+ // Copied from OldChallengeLib.sol
41
+ function getStartMachineHash(
42
+ bytes32 globalStateHash,
43
+ bytes32 wasmModuleRoot
44
+ ) public pure returns (bytes32) {
45
45
  // Start the value stack with the function call ABI for the entrypoint
46
46
  Value[] memory startingValues = new Value[](3);
47
47
  startingValues[0] = ValueLib.newRefNull();
@@ -71,20 +71,15 @@ contract OneStepProofEntry is IOneStepProofEntry {
71
71
  return mach.hash();
72
72
  }
73
73
 
74
- // Copied from ChallengeLib.sol
75
- function getEndMachineHash(MachineStatus status, bytes32 globalStateHash)
76
- external
77
- pure
78
- returns (bytes32)
79
- {
80
- if (status == MachineStatus.FINISHED) {
81
- return keccak256(abi.encodePacked("Machine finished:", globalStateHash));
82
- } else if (status == MachineStatus.ERRORED) {
83
- return keccak256(abi.encodePacked("Machine errored:"));
84
- } else if (status == MachineStatus.TOO_FAR) {
85
- return keccak256(abi.encodePacked("Machine too far:"));
74
+ function getMachineHash(
75
+ ExecutionState calldata execState
76
+ ) external pure override returns (bytes32) {
77
+ if (execState.machineStatus == MachineStatus.FINISHED) {
78
+ return keccak256(abi.encodePacked("Machine finished:", execState.globalState.hash()));
79
+ } else if (execState.machineStatus == MachineStatus.ERRORED) {
80
+ return keccak256(abi.encodePacked("Machine errored:", execState.globalState.hash()));
86
81
  } else {
87
- revert("BAD_BLOCK_STATUS");
82
+ revert("BAD_MACHINE_STATUS");
88
83
  }
89
84
  }
90
85
 
@@ -106,6 +101,16 @@ contract OneStepProofEntry is IOneStepProofEntry {
106
101
  if (mach.status != MachineStatus.RUNNING) {
107
102
  // Machine is halted.
108
103
  // WARNING: at this point, most machine fields are unconstrained.
104
+ GlobalState memory globalState;
105
+ (globalState, offset) = Deserialize.globalState(proof, offset);
106
+ require(globalState.hash() == mach.globalStateHash, "BAD_GLOBAL_STATE");
107
+ if (
108
+ mach.status == MachineStatus.FINISHED && machineStep == 0
109
+ && globalState.getInboxPosition() < execCtx.maxInboxMessagesRead
110
+ ) {
111
+ // Kickstart the machine
112
+ return getStartMachineHash(mach.globalStateHash, execCtx.initialWasmModuleRoot);
113
+ }
109
114
  return mach.hash();
110
115
  }
111
116
 
@@ -128,14 +133,10 @@ contract OneStepProofEntry is IOneStepProofEntry {
128
133
  (codeChunk, offset) = Deserialize.instructions(proof, offset);
129
134
  (codeProof, offset) = Deserialize.merkleProof(proof, offset);
130
135
  (funcProof, offset) = Deserialize.merkleProof(proof, offset);
131
- bytes32 codeHash = codeProof.computeRootFromInstructions(
132
- mach.functionPc / 64,
133
- codeChunk
134
- );
135
- bytes32 recomputedRoot = funcProof.computeRootFromFunction(
136
- mach.functionIdx,
137
- codeHash
138
- );
136
+ bytes32 codeHash =
137
+ codeProof.computeRootFromInstructions(mach.functionPc / 64, codeChunk);
138
+ bytes32 recomputedRoot =
139
+ funcProof.computeRootFromFunction(mach.functionIdx, codeHash);
139
140
  require(recomputedRoot == mod.functionsMerkleRoot, "BAD_FUNCTIONS_ROOT");
140
141
  inst = codeChunk[mach.functionPc % 64];
141
142
  }
@@ -147,36 +148,44 @@ contract OneStepProofEntry is IOneStepProofEntry {
147
148
  uint16 opcode = inst.opcode;
148
149
  IOneStepProver prover;
149
150
  if (
150
- (opcode >= Instructions.I32_LOAD && opcode <= Instructions.I64_LOAD32_U) ||
151
- (opcode >= Instructions.I32_STORE && opcode <= Instructions.I64_STORE32) ||
152
- opcode == Instructions.MEMORY_SIZE ||
153
- opcode == Instructions.MEMORY_GROW
151
+ (opcode >= Instructions.I32_LOAD && opcode <= Instructions.I64_LOAD32_U)
152
+ || (opcode >= Instructions.I32_STORE && opcode <= Instructions.I64_STORE32)
153
+ || opcode == Instructions.MEMORY_SIZE || opcode == Instructions.MEMORY_GROW
154
154
  ) {
155
155
  prover = proverMem;
156
156
  } else if (
157
- (opcode == Instructions.I32_EQZ || opcode == Instructions.I64_EQZ) ||
158
- (opcode >= Instructions.I32_RELOP_BASE &&
159
- opcode <= Instructions.I32_RELOP_BASE + Instructions.IRELOP_LAST) ||
160
- (opcode >= Instructions.I32_UNOP_BASE &&
161
- opcode <= Instructions.I32_UNOP_BASE + Instructions.IUNOP_LAST) ||
162
- (opcode >= Instructions.I32_ADD && opcode <= Instructions.I32_ROTR) ||
163
- (opcode >= Instructions.I64_RELOP_BASE &&
164
- opcode <= Instructions.I64_RELOP_BASE + Instructions.IRELOP_LAST) ||
165
- (opcode >= Instructions.I64_UNOP_BASE &&
166
- opcode <= Instructions.I64_UNOP_BASE + Instructions.IUNOP_LAST) ||
167
- (opcode >= Instructions.I64_ADD && opcode <= Instructions.I64_ROTR) ||
168
- (opcode == Instructions.I32_WRAP_I64) ||
169
- (opcode == Instructions.I64_EXTEND_I32_S || opcode == Instructions.I64_EXTEND_I32_U) ||
170
- (opcode >= Instructions.I32_EXTEND_8S && opcode <= Instructions.I64_EXTEND_32S) ||
171
- (opcode >= Instructions.I32_REINTERPRET_F32 &&
172
- opcode <= Instructions.F64_REINTERPRET_I64)
157
+ (opcode == Instructions.I32_EQZ || opcode == Instructions.I64_EQZ)
158
+ || (
159
+ opcode >= Instructions.I32_RELOP_BASE
160
+ && opcode <= Instructions.I32_RELOP_BASE + Instructions.IRELOP_LAST
161
+ )
162
+ || (
163
+ opcode >= Instructions.I32_UNOP_BASE
164
+ && opcode <= Instructions.I32_UNOP_BASE + Instructions.IUNOP_LAST
165
+ ) || (opcode >= Instructions.I32_ADD && opcode <= Instructions.I32_ROTR)
166
+ || (
167
+ opcode >= Instructions.I64_RELOP_BASE
168
+ && opcode <= Instructions.I64_RELOP_BASE + Instructions.IRELOP_LAST
169
+ )
170
+ || (
171
+ opcode >= Instructions.I64_UNOP_BASE
172
+ && opcode <= Instructions.I64_UNOP_BASE + Instructions.IUNOP_LAST
173
+ ) || (opcode >= Instructions.I64_ADD && opcode <= Instructions.I64_ROTR)
174
+ || (opcode == Instructions.I32_WRAP_I64)
175
+ || (opcode == Instructions.I64_EXTEND_I32_S || opcode == Instructions.I64_EXTEND_I32_U)
176
+ || (opcode >= Instructions.I32_EXTEND_8S && opcode <= Instructions.I64_EXTEND_32S)
177
+ || (
178
+ opcode >= Instructions.I32_REINTERPRET_F32
179
+ && opcode <= Instructions.F64_REINTERPRET_I64
180
+ )
173
181
  ) {
174
182
  prover = proverMath;
175
183
  } else if (
176
- (opcode >= Instructions.GET_GLOBAL_STATE_BYTES32 &&
177
- opcode <= Instructions.SET_GLOBAL_STATE_U64) ||
178
- (opcode >= Instructions.READ_PRE_IMAGE && opcode <= Instructions.UNLINK_MODULE) ||
179
- (opcode >= Instructions.NEW_COTHREAD && opcode <= Instructions.SWITCH_COTHREAD)
184
+ (
185
+ opcode >= Instructions.GET_GLOBAL_STATE_BYTES32
186
+ && opcode <= Instructions.SET_GLOBAL_STATE_U64
187
+ ) || (opcode >= Instructions.READ_PRE_IMAGE && opcode <= Instructions.UNLINK_MODULE)
188
+ || (opcode >= Instructions.NEW_COTHREAD && opcode <= Instructions.SWITCH_COTHREAD)
180
189
  ) {
181
190
  prover = proverHostIo;
182
191
  } else {
@@ -185,8 +194,8 @@ contract OneStepProofEntry is IOneStepProofEntry {
185
194
 
186
195
  (mach, mod) = prover.executeOneStep(execCtx, mach, mod, inst, proof);
187
196
 
188
- bool updateRoot = !(opcode == Instructions.LINK_MODULE ||
189
- opcode == Instructions.UNLINK_MODULE);
197
+ bool updateRoot =
198
+ !(opcode == Instructions.LINK_MODULE || opcode == Instructions.UNLINK_MODULE);
190
199
  if (updateRoot) {
191
200
  mach.modulesRoot = modProof.computeRootFromModule(oldModIdx, mod);
192
201
  }
@@ -94,7 +94,9 @@ contract OneStepProver0 is IOneStepProver {
94
94
  mach.setPc(frame.returnPc);
95
95
  }
96
96
 
97
- function createReturnValue(Machine memory mach) internal pure returns (Value memory) {
97
+ function createReturnValue(
98
+ Machine memory mach
99
+ ) internal pure returns (Value memory) {
98
100
  return ValueLib.newPc(mach.functionPc, mach.functionIdx, mach.moduleIdx);
99
101
  }
100
102
 
@@ -252,16 +254,11 @@ contract OneStepProver0 is IOneStepProver {
252
254
  (tableMerkleProof, offset) = Deserialize.merkleProof(proof, offset);
253
255
 
254
256
  // Validate the information by recomputing known hashes
255
- bytes32 recomputed = keccak256(
256
- abi.encodePacked("Call indirect:", tableIdx, wantedFuncTypeHash)
257
- );
257
+ bytes32 recomputed =
258
+ keccak256(abi.encodePacked("Call indirect:", tableIdx, wantedFuncTypeHash));
258
259
  require(recomputed == bytes32(inst.argumentData), "BAD_CALL_INDIRECT_DATA");
259
- recomputed = tableMerkleProof.computeRootFromTable(
260
- tableIdx,
261
- tableType,
262
- tableSize,
263
- elemsRoot
264
- );
260
+ recomputed =
261
+ tableMerkleProof.computeRootFromTable(tableIdx, tableType, tableSize, elemsRoot);
265
262
  require(recomputed == mod.tablesMerkleRoot, "BAD_TABLES_ROOT");
266
263
 
267
264
  // Check if the table access is out of bounds
@@ -278,9 +275,7 @@ contract OneStepProver0 is IOneStepProver {
278
275
  (functionPointer, offset) = Deserialize.value(proof, offset);
279
276
  (elementMerkleProof, offset) = Deserialize.merkleProof(proof, offset);
280
277
  bytes32 recomputedElemRoot = elementMerkleProof.computeRootFromElement(
281
- elementIdx,
282
- elemFuncTypeHash,
283
- functionPointer
278
+ elementIdx, elemFuncTypeHash, functionPointer
284
279
  );
285
280
  require(recomputedElemRoot == elemsRoot, "BAD_ELEMENTS_ROOT");
286
281
 
@@ -390,12 +385,8 @@ contract OneStepProver0 is IOneStepProver {
390
385
  ) internal pure {
391
386
  Value memory newVal = mach.valueStack.pop();
392
387
  StackFrame memory frame = mach.frameStack.peek();
393
- frame.localsMerkleRoot = merkleProveSetValue(
394
- frame.localsMerkleRoot,
395
- inst.argumentData,
396
- newVal,
397
- proof
398
- );
388
+ frame.localsMerkleRoot =
389
+ merkleProveSetValue(frame.localsMerkleRoot, inst.argumentData, newVal, proof);
399
390
  }
400
391
 
401
392
  function executeGlobalGet(
@@ -415,12 +406,8 @@ contract OneStepProver0 is IOneStepProver {
415
406
  bytes calldata proof
416
407
  ) internal pure {
417
408
  Value memory newVal = mach.valueStack.pop();
418
- mod.globalsMerkleRoot = merkleProveSetValue(
419
- mod.globalsMerkleRoot,
420
- inst.argumentData,
421
- newVal,
422
- proof
423
- );
409
+ mod.globalsMerkleRoot =
410
+ merkleProveSetValue(mod.globalsMerkleRoot, inst.argumentData, newVal, proof);
424
411
  }
425
412
 
426
413
  function executeInitFrame(
@@ -523,8 +510,8 @@ contract OneStepProver0 is IOneStepProver {
523
510
  } else if (opcode >= Instructions.I32_CONST && opcode <= Instructions.F64_CONST) {
524
511
  impl = executeConstPush;
525
512
  } else if (
526
- opcode == Instructions.MOVE_FROM_STACK_TO_INTERNAL ||
527
- opcode == Instructions.MOVE_FROM_INTERNAL_TO_STACK
513
+ opcode == Instructions.MOVE_FROM_STACK_TO_INTERNAL
514
+ || opcode == Instructions.MOVE_FROM_INTERNAL_TO_STACK
528
515
  ) {
529
516
  impl = executeMoveInternal;
530
517
  } else if (opcode == Instructions.DUP) {
@@ -29,11 +29,7 @@ contract OneStepProverHostIo is IOneStepProver {
29
29
  uint64 private constant INBOX_HEADER_LEN = 40;
30
30
  uint64 private constant DELAYED_HEADER_LEN = 112 + 1;
31
31
 
32
- function setLeafByte(
33
- bytes32 oldLeaf,
34
- uint256 idx,
35
- uint8 val
36
- ) internal pure returns (bytes32) {
32
+ function setLeafByte(bytes32 oldLeaf, uint256 idx, uint8 val) internal pure returns (bytes32) {
37
33
  require(idx < LEAF_SIZE, "BAD_SET_LEAF_BYTE_IDX");
38
34
  // Take into account that we are casting the leaf to a big-endian integer
39
35
  uint256 leafShift = (LEAF_SIZE - 1 - idx) * 8;
@@ -66,17 +62,12 @@ contract OneStepProverHostIo is IOneStepProver {
66
62
  uint256 proofOffset = 0;
67
63
  bytes32 startLeafContents;
68
64
  MerkleProof memory merkleProof;
69
- (startLeafContents, proofOffset, merkleProof) = mod.moduleMemory.proveLeaf(
70
- leafIdx,
71
- proof,
72
- proofOffset
73
- );
65
+ (startLeafContents, proofOffset, merkleProof) =
66
+ mod.moduleMemory.proveLeaf(leafIdx, proof, proofOffset);
74
67
 
75
68
  if (inst.opcode == Instructions.GET_GLOBAL_STATE_BYTES32) {
76
- mod.moduleMemory.merkleRoot = merkleProof.computeRootFromMemory(
77
- leafIdx,
78
- state.bytes32Vals[idx]
79
- );
69
+ mod.moduleMemory.merkleRoot =
70
+ merkleProof.computeRootFromMemory(leafIdx, state.bytes32Vals[idx]);
80
71
  } else if (inst.opcode == Instructions.SET_GLOBAL_STATE_BYTES32) {
81
72
  state.bytes32Vals[idx] = startLeafContents;
82
73
  } else {
@@ -113,11 +104,7 @@ contract OneStepProverHostIo is IOneStepProver {
113
104
 
114
105
  // Computes b**e % m
115
106
  // Really pure but the Solidity compiler sees the staticcall and requires view
116
- function modExp256(
117
- uint256 b,
118
- uint256 e,
119
- uint256 m
120
- ) internal view returns (uint256) {
107
+ function modExp256(uint256 b, uint256 e, uint256 m) internal view returns (uint256) {
121
108
  bytes memory modExpInput = abi.encode(32, 32, 32, b, e, m);
122
109
  (bool modexpSuccess, bytes memory modExpOutput) = address(0x05).staticcall(modExpInput);
123
110
  require(modexpSuccess, "MODEXP_FAILED");
@@ -143,11 +130,8 @@ contract OneStepProverHostIo is IOneStepProver {
143
130
  uint256 proofOffset = 0;
144
131
  bytes32 leafContents;
145
132
  MerkleProof memory merkleProof;
146
- (leafContents, proofOffset, merkleProof) = mod.moduleMemory.proveLeaf(
147
- leafIdx,
148
- proof,
149
- proofOffset
150
- );
133
+ (leafContents, proofOffset, merkleProof) =
134
+ mod.moduleMemory.proveLeaf(leafIdx, proof, proofOffset);
151
135
 
152
136
  bytes memory extracted;
153
137
  uint8 proofType = uint8(proof[proofOffset]);
@@ -257,7 +241,7 @@ contract OneStepProverHostIo is IOneStepProver {
257
241
  require(message.length >= INBOX_HEADER_LEN, "BAD_SEQINBOX_PROOF");
258
242
 
259
243
  uint64 afterDelayedMsg;
260
- (afterDelayedMsg, ) = Deserialize.u64(message, 32);
244
+ (afterDelayedMsg,) = Deserialize.u64(message, 32);
261
245
  bytes32 messageHash = keccak256(message);
262
246
  bytes32 beforeAcc;
263
247
  bytes32 delayedAcc;
@@ -289,7 +273,7 @@ contract OneStepProverHostIo is IOneStepProver {
289
273
  bytes32 messageDataHash = keccak256(message[DELAYED_HEADER_LEN:]);
290
274
  bytes1 kind = message[0];
291
275
  uint256 sender;
292
- (sender, ) = Deserialize.u256(message, 1);
276
+ (sender,) = Deserialize.u256(message, 1);
293
277
 
294
278
  bytes32 messageHash = keccak256(
295
279
  abi.encodePacked(kind, uint160(sender), message[33:DELAYED_HEADER_LEN], messageDataHash)
@@ -311,10 +295,10 @@ contract OneStepProverHostIo is IOneStepProver {
311
295
  uint256 ptr = mach.valueStack.pop().assumeI32();
312
296
  uint256 msgIndex = mach.valueStack.pop().assumeI64();
313
297
  if (
314
- inst.argumentData == Instructions.INBOX_INDEX_SEQUENCER &&
315
- msgIndex >= execCtx.maxInboxMessagesRead
298
+ inst.argumentData == Instructions.INBOX_INDEX_SEQUENCER
299
+ && msgIndex >= execCtx.maxInboxMessagesRead
316
300
  ) {
317
- mach.status = MachineStatus.TOO_FAR;
301
+ mach.status = MachineStatus.ERRORED;
318
302
  return;
319
303
  }
320
304
 
@@ -327,11 +311,8 @@ contract OneStepProverHostIo is IOneStepProver {
327
311
  uint256 proofOffset = 0;
328
312
  bytes32 leafContents;
329
313
  MerkleProof memory merkleProof;
330
- (leafContents, proofOffset, merkleProof) = mod.moduleMemory.proveLeaf(
331
- leafIdx,
332
- proof,
333
- proofOffset
334
- );
314
+ (leafContents, proofOffset, merkleProof) =
315
+ mod.moduleMemory.proveLeaf(leafIdx, proof, proofOffset);
335
316
 
336
317
  {
337
318
  // TODO: support proving via an authenticated contract
@@ -364,11 +345,8 @@ contract OneStepProverHostIo is IOneStepProver {
364
345
 
365
346
  uint32 i = 0;
366
347
  for (; i < 32 && messageOffset + i < messageLength; i++) {
367
- leafContents = setLeafByte(
368
- leafContents,
369
- i,
370
- uint8(proof[proofOffset + messageOffset + i])
371
- );
348
+ leafContents =
349
+ setLeafByte(leafContents, i, uint8(proof[proofOffset + messageOffset + i]));
372
350
  }
373
351
 
374
352
  mod.moduleMemory.merkleRoot = merkleProof.computeRootFromMemory(leafIdx, leafContents);
@@ -385,7 +363,9 @@ contract OneStepProverHostIo is IOneStepProver {
385
363
  mach.status = MachineStatus.FINISHED;
386
364
  }
387
365
 
388
- function isPowerOfTwo(uint256 value) internal pure returns (bool) {
366
+ function isPowerOfTwo(
367
+ uint256 value
368
+ ) internal pure returns (bool) {
389
369
  return value != 0 && (value & (value - 1) == 0);
390
370
  }
391
371
 
@@ -396,11 +376,7 @@ contract OneStepProverHostIo is IOneStepProver {
396
376
  )
397
377
  internal
398
378
  pure
399
- returns (
400
- uint256 leaf,
401
- MerkleProof memory leafProof,
402
- MerkleProof memory zeroProof
403
- )
379
+ returns (uint256 leaf, MerkleProof memory leafProof, MerkleProof memory zeroProof)
404
380
  {
405
381
  string memory prefix = "Module merkle tree:";
406
382
  bytes32 root = mach.modulesRoot;
@@ -445,13 +421,10 @@ contract OneStepProverHostIo is IOneStepProver {
445
421
  mach.status = MachineStatus.ERRORED;
446
422
  return;
447
423
  }
448
- (bytes32 userMod, uint256 offset, ) = mod.moduleMemory.proveLeaf(
449
- pointer / LEAF_SIZE,
450
- proof,
451
- 0
452
- );
424
+ (bytes32 userMod, uint256 offset,) =
425
+ mod.moduleMemory.proveLeaf(pointer / LEAF_SIZE, proof, 0);
453
426
 
454
- (uint256 leaf, , MerkleProof memory zeroProof) = proveLastLeaf(mach, offset, proof);
427
+ (uint256 leaf,, MerkleProof memory zeroProof) = proveLastLeaf(mach, offset, proof);
455
428
 
456
429
  bool balanced = isPowerOfTwo(leaf + 1);
457
430
  if (balanced) {
@@ -472,7 +445,7 @@ contract OneStepProverHostIo is IOneStepProver {
472
445
  ) internal pure {
473
446
  string memory prefix = "Module merkle tree:";
474
447
 
475
- (uint256 leaf, MerkleProof memory leafProof, ) = proveLastLeaf(mach, 0, proof);
448
+ (uint256 leaf, MerkleProof memory leafProof,) = proveLastLeaf(mach, 0, proof);
476
449
 
477
450
  bool shrink = isPowerOfTwo(leaf);
478
451
  if (shrink) {
@@ -497,8 +470,8 @@ contract OneStepProverHostIo is IOneStepProver {
497
470
  require(state.hash() == mach.globalStateHash, "BAD_GLOBAL_STATE");
498
471
 
499
472
  if (
500
- opcode == Instructions.GET_GLOBAL_STATE_BYTES32 ||
501
- opcode == Instructions.SET_GLOBAL_STATE_BYTES32
473
+ opcode == Instructions.GET_GLOBAL_STATE_BYTES32
474
+ || opcode == Instructions.SET_GLOBAL_STATE_BYTES32
502
475
  ) {
503
476
  executeGetOrSetBytes32(mach, mod, state, inst, proof[proofOffset:]);
504
477
  } else if (opcode == Instructions.GET_GLOBAL_STATE_U64) {
@@ -539,8 +512,8 @@ contract OneStepProverHostIo is IOneStepProver {
539
512
  require(multi.remainingHash == bytes32(0), "WRONG_COTHREAD_EMPTY");
540
513
  } else {
541
514
  require(
542
- keccak256(abi.encodePacked("cothread:", newInactiveCoThread, newRemaining)) ==
543
- multi.remainingHash,
515
+ keccak256(abi.encodePacked("cothread:", newInactiveCoThread, newRemaining))
516
+ == multi.remainingHash,
544
517
  "WRONG_COTHREAD_POP"
545
518
  );
546
519
  }
@@ -620,8 +593,8 @@ contract OneStepProverHostIo is IOneStepProver {
620
593
  ) internal view impl;
621
594
 
622
595
  if (
623
- opcode >= Instructions.GET_GLOBAL_STATE_BYTES32 &&
624
- opcode <= Instructions.SET_GLOBAL_STATE_U64
596
+ opcode >= Instructions.GET_GLOBAL_STATE_BYTES32
597
+ && opcode <= Instructions.SET_GLOBAL_STATE_U64
625
598
  ) {
626
599
  impl = executeGlobalStateAccess;
627
600
  } else if (opcode == Instructions.READ_PRE_IMAGE) {
@@ -39,18 +39,16 @@ contract OneStepProverMath is IOneStepProver {
39
39
  mach.valueStack.push(ValueLib.newI32(output));
40
40
  }
41
41
 
42
- function signExtend(uint32 a) internal pure returns (uint64) {
42
+ function signExtend(
43
+ uint32 a
44
+ ) internal pure returns (uint64) {
43
45
  if (a & (1 << 31) != 0) {
44
46
  return uint64(a) | uint64(0xffffffff00000000);
45
47
  }
46
48
  return uint64(a);
47
49
  }
48
50
 
49
- function i64RelOp(
50
- uint64 a,
51
- uint64 b,
52
- uint16 relop
53
- ) internal pure returns (bool) {
51
+ function i64RelOp(uint64 a, uint64 b, uint16 relop) internal pure returns (bool) {
54
52
  if (relop == Instructions.IRELOP_EQ) {
55
53
  return (a == b);
56
54
  } else if (relop == Instructions.IRELOP_NE) {
@@ -90,10 +88,8 @@ contract OneStepProverMath is IOneStepProver {
90
88
  uint64 b64;
91
89
 
92
90
  if (
93
- relop == Instructions.IRELOP_LT_S ||
94
- relop == Instructions.IRELOP_GT_S ||
95
- relop == Instructions.IRELOP_LE_S ||
96
- relop == Instructions.IRELOP_GE_S
91
+ relop == Instructions.IRELOP_LT_S || relop == Instructions.IRELOP_GT_S
92
+ || relop == Instructions.IRELOP_LE_S || relop == Instructions.IRELOP_GE_S
97
93
  ) {
98
94
  a64 = signExtend(a);
99
95
  b64 = signExtend(b);
@@ -123,11 +119,7 @@ contract OneStepProverMath is IOneStepProver {
123
119
  mach.valueStack.push(ValueLib.newBoolean(res));
124
120
  }
125
121
 
126
- function genericIUnOp(
127
- uint64 a,
128
- uint16 unop,
129
- uint16 bits
130
- ) internal pure returns (uint32) {
122
+ function genericIUnOp(uint64 a, uint16 unop, uint16 bits) internal pure returns (uint32) {
131
123
  require(bits == 32 || bits == 64, "WRONG USE OF genericUnOp");
132
124
  if (unop == Instructions.IUNOP_CLZ) {
133
125
  /* curbits is one-based to keep with unsigned mathematics */
@@ -480,25 +472,25 @@ contract OneStepProverMath is IOneStepProver {
480
472
  if (opcode == Instructions.I32_EQZ || opcode == Instructions.I64_EQZ) {
481
473
  impl = executeEqz;
482
474
  } else if (
483
- opcode >= Instructions.I32_RELOP_BASE &&
484
- opcode <= Instructions.I32_RELOP_BASE + Instructions.IRELOP_LAST
475
+ opcode >= Instructions.I32_RELOP_BASE
476
+ && opcode <= Instructions.I32_RELOP_BASE + Instructions.IRELOP_LAST
485
477
  ) {
486
478
  impl = executeI32RelOp;
487
479
  } else if (
488
- opcode >= Instructions.I32_UNOP_BASE &&
489
- opcode <= Instructions.I32_UNOP_BASE + Instructions.IUNOP_LAST
480
+ opcode >= Instructions.I32_UNOP_BASE
481
+ && opcode <= Instructions.I32_UNOP_BASE + Instructions.IUNOP_LAST
490
482
  ) {
491
483
  impl = executeI32UnOp;
492
484
  } else if (opcode >= Instructions.I32_ADD && opcode <= Instructions.I32_ROTR) {
493
485
  impl = executeI32BinOp;
494
486
  } else if (
495
- opcode >= Instructions.I64_RELOP_BASE &&
496
- opcode <= Instructions.I64_RELOP_BASE + Instructions.IRELOP_LAST
487
+ opcode >= Instructions.I64_RELOP_BASE
488
+ && opcode <= Instructions.I64_RELOP_BASE + Instructions.IRELOP_LAST
497
489
  ) {
498
490
  impl = executeI64RelOp;
499
491
  } else if (
500
- opcode >= Instructions.I64_UNOP_BASE &&
501
- opcode <= Instructions.I64_UNOP_BASE + Instructions.IUNOP_LAST
492
+ opcode >= Instructions.I64_UNOP_BASE
493
+ && opcode <= Instructions.I64_UNOP_BASE + Instructions.IUNOP_LAST
502
494
  ) {
503
495
  impl = executeI64UnOp;
504
496
  } else if (opcode >= Instructions.I64_ADD && opcode <= Instructions.I64_ROTR) {
@@ -19,11 +19,7 @@ contract OneStepProverMemory is IOneStepProver {
19
19
  uint256 private constant LEAF_SIZE = 32;
20
20
  uint64 private constant PAGE_SIZE = 65536;
21
21
 
22
- function setLeafByte(
23
- bytes32 oldLeaf,
24
- uint256 idx,
25
- uint8 val
26
- ) internal pure returns (bytes32) {
22
+ function setLeafByte(bytes32 oldLeaf, uint256 idx, uint8 val) internal pure returns (bytes32) {
27
23
  require(idx < LEAF_SIZE, "BAD_SET_LEAF_BYTE_IDX");
28
24
  // Take into account that we are casting the leaf to a big-endian integer
29
25
  uint256 leafShift = (LEAF_SIZE - 1 - idx) * 8;
@@ -103,7 +99,7 @@ contract OneStepProverMemory is IOneStepProver {
103
99
  }
104
100
 
105
101
  uint256 index = inst.argumentData + mach.valueStack.pop().assumeI32();
106
- (bool err, uint256 value, ) = mod.moduleMemory.load(index, readBytes, proof, 0);
102
+ (bool err, uint256 value,) = mod.moduleMemory.load(index, readBytes, proof, 0);
107
103
  if (err) {
108
104
  mach.status = MachineStatus.ERRORED;
109
105
  return;
@@ -197,31 +193,21 @@ contract OneStepProverMemory is IOneStepProver {
197
193
  if (lastProvedLeafIdx != ~uint256(0)) {
198
194
  // Apply the last leaf update
199
195
  mod.moduleMemory.merkleRoot = lastProvedMerkle.computeRootFromMemory(
200
- lastProvedLeafIdx,
201
- lastProvedLeafContents
196
+ lastProvedLeafIdx, lastProvedLeafContents
202
197
  );
203
198
  }
204
199
  // This hits the stack size if we phrase it as mod.moduleMemory.proveLeaf(...)
205
- (lastProvedLeafContents, proofOffset, lastProvedMerkle) = ModuleMemoryLib.proveLeaf(
206
- mod.moduleMemory,
207
- leafIdx,
208
- proof,
209
- proofOffset
210
- );
200
+ (lastProvedLeafContents, proofOffset, lastProvedMerkle) =
201
+ ModuleMemoryLib.proveLeaf(mod.moduleMemory, leafIdx, proof, proofOffset);
211
202
  lastProvedLeafIdx = leafIdx;
212
203
  }
213
204
  uint256 indexWithinLeaf = idx % LEAF_SIZE;
214
- lastProvedLeafContents = setLeafByte(
215
- lastProvedLeafContents,
216
- indexWithinLeaf,
217
- uint8(toWrite)
218
- );
205
+ lastProvedLeafContents =
206
+ setLeafByte(lastProvedLeafContents, indexWithinLeaf, uint8(toWrite));
219
207
  toWrite >>= 8;
220
208
  }
221
- mod.moduleMemory.merkleRoot = lastProvedMerkle.computeRootFromMemory(
222
- lastProvedLeafIdx,
223
- lastProvedLeafContents
224
- );
209
+ mod.moduleMemory.merkleRoot =
210
+ lastProvedMerkle.computeRootFromMemory(lastProvedLeafIdx, lastProvedLeafContents);
225
211
  }
226
212
 
227
213
  function executeMemorySize(