@arbitrum/nitro-contracts 1.2.1 → 2.0.0-beta.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (276) 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/StorageSlot.sol/StorageSlot.dbg.json +1 -1
  28. package/build/contracts/@openzeppelin/contracts/utils/StorageSlot.sol/StorageSlot.json +2 -2
  29. package/build/contracts/@openzeppelin/contracts/utils/Strings.sol/Strings.dbg.json +4 -0
  30. package/build/contracts/@openzeppelin/contracts/utils/Strings.sol/Strings.json +10 -0
  31. package/build/contracts/@openzeppelin/contracts-upgradeable/access/AccessControlUpgradeable.sol/AccessControlUpgradeable.dbg.json +1 -1
  32. package/build/contracts/@openzeppelin/contracts-upgradeable/access/AccessControlUpgradeable.sol/AccessControlUpgradeable.json +13 -0
  33. package/build/contracts/@openzeppelin/contracts-upgradeable/access/IAccessControlUpgradeable.sol/IAccessControlUpgradeable.dbg.json +1 -1
  34. package/build/contracts/@openzeppelin/contracts-upgradeable/access/OwnableUpgradeable.sol/OwnableUpgradeable.dbg.json +1 -1
  35. package/build/contracts/@openzeppelin/contracts-upgradeable/access/OwnableUpgradeable.sol/OwnableUpgradeable.json +13 -0
  36. package/build/contracts/@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol/Initializable.dbg.json +1 -1
  37. package/build/contracts/@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol/Initializable.json +15 -1
  38. package/build/contracts/@openzeppelin/contracts-upgradeable/security/PausableUpgradeable.sol/PausableUpgradeable.dbg.json +1 -1
  39. package/build/contracts/@openzeppelin/contracts-upgradeable/security/PausableUpgradeable.sol/PausableUpgradeable.json +13 -0
  40. package/build/contracts/@openzeppelin/contracts-upgradeable/token/ERC20/IERC20Upgradeable.sol/IERC20Upgradeable.dbg.json +1 -1
  41. package/build/contracts/@openzeppelin/contracts-upgradeable/utils/AddressUpgradeable.sol/AddressUpgradeable.dbg.json +1 -1
  42. package/build/contracts/@openzeppelin/contracts-upgradeable/utils/AddressUpgradeable.sol/AddressUpgradeable.json +2 -2
  43. package/build/contracts/@openzeppelin/contracts-upgradeable/utils/ContextUpgradeable.sol/ContextUpgradeable.dbg.json +1 -1
  44. package/build/contracts/@openzeppelin/contracts-upgradeable/utils/ContextUpgradeable.sol/ContextUpgradeable.json +15 -1
  45. package/build/contracts/@openzeppelin/contracts-upgradeable/utils/StorageSlotUpgradeable.sol/StorageSlotUpgradeable.dbg.json +1 -1
  46. package/build/contracts/@openzeppelin/contracts-upgradeable/utils/StorageSlotUpgradeable.sol/StorageSlotUpgradeable.json +2 -2
  47. package/build/contracts/@openzeppelin/contracts-upgradeable/utils/StringsUpgradeable.sol/StringsUpgradeable.dbg.json +1 -1
  48. package/build/contracts/@openzeppelin/contracts-upgradeable/utils/StringsUpgradeable.sol/StringsUpgradeable.json +2 -2
  49. package/build/contracts/@openzeppelin/contracts-upgradeable/utils/introspection/ERC165Upgradeable.sol/ERC165Upgradeable.dbg.json +1 -1
  50. package/build/contracts/@openzeppelin/contracts-upgradeable/utils/introspection/ERC165Upgradeable.sol/ERC165Upgradeable.json +13 -0
  51. package/build/contracts/@openzeppelin/contracts-upgradeable/utils/introspection/IERC165Upgradeable.sol/IERC165Upgradeable.dbg.json +1 -1
  52. package/build/contracts/src/bridge/AbsBridge.sol/AbsBridge.dbg.json +1 -1
  53. package/build/contracts/src/bridge/AbsBridge.sol/AbsBridge.json +13 -0
  54. package/build/contracts/src/bridge/AbsInbox.sol/AbsInbox.dbg.json +1 -1
  55. package/build/contracts/src/bridge/AbsInbox.sol/AbsInbox.json +13 -0
  56. package/build/contracts/src/bridge/AbsOutbox.sol/AbsOutbox.dbg.json +1 -1
  57. package/build/contracts/src/bridge/Bridge.sol/Bridge.dbg.json +1 -1
  58. package/build/contracts/src/bridge/Bridge.sol/Bridge.json +15 -2
  59. package/build/contracts/src/bridge/ERC20Bridge.sol/ERC20Bridge.dbg.json +1 -1
  60. package/build/contracts/src/bridge/ERC20Bridge.sol/ERC20Bridge.json +15 -2
  61. package/build/contracts/src/bridge/ERC20Inbox.sol/ERC20Inbox.dbg.json +1 -1
  62. package/build/contracts/src/bridge/ERC20Inbox.sol/ERC20Inbox.json +15 -2
  63. package/build/contracts/src/bridge/ERC20Outbox.sol/ERC20Outbox.dbg.json +1 -1
  64. package/build/contracts/src/bridge/GasRefunder.sol/GasRefunder.dbg.json +1 -1
  65. package/build/contracts/src/bridge/GasRefunder.sol/GasRefunder.json +2 -2
  66. package/build/contracts/src/bridge/IBridge.sol/IBridge.dbg.json +1 -1
  67. package/build/contracts/src/bridge/IDelayedMessageProvider.sol/IDelayedMessageProvider.dbg.json +1 -1
  68. package/build/contracts/src/bridge/IERC20Bridge.sol/IERC20Bridge.dbg.json +1 -1
  69. package/build/contracts/src/bridge/IERC20Inbox.sol/IERC20Inbox.dbg.json +1 -1
  70. package/build/contracts/src/bridge/IEthBridge.sol/IEthBridge.dbg.json +1 -1
  71. package/build/contracts/src/bridge/IInbox.sol/IInbox.dbg.json +1 -1
  72. package/build/contracts/src/bridge/IInboxBase.sol/IInboxBase.dbg.json +1 -1
  73. package/build/contracts/src/bridge/IOutbox.sol/IOutbox.dbg.json +1 -1
  74. package/build/contracts/src/bridge/IOwnable.sol/IOwnable.dbg.json +1 -1
  75. package/build/contracts/src/bridge/ISequencerInbox.sol/ISequencerInbox.dbg.json +1 -1
  76. package/build/contracts/src/bridge/Inbox.sol/Inbox.dbg.json +1 -1
  77. package/build/contracts/src/bridge/Inbox.sol/Inbox.json +15 -2
  78. package/build/contracts/src/bridge/Messages.sol/Messages.dbg.json +1 -1
  79. package/build/contracts/src/bridge/Outbox.sol/Outbox.dbg.json +1 -1
  80. package/build/contracts/src/bridge/SequencerInbox.sol/SequencerInbox.dbg.json +1 -1
  81. package/build/contracts/src/bridge/SequencerInbox.sol/SequencerInbox.json +2 -2
  82. package/build/contracts/src/chain/CacheManager.sol/CacheManager.dbg.json +4 -0
  83. package/build/contracts/src/chain/CacheManager.sol/CacheManager.json +490 -0
  84. package/build/contracts/src/challenge/ChallengeLib.sol/ChallengeLib.dbg.json +1 -1
  85. package/build/contracts/src/challenge/ChallengeLib.sol/ChallengeLib.json +2 -2
  86. package/build/contracts/src/challenge/ChallengeManager.sol/ChallengeManager.dbg.json +1 -1
  87. package/build/contracts/src/challenge/ChallengeManager.sol/ChallengeManager.json +50 -2
  88. package/build/contracts/src/challenge/IChallengeManager.sol/IChallengeManager.dbg.json +1 -1
  89. package/build/contracts/src/challenge/IChallengeManager.sol/IChallengeManager.json +55 -0
  90. package/build/contracts/src/challenge/IChallengeResultReceiver.sol/IChallengeResultReceiver.dbg.json +1 -1
  91. package/build/contracts/src/libraries/AddressAliasHelper.sol/AddressAliasHelper.dbg.json +1 -1
  92. package/build/contracts/src/libraries/AdminFallbackProxy.sol/AdminFallbackProxy.dbg.json +1 -1
  93. package/build/contracts/src/libraries/AdminFallbackProxy.sol/AdminFallbackProxy.json +2 -2
  94. package/build/contracts/src/libraries/AdminFallbackProxy.sol/DoubleLogicERC1967Upgrade.dbg.json +1 -1
  95. package/build/contracts/src/libraries/ArbitrumChecker.sol/ArbitrumChecker.dbg.json +1 -1
  96. package/build/contracts/src/libraries/CryptographyPrimitives.sol/CryptographyPrimitives.dbg.json +1 -1
  97. package/build/contracts/src/libraries/DelegateCallAware.sol/DelegateCallAware.dbg.json +1 -1
  98. package/build/contracts/src/libraries/DoubleLogicUUPSUpgradeable.sol/DoubleLogicUUPSUpgradeable.dbg.json +1 -1
  99. package/build/contracts/src/libraries/GasRefundEnabled.sol/GasRefundEnabled.dbg.json +1 -1
  100. package/build/contracts/src/libraries/IGasRefunder.sol/IGasRefunder.dbg.json +1 -1
  101. package/build/contracts/src/libraries/IReader4844.sol/IReader4844.dbg.json +1 -1
  102. package/build/contracts/src/libraries/MerkleLib.sol/MerkleLib.dbg.json +1 -1
  103. package/build/contracts/src/libraries/UUPSNotUpgradeable.sol/UUPSNotUpgradeable.dbg.json +1 -1
  104. package/build/contracts/src/mocks/Benchmarks.sol/Benchmarks.dbg.json +4 -0
  105. package/build/contracts/src/mocks/Benchmarks.sol/Benchmarks.json +46 -0
  106. package/build/contracts/src/mocks/BridgeStub.sol/BridgeStub.dbg.json +1 -1
  107. package/build/contracts/src/mocks/BridgeUnproxied.sol/BridgeUnproxied.dbg.json +1 -1
  108. package/build/contracts/src/mocks/BridgeUnproxied.sol/BridgeUnproxied.json +15 -2
  109. package/build/contracts/src/mocks/InboxStub.sol/InboxStub.dbg.json +1 -1
  110. package/build/contracts/src/mocks/MockResultReceiver.sol/MockResultReceiver.dbg.json +1 -1
  111. package/build/contracts/src/mocks/MockResultReceiver.sol/MockResultReceiver.json +2 -2
  112. package/build/contracts/src/mocks/MultiCallTest.sol/MultiCallTest.dbg.json +4 -0
  113. package/build/contracts/src/mocks/MultiCallTest.sol/MultiCallTest.json +71 -0
  114. package/build/contracts/src/mocks/PendingBlkTimeAndNrAdvanceCheck.sol/PendingBlkTimeAndNrAdvanceCheck.dbg.json +4 -0
  115. package/build/contracts/src/mocks/PendingBlkTimeAndNrAdvanceCheck.sol/PendingBlkTimeAndNrAdvanceCheck.json +36 -0
  116. package/build/contracts/src/mocks/Program.sol/ProgramTest.dbg.json +4 -0
  117. package/build/contracts/src/mocks/Program.sol/ProgramTest.json +142 -0
  118. package/build/contracts/src/mocks/ProxyAdminForBinding.sol/ProxyAdminForBinding.dbg.json +1 -1
  119. package/build/contracts/src/mocks/ProxyAdminForBinding.sol/ProxyAdminForBinding.json +2 -2
  120. package/build/contracts/src/mocks/SdkStorage.sol/SdkStorage.dbg.json +4 -0
  121. package/build/contracts/src/mocks/SdkStorage.sol/SdkStorage.json +25 -0
  122. package/build/contracts/src/mocks/SequencerInboxStub.sol/SequencerInboxStub.dbg.json +1 -1
  123. package/build/contracts/src/mocks/SequencerInboxStub.sol/SequencerInboxStub.json +2 -2
  124. package/build/contracts/src/mocks/Simple.sol/Simple.dbg.json +1 -1
  125. package/build/contracts/src/mocks/SimpleCacheManager.sol/SimpleCacheManager.dbg.json +4 -0
  126. package/build/contracts/src/mocks/SimpleCacheManager.sol/SimpleCacheManager.json +37 -0
  127. package/build/contracts/src/mocks/SimpleProxy.sol/SimpleProxy.dbg.json +1 -1
  128. package/build/contracts/src/mocks/SimpleProxy.sol/SimpleProxy.json +2 -2
  129. package/build/contracts/src/mocks/SingleExecutionChallenge.sol/SingleExecutionChallenge.dbg.json +1 -1
  130. package/build/contracts/src/mocks/SingleExecutionChallenge.sol/SingleExecutionChallenge.json +50 -2
  131. package/build/contracts/src/mocks/TimedOutChallengeManager.sol/TimedOutChallengeManager.dbg.json +1 -1
  132. package/build/contracts/src/mocks/TimedOutChallengeManager.sol/TimedOutChallengeManager.json +50 -2
  133. package/build/contracts/src/mocks/UpgradeExecutorMock.sol/UpgradeExecutorMock.dbg.json +1 -1
  134. package/build/contracts/src/mocks/UpgradeExecutorMock.sol/UpgradeExecutorMock.json +15 -2
  135. package/build/contracts/src/node-interface/NodeInterface.sol/NodeInterface.dbg.json +1 -1
  136. package/build/contracts/src/node-interface/NodeInterfaceDebug.sol/NodeInterfaceDebug.dbg.json +1 -1
  137. package/build/contracts/src/osp/HashProofHelper.sol/HashProofHelper.dbg.json +1 -1
  138. package/build/contracts/src/osp/IOneStepProofEntry.sol/IOneStepProofEntry.dbg.json +1 -1
  139. package/build/contracts/src/osp/IOneStepProofEntry.sol/IOneStepProofEntry.json +48 -0
  140. package/build/contracts/src/osp/IOneStepProofEntry.sol/OneStepProofEntryLib.dbg.json +1 -1
  141. package/build/contracts/src/osp/IOneStepProofEntry.sol/OneStepProofEntryLib.json +2 -2
  142. package/build/contracts/src/osp/IOneStepProver.sol/IOneStepProver.dbg.json +1 -1
  143. package/build/contracts/src/osp/IOneStepProver.sol/IOneStepProver.json +88 -0
  144. package/build/contracts/src/osp/OneStepProofEntry.sol/OneStepProofEntry.dbg.json +1 -1
  145. package/build/contracts/src/osp/OneStepProofEntry.sol/OneStepProofEntry.json +50 -2
  146. package/build/contracts/src/osp/OneStepProver0.sol/OneStepProver0.dbg.json +1 -1
  147. package/build/contracts/src/osp/OneStepProver0.sol/OneStepProver0.json +90 -2
  148. package/build/contracts/src/osp/OneStepProverHostIo.sol/OneStepProverHostIo.dbg.json +1 -1
  149. package/build/contracts/src/osp/OneStepProverHostIo.sol/OneStepProverHostIo.json +90 -2
  150. package/build/contracts/src/osp/OneStepProverMath.sol/OneStepProverMath.dbg.json +1 -1
  151. package/build/contracts/src/osp/OneStepProverMath.sol/OneStepProverMath.json +90 -2
  152. package/build/contracts/src/osp/OneStepProverMemory.sol/OneStepProverMemory.dbg.json +1 -1
  153. package/build/contracts/src/osp/OneStepProverMemory.sol/OneStepProverMemory.json +90 -2
  154. package/build/contracts/src/precompiles/ArbAddressTable.sol/ArbAddressTable.dbg.json +1 -1
  155. package/build/contracts/src/precompiles/ArbAggregator.sol/ArbAggregator.dbg.json +1 -1
  156. package/build/contracts/src/precompiles/ArbBLS.sol/ArbBLS.dbg.json +1 -1
  157. package/build/contracts/src/precompiles/ArbDebug.sol/ArbDebug.dbg.json +1 -1
  158. package/build/contracts/src/precompiles/ArbDebug.sol/ArbDebug.json +7 -0
  159. package/build/contracts/src/precompiles/ArbFunctionTable.sol/ArbFunctionTable.dbg.json +1 -1
  160. package/build/contracts/src/precompiles/ArbGasInfo.sol/ArbGasInfo.dbg.json +1 -1
  161. package/build/contracts/src/precompiles/ArbInfo.sol/ArbInfo.dbg.json +1 -1
  162. package/build/contracts/src/precompiles/ArbOwner.sol/ArbOwner.dbg.json +1 -1
  163. package/build/contracts/src/precompiles/ArbOwner.sol/ArbOwner.json +161 -0
  164. package/build/contracts/src/precompiles/ArbOwnerPublic.sol/ArbOwnerPublic.dbg.json +1 -1
  165. package/build/contracts/src/precompiles/ArbRetryableTx.sol/ArbRetryableTx.dbg.json +1 -1
  166. package/build/contracts/src/precompiles/ArbStatistics.sol/ArbStatistics.dbg.json +1 -1
  167. package/build/contracts/src/precompiles/ArbSys.sol/ArbSys.dbg.json +1 -1
  168. package/build/contracts/src/precompiles/ArbWasm.sol/ArbWasm.dbg.json +4 -0
  169. package/build/contracts/src/precompiles/ArbWasm.sol/ArbWasm.json +453 -0
  170. package/build/contracts/src/precompiles/ArbWasmCache.sol/ArbWasmCache.dbg.json +4 -0
  171. package/build/contracts/src/precompiles/ArbWasmCache.sol/ArbWasmCache.json +113 -0
  172. package/build/contracts/src/precompiles/ArbosActs.sol/ArbosActs.dbg.json +1 -1
  173. package/build/contracts/src/precompiles/ArbosTest.sol/ArbosTest.dbg.json +1 -1
  174. package/build/contracts/src/rollup/AbsRollupEventInbox.sol/AbsRollupEventInbox.dbg.json +1 -1
  175. package/build/contracts/src/rollup/BridgeCreator.sol/BridgeCreator.dbg.json +1 -1
  176. package/build/contracts/src/rollup/BridgeCreator.sol/BridgeCreator.json +2 -2
  177. package/build/contracts/src/rollup/DeployHelper.sol/DeployHelper.dbg.json +1 -1
  178. package/build/contracts/src/rollup/DeployHelper.sol/DeployHelper.json +2 -2
  179. package/build/contracts/src/rollup/ERC20RollupEventInbox.sol/ERC20RollupEventInbox.dbg.json +1 -1
  180. package/build/contracts/src/rollup/IRollupAdmin.sol/IRollupAdmin.dbg.json +1 -1
  181. package/build/contracts/src/rollup/IRollupCore.sol/IRollupCore.dbg.json +1 -1
  182. package/build/contracts/src/rollup/IRollupEventInbox.sol/IRollupEventInbox.dbg.json +1 -1
  183. package/build/contracts/src/rollup/IRollupLogic.sol/IRollupUser.dbg.json +1 -1
  184. package/build/contracts/src/rollup/IRollupLogic.sol/IRollupUserAbs.dbg.json +1 -1
  185. package/build/contracts/src/rollup/IRollupLogic.sol/IRollupUserERC20.dbg.json +1 -1
  186. package/build/contracts/src/rollup/Node.sol/NodeLib.dbg.json +1 -1
  187. package/build/contracts/src/rollup/Node.sol/NodeLib.json +2 -2
  188. package/build/contracts/src/rollup/RollupAdminLogic.sol/RollupAdminLogic.dbg.json +1 -1
  189. package/build/contracts/src/rollup/RollupAdminLogic.sol/RollupAdminLogic.json +15 -2
  190. package/build/contracts/src/rollup/RollupCore.sol/RollupCore.dbg.json +1 -1
  191. package/build/contracts/src/rollup/RollupCore.sol/RollupCore.json +13 -0
  192. package/build/contracts/src/rollup/RollupCreator.sol/RollupCreator.dbg.json +1 -1
  193. package/build/contracts/src/rollup/RollupCreator.sol/RollupCreator.json +2 -2
  194. package/build/contracts/src/rollup/RollupEventInbox.sol/RollupEventInbox.dbg.json +1 -1
  195. package/build/contracts/src/rollup/RollupLib.sol/RollupLib.dbg.json +1 -1
  196. package/build/contracts/src/rollup/RollupLib.sol/RollupLib.json +2 -2
  197. package/build/contracts/src/rollup/RollupProxy.sol/RollupProxy.dbg.json +1 -1
  198. package/build/contracts/src/rollup/RollupProxy.sol/RollupProxy.json +2 -2
  199. package/build/contracts/src/rollup/RollupUserLogic.sol/AbsRollupUserLogic.dbg.json +1 -1
  200. package/build/contracts/src/rollup/RollupUserLogic.sol/AbsRollupUserLogic.json +13 -0
  201. package/build/contracts/src/rollup/RollupUserLogic.sol/ERC20RollupUserLogic.dbg.json +1 -1
  202. package/build/contracts/src/rollup/RollupUserLogic.sol/ERC20RollupUserLogic.json +15 -2
  203. package/build/contracts/src/rollup/RollupUserLogic.sol/RollupUserLogic.dbg.json +1 -1
  204. package/build/contracts/src/rollup/RollupUserLogic.sol/RollupUserLogic.json +15 -2
  205. package/build/contracts/src/rollup/ValidatorUtils.sol/ValidatorUtils.dbg.json +1 -1
  206. package/build/contracts/src/rollup/ValidatorUtils.sol/ValidatorUtils.json +2 -2
  207. package/build/contracts/src/rollup/ValidatorWallet.sol/ValidatorWallet.dbg.json +1 -1
  208. package/build/contracts/src/rollup/ValidatorWallet.sol/ValidatorWallet.json +15 -2
  209. package/build/contracts/src/rollup/ValidatorWalletCreator.sol/ValidatorWalletCreator.dbg.json +1 -1
  210. package/build/contracts/src/rollup/ValidatorWalletCreator.sol/ValidatorWalletCreator.json +2 -2
  211. package/build/contracts/src/state/Deserialize.sol/Deserialize.dbg.json +1 -1
  212. package/build/contracts/src/state/Deserialize.sol/Deserialize.json +2 -2
  213. package/build/contracts/src/state/GlobalState.sol/GlobalStateLib.dbg.json +1 -1
  214. package/build/contracts/src/state/Instructions.sol/Instructions.dbg.json +1 -1
  215. package/build/contracts/src/state/Instructions.sol/Instructions.json +2 -2
  216. package/build/contracts/src/state/Machine.sol/MachineLib.dbg.json +1 -1
  217. package/build/contracts/src/state/Machine.sol/MachineLib.json +2 -2
  218. package/build/contracts/src/state/MerkleProof.sol/MerkleProofLib.dbg.json +1 -1
  219. package/build/contracts/src/state/MerkleProof.sol/MerkleProofLib.json +2 -2
  220. package/build/contracts/src/state/Module.sol/ModuleLib.dbg.json +1 -1
  221. package/build/contracts/src/state/Module.sol/ModuleLib.json +2 -2
  222. package/build/contracts/src/state/ModuleMemory.sol/ModuleMemoryLib.dbg.json +1 -1
  223. package/build/contracts/src/state/ModuleMemory.sol/ModuleMemoryLib.json +2 -2
  224. package/build/contracts/src/state/ModuleMemoryCompact.sol/ModuleMemoryCompactLib.dbg.json +1 -1
  225. package/build/contracts/src/state/MultiStack.sol/MultiStackLib.dbg.json +4 -0
  226. package/build/contracts/src/state/MultiStack.sol/MultiStackLib.json +10 -0
  227. package/build/contracts/src/state/PcArray.sol/PcArrayLib.dbg.json +1 -1
  228. package/build/contracts/src/state/StackFrame.sol/StackFrameLib.dbg.json +1 -1
  229. package/build/contracts/src/state/StackFrame.sol/StackFrameLib.json +2 -2
  230. package/build/contracts/src/state/Value.sol/ValueLib.dbg.json +1 -1
  231. package/build/contracts/src/state/Value.sol/ValueLib.json +2 -2
  232. package/build/contracts/src/state/ValueArray.sol/ValueArrayLib.dbg.json +1 -1
  233. package/build/contracts/src/state/ValueArray.sol/ValueArrayLib.json +2 -2
  234. package/build/contracts/src/state/ValueStack.sol/ValueStackLib.dbg.json +1 -1
  235. package/build/contracts/src/state/ValueStack.sol/ValueStackLib.json +2 -2
  236. package/build/contracts/src/test-helpers/BridgeTester.sol/BridgeTester.dbg.json +1 -1
  237. package/build/contracts/src/test-helpers/BridgeTester.sol/BridgeTester.json +15 -2
  238. package/build/contracts/src/test-helpers/CryptographyPrimitivesTester.sol/CryptographyPrimitivesTester.dbg.json +1 -1
  239. package/build/contracts/src/test-helpers/EthVault.sol/EthVault.dbg.json +1 -1
  240. package/build/contracts/src/test-helpers/MessageTester.sol/MessageTester.dbg.json +1 -1
  241. package/build/contracts/src/test-helpers/OutboxWithoutOptTester.sol/OutboxWithoutOptTester.dbg.json +1 -1
  242. package/build/contracts/src/test-helpers/RollupMock.sol/RollupMock.dbg.json +1 -1
  243. package/build/contracts/src/test-helpers/TestToken.sol/TestToken.dbg.json +1 -1
  244. package/build/contracts/src/test-helpers/TestToken.sol/TestToken.json +2 -2
  245. package/build/contracts/src/test-helpers/ValueArrayTester.sol/ValueArrayTester.dbg.json +1 -1
  246. package/build/contracts/src/test-helpers/ValueArrayTester.sol/ValueArrayTester.json +2 -2
  247. package/package.json +13 -7
  248. package/src/chain/CacheManager.sol +283 -0
  249. package/src/challenge/ChallengeLib.sol +0 -45
  250. package/src/challenge/ChallengeManager.sol +24 -9
  251. package/src/challenge/IChallengeManager.sol +13 -0
  252. package/src/mocks/Benchmarks.sol +52 -0
  253. package/src/mocks/MultiCallTest.sol +117 -0
  254. package/src/mocks/PendingBlkTimeAndNrAdvanceCheck.sol +29 -0
  255. package/src/mocks/Program.sol +126 -0
  256. package/src/mocks/SdkStorage.sol +176 -0
  257. package/src/mocks/SimpleCacheManager.sol +22 -0
  258. package/src/osp/IOneStepProofEntry.sol +10 -0
  259. package/src/osp/OneStepProofEntry.sol +81 -7
  260. package/src/osp/OneStepProver0.sol +64 -20
  261. package/src/osp/OneStepProverHostIo.sol +201 -2
  262. package/src/osp/OneStepProverMemory.sol +4 -33
  263. package/src/precompiles/ArbDebug.sol +2 -0
  264. package/src/precompiles/ArbOwner.sol +51 -9
  265. package/src/precompiles/ArbWasm.sol +119 -0
  266. package/src/precompiles/ArbWasmCache.sol +33 -0
  267. package/src/state/Deserialize.sol +88 -47
  268. package/src/state/Instructions.sol +38 -3
  269. package/src/state/Machine.sol +92 -15
  270. package/src/state/MerkleProof.sol +22 -4
  271. package/src/state/Module.sol +3 -1
  272. package/src/state/ModuleMemory.sol +54 -0
  273. package/src/state/MultiStack.sol +58 -0
  274. package/src/state/StackFrame.sol +6 -1
  275. package/src/state/Value.sol +13 -1
  276. package/src/state/ValueStack.sol +6 -1
@@ -1,4 +1,4 @@
1
1
  {
2
2
  "_format": "hh-sol-dbg-1",
3
- "buildInfo": "../../../build-info/7de232cc334b063903f669aaef0a3136.json"
3
+ "buildInfo": "../../../build-info/83d3fd0b633e3a3120fc5455f62bf6b6.json"
4
4
  }
@@ -1,4 +1,4 @@
1
1
  {
2
2
  "_format": "hh-sol-dbg-1",
3
- "buildInfo": "../../../build-info/7de232cc334b063903f669aaef0a3136.json"
3
+ "buildInfo": "../../../build-info/83d3fd0b633e3a3120fc5455f62bf6b6.json"
4
4
  }
@@ -1,4 +1,4 @@
1
1
  {
2
2
  "_format": "hh-sol-dbg-1",
3
- "buildInfo": "../../../build-info/7de232cc334b063903f669aaef0a3136.json"
3
+ "buildInfo": "../../../build-info/83d3fd0b633e3a3120fc5455f62bf6b6.json"
4
4
  }
@@ -1,4 +1,4 @@
1
1
  {
2
2
  "_format": "hh-sol-dbg-1",
3
- "buildInfo": "../../../build-info/7de232cc334b063903f669aaef0a3136.json"
3
+ "buildInfo": "../../../build-info/83d3fd0b633e3a3120fc5455f62bf6b6.json"
4
4
  }
@@ -1,4 +1,4 @@
1
1
  {
2
2
  "_format": "hh-sol-dbg-1",
3
- "buildInfo": "../../../build-info/7de232cc334b063903f669aaef0a3136.json"
3
+ "buildInfo": "../../../build-info/83d3fd0b633e3a3120fc5455f62bf6b6.json"
4
4
  }
@@ -1,4 +1,4 @@
1
1
  {
2
2
  "_format": "hh-sol-dbg-1",
3
- "buildInfo": "../../../build-info/7de232cc334b063903f669aaef0a3136.json"
3
+ "buildInfo": "../../../build-info/83d3fd0b633e3a3120fc5455f62bf6b6.json"
4
4
  }
@@ -285,8 +285,8 @@
285
285
  "type": "function"
286
286
  }
287
287
  ],
288
- "bytecode": "0x60806040523480156200001157600080fd5b5060405162000b8838038062000b8883398101604081905262000034916200023f565b60408051808201825260098152682a32b9ba2a37b5b2b760b91b602080830191825283518085019094526002845261151560f21b9084015281519192916200007f9160039162000199565b5080516200009590600490602084019062000199565b505050620000aa3382620000b160201b60201c565b50620002bd565b6001600160a01b0382166200010c5760405162461bcd60e51b815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f206164647265737300604482015260640160405180910390fd5b806002600082825462000120919062000259565b90915550506001600160a01b038216600090815260208190526040812080548392906200014f90849062000259565b90915550506040518181526001600160a01b038316906000907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a35050565b828054620001a79062000280565b90600052602060002090601f016020900481019282620001cb576000855562000216565b82601f10620001e657805160ff191683800117855562000216565b8280016001018555821562000216579182015b8281111562000216578251825591602001919060010190620001f9565b506200022492915062000228565b5090565b5b8082111562000224576000815560010162000229565b6000602082840312156200025257600080fd5b5051919050565b600082198211156200027b57634e487b7160e01b600052601160045260246000fd5b500190565b600181811c908216806200029557607f821691505b60208210811415620002b757634e487b7160e01b600052602260045260246000fd5b50919050565b6108bb80620002cd6000396000f3fe608060405234801561001057600080fd5b50600436106100a95760003560e01c80633950935111610071578063395093511461012357806370a082311461013657806395d89b411461015f578063a457c2d714610167578063a9059cbb1461017a578063dd62ed3e1461018d57600080fd5b806306fdde03146100ae578063095ea7b3146100cc57806318160ddd146100ef57806323b872dd14610101578063313ce56714610114575b600080fd5b6100b66101a0565b6040516100c391906106f8565b60405180910390f35b6100df6100da366004610769565b610232565b60405190151581526020016100c3565b6002545b6040519081526020016100c3565b6100df61010f366004610793565b61024a565b604051601281526020016100c3565b6100df610131366004610769565b61026e565b6100f36101443660046107cf565b6001600160a01b031660009081526020819052604090205490565b6100b66102ad565b6100df610175366004610769565b6102bc565b6100df610188366004610769565b610353565b6100f361019b3660046107f1565b610361565b6060600380546101af90610824565b80601f01602080910402602001604051908101604052809291908181526020018280546101db90610824565b80156102285780601f106101fd57610100808354040283529160200191610228565b820191906000526020600020905b81548152906001019060200180831161020b57829003601f168201915b5050505050905090565b60003361024081858561038c565b5060019392505050565b6000336102588582856104b0565b61026385858561052a565b506001949350505050565b3360008181526001602090815260408083206001600160a01b038716845290915281205490919061024090829086906102a890879061085f565b61038c565b6060600480546101af90610824565b3360008181526001602090815260408083206001600160a01b0387168452909152812054909190838110156103465760405162461bcd60e51b815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77604482015264207a65726f60d81b60648201526084015b60405180910390fd5b610263828686840361038c565b60003361024081858561052a565b6001600160a01b03918216600090815260016020908152604080832093909416825291909152205490565b6001600160a01b0383166103ee5760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b606482015260840161033d565b6001600160a01b03821661044f5760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b606482015260840161033d565b6001600160a01b0383811660008181526001602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b60006104bc8484610361565b9050600019811461052457818110156105175760405162461bcd60e51b815260206004820152601d60248201527f45524332303a20696e73756666696369656e7420616c6c6f77616e6365000000604482015260640161033d565b610524848484840361038c565b50505050565b6001600160a01b03831661058e5760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b606482015260840161033d565b6001600160a01b0382166105f05760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b606482015260840161033d565b6001600160a01b038316600090815260208190526040902054818110156106685760405162461bcd60e51b815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e7420657863656564732062604482015265616c616e636560d01b606482015260840161033d565b6001600160a01b0380851660009081526020819052604080822085850390559185168152908120805484929061069f90849061085f565b92505081905550826001600160a01b0316846001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040516106eb91815260200190565b60405180910390a3610524565b600060208083528351808285015260005b8181101561072557858101830151858201604001528201610709565b81811115610737576000604083870101525b50601f01601f1916929092016040019392505050565b80356001600160a01b038116811461076457600080fd5b919050565b6000806040838503121561077c57600080fd5b6107858361074d565b946020939093013593505050565b6000806000606084860312156107a857600080fd5b6107b18461074d565b92506107bf6020850161074d565b9150604084013590509250925092565b6000602082840312156107e157600080fd5b6107ea8261074d565b9392505050565b6000806040838503121561080457600080fd5b61080d8361074d565b915061081b6020840161074d565b90509250929050565b600181811c9082168061083857607f821691505b6020821081141561085957634e487b7160e01b600052602260045260246000fd5b50919050565b6000821982111561088057634e487b7160e01b600052601160045260246000fd5b50019056fea26469706673582212205520cebf912a7b37ad2078443ea206cc6187d18972e4366e20d773c71e326a0464736f6c63430008090033",
289
- "deployedBytecode": "0x608060405234801561001057600080fd5b50600436106100a95760003560e01c80633950935111610071578063395093511461012357806370a082311461013657806395d89b411461015f578063a457c2d714610167578063a9059cbb1461017a578063dd62ed3e1461018d57600080fd5b806306fdde03146100ae578063095ea7b3146100cc57806318160ddd146100ef57806323b872dd14610101578063313ce56714610114575b600080fd5b6100b66101a0565b6040516100c391906106f8565b60405180910390f35b6100df6100da366004610769565b610232565b60405190151581526020016100c3565b6002545b6040519081526020016100c3565b6100df61010f366004610793565b61024a565b604051601281526020016100c3565b6100df610131366004610769565b61026e565b6100f36101443660046107cf565b6001600160a01b031660009081526020819052604090205490565b6100b66102ad565b6100df610175366004610769565b6102bc565b6100df610188366004610769565b610353565b6100f361019b3660046107f1565b610361565b6060600380546101af90610824565b80601f01602080910402602001604051908101604052809291908181526020018280546101db90610824565b80156102285780601f106101fd57610100808354040283529160200191610228565b820191906000526020600020905b81548152906001019060200180831161020b57829003601f168201915b5050505050905090565b60003361024081858561038c565b5060019392505050565b6000336102588582856104b0565b61026385858561052a565b506001949350505050565b3360008181526001602090815260408083206001600160a01b038716845290915281205490919061024090829086906102a890879061085f565b61038c565b6060600480546101af90610824565b3360008181526001602090815260408083206001600160a01b0387168452909152812054909190838110156103465760405162461bcd60e51b815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77604482015264207a65726f60d81b60648201526084015b60405180910390fd5b610263828686840361038c565b60003361024081858561052a565b6001600160a01b03918216600090815260016020908152604080832093909416825291909152205490565b6001600160a01b0383166103ee5760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b606482015260840161033d565b6001600160a01b03821661044f5760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b606482015260840161033d565b6001600160a01b0383811660008181526001602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b60006104bc8484610361565b9050600019811461052457818110156105175760405162461bcd60e51b815260206004820152601d60248201527f45524332303a20696e73756666696369656e7420616c6c6f77616e6365000000604482015260640161033d565b610524848484840361038c565b50505050565b6001600160a01b03831661058e5760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b606482015260840161033d565b6001600160a01b0382166105f05760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b606482015260840161033d565b6001600160a01b038316600090815260208190526040902054818110156106685760405162461bcd60e51b815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e7420657863656564732062604482015265616c616e636560d01b606482015260840161033d565b6001600160a01b0380851660009081526020819052604080822085850390559185168152908120805484929061069f90849061085f565b92505081905550826001600160a01b0316846001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040516106eb91815260200190565b60405180910390a3610524565b600060208083528351808285015260005b8181101561072557858101830151858201604001528201610709565b81811115610737576000604083870101525b50601f01601f1916929092016040019392505050565b80356001600160a01b038116811461076457600080fd5b919050565b6000806040838503121561077c57600080fd5b6107858361074d565b946020939093013593505050565b6000806000606084860312156107a857600080fd5b6107b18461074d565b92506107bf6020850161074d565b9150604084013590509250925092565b6000602082840312156107e157600080fd5b6107ea8261074d565b9392505050565b6000806040838503121561080457600080fd5b61080d8361074d565b915061081b6020840161074d565b90509250929050565b600181811c9082168061083857607f821691505b6020821081141561085957634e487b7160e01b600052602260045260246000fd5b50919050565b6000821982111561088057634e487b7160e01b600052601160045260246000fd5b50019056fea26469706673582212205520cebf912a7b37ad2078443ea206cc6187d18972e4366e20d773c71e326a0464736f6c63430008090033",
288
+ "bytecode": "0x60806040523480156200001157600080fd5b5060405162000b5438038062000b5483398101604081905262000034916200023f565b60408051808201825260098152682a32b9ba2a37b5b2b760b91b602080830191825283518085019094526002845261151560f21b9084015281519192916200007f9160039162000199565b5080516200009590600490602084019062000199565b505050620000aa3382620000b160201b60201c565b50620002bd565b6001600160a01b0382166200010c5760405162461bcd60e51b815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f206164647265737300604482015260640160405180910390fd5b806002600082825462000120919062000259565b90915550506001600160a01b038216600090815260208190526040812080548392906200014f90849062000259565b90915550506040518181526001600160a01b038316906000907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a35050565b828054620001a79062000280565b90600052602060002090601f016020900481019282620001cb576000855562000216565b82601f10620001e657805160ff191683800117855562000216565b8280016001018555821562000216579182015b8281111562000216578251825591602001919060010190620001f9565b506200022492915062000228565b5090565b5b8082111562000224576000815560010162000229565b6000602082840312156200025257600080fd5b5051919050565b600082198211156200027b57634e487b7160e01b600052601160045260246000fd5b500190565b600181811c908216806200029557607f821691505b60208210811415620002b757634e487b7160e01b600052602260045260246000fd5b50919050565b61088780620002cd6000396000f3fe608060405234801561001057600080fd5b50600436106100a95760003560e01c80633950935111610071578063395093511461012357806370a082311461013657806395d89b411461015f578063a457c2d714610167578063a9059cbb1461017a578063dd62ed3e1461018d57600080fd5b806306fdde03146100ae578063095ea7b3146100cc57806318160ddd146100ef57806323b872dd14610101578063313ce56714610114575b600080fd5b6100b66101a0565b6040516100c391906106c4565b60405180910390f35b6100df6100da366004610735565b610232565b60405190151581526020016100c3565b6002545b6040519081526020016100c3565b6100df61010f36600461075f565b61024a565b604051601281526020016100c3565b6100df610131366004610735565b61026e565b6100f361014436600461079b565b6001600160a01b031660009081526020819052604090205490565b6100b6610290565b6100df610175366004610735565b61029f565b6100df610188366004610735565b61031f565b6100f361019b3660046107bd565b61032d565b6060600380546101af906107f0565b80601f01602080910402602001604051908101604052809291908181526020018280546101db906107f0565b80156102285780601f106101fd57610100808354040283529160200191610228565b820191906000526020600020905b81548152906001019060200180831161020b57829003601f168201915b5050505050905090565b600033610240818585610358565b5060019392505050565b60003361025885828561047c565b6102638585856104f6565b506001949350505050565b600033610240818585610281838361032d565b61028b919061082b565b610358565b6060600480546101af906107f0565b600033816102ad828661032d565b9050838110156103125760405162461bcd60e51b815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77604482015264207a65726f60d81b60648201526084015b60405180910390fd5b6102638286868403610358565b6000336102408185856104f6565b6001600160a01b03918216600090815260016020908152604080832093909416825291909152205490565b6001600160a01b0383166103ba5760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b6064820152608401610309565b6001600160a01b03821661041b5760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b6064820152608401610309565b6001600160a01b0383811660008181526001602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b6000610488848461032d565b905060001981146104f057818110156104e35760405162461bcd60e51b815260206004820152601d60248201527f45524332303a20696e73756666696369656e7420616c6c6f77616e63650000006044820152606401610309565b6104f08484848403610358565b50505050565b6001600160a01b03831661055a5760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b6064820152608401610309565b6001600160a01b0382166105bc5760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b6064820152608401610309565b6001600160a01b038316600090815260208190526040902054818110156106345760405162461bcd60e51b815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e7420657863656564732062604482015265616c616e636560d01b6064820152608401610309565b6001600160a01b0380851660009081526020819052604080822085850390559185168152908120805484929061066b90849061082b565b92505081905550826001600160a01b0316846001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040516106b791815260200190565b60405180910390a36104f0565b600060208083528351808285015260005b818110156106f1578581018301518582016040015282016106d5565b81811115610703576000604083870101525b50601f01601f1916929092016040019392505050565b80356001600160a01b038116811461073057600080fd5b919050565b6000806040838503121561074857600080fd5b61075183610719565b946020939093013593505050565b60008060006060848603121561077457600080fd5b61077d84610719565b925061078b60208501610719565b9150604084013590509250925092565b6000602082840312156107ad57600080fd5b6107b682610719565b9392505050565b600080604083850312156107d057600080fd5b6107d983610719565b91506107e760208401610719565b90509250929050565b600181811c9082168061080457607f821691505b6020821081141561082557634e487b7160e01b600052602260045260246000fd5b50919050565b6000821982111561084c57634e487b7160e01b600052601160045260246000fd5b50019056fea26469706673582212209d6fc10782cf26fd8fa5365d1257673b84e83a914aa8a481a78cdabe69a678b464736f6c63430008090033",
289
+ "deployedBytecode": "0x608060405234801561001057600080fd5b50600436106100a95760003560e01c80633950935111610071578063395093511461012357806370a082311461013657806395d89b411461015f578063a457c2d714610167578063a9059cbb1461017a578063dd62ed3e1461018d57600080fd5b806306fdde03146100ae578063095ea7b3146100cc57806318160ddd146100ef57806323b872dd14610101578063313ce56714610114575b600080fd5b6100b66101a0565b6040516100c391906106c4565b60405180910390f35b6100df6100da366004610735565b610232565b60405190151581526020016100c3565b6002545b6040519081526020016100c3565b6100df61010f36600461075f565b61024a565b604051601281526020016100c3565b6100df610131366004610735565b61026e565b6100f361014436600461079b565b6001600160a01b031660009081526020819052604090205490565b6100b6610290565b6100df610175366004610735565b61029f565b6100df610188366004610735565b61031f565b6100f361019b3660046107bd565b61032d565b6060600380546101af906107f0565b80601f01602080910402602001604051908101604052809291908181526020018280546101db906107f0565b80156102285780601f106101fd57610100808354040283529160200191610228565b820191906000526020600020905b81548152906001019060200180831161020b57829003601f168201915b5050505050905090565b600033610240818585610358565b5060019392505050565b60003361025885828561047c565b6102638585856104f6565b506001949350505050565b600033610240818585610281838361032d565b61028b919061082b565b610358565b6060600480546101af906107f0565b600033816102ad828661032d565b9050838110156103125760405162461bcd60e51b815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77604482015264207a65726f60d81b60648201526084015b60405180910390fd5b6102638286868403610358565b6000336102408185856104f6565b6001600160a01b03918216600090815260016020908152604080832093909416825291909152205490565b6001600160a01b0383166103ba5760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b6064820152608401610309565b6001600160a01b03821661041b5760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b6064820152608401610309565b6001600160a01b0383811660008181526001602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b6000610488848461032d565b905060001981146104f057818110156104e35760405162461bcd60e51b815260206004820152601d60248201527f45524332303a20696e73756666696369656e7420616c6c6f77616e63650000006044820152606401610309565b6104f08484848403610358565b50505050565b6001600160a01b03831661055a5760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b6064820152608401610309565b6001600160a01b0382166105bc5760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b6064820152608401610309565b6001600160a01b038316600090815260208190526040902054818110156106345760405162461bcd60e51b815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e7420657863656564732062604482015265616c616e636560d01b6064820152608401610309565b6001600160a01b0380851660009081526020819052604080822085850390559185168152908120805484929061066b90849061082b565b92505081905550826001600160a01b0316846001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040516106b791815260200190565b60405180910390a36104f0565b600060208083528351808285015260005b818110156106f1578581018301518582016040015282016106d5565b81811115610703576000604083870101525b50601f01601f1916929092016040019392505050565b80356001600160a01b038116811461073057600080fd5b919050565b6000806040838503121561074857600080fd5b61075183610719565b946020939093013593505050565b60008060006060848603121561077457600080fd5b61077d84610719565b925061078b60208501610719565b9150604084013590509250925092565b6000602082840312156107ad57600080fd5b6107b682610719565b9392505050565b600080604083850312156107d057600080fd5b6107d983610719565b91506107e760208401610719565b90509250929050565b600181811c9082168061080457607f821691505b6020821081141561082557634e487b7160e01b600052602260045260246000fd5b50919050565b6000821982111561084c57634e487b7160e01b600052601160045260246000fd5b50019056fea26469706673582212209d6fc10782cf26fd8fa5365d1257673b84e83a914aa8a481a78cdabe69a678b464736f6c63430008090033",
290
290
  "linkReferences": {},
291
291
  "deployedLinkReferences": {}
292
292
  }
@@ -1,4 +1,4 @@
1
1
  {
2
2
  "_format": "hh-sol-dbg-1",
3
- "buildInfo": "../../../build-info/7de232cc334b063903f669aaef0a3136.json"
3
+ "buildInfo": "../../../build-info/83d3fd0b633e3a3120fc5455f62bf6b6.json"
4
4
  }
@@ -11,8 +11,8 @@
11
11
  "type": "function"
12
12
  }
13
13
  ],
14
- "bytecode": "0x608060405234801561001057600080fd5b50610731806100206000396000f3fe608060405234801561001057600080fd5b506004361061002b5760003560e01c8063f8a8fd6d14610030575b600080fd5b61003861003a565b005b6040805160026020820181815260808301845260009383929083015b604080518082019091526000808252602082015281526020019060019003908161005657505090528051519091506002146100c45760405162461bcd60e51b815260206004820152600960248201526829aa20a92a2fa622a760b91b60448201526064015b60405180910390fd5b6100db60006100d360016103c2565b8391906103f5565b6100ea60016100d360026103c2565b6100fe6100f760036103c2565b829061041c565b80515160031461013b5760405162461bcd60e51b8152602060048201526008602482015267282aa9a42fa622a760c11b60448201526064016100bb565b60005b81515181101561020c5760006101548383610510565b905060008151600681111561016b5761016b61066f565b146101a85760405162461bcd60e51b815260206004820152600d60248201526c505553485f56414c5f5459504560981b60448201526064016100bb565b6101b382600161069b565b8160200151146101f95760405162461bcd60e51b8152602060048201526011602482015270505553485f56414c5f434f4e54454e545360781b60448201526064016100bb565b5080610204816106b3565b91505061013e565b50600061021882610548565b905060008151600681111561022f5761022f61066f565b1461026b5760405162461bcd60e51b815260206004820152600c60248201526b504f505f5245545f5459504560a01b60448201526064016100bb565b80602001516003146102b25760405162461bcd60e51b815260206004820152601060248201526f504f505f5245545f434f4e54454e545360801b60448201526064016100bb565b8151516002146102ee5760405162461bcd60e51b81526020600482015260076024820152662827a82fa622a760c91b60448201526064016100bb565b60005b8251518110156103bd5760006103078483610510565b905060008151600681111561031e5761031e61066f565b1461035a5760405162461bcd60e51b815260206004820152600c60248201526b504f505f56414c5f5459504560a01b60448201526064016100bb565b61036582600161069b565b8160200151146103aa5760405162461bcd60e51b815260206004820152601060248201526f504f505f56414c5f434f4e54454e545360801b60448201526064016100bb565b50806103b5816106b3565b9150506102f1565b505050565b604080518082019091526000808252602082015250604080518082019091526000815263ffffffff909116602082015290565b808360000151838151811061040c5761040c6106ce565b6020026020010181905250505050565b81515160009061042d90600161069b565b67ffffffffffffffff81111561044557610445610659565b60405190808252806020026020018201604052801561048a57816020015b60408051808201909152600080825260208201528152602001906001900390816104635790505b50905060005b8351518110156104e65783518051829081106104ae576104ae6106ce565b60200260200101518282815181106104c8576104c86106ce565b602002602001018190525080806104de906106b3565b915050610490565b508181846000015151815181106104ff576104ff6106ce565b602090810291909101015290915250565b60408051808201909152600080825260208201528251805183908110610538576105386106ce565b6020026020010151905092915050565b60408051808201909152600080825260208201528151805161056c906001906106e4565b8151811061057c5761057c6106ce565b602002602001015190506000600183600001515161059a91906106e4565b67ffffffffffffffff8111156105b2576105b2610659565b6040519080825280602002602001820160405280156105f757816020015b60408051808201909152600080825260208201528152602001906001900390816105d05790505b50905060005b815181101561065257835180518290811061061a5761061a6106ce565b6020026020010151828281518110610634576106346106ce565b6020026020010181905250808061064a906106b3565b9150506105fd565b5090915290565b634e487b7160e01b600052604160045260246000fd5b634e487b7160e01b600052602160045260246000fd5b634e487b7160e01b600052601160045260246000fd5b600082198211156106ae576106ae610685565b500190565b60006000198214156106c7576106c7610685565b5060010190565b634e487b7160e01b600052603260045260246000fd5b6000828210156106f6576106f6610685565b50039056fea26469706673582212202acf49f5bbd26486ef855e2fe94f59b6f316d9b57dcfa18e0aaf50ebcb90bc9a64736f6c63430008090033",
15
- "deployedBytecode": "0x608060405234801561001057600080fd5b506004361061002b5760003560e01c8063f8a8fd6d14610030575b600080fd5b61003861003a565b005b6040805160026020820181815260808301845260009383929083015b604080518082019091526000808252602082015281526020019060019003908161005657505090528051519091506002146100c45760405162461bcd60e51b815260206004820152600960248201526829aa20a92a2fa622a760b91b60448201526064015b60405180910390fd5b6100db60006100d360016103c2565b8391906103f5565b6100ea60016100d360026103c2565b6100fe6100f760036103c2565b829061041c565b80515160031461013b5760405162461bcd60e51b8152602060048201526008602482015267282aa9a42fa622a760c11b60448201526064016100bb565b60005b81515181101561020c5760006101548383610510565b905060008151600681111561016b5761016b61066f565b146101a85760405162461bcd60e51b815260206004820152600d60248201526c505553485f56414c5f5459504560981b60448201526064016100bb565b6101b382600161069b565b8160200151146101f95760405162461bcd60e51b8152602060048201526011602482015270505553485f56414c5f434f4e54454e545360781b60448201526064016100bb565b5080610204816106b3565b91505061013e565b50600061021882610548565b905060008151600681111561022f5761022f61066f565b1461026b5760405162461bcd60e51b815260206004820152600c60248201526b504f505f5245545f5459504560a01b60448201526064016100bb565b80602001516003146102b25760405162461bcd60e51b815260206004820152601060248201526f504f505f5245545f434f4e54454e545360801b60448201526064016100bb565b8151516002146102ee5760405162461bcd60e51b81526020600482015260076024820152662827a82fa622a760c91b60448201526064016100bb565b60005b8251518110156103bd5760006103078483610510565b905060008151600681111561031e5761031e61066f565b1461035a5760405162461bcd60e51b815260206004820152600c60248201526b504f505f56414c5f5459504560a01b60448201526064016100bb565b61036582600161069b565b8160200151146103aa5760405162461bcd60e51b815260206004820152601060248201526f504f505f56414c5f434f4e54454e545360801b60448201526064016100bb565b50806103b5816106b3565b9150506102f1565b505050565b604080518082019091526000808252602082015250604080518082019091526000815263ffffffff909116602082015290565b808360000151838151811061040c5761040c6106ce565b6020026020010181905250505050565b81515160009061042d90600161069b565b67ffffffffffffffff81111561044557610445610659565b60405190808252806020026020018201604052801561048a57816020015b60408051808201909152600080825260208201528152602001906001900390816104635790505b50905060005b8351518110156104e65783518051829081106104ae576104ae6106ce565b60200260200101518282815181106104c8576104c86106ce565b602002602001018190525080806104de906106b3565b915050610490565b508181846000015151815181106104ff576104ff6106ce565b602090810291909101015290915250565b60408051808201909152600080825260208201528251805183908110610538576105386106ce565b6020026020010151905092915050565b60408051808201909152600080825260208201528151805161056c906001906106e4565b8151811061057c5761057c6106ce565b602002602001015190506000600183600001515161059a91906106e4565b67ffffffffffffffff8111156105b2576105b2610659565b6040519080825280602002602001820160405280156105f757816020015b60408051808201909152600080825260208201528152602001906001900390816105d05790505b50905060005b815181101561065257835180518290811061061a5761061a6106ce565b6020026020010151828281518110610634576106346106ce565b6020026020010181905250808061064a906106b3565b9150506105fd565b5090915290565b634e487b7160e01b600052604160045260246000fd5b634e487b7160e01b600052602160045260246000fd5b634e487b7160e01b600052601160045260246000fd5b600082198211156106ae576106ae610685565b500190565b60006000198214156106c7576106c7610685565b5060010190565b634e487b7160e01b600052603260045260246000fd5b6000828210156106f6576106f6610685565b50039056fea26469706673582212202acf49f5bbd26486ef855e2fe94f59b6f316d9b57dcfa18e0aaf50ebcb90bc9a64736f6c63430008090033",
14
+ "bytecode": "0x608060405234801561001057600080fd5b50610731806100206000396000f3fe608060405234801561001057600080fd5b506004361061002b5760003560e01c8063f8a8fd6d14610030575b600080fd5b61003861003a565b005b6040805160026020820181815260808301845260009383929083015b604080518082019091526000808252602082015281526020019060019003908161005657505090528051519091506002146100c45760405162461bcd60e51b815260206004820152600960248201526829aa20a92a2fa622a760b91b60448201526064015b60405180910390fd5b6100db60006100d360016103c2565b8391906103f5565b6100ea60016100d360026103c2565b6100fe6100f760036103c2565b829061041c565b80515160031461013b5760405162461bcd60e51b8152602060048201526008602482015267282aa9a42fa622a760c11b60448201526064016100bb565b60005b81515181101561020c5760006101548383610510565b905060008151600681111561016b5761016b61066f565b146101a85760405162461bcd60e51b815260206004820152600d60248201526c505553485f56414c5f5459504560981b60448201526064016100bb565b6101b382600161069b565b8160200151146101f95760405162461bcd60e51b8152602060048201526011602482015270505553485f56414c5f434f4e54454e545360781b60448201526064016100bb565b5080610204816106b3565b91505061013e565b50600061021882610548565b905060008151600681111561022f5761022f61066f565b1461026b5760405162461bcd60e51b815260206004820152600c60248201526b504f505f5245545f5459504560a01b60448201526064016100bb565b80602001516003146102b25760405162461bcd60e51b815260206004820152601060248201526f504f505f5245545f434f4e54454e545360801b60448201526064016100bb565b8151516002146102ee5760405162461bcd60e51b81526020600482015260076024820152662827a82fa622a760c91b60448201526064016100bb565b60005b8251518110156103bd5760006103078483610510565b905060008151600681111561031e5761031e61066f565b1461035a5760405162461bcd60e51b815260206004820152600c60248201526b504f505f56414c5f5459504560a01b60448201526064016100bb565b61036582600161069b565b8160200151146103aa5760405162461bcd60e51b815260206004820152601060248201526f504f505f56414c5f434f4e54454e545360801b60448201526064016100bb565b50806103b5816106b3565b9150506102f1565b505050565b604080518082019091526000808252602082015250604080518082019091526000815263ffffffff909116602082015290565b808360000151838151811061040c5761040c6106ce565b6020026020010181905250505050565b81515160009061042d90600161069b565b67ffffffffffffffff81111561044557610445610659565b60405190808252806020026020018201604052801561048a57816020015b60408051808201909152600080825260208201528152602001906001900390816104635790505b50905060005b8351518110156104e65783518051829081106104ae576104ae6106ce565b60200260200101518282815181106104c8576104c86106ce565b602002602001018190525080806104de906106b3565b915050610490565b508181846000015151815181106104ff576104ff6106ce565b602090810291909101015290915250565b60408051808201909152600080825260208201528251805183908110610538576105386106ce565b6020026020010151905092915050565b60408051808201909152600080825260208201528151805161056c906001906106e4565b8151811061057c5761057c6106ce565b602002602001015190506000600183600001515161059a91906106e4565b67ffffffffffffffff8111156105b2576105b2610659565b6040519080825280602002602001820160405280156105f757816020015b60408051808201909152600080825260208201528152602001906001900390816105d05790505b50905060005b815181101561065257835180518290811061061a5761061a6106ce565b6020026020010151828281518110610634576106346106ce565b6020026020010181905250808061064a906106b3565b9150506105fd565b5090915290565b634e487b7160e01b600052604160045260246000fd5b634e487b7160e01b600052602160045260246000fd5b634e487b7160e01b600052601160045260246000fd5b600082198211156106ae576106ae610685565b500190565b60006000198214156106c7576106c7610685565b5060010190565b634e487b7160e01b600052603260045260246000fd5b6000828210156106f6576106f6610685565b50039056fea264697066735822122040ff6f133a45f06c90674e2ed2a476d226d9c4775a06f52ad96ee16c0a0aaef264736f6c63430008090033",
15
+ "deployedBytecode": "0x608060405234801561001057600080fd5b506004361061002b5760003560e01c8063f8a8fd6d14610030575b600080fd5b61003861003a565b005b6040805160026020820181815260808301845260009383929083015b604080518082019091526000808252602082015281526020019060019003908161005657505090528051519091506002146100c45760405162461bcd60e51b815260206004820152600960248201526829aa20a92a2fa622a760b91b60448201526064015b60405180910390fd5b6100db60006100d360016103c2565b8391906103f5565b6100ea60016100d360026103c2565b6100fe6100f760036103c2565b829061041c565b80515160031461013b5760405162461bcd60e51b8152602060048201526008602482015267282aa9a42fa622a760c11b60448201526064016100bb565b60005b81515181101561020c5760006101548383610510565b905060008151600681111561016b5761016b61066f565b146101a85760405162461bcd60e51b815260206004820152600d60248201526c505553485f56414c5f5459504560981b60448201526064016100bb565b6101b382600161069b565b8160200151146101f95760405162461bcd60e51b8152602060048201526011602482015270505553485f56414c5f434f4e54454e545360781b60448201526064016100bb565b5080610204816106b3565b91505061013e565b50600061021882610548565b905060008151600681111561022f5761022f61066f565b1461026b5760405162461bcd60e51b815260206004820152600c60248201526b504f505f5245545f5459504560a01b60448201526064016100bb565b80602001516003146102b25760405162461bcd60e51b815260206004820152601060248201526f504f505f5245545f434f4e54454e545360801b60448201526064016100bb565b8151516002146102ee5760405162461bcd60e51b81526020600482015260076024820152662827a82fa622a760c91b60448201526064016100bb565b60005b8251518110156103bd5760006103078483610510565b905060008151600681111561031e5761031e61066f565b1461035a5760405162461bcd60e51b815260206004820152600c60248201526b504f505f56414c5f5459504560a01b60448201526064016100bb565b61036582600161069b565b8160200151146103aa5760405162461bcd60e51b815260206004820152601060248201526f504f505f56414c5f434f4e54454e545360801b60448201526064016100bb565b50806103b5816106b3565b9150506102f1565b505050565b604080518082019091526000808252602082015250604080518082019091526000815263ffffffff909116602082015290565b808360000151838151811061040c5761040c6106ce565b6020026020010181905250505050565b81515160009061042d90600161069b565b67ffffffffffffffff81111561044557610445610659565b60405190808252806020026020018201604052801561048a57816020015b60408051808201909152600080825260208201528152602001906001900390816104635790505b50905060005b8351518110156104e65783518051829081106104ae576104ae6106ce565b60200260200101518282815181106104c8576104c86106ce565b602002602001018190525080806104de906106b3565b915050610490565b508181846000015151815181106104ff576104ff6106ce565b602090810291909101015290915250565b60408051808201909152600080825260208201528251805183908110610538576105386106ce565b6020026020010151905092915050565b60408051808201909152600080825260208201528151805161056c906001906106e4565b8151811061057c5761057c6106ce565b602002602001015190506000600183600001515161059a91906106e4565b67ffffffffffffffff8111156105b2576105b2610659565b6040519080825280602002602001820160405280156105f757816020015b60408051808201909152600080825260208201528152602001906001900390816105d05790505b50905060005b815181101561065257835180518290811061061a5761061a6106ce565b6020026020010151828281518110610634576106346106ce565b6020026020010181905250808061064a906106b3565b9150506105fd565b5090915290565b634e487b7160e01b600052604160045260246000fd5b634e487b7160e01b600052602160045260246000fd5b634e487b7160e01b600052601160045260246000fd5b600082198211156106ae576106ae610685565b500190565b60006000198214156106c7576106c7610685565b5060010190565b634e487b7160e01b600052603260045260246000fd5b6000828210156106f6576106f6610685565b50039056fea264697066735822122040ff6f133a45f06c90674e2ed2a476d226d9c4775a06f52ad96ee16c0a0aaef264736f6c63430008090033",
16
16
  "linkReferences": {},
17
17
  "deployedLinkReferences": {}
18
18
  }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@arbitrum/nitro-contracts",
3
- "version": "1.2.1",
3
+ "version": "2.0.0-beta.0",
4
4
  "description": "Layer 2 precompiles and rollup for Arbitrum Nitro",
5
5
  "author": "Offchain Labs, Inc.",
6
6
  "license": "BUSL-1.1",
@@ -18,6 +18,8 @@
18
18
  "url": "https://github.com/offchainlabs/nitro-contracts/issues"
19
19
  },
20
20
  "scripts": {
21
+ "audit:ci": "audit-ci --config ./audit-ci.jsonc",
22
+ "audit:fix": "yarn-audit-fix",
21
23
  "prepublishOnly": "hardhat clean && forge clean && hardhat compile && yarn build:forge:yul",
22
24
  "build:all": "yarn build && yarn build:forge",
23
25
  "build": "hardhat compile",
@@ -39,13 +41,15 @@
39
41
  "postinstall": "patch-package",
40
42
  "deploy-factory": "hardhat run scripts/deployment.ts",
41
43
  "deploy-eth-rollup": "hardhat run scripts/createEthRollup.ts",
42
- "deploy-erc20-rollup": "hardhat run scripts/createERC20Rollup.ts"
44
+ "deploy-erc20-rollup": "hardhat run scripts/createERC20Rollup.ts",
45
+ "create-rollup-testnode": "hardhat run scripts/local-deployment/deployCreatorAndCreateRollup.ts"
43
46
  },
44
47
  "dependencies": {
45
48
  "@offchainlabs/upgrade-executor": "1.1.0-beta.0",
46
49
  "@openzeppelin/contracts": "4.5.0",
47
50
  "@openzeppelin/contracts-upgradeable": "4.5.2",
48
- "patch-package": "^6.4.7"
51
+ "patch-package": "^6.4.7",
52
+ "solady": "0.0.182"
49
53
  },
50
54
  "private": false,
51
55
  "devDependencies": {
@@ -63,14 +67,15 @@
63
67
  "@typescript-eslint/eslint-plugin": "^5.14.0",
64
68
  "@typescript-eslint/eslint-plugin-tslint": "^5.27.1",
65
69
  "@typescript-eslint/parser": "^5.14.0",
70
+ "audit-ci": "^6.6.1",
66
71
  "chai": "^4.3.4",
67
72
  "dotenv": "^16.3.1",
68
73
  "eslint": "^8.23.1",
69
74
  "eslint-config-prettier": "^8.3.0",
70
75
  "eslint-plugin-mocha": "^9.0.0",
71
76
  "eslint-plugin-prettier": "^4.0.0",
72
- "ethereum-waffle": "^3.4.0",
73
- "ethers": "^5.5.2",
77
+ "ethereum-waffle": "^4.0.10",
78
+ "ethers": "^5.5.4",
74
79
  "hardhat": "^2.17.2",
75
80
  "hardhat-deploy": "^0.11.37",
76
81
  "hardhat-gas-reporter": "^1.0.9",
@@ -83,7 +88,8 @@
83
88
  "solidity-coverage": "^0.8.4",
84
89
  "ts-node": "^10.4.0",
85
90
  "tslint": "^6.1.3",
86
- "typechain": "^8.0.0",
87
- "typescript": "^4.5.4"
91
+ "typechain": "^8.3.2",
92
+ "typescript": "^4.5.4",
93
+ "yarn-audit-fix": "^10.0.7"
88
94
  }
89
95
  }
@@ -0,0 +1,283 @@
1
+ // Copyright 2022-2024, Offchain Labs, Inc.
2
+ // For license information, see https://github.com/nitro/blob/master/LICENSE
3
+ // SPDX-License-Identifier: BUSL-1.1
4
+
5
+ pragma solidity ^0.8.0;
6
+
7
+ import "../precompiles/ArbOwnerPublic.sol";
8
+ import "../precompiles/ArbWasm.sol";
9
+ import "../precompiles/ArbWasmCache.sol";
10
+ import "solady/src/utils/MinHeapLib.sol";
11
+
12
+ contract CacheManager {
13
+ using MinHeapLib for MinHeapLib.Heap;
14
+
15
+ ArbOwnerPublic internal constant ARB_OWNER_PUBLIC = ArbOwnerPublic(address(0x6b));
16
+ ArbWasm internal constant ARB_WASM = ArbWasm(address(0x71));
17
+ ArbWasmCache internal constant ARB_WASM_CACHE = ArbWasmCache(address(0x72));
18
+ uint64 internal constant MAX_MAKE_SPACE = 5 * 1024 * 1024;
19
+ uint64 internal constant MIN_CODESIZE = 4096;
20
+
21
+ MinHeapLib.Heap internal bids;
22
+ Entry[] public entries;
23
+
24
+ uint64 public cacheSize;
25
+ uint64 public queueSize;
26
+ uint64 public decay;
27
+ bool public isPaused;
28
+
29
+ error NotChainOwner(address sender);
30
+ error AsmTooLarge(uint256 asm, uint256 queueSize, uint256 cacheSize);
31
+ error AlreadyCached(bytes32 codehash);
32
+ error BidTooLarge(uint256 bid);
33
+ error BidTooSmall(uint192 bid, uint192 min);
34
+ error BidsArePaused();
35
+ error MakeSpaceTooLarge(uint64 size, uint64 limit);
36
+
37
+ event InsertBid(bytes32 indexed codehash, uint192 bid, uint64 size);
38
+ event DeleteBid(bytes32 indexed codehash, uint192 bid, uint64 size);
39
+ event SetCacheSize(uint64 size);
40
+ event SetDecayRate(uint64 decay);
41
+ event Pause();
42
+ event Unpause();
43
+
44
+ struct Entry {
45
+ bytes32 code;
46
+ uint64 size;
47
+ uint192 bid;
48
+ }
49
+
50
+ constructor(uint64 initCacheSize, uint64 initDecay) {
51
+ cacheSize = initCacheSize;
52
+ decay = initDecay;
53
+ }
54
+
55
+ modifier onlyOwner() {
56
+ if (!ARB_OWNER_PUBLIC.isChainOwner(msg.sender)) {
57
+ revert NotChainOwner(msg.sender);
58
+ }
59
+ _;
60
+ }
61
+
62
+ /// @notice Sets the intended cache size. Note that the queue may temporarily be larger.
63
+ function setCacheSize(uint64 newSize) external onlyOwner {
64
+ cacheSize = newSize;
65
+ emit SetCacheSize(newSize);
66
+ }
67
+
68
+ /// @notice Sets the intended decay factor. Does not modify existing bids.
69
+ function setDecayRate(uint64 newDecay) external onlyOwner {
70
+ decay = newDecay;
71
+ emit SetDecayRate(newDecay);
72
+ }
73
+
74
+ /// @notice Disable new bids.
75
+ function paused() external onlyOwner {
76
+ isPaused = true;
77
+ emit Pause();
78
+ }
79
+
80
+ /// @notice Enable new bids.
81
+ function unpause() external onlyOwner {
82
+ isPaused = false;
83
+ emit Unpause();
84
+ }
85
+
86
+ /// @notice Evicts all programs in the cache.
87
+ function evictAll() external onlyOwner {
88
+ evictPrograms(type(uint256).max);
89
+ delete entries;
90
+ }
91
+
92
+ /// @notice Evicts up to `count` programs from the cache.
93
+ function evictPrograms(uint256 count) public onlyOwner {
94
+ while (bids.length() != 0 && count > 0) {
95
+ (uint192 bid, uint64 index) = _getBid(bids.pop());
96
+ _deleteEntry(bid, index);
97
+ count -= 1;
98
+ }
99
+ }
100
+
101
+ /// @notice Returns all entries in the cache. Might revert if the cache is too large.
102
+ function getEntries() external view returns (Entry[] memory) {
103
+ return entries;
104
+ }
105
+
106
+ /// @notice Returns the `k` smallest entries in the cache sorted in ascending order.
107
+ /// If the cache have less than `k` entries, returns all entries.
108
+ function getSmallestEntries(uint256 k) public view returns (Entry[] memory result) {
109
+ if (bids.length() < k) {
110
+ k = bids.length();
111
+ }
112
+ uint256[] memory kbids = bids.smallest(k);
113
+ result = new Entry[](kbids.length);
114
+ for (uint256 i = 0; i < kbids.length; i++) {
115
+ (, uint64 index) = _getBid(kbids[i]);
116
+ result[i] = entries[index];
117
+ }
118
+ }
119
+
120
+ /// @notice Returns the minimum bid required to cache a program of the given size.
121
+ /// Value returned here is the minimum bid that you can send with msg.value
122
+ function getMinBid(uint64 size) public view returns (uint192 min) {
123
+ if (size > cacheSize) {
124
+ revert AsmTooLarge(size, 0, cacheSize);
125
+ }
126
+
127
+ size = size >= MIN_CODESIZE ? size : MIN_CODESIZE;
128
+ uint256 totalSize = queueSize + size;
129
+ if (totalSize <= cacheSize) {
130
+ return 0;
131
+ }
132
+ uint256 needToFree = totalSize - cacheSize;
133
+
134
+ // size is at least MIN_CODESIZE, and vary no more than 10x right now, so we can safely assume
135
+ // for a given size, we need at most need to clear roundUp(size/MIN_CODESIZE) entries to make space
136
+ uint256 k = (needToFree + MIN_CODESIZE - 1) / MIN_CODESIZE;
137
+ Entry[] memory smallest = getSmallestEntries(k);
138
+ for (uint256 i = 0; i < smallest.length; i++) {
139
+ if (needToFree <= smallest[i].size) {
140
+ min = smallest[i].bid;
141
+ break;
142
+ }
143
+ needToFree -= smallest[i].size;
144
+ }
145
+ uint256 currentDecay = _calcDecay();
146
+ if (min < currentDecay) {
147
+ return 0;
148
+ }
149
+ min = min - uint192(currentDecay);
150
+ }
151
+
152
+ /// @notice Returns the minimum bid required to cache the program with given codehash.
153
+ /// Value returned here is the minimum bid that you can send with msg.value
154
+ function getMinBid(bytes32 codehash) external view returns (uint192 min) {
155
+ return getMinBid(_asmSize(codehash));
156
+ }
157
+
158
+ /// @notice Sends all revenue to the network fee account.
159
+ function sweepFunds() external {
160
+ (bool success, bytes memory data) = ARB_OWNER_PUBLIC.getNetworkFeeAccount().call{
161
+ value: address(this).balance
162
+ }("");
163
+ if (!success) {
164
+ assembly {
165
+ revert(add(data, 32), mload(data))
166
+ }
167
+ }
168
+ }
169
+
170
+ /// @notice Places a bid, reverting if payment is insufficient.
171
+ function placeBid(bytes32 codehash) external payable {
172
+ if (isPaused) {
173
+ revert BidsArePaused();
174
+ }
175
+ if (_isCached(codehash)) {
176
+ revert AlreadyCached(codehash);
177
+ }
178
+
179
+ uint64 asm = _asmSize(codehash);
180
+ (uint192 bid, uint64 index) = _makeSpace(asm);
181
+ return _addBid(bid, codehash, asm, index);
182
+ }
183
+
184
+ /// @notice Evicts entries until enough space exists in the cache, reverting if payment is insufficient.
185
+ /// Returns the new amount of space available on success.
186
+ /// @dev Will revert for requests larger than 5Mb. Call repeatedly for more.
187
+ function makeSpace(uint64 size) external payable returns (uint64 space) {
188
+ if (isPaused) {
189
+ revert BidsArePaused();
190
+ }
191
+ if (size > MAX_MAKE_SPACE) {
192
+ revert MakeSpaceTooLarge(size, MAX_MAKE_SPACE);
193
+ }
194
+ _makeSpace(size);
195
+ return cacheSize - queueSize;
196
+ }
197
+
198
+ function _calcDecay() internal view returns (uint256) {
199
+ return block.timestamp * decay;
200
+ }
201
+
202
+ /// @dev Converts a value to a bid by adding the time decay term.
203
+ function _toBid(uint256 value) internal view returns (uint192 bid) {
204
+ uint256 _bid = value + _calcDecay();
205
+ if (_bid > type(uint192).max) {
206
+ revert BidTooLarge(_bid);
207
+ }
208
+ return uint192(_bid);
209
+ }
210
+
211
+ /// @dev Evicts entries until enough space exists in the cache, reverting if payment is insufficient.
212
+ /// Returns the bid and the index to use for insertion.
213
+ function _makeSpace(uint64 size) internal returns (uint192 bid, uint64 index) {
214
+ // discount historical bids by the number of seconds
215
+ bid = _toBid(msg.value);
216
+ index = uint64(entries.length);
217
+
218
+ uint192 min;
219
+ uint64 limit = cacheSize;
220
+ while (queueSize + size > limit) {
221
+ (min, index) = _getBid(bids.pop());
222
+ _deleteEntry(min, index);
223
+ }
224
+ // if the new bid equals to the minimum bid, a random entry with minimum bid will be evicted
225
+ if (bid < min) {
226
+ revert BidTooSmall(bid, min);
227
+ }
228
+ }
229
+
230
+ /// @dev Adds a bid
231
+ function _addBid(
232
+ uint192 bid,
233
+ bytes32 code,
234
+ uint64 size,
235
+ uint64 index
236
+ ) internal {
237
+ if (queueSize + size > cacheSize) {
238
+ revert AsmTooLarge(size, queueSize, cacheSize);
239
+ }
240
+
241
+ Entry memory entry = Entry({size: size, code: code, bid: bid});
242
+ ARB_WASM_CACHE.cacheCodehash(code);
243
+ bids.push(_packBid(bid, index));
244
+ queueSize += size;
245
+ if (index == entries.length) {
246
+ entries.push(entry);
247
+ } else {
248
+ entries[index] = entry;
249
+ }
250
+ emit InsertBid(code, bid, size);
251
+ }
252
+
253
+ /// @dev Clears the entry at the given index
254
+ function _deleteEntry(uint192 bid, uint64 index) internal {
255
+ Entry memory entry = entries[index];
256
+ ARB_WASM_CACHE.evictCodehash(entry.code);
257
+ queueSize -= entry.size;
258
+ emit DeleteBid(entry.code, bid, entry.size);
259
+ delete entries[index];
260
+ }
261
+
262
+ /// @dev Gets the bid and index from a packed bid item
263
+ function _getBid(uint256 info) internal pure returns (uint192 bid, uint64 index) {
264
+ bid = uint192(info >> 64);
265
+ index = uint64(info);
266
+ }
267
+
268
+ /// @dev Creates a packed bid item
269
+ function _packBid(uint192 bid, uint64 index) internal pure returns (uint256) {
270
+ return (uint256(bid) << 64) | uint256(index);
271
+ }
272
+
273
+ /// @dev Gets the size of the given program in bytes
274
+ function _asmSize(bytes32 codehash) internal view returns (uint64) {
275
+ uint32 size = ARB_WASM.codehashAsmSize(codehash);
276
+ return uint64(size >= MIN_CODESIZE ? size : MIN_CODESIZE); // pretend it's at least 4Kb
277
+ }
278
+
279
+ /// @dev Determines whether a program is cached
280
+ function _isCached(bytes32 codehash) internal view returns (bool) {
281
+ return ARB_WASM_CACHE.codehashIsCached(codehash);
282
+ }
283
+ }
@@ -48,51 +48,6 @@ library ChallengeLib {
48
48
  return challenge.timeUsedSinceLastMove() > challenge.current.timeLeft;
49
49
  }
50
50
 
51
- function getStartMachineHash(bytes32 globalStateHash, bytes32 wasmModuleRoot)
52
- internal
53
- pure
54
- returns (bytes32)
55
- {
56
- // Start the value stack with the function call ABI for the entrypoint
57
- Value[] memory startingValues = new Value[](3);
58
- startingValues[0] = ValueLib.newRefNull();
59
- startingValues[1] = ValueLib.newI32(0);
60
- startingValues[2] = ValueLib.newI32(0);
61
- ValueArray memory valuesArray = ValueArray({inner: startingValues});
62
- ValueStack memory values = ValueStack({proved: valuesArray, remainingHash: 0});
63
- ValueStack memory internalStack;
64
- StackFrameWindow memory frameStack;
65
-
66
- Machine memory mach = Machine({
67
- status: MachineStatus.RUNNING,
68
- valueStack: values,
69
- internalStack: internalStack,
70
- frameStack: frameStack,
71
- globalStateHash: globalStateHash,
72
- moduleIdx: 0,
73
- functionIdx: 0,
74
- functionPc: 0,
75
- modulesRoot: wasmModuleRoot
76
- });
77
- return mach.hash();
78
- }
79
-
80
- function getEndMachineHash(MachineStatus status, bytes32 globalStateHash)
81
- internal
82
- pure
83
- returns (bytes32)
84
- {
85
- if (status == MachineStatus.FINISHED) {
86
- return keccak256(abi.encodePacked("Machine finished:", globalStateHash));
87
- } else if (status == MachineStatus.ERRORED) {
88
- return keccak256(abi.encodePacked("Machine errored:"));
89
- } else if (status == MachineStatus.TOO_FAR) {
90
- return keccak256(abi.encodePacked("Machine too far:"));
91
- } else {
92
- revert("BAD_BLOCK_STATUS");
93
- }
94
- }
95
-
96
51
  function extractChallengeSegment(SegmentSelection calldata selection)
97
52
  internal
98
53
  pure
@@ -35,6 +35,7 @@ contract ChallengeManager is DelegateCallAware, IChallengeManager {
35
35
  ISequencerInbox public sequencerInbox;
36
36
  IBridge public bridge;
37
37
  IOneStepProofEntry public osp;
38
+ mapping(bytes32 => IOneStepProofEntry) public ospCond;
38
39
 
39
40
  function challengeInfo(uint64 challengeIndex)
40
41
  external
@@ -110,12 +111,28 @@ contract ChallengeManager is DelegateCallAware, IChallengeManager {
110
111
  osp = osp_;
111
112
  }
112
113
 
113
- function postUpgradeInit(IOneStepProofEntry osp_) external onlyDelegated onlyProxyOwner {
114
- // when updating to 4844 we need to create new osp contracts and set them here
115
- // on the challenge manager
114
+ /// @dev A osp breaking change is introduced as part of Stylus upgrade, where the new osp would not support
115
+ /// pre-Stylus legacy wasmModuleRoot. To ensure that the new osp is not used for legacy wasmModuleRoot,
116
+ /// we introduce a conditional OSP where condRoot should be set to the pre-Stylus root and condOsp should
117
+ /// be set to the pre-Stylus osp. The correct value should be handled by the upgrade action contract.
118
+ function postUpgradeInit(
119
+ IOneStepProofEntry osp_,
120
+ bytes32 condRoot,
121
+ IOneStepProofEntry condOsp
122
+ ) external onlyDelegated onlyProxyOwner {
123
+ ospCond[condRoot] = condOsp;
116
124
  osp = osp_;
117
125
  }
118
126
 
127
+ function getOsp(bytes32 wasmModuleRoot) public view returns (IOneStepProofEntry) {
128
+ IOneStepProofEntry t = ospCond[wasmModuleRoot];
129
+ if (address(t) == address(0)) {
130
+ return osp;
131
+ } else {
132
+ return t;
133
+ }
134
+ }
135
+
119
136
  function createChallenge(
120
137
  bytes32 wasmModuleRoot_,
121
138
  MachineStatus[2] calldata startAndEndMachineStatuses_,
@@ -233,11 +250,9 @@ contract ChallengeManager is DelegateCallAware, IChallengeManager {
233
250
  }
234
251
 
235
252
  bytes32[] memory segments = new bytes32[](2);
236
- segments[0] = ChallengeLib.getStartMachineHash(
237
- globalStateHashes[0],
238
- challenge.wasmModuleRoot
239
- );
240
- segments[1] = ChallengeLib.getEndMachineHash(machineStatuses[1], globalStateHashes[1]);
253
+ IOneStepProofEntry _osp = getOsp(challenge.wasmModuleRoot);
254
+ segments[0] = _osp.getStartMachineHash(globalStateHashes[0], challenge.wasmModuleRoot);
255
+ segments[1] = _osp.getEndMachineHash(machineStatuses[1], globalStateHashes[1]);
241
256
 
242
257
  challenge.mode = ChallengeLib.ChallengeMode.EXECUTION;
243
258
 
@@ -259,7 +274,7 @@ contract ChallengeManager is DelegateCallAware, IChallengeManager {
259
274
  require(challengeLength == 1, "TOO_LONG");
260
275
  }
261
276
 
262
- bytes32 afterHash = osp.proveOneStep(
277
+ bytes32 afterHash = getOsp(challenge.wasmModuleRoot).proveOneStep(
263
278
  ExecutionContext({maxInboxMessagesRead: challenge.maxInboxMessages, bridge: bridge}),
264
279
  challengeStart,
265
280
  selection.oldSegments[selection.challengePosition],
@@ -47,6 +47,19 @@ interface IChallengeManager {
47
47
  IOneStepProofEntry osp_
48
48
  ) external;
49
49
 
50
+ function postUpgradeInit(
51
+ IOneStepProofEntry osp_,
52
+ bytes32 condRoot,
53
+ IOneStepProofEntry condOsp
54
+ ) external;
55
+
56
+ /// @notice Get the default osp, which is used for all wasm module roots that don't have a conditional OSP set
57
+ /// Use getOsp(wasmModuleRoot) to get the OSP for a specific wasm module root
58
+ function osp() external view returns (IOneStepProofEntry);
59
+
60
+ /// @notice Get the OSP for a given wasm module root
61
+ function getOsp(bytes32 wasmModuleRoot) external view returns (IOneStepProofEntry);
62
+
50
63
  function createChallenge(
51
64
  bytes32 wasmModuleRoot_,
52
65
  MachineStatus[2] calldata startAndEndMachineStatuses_,