@arbitrum/nitro-contracts 3.0.1-beta.1 → 3.1.1

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 (329) 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/ERC1967Upgrade.sol/ERC1967Upgrade.dbg.json +1 -1
  5. package/build/contracts/@openzeppelin/contracts/proxy/Proxy.sol/Proxy.dbg.json +1 -1
  6. package/build/contracts/@openzeppelin/contracts/proxy/beacon/IBeacon.sol/IBeacon.dbg.json +1 -1
  7. package/build/contracts/@openzeppelin/contracts/proxy/beacon/UpgradeableBeacon.sol/UpgradeableBeacon.dbg.json +1 -1
  8. package/build/contracts/@openzeppelin/contracts/proxy/transparent/ProxyAdmin.sol/ProxyAdmin.dbg.json +1 -1
  9. package/build/contracts/@openzeppelin/contracts/proxy/transparent/TransparentUpgradeableProxy.sol/TransparentUpgradeableProxy.dbg.json +1 -1
  10. package/build/contracts/@openzeppelin/contracts/proxy/utils/UUPSUpgradeable.sol/UUPSUpgradeable.dbg.json +1 -1
  11. package/build/contracts/@openzeppelin/contracts/security/ReentrancyGuard.sol/ReentrancyGuard.dbg.json +1 -1
  12. package/build/contracts/@openzeppelin/contracts/token/ERC20/ERC20.sol/ERC20.dbg.json +1 -1
  13. package/build/contracts/@openzeppelin/contracts/token/ERC20/IERC20.sol/IERC20.dbg.json +1 -1
  14. package/build/contracts/@openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata.sol/IERC20Metadata.dbg.json +1 -1
  15. package/build/contracts/@openzeppelin/contracts/token/ERC20/extensions/draft-IERC20Permit.sol/IERC20Permit.dbg.json +1 -1
  16. package/build/contracts/@openzeppelin/contracts/token/ERC20/utils/SafeERC20.sol/SafeERC20.dbg.json +1 -1
  17. package/build/contracts/@openzeppelin/contracts/utils/Address.sol/Address.dbg.json +1 -1
  18. package/build/contracts/@openzeppelin/contracts/utils/Context.sol/Context.dbg.json +1 -1
  19. package/build/contracts/@openzeppelin/contracts/utils/Create2.sol/Create2.dbg.json +1 -1
  20. package/build/contracts/@openzeppelin/contracts/utils/StorageSlot.sol/StorageSlot.dbg.json +1 -1
  21. package/build/contracts/@openzeppelin/contracts/utils/Strings.sol/Strings.dbg.json +1 -1
  22. package/build/contracts/@openzeppelin/contracts/utils/cryptography/ECDSA.sol/ECDSA.dbg.json +1 -1
  23. package/build/contracts/@openzeppelin/contracts-upgradeable/access/AccessControlEnumerableUpgradeable.sol/AccessControlEnumerableUpgradeable.dbg.json +1 -1
  24. package/build/contracts/@openzeppelin/contracts-upgradeable/access/AccessControlUpgradeable.sol/AccessControlUpgradeable.dbg.json +1 -1
  25. package/build/contracts/@openzeppelin/contracts-upgradeable/access/IAccessControlEnumerableUpgradeable.sol/IAccessControlEnumerableUpgradeable.dbg.json +1 -1
  26. package/build/contracts/@openzeppelin/contracts-upgradeable/access/IAccessControlUpgradeable.sol/IAccessControlUpgradeable.dbg.json +1 -1
  27. package/build/contracts/@openzeppelin/contracts-upgradeable/access/OwnableUpgradeable.sol/OwnableUpgradeable.dbg.json +1 -1
  28. package/build/contracts/@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol/Initializable.dbg.json +1 -1
  29. package/build/contracts/@openzeppelin/contracts-upgradeable/security/PausableUpgradeable.sol/PausableUpgradeable.dbg.json +1 -1
  30. package/build/contracts/@openzeppelin/contracts-upgradeable/token/ERC20/ERC20Upgradeable.sol/ERC20Upgradeable.dbg.json +1 -1
  31. package/build/contracts/@openzeppelin/contracts-upgradeable/token/ERC20/IERC20Upgradeable.sol/IERC20Upgradeable.dbg.json +1 -1
  32. package/build/contracts/@openzeppelin/contracts-upgradeable/token/ERC20/extensions/ERC20BurnableUpgradeable.sol/ERC20BurnableUpgradeable.dbg.json +1 -1
  33. package/build/contracts/@openzeppelin/contracts-upgradeable/token/ERC20/extensions/IERC20MetadataUpgradeable.sol/IERC20MetadataUpgradeable.dbg.json +1 -1
  34. package/build/contracts/@openzeppelin/contracts-upgradeable/utils/AddressUpgradeable.sol/AddressUpgradeable.dbg.json +1 -1
  35. package/build/contracts/@openzeppelin/contracts-upgradeable/utils/ContextUpgradeable.sol/ContextUpgradeable.dbg.json +1 -1
  36. package/build/contracts/@openzeppelin/contracts-upgradeable/utils/Create2Upgradeable.sol/Create2Upgradeable.dbg.json +1 -1
  37. package/build/contracts/@openzeppelin/contracts-upgradeable/utils/StorageSlotUpgradeable.sol/StorageSlotUpgradeable.dbg.json +1 -1
  38. package/build/contracts/@openzeppelin/contracts-upgradeable/utils/StringsUpgradeable.sol/StringsUpgradeable.dbg.json +1 -1
  39. package/build/contracts/@openzeppelin/contracts-upgradeable/utils/cryptography/ECDSAUpgradeable.sol/ECDSAUpgradeable.dbg.json +1 -1
  40. package/build/contracts/@openzeppelin/contracts-upgradeable/utils/cryptography/draft-EIP712Upgradeable.sol/EIP712Upgradeable.dbg.json +1 -1
  41. package/build/contracts/@openzeppelin/contracts-upgradeable/utils/introspection/ERC165Upgradeable.sol/ERC165Upgradeable.dbg.json +1 -1
  42. package/build/contracts/@openzeppelin/contracts-upgradeable/utils/introspection/IERC165Upgradeable.sol/IERC165Upgradeable.dbg.json +1 -1
  43. package/build/contracts/@openzeppelin/contracts-upgradeable/utils/structs/EnumerableSetUpgradeable.sol/EnumerableSetUpgradeable.dbg.json +1 -1
  44. package/build/contracts/src/assertionStakingPool/AbsBoldStakingPool.sol/AbsBoldStakingPool.dbg.json +1 -1
  45. package/build/contracts/src/assertionStakingPool/AssertionStakingPool.sol/AssertionStakingPool.dbg.json +1 -1
  46. package/build/contracts/src/assertionStakingPool/AssertionStakingPool.sol/AssertionStakingPool.json +2 -2
  47. package/build/contracts/src/assertionStakingPool/AssertionStakingPoolCreator.sol/AssertionStakingPoolCreator.dbg.json +1 -1
  48. package/build/contracts/src/assertionStakingPool/AssertionStakingPoolCreator.sol/AssertionStakingPoolCreator.json +2 -2
  49. package/build/contracts/src/assertionStakingPool/EdgeStakingPool.sol/EdgeStakingPool.dbg.json +1 -1
  50. package/build/contracts/src/assertionStakingPool/EdgeStakingPool.sol/EdgeStakingPool.json +2 -2
  51. package/build/contracts/src/assertionStakingPool/EdgeStakingPoolCreator.sol/EdgeStakingPoolCreator.dbg.json +1 -1
  52. package/build/contracts/src/assertionStakingPool/EdgeStakingPoolCreator.sol/EdgeStakingPoolCreator.json +2 -2
  53. package/build/contracts/src/assertionStakingPool/StakingPoolCreatorUtils.sol/StakingPoolCreatorUtils.dbg.json +1 -1
  54. package/build/contracts/src/assertionStakingPool/interfaces/IAbsBoldStakingPool.sol/IAbsBoldStakingPool.dbg.json +1 -1
  55. package/build/contracts/src/assertionStakingPool/interfaces/IAssertionStakingPool.sol/IAssertionStakingPool.dbg.json +1 -1
  56. package/build/contracts/src/assertionStakingPool/interfaces/IAssertionStakingPoolCreator.sol/IAssertionStakingPoolCreator.dbg.json +1 -1
  57. package/build/contracts/src/assertionStakingPool/interfaces/IEdgeStakingPool.sol/IEdgeStakingPool.dbg.json +1 -1
  58. package/build/contracts/src/assertionStakingPool/interfaces/IEdgeStakingPoolCreator.sol/IEdgeStakingPoolCreator.dbg.json +1 -1
  59. package/build/contracts/src/bridge/AbsBridge.sol/AbsBridge.dbg.json +1 -1
  60. package/build/contracts/src/bridge/AbsInbox.sol/AbsInbox.dbg.json +1 -1
  61. package/build/contracts/src/bridge/AbsOutbox.sol/AbsOutbox.dbg.json +1 -1
  62. package/build/contracts/src/bridge/Bridge.sol/Bridge.dbg.json +1 -1
  63. package/build/contracts/src/bridge/Bridge.sol/Bridge.json +2 -2
  64. package/build/contracts/src/bridge/DelayBuffer.sol/DelayBuffer.dbg.json +1 -1
  65. package/build/contracts/src/bridge/ERC20Bridge.sol/ERC20Bridge.dbg.json +1 -1
  66. package/build/contracts/src/bridge/ERC20Bridge.sol/ERC20Bridge.json +2 -2
  67. package/build/contracts/src/bridge/ERC20Inbox.sol/ERC20Inbox.dbg.json +1 -1
  68. package/build/contracts/src/bridge/ERC20Inbox.sol/ERC20Inbox.json +2 -2
  69. package/build/contracts/src/bridge/ERC20Outbox.sol/ERC20Outbox.dbg.json +1 -1
  70. package/build/contracts/src/bridge/ERC20Outbox.sol/ERC20Outbox.json +2 -2
  71. package/build/contracts/src/bridge/GasRefunder.sol/GasRefunder.dbg.json +1 -1
  72. package/build/contracts/src/bridge/IBridge.sol/IBridge.dbg.json +1 -1
  73. package/build/contracts/src/bridge/IDelayedMessageProvider.sol/IDelayedMessageProvider.dbg.json +1 -1
  74. package/build/contracts/src/bridge/IERC20Bridge.sol/IERC20Bridge.dbg.json +1 -1
  75. package/build/contracts/src/bridge/IERC20Inbox.sol/IERC20Inbox.dbg.json +1 -1
  76. package/build/contracts/src/bridge/IEthBridge.sol/IEthBridge.dbg.json +1 -1
  77. package/build/contracts/src/bridge/IInbox.sol/IInbox.dbg.json +1 -1
  78. package/build/contracts/src/bridge/IInboxBase.sol/IInboxBase.dbg.json +1 -1
  79. package/build/contracts/src/bridge/IOutbox.sol/IOutbox.dbg.json +1 -1
  80. package/build/contracts/src/bridge/IOwnable.sol/IOwnable.dbg.json +1 -1
  81. package/build/contracts/src/bridge/ISequencerInbox.sol/IFeeTokenPricer.dbg.json +4 -0
  82. package/build/contracts/src/bridge/ISequencerInbox.sol/IFeeTokenPricer.json +24 -0
  83. package/build/contracts/src/bridge/ISequencerInbox.sol/ISequencerInbox.dbg.json +1 -1
  84. package/build/contracts/src/bridge/ISequencerInbox.sol/ISequencerInbox.json +44 -0
  85. package/build/contracts/src/bridge/Inbox.sol/Inbox.dbg.json +1 -1
  86. package/build/contracts/src/bridge/Inbox.sol/Inbox.json +2 -2
  87. package/build/contracts/src/bridge/Messages.sol/Messages.dbg.json +1 -1
  88. package/build/contracts/src/bridge/Outbox.sol/Outbox.dbg.json +1 -1
  89. package/build/contracts/src/bridge/Outbox.sol/Outbox.json +2 -2
  90. package/build/contracts/src/bridge/SequencerInbox.sol/SequencerInbox.dbg.json +1 -1
  91. package/build/contracts/src/bridge/SequencerInbox.sol/SequencerInbox.json +51 -2
  92. package/build/contracts/src/bridge/extra/ERC20MigrationOutbox.sol/ERC20MigrationOutbox.dbg.json +4 -0
  93. package/build/contracts/src/bridge/extra/ERC20MigrationOutbox.sol/ERC20MigrationOutbox.json +113 -0
  94. package/build/contracts/src/bridge/extra/IERC20MigrationOutbox.sol/IERC20MigrationOutbox.dbg.json +4 -0
  95. package/build/contracts/src/bridge/extra/IERC20MigrationOutbox.sol/IERC20MigrationOutbox.json +97 -0
  96. package/build/contracts/src/chain/CacheManager.sol/CacheManager.dbg.json +1 -1
  97. package/build/contracts/src/chain/CacheManager.sol/CacheManager.json +2 -2
  98. package/build/contracts/src/challengeV2/EdgeChallengeManager.sol/EdgeChallengeManager.dbg.json +1 -1
  99. package/build/contracts/src/challengeV2/EdgeChallengeManager.sol/EdgeChallengeManager.json +2 -2
  100. package/build/contracts/src/challengeV2/IAssertionChain.sol/IAssertionChain.dbg.json +1 -1
  101. package/build/contracts/src/challengeV2/IEdgeChallengeManager.sol/IEdgeChallengeManager.dbg.json +1 -1
  102. package/build/contracts/src/challengeV2/libraries/ArrayUtilsLib.sol/ArrayUtilsLib.dbg.json +1 -1
  103. package/build/contracts/src/challengeV2/libraries/ChallengeEdgeLib.sol/ChallengeEdgeLib.dbg.json +1 -1
  104. package/build/contracts/src/challengeV2/libraries/ChallengeEdgeLib.sol/ChallengeEdgeLib.json +2 -2
  105. package/build/contracts/src/challengeV2/libraries/EdgeChallengeManagerLib.sol/EdgeChallengeManagerLib.dbg.json +1 -1
  106. package/build/contracts/src/challengeV2/libraries/EdgeChallengeManagerLib.sol/EdgeChallengeManagerLib.json +2 -2
  107. package/build/contracts/src/challengeV2/libraries/MerkleTreeAccumulatorLib.sol/MerkleTreeAccumulatorLib.dbg.json +1 -1
  108. package/build/contracts/src/challengeV2/libraries/MerkleTreeAccumulatorLib.sol/MerkleTreeAccumulatorLib.json +2 -2
  109. package/build/contracts/src/challengeV2/libraries/UintUtilsLib.sol/UintUtilsLib.dbg.json +1 -1
  110. package/build/contracts/src/express-lane-auction/Balance.sol/BalanceLib.dbg.json +1 -1
  111. package/build/contracts/src/express-lane-auction/Burner.sol/Burner.dbg.json +1 -1
  112. package/build/contracts/src/express-lane-auction/ELCRound.sol/LatestELCRoundsLib.dbg.json +1 -1
  113. package/build/contracts/src/express-lane-auction/ExpressLaneAuction.sol/ExpressLaneAuction.dbg.json +1 -1
  114. package/build/contracts/src/express-lane-auction/ExpressLaneAuction.sol/ExpressLaneAuction.json +2 -2
  115. package/build/contracts/src/express-lane-auction/IExpressLaneAuction.sol/IExpressLaneAuction.dbg.json +1 -1
  116. package/build/contracts/src/express-lane-auction/RoundTimingInfo.sol/RoundTimingInfoLib.dbg.json +1 -1
  117. package/build/contracts/src/libraries/AddressAliasHelper.sol/AddressAliasHelper.dbg.json +1 -1
  118. package/build/contracts/src/libraries/AdminFallbackProxy.sol/AdminFallbackProxy.dbg.json +1 -1
  119. package/build/contracts/src/libraries/AdminFallbackProxy.sol/DoubleLogicERC1967Upgrade.dbg.json +1 -1
  120. package/build/contracts/src/libraries/ArbitrumChecker.sol/ArbitrumChecker.dbg.json +1 -1
  121. package/build/contracts/src/libraries/CallerChecker.sol/CallerChecker.dbg.json +1 -1
  122. package/build/contracts/src/libraries/CryptographyPrimitives.sol/CryptographyPrimitives.dbg.json +1 -1
  123. package/build/contracts/src/libraries/DecimalsConverterHelper.sol/DecimalsConverterHelper.dbg.json +1 -1
  124. package/build/contracts/src/libraries/DelegateCallAware.sol/DelegateCallAware.dbg.json +1 -1
  125. package/build/contracts/src/libraries/DoubleLogicUUPSUpgradeable.sol/DoubleLogicUUPSUpgradeable.dbg.json +1 -1
  126. package/build/contracts/src/libraries/GasRefundEnabled.sol/GasRefundEnabled.dbg.json +1 -1
  127. package/build/contracts/src/libraries/IGasRefunder.sol/IGasRefunder.dbg.json +1 -1
  128. package/build/contracts/src/libraries/IReader4844.sol/IReader4844.dbg.json +1 -1
  129. package/build/contracts/src/libraries/MerkleLib.sol/MerkleLib.dbg.json +1 -1
  130. package/build/contracts/src/libraries/MerkleLib.sol/MerkleLib.json +2 -2
  131. package/build/contracts/src/libraries/UUPSNotUpgradeable.sol/UUPSNotUpgradeable.dbg.json +1 -1
  132. package/build/contracts/src/mocks/BridgeStub.sol/BridgeStub.dbg.json +1 -1
  133. package/build/contracts/src/mocks/BridgeStub.sol/BridgeStub.json +2 -2
  134. package/build/contracts/src/mocks/BridgeUnproxied.sol/BridgeUnproxied.dbg.json +1 -1
  135. package/build/contracts/src/mocks/BridgeUnproxied.sol/BridgeUnproxied.json +2 -2
  136. package/build/contracts/src/mocks/InboxStub.sol/InboxStub.dbg.json +1 -1
  137. package/build/contracts/src/mocks/InboxStub.sol/InboxStub.json +2 -2
  138. package/build/contracts/src/mocks/MerkleTreeAccess.sol/MerkleTreeAccess.dbg.json +1 -1
  139. package/build/contracts/src/mocks/MerkleTreeAccess.sol/MerkleTreeAccess.json +2 -2
  140. package/build/contracts/src/mocks/MockRollupEventInbox.sol/MockRollupEventInbox.dbg.json +1 -1
  141. package/build/contracts/src/mocks/MockRollupEventInbox.sol/MockRollupEventInbox.json +2 -2
  142. package/build/contracts/src/mocks/SequencerInboxBlobMock.sol/SequencerInboxBlobMock.dbg.json +1 -1
  143. package/build/contracts/src/mocks/SequencerInboxBlobMock.sol/SequencerInboxBlobMock.json +51 -2
  144. package/build/contracts/src/mocks/SequencerInboxStub.sol/SequencerInboxStub.dbg.json +1 -1
  145. package/build/contracts/src/mocks/SequencerInboxStub.sol/SequencerInboxStub.json +51 -2
  146. package/build/contracts/src/mocks/SimpleOneStepProofEntry.sol/SimpleOneStepProofEntry.dbg.json +1 -1
  147. package/build/contracts/src/mocks/SimpleOneStepProofEntry.sol/SimpleOneStepProofEntry.json +2 -2
  148. package/build/contracts/src/mocks/TestWETH9.sol/IWETH9.dbg.json +1 -1
  149. package/build/contracts/src/mocks/TestWETH9.sol/TestWETH9.dbg.json +1 -1
  150. package/build/contracts/src/mocks/UpgradeExecutorMock.sol/UpgradeExecutorMock.dbg.json +1 -1
  151. package/build/contracts/src/node-interface/NodeInterface.sol/NodeInterface.dbg.json +1 -1
  152. package/build/contracts/src/node-interface/NodeInterfaceDebug.sol/NodeInterfaceDebug.dbg.json +1 -1
  153. package/build/contracts/src/osp/HashProofHelper.sol/HashProofHelper.dbg.json +1 -1
  154. package/build/contracts/src/osp/IOneStepProofEntry.sol/IOneStepProofEntry.dbg.json +1 -1
  155. package/build/contracts/src/osp/IOneStepProofEntry.sol/OneStepProofEntryLib.dbg.json +1 -1
  156. package/build/contracts/src/osp/IOneStepProofEntry.sol/OneStepProofEntryLib.json +2 -2
  157. package/build/contracts/src/osp/IOneStepProver.sol/IOneStepProver.dbg.json +1 -1
  158. package/build/contracts/src/osp/OneStepProofEntry.sol/OneStepProofEntry.dbg.json +1 -1
  159. package/build/contracts/src/osp/OneStepProofEntry.sol/OneStepProofEntry.json +2 -2
  160. package/build/contracts/src/osp/OneStepProver0.sol/OneStepProver0.dbg.json +1 -1
  161. package/build/contracts/src/osp/OneStepProver0.sol/OneStepProver0.json +2 -2
  162. package/build/contracts/src/osp/OneStepProverHostIo.sol/OneStepProverHostIo.dbg.json +1 -1
  163. package/build/contracts/src/osp/OneStepProverHostIo.sol/OneStepProverHostIo.json +2 -2
  164. package/build/contracts/src/osp/OneStepProverMath.sol/OneStepProverMath.dbg.json +1 -1
  165. package/build/contracts/src/osp/OneStepProverMath.sol/OneStepProverMath.json +2 -2
  166. package/build/contracts/src/osp/OneStepProverMemory.sol/OneStepProverMemory.dbg.json +1 -1
  167. package/build/contracts/src/osp/OneStepProverMemory.sol/OneStepProverMemory.json +2 -2
  168. package/build/contracts/src/precompiles/ArbAddressTable.sol/ArbAddressTable.dbg.json +1 -1
  169. package/build/contracts/src/precompiles/ArbAggregator.sol/ArbAggregator.dbg.json +1 -1
  170. package/build/contracts/src/precompiles/ArbBLS.sol/ArbBLS.dbg.json +1 -1
  171. package/build/contracts/src/precompiles/ArbDebug.sol/ArbDebug.dbg.json +1 -1
  172. package/build/contracts/src/precompiles/ArbFunctionTable.sol/ArbFunctionTable.dbg.json +1 -1
  173. package/build/contracts/src/precompiles/ArbGasInfo.sol/ArbGasInfo.dbg.json +1 -1
  174. package/build/contracts/src/precompiles/ArbInfo.sol/ArbInfo.dbg.json +1 -1
  175. package/build/contracts/src/precompiles/ArbNativeTokenManager.sol/ArbNativeTokenManager.dbg.json +4 -0
  176. package/build/contracts/src/precompiles/ArbNativeTokenManager.sol/ArbNativeTokenManager.json +75 -0
  177. package/build/contracts/src/precompiles/ArbOwner.sol/ArbOwner.dbg.json +1 -1
  178. package/build/contracts/src/precompiles/ArbOwner.sol/ArbOwner.json +71 -0
  179. package/build/contracts/src/precompiles/ArbOwnerPublic.sol/ArbOwnerPublic.dbg.json +1 -1
  180. package/build/contracts/src/precompiles/ArbOwnerPublic.sol/ArbOwnerPublic.json +32 -0
  181. package/build/contracts/src/precompiles/ArbRetryableTx.sol/ArbRetryableTx.dbg.json +1 -1
  182. package/build/contracts/src/precompiles/ArbStatistics.sol/ArbStatistics.dbg.json +1 -1
  183. package/build/contracts/src/precompiles/ArbSys.sol/ArbSys.dbg.json +1 -1
  184. package/build/contracts/src/precompiles/ArbWasm.sol/ArbWasm.dbg.json +1 -1
  185. package/build/contracts/src/precompiles/ArbWasmCache.sol/ArbWasmCache.dbg.json +1 -1
  186. package/build/contracts/src/precompiles/ArbosActs.sol/ArbosActs.dbg.json +1 -1
  187. package/build/contracts/src/precompiles/ArbosTest.sol/ArbosTest.dbg.json +1 -1
  188. package/build/contracts/src/rollup/AbsRollupEventInbox.sol/AbsRollupEventInbox.dbg.json +1 -1
  189. package/build/contracts/src/rollup/Assertion.sol/AssertionNodeLib.dbg.json +1 -1
  190. package/build/contracts/src/rollup/Assertion.sol/AssertionNodeLib.json +2 -2
  191. package/build/contracts/src/rollup/AssertionState.sol/AssertionStateLib.dbg.json +1 -1
  192. package/build/contracts/src/rollup/AssertionState.sol/AssertionStateLib.json +2 -2
  193. package/build/contracts/src/rollup/BOLDUpgradeAction.sol/BOLDUpgradeAction.dbg.json +1 -1
  194. package/build/contracts/src/rollup/BOLDUpgradeAction.sol/BOLDUpgradeAction.json +2 -2
  195. package/build/contracts/src/rollup/BOLDUpgradeAction.sol/ConstantArrayStorage.dbg.json +1 -1
  196. package/build/contracts/src/rollup/BOLDUpgradeAction.sol/ConstantArrayStorage.json +2 -2
  197. package/build/contracts/src/rollup/BOLDUpgradeAction.sol/IOldRollup.dbg.json +1 -1
  198. package/build/contracts/src/rollup/BOLDUpgradeAction.sol/IOldRollupAdmin.dbg.json +1 -1
  199. package/build/contracts/src/rollup/BOLDUpgradeAction.sol/ISeqInboxPostUpgradeInit.dbg.json +1 -1
  200. package/build/contracts/src/rollup/BOLDUpgradeAction.sol/StateHashPreImageLookup.dbg.json +1 -1
  201. package/build/contracts/src/rollup/BOLDUpgradeAction.sol/StateHashPreImageLookup.json +2 -2
  202. package/build/contracts/src/rollup/BridgeCreator.sol/BridgeCreator.dbg.json +1 -1
  203. package/build/contracts/src/rollup/BridgeCreator.sol/BridgeCreator.json +7 -2
  204. package/build/contracts/src/rollup/DeployHelper.sol/DeployHelper.dbg.json +1 -1
  205. package/build/contracts/src/rollup/DeployHelper.sol/DeployHelper.json +2 -2
  206. package/build/contracts/src/rollup/ERC20RollupEventInbox.sol/ERC20RollupEventInbox.dbg.json +1 -1
  207. package/build/contracts/src/rollup/ERC20RollupEventInbox.sol/ERC20RollupEventInbox.json +2 -2
  208. package/build/contracts/src/rollup/FactoryDeployerHelper.sol/FactoryDeployerHelper.dbg.json +1 -1
  209. package/build/contracts/src/rollup/FactoryDeployerHelper.sol/IDeployHelper.dbg.json +1 -1
  210. package/build/contracts/src/rollup/FactoryDeployerHelper.sol/IERC20.dbg.json +1 -1
  211. package/build/contracts/src/rollup/FactoryDeployerHelper.sol/IERC20Bridge.dbg.json +1 -1
  212. package/build/contracts/src/rollup/FactoryDeployerHelper.sol/IInboxBase.dbg.json +1 -1
  213. package/build/contracts/src/rollup/IRollupAdmin.sol/IRollupAdmin.dbg.json +1 -1
  214. package/build/contracts/src/rollup/IRollupCore.sol/IRollupCore.dbg.json +1 -1
  215. package/build/contracts/src/rollup/IRollupEventInbox.sol/IRollupEventInbox.dbg.json +1 -1
  216. package/build/contracts/src/rollup/IRollupLogic.sol/IRollupUser.dbg.json +1 -1
  217. package/build/contracts/src/rollup/RollupAdminLogic.sol/RollupAdminLogic.dbg.json +1 -1
  218. package/build/contracts/src/rollup/RollupAdminLogic.sol/RollupAdminLogic.json +2 -2
  219. package/build/contracts/src/rollup/RollupCore.sol/RollupCore.dbg.json +1 -1
  220. package/build/contracts/src/rollup/RollupCreator.sol/RollupCreator.dbg.json +1 -1
  221. package/build/contracts/src/rollup/RollupCreator.sol/RollupCreator.json +7 -2
  222. package/build/contracts/src/rollup/RollupEventInbox.sol/RollupEventInbox.dbg.json +1 -1
  223. package/build/contracts/src/rollup/RollupEventInbox.sol/RollupEventInbox.json +2 -2
  224. package/build/contracts/src/rollup/RollupLib.sol/RollupLib.dbg.json +1 -1
  225. package/build/contracts/src/rollup/RollupLib.sol/RollupLib.json +2 -2
  226. package/build/contracts/src/rollup/RollupProxy.sol/RollupProxy.dbg.json +1 -1
  227. package/build/contracts/src/rollup/RollupProxy.sol/RollupProxy.json +2 -2
  228. package/build/contracts/src/rollup/RollupUserLogic.sol/RollupUserLogic.dbg.json +1 -1
  229. package/build/contracts/src/rollup/RollupUserLogic.sol/RollupUserLogic.json +2 -2
  230. package/build/contracts/src/rollup/ValidatorWallet.sol/ValidatorWallet.dbg.json +1 -1
  231. package/build/contracts/src/rollup/ValidatorWallet.sol/ValidatorWallet.json +2 -2
  232. package/build/contracts/src/rollup/ValidatorWalletCreator.sol/ValidatorWalletCreator.dbg.json +1 -1
  233. package/build/contracts/src/rollup/ValidatorWalletCreator.sol/ValidatorWalletCreator.json +2 -2
  234. package/build/contracts/src/state/Deserialize.sol/Deserialize.dbg.json +1 -1
  235. package/build/contracts/src/state/GlobalState.sol/GlobalStateLib.dbg.json +1 -1
  236. package/build/contracts/src/state/Instructions.sol/Instructions.dbg.json +1 -1
  237. package/build/contracts/src/state/Machine.sol/MachineLib.dbg.json +1 -1
  238. package/build/contracts/src/state/MerkleProof.sol/MerkleProofLib.dbg.json +1 -1
  239. package/build/contracts/src/state/Module.sol/ModuleLib.dbg.json +1 -1
  240. package/build/contracts/src/state/ModuleMemory.sol/ModuleMemoryLib.dbg.json +1 -1
  241. package/build/contracts/src/state/ModuleMemoryCompact.sol/ModuleMemoryCompactLib.dbg.json +1 -1
  242. package/build/contracts/src/state/MultiStack.sol/MultiStackLib.dbg.json +1 -1
  243. package/build/contracts/src/state/PcArray.sol/PcArrayLib.dbg.json +1 -1
  244. package/build/contracts/src/state/StackFrame.sol/StackFrameLib.dbg.json +1 -1
  245. package/build/contracts/src/state/Value.sol/ValueLib.dbg.json +1 -1
  246. package/build/contracts/src/state/ValueArray.sol/ValueArrayLib.dbg.json +1 -1
  247. package/build/contracts/src/state/ValueStack.sol/ValueStackLib.dbg.json +1 -1
  248. package/build/contracts/src/stylus/StylusDeployer.sol/StylusDeployer.dbg.json +4 -0
  249. package/build/contracts/src/stylus/StylusDeployer.sol/StylusDeployer.json +149 -0
  250. package/build/contracts/src/test-helpers/BridgeTester.sol/BridgeTester.dbg.json +1 -1
  251. package/build/contracts/src/test-helpers/BridgeTester.sol/BridgeTester.json +2 -2
  252. package/build/contracts/src/test-helpers/CryptographyPrimitivesTester.sol/CryptographyPrimitivesTester.dbg.json +1 -1
  253. package/build/contracts/src/test-helpers/EthVault.sol/EthVault.dbg.json +1 -1
  254. package/build/contracts/src/test-helpers/MessageTester.sol/MessageTester.dbg.json +1 -1
  255. package/build/contracts/src/test-helpers/NoReceiveForwarder.sol/ConstructorError.dbg.json +4 -0
  256. package/build/contracts/src/test-helpers/NoReceiveForwarder.sol/ConstructorError.json +16 -0
  257. package/build/contracts/src/test-helpers/NoReceiveForwarder.sol/ConstructorFine.dbg.json +4 -0
  258. package/build/contracts/src/test-helpers/NoReceiveForwarder.sol/ConstructorFine.json +29 -0
  259. package/build/contracts/src/test-helpers/NoReceiveForwarder.sol/NoReceiveForwarder.dbg.json +4 -0
  260. package/build/contracts/src/test-helpers/NoReceiveForwarder.sol/NoReceiveForwarder.json +29 -0
  261. package/build/contracts/src/test-helpers/NoReceiveForwarder.sol/ReceivingForwarder.dbg.json +4 -0
  262. package/build/contracts/src/test-helpers/NoReceiveForwarder.sol/ReceivingForwarder.json +33 -0
  263. package/build/contracts/src/test-helpers/OutboxWithoutOptTester.sol/OutboxWithoutOptTester.dbg.json +1 -1
  264. package/build/contracts/src/test-helpers/OutboxWithoutOptTester.sol/OutboxWithoutOptTester.json +2 -2
  265. package/build/contracts/src/test-helpers/RollupMock.sol/RollupMock.dbg.json +1 -1
  266. package/build/contracts/src/test-helpers/TestToken.sol/TestToken.dbg.json +1 -1
  267. package/build/contracts/src/test-helpers/ValueArrayTester.sol/ValueArrayTester.dbg.json +1 -1
  268. package/package.json +7 -2
  269. package/src/bridge/ISequencerInbox.sol +33 -1
  270. package/src/bridge/SequencerInbox.sol +49 -10
  271. package/src/bridge/extra/ERC20MigrationOutbox.sol +44 -0
  272. package/src/bridge/extra/IERC20MigrationOutbox.sol +38 -0
  273. package/src/express-lane-auction/IExpressLaneAuction.sol +4 -0
  274. package/src/libraries/Error.sol +3 -0
  275. package/src/precompiles/ArbNativeTokenManager.sol +39 -0
  276. package/src/precompiles/ArbOwner.sol +28 -0
  277. package/src/precompiles/ArbOwnerPublic.sol +10 -0
  278. package/src/rollup/BridgeCreator.sol +5 -2
  279. package/src/rollup/ERC20RollupEventInbox.sol +16 -2
  280. package/src/rollup/RollupAdminLogic.sol +0 -3
  281. package/src/rollup/RollupCreator.sol +3 -1
  282. package/src/stylus/StylusDeployer.sol +165 -0
  283. package/src/test-helpers/NoReceiveForwarder.sol +38 -0
  284. package/build/contracts/src/mocks/ArbOS11To32UpgradeTest.sol/ArbOS11To32UpgradeTest.dbg.json +0 -4
  285. package/build/contracts/src/mocks/ArbOS11To32UpgradeTest.sol/ArbOS11To32UpgradeTest.json +0 -24
  286. package/build/contracts/src/mocks/Benchmarks.sol/Benchmarks.dbg.json +0 -4
  287. package/build/contracts/src/mocks/Benchmarks.sol/Benchmarks.json +0 -46
  288. package/build/contracts/src/mocks/BigMap.sol/BigMap.dbg.json +0 -4
  289. package/build/contracts/src/mocks/BigMap.sol/BigMap.json +0 -48
  290. package/build/contracts/src/mocks/CreateTest.sol/CreateTest.dbg.json +0 -4
  291. package/build/contracts/src/mocks/CreateTest.sol/CreateTest.json +0 -15
  292. package/build/contracts/src/mocks/HostioTest.sol/HostioTest.dbg.json +0 -4
  293. package/build/contracts/src/mocks/HostioTest.sol/HostioTest.json +0 -513
  294. package/build/contracts/src/mocks/MultiCallTest.sol/MultiCallTest.dbg.json +0 -4
  295. package/build/contracts/src/mocks/MultiCallTest.sol/MultiCallTest.json +0 -71
  296. package/build/contracts/src/mocks/PendingBlkTimeAndNrAdvanceCheck.sol/PendingBlkTimeAndNrAdvanceCheck.dbg.json +0 -4
  297. package/build/contracts/src/mocks/PendingBlkTimeAndNrAdvanceCheck.sol/PendingBlkTimeAndNrAdvanceCheck.json +0 -36
  298. package/build/contracts/src/mocks/Program.sol/ProgramTest.dbg.json +0 -4
  299. package/build/contracts/src/mocks/Program.sol/ProgramTest.json +0 -142
  300. package/build/contracts/src/mocks/ProxyAdminForBinding.sol/ProxyAdminForBinding.dbg.json +0 -4
  301. package/build/contracts/src/mocks/ProxyAdminForBinding.sol/ProxyAdminForBinding.json +0 -160
  302. package/build/contracts/src/mocks/SdkStorage.sol/SdkStorage.dbg.json +0 -4
  303. package/build/contracts/src/mocks/SdkStorage.sol/SdkStorage.json +0 -25
  304. package/build/contracts/src/mocks/SelfDestruct.sol/SelfDestructInConstructorWithDestination.dbg.json +0 -4
  305. package/build/contracts/src/mocks/SelfDestruct.sol/SelfDestructInConstructorWithDestination.json +0 -22
  306. package/build/contracts/src/mocks/SelfDestruct.sol/SelfDestructInConstructorWithoutDestination.dbg.json +0 -4
  307. package/build/contracts/src/mocks/SelfDestruct.sol/SelfDestructInConstructorWithoutDestination.json +0 -16
  308. package/build/contracts/src/mocks/SelfDestruct.sol/SelfDestructOutsideConstructor.dbg.json +0 -4
  309. package/build/contracts/src/mocks/SelfDestruct.sol/SelfDestructOutsideConstructor.json +0 -36
  310. package/build/contracts/src/mocks/Simple.sol/Simple.dbg.json +0 -4
  311. package/build/contracts/src/mocks/Simple.sol/Simple.json +0 -303
  312. package/build/contracts/src/mocks/SimpleCacheManager.sol/SimpleCacheManager.dbg.json +0 -4
  313. package/build/contracts/src/mocks/SimpleCacheManager.sol/SimpleCacheManager.json +0 -37
  314. package/build/contracts/src/mocks/SimpleProxy.sol/SimpleProxy.dbg.json +0 -4
  315. package/build/contracts/src/mocks/SimpleProxy.sol/SimpleProxy.json +0 -30
  316. package/src/mocks/ArbOS11To32UpgradeTest.sol +0 -18
  317. package/src/mocks/Benchmarks.sol +0 -52
  318. package/src/mocks/BigMap.sol +0 -23
  319. package/src/mocks/CreateTest.sol +0 -44
  320. package/src/mocks/HostioTest.sol +0 -200
  321. package/src/mocks/MultiCallTest.sol +0 -119
  322. package/src/mocks/PendingBlkTimeAndNrAdvanceCheck.sol +0 -31
  323. package/src/mocks/Program.sol +0 -128
  324. package/src/mocks/ProxyAdminForBinding.sol +0 -9
  325. package/src/mocks/SdkStorage.sol +0 -176
  326. package/src/mocks/SelfDestruct.sol +0 -33
  327. package/src/mocks/Simple.sol +0 -168
  328. package/src/mocks/SimpleCacheManager.sol +0 -29
  329. package/src/mocks/SimpleProxy.sol +0 -21
@@ -206,6 +206,9 @@ error Deprecated();
206
206
  /// @dev Thrown when any component of maxTimeVariation is over uint64
207
207
  error BadMaxTimeVariation();
208
208
 
209
+ /// @dev Thrown when a fee token pricer is provided but the chain doesn't use a fee token
210
+ error CannotSetFeeTokenPricer();
211
+
209
212
  /// @dev Thrown when any component of bufferConfig is zero
210
213
  error BadBufferConfig();
211
214
 
@@ -0,0 +1,39 @@
1
+ // Copyright 2021-2025, Offchain Labs, Inc.
2
+ // For license information, see https://github.com/OffchainLabs/nitro-contracts/blob/main/LICENSE.md
3
+ // SPDX-License-Identifier: BUSL-1.1
4
+
5
+ pragma solidity >=0.4.21 <0.9.0;
6
+
7
+ /**
8
+ * @title Enables minting and burning native tokens.
9
+ * @notice Authorized callers are added/removed through ArbOwner precompile.
10
+ * Precompiled contract that exists in every Arbitrum chain at 0x0000000000000000000000000000000000000073.
11
+ * Available in ArbOS version 41
12
+ */
13
+ interface ArbNativeTokenManager {
14
+ /**
15
+ * @notice Emitted when some amount of the native gas token is minted to a NativeTokenOwner.
16
+ */
17
+ event NativeTokenMinted(address indexed to, uint256 amount);
18
+
19
+ /**
20
+ * @notice Emitted when some amount of the native gas token is burned from a NativeTokenOwner.
21
+ */
22
+ event NativeTokenBurned(address indexed from, uint256 amount);
23
+
24
+ /**
25
+ * @notice In case the caller is authorized,
26
+ * mints some amount of the native gas token for this chain to the caller.
27
+ */
28
+ function mintNativeToken(
29
+ uint256 amount
30
+ ) external;
31
+
32
+ /**
33
+ * @notice In case the caller is authorized,
34
+ * burns some amount of the native gas token for this chain from the caller.
35
+ */
36
+ function burnNativeToken(
37
+ uint256 amount
38
+ ) external;
39
+ }
@@ -33,6 +33,34 @@ interface ArbOwner {
33
33
  /// @notice Retrieves the list of chain owners
34
34
  function getAllChainOwners() external view returns (address[] memory);
35
35
 
36
+ /// @notice Sets the NativeTokenManagementFrom time
37
+ /// Available in ArbOS version 41
38
+ function setNativeTokenManagementFrom(
39
+ uint64 timestamp
40
+ ) external;
41
+
42
+ /// @notice Add account as a native token owner
43
+ /// Available in ArbOS version 41
44
+ function addNativeTokenOwner(
45
+ address newOwner
46
+ ) external;
47
+
48
+ /// @notice Remove account from the list of native token owners
49
+ /// Available in ArbOS version 41
50
+ function removeNativeTokenOwner(
51
+ address ownerToRemove
52
+ ) external;
53
+
54
+ /// @notice See if the user is a native token owner
55
+ /// Available in ArbOS version 41
56
+ function isNativeTokenOwner(
57
+ address addr
58
+ ) external view returns (bool);
59
+
60
+ /// @notice Retrieves the list of native token owners
61
+ /// Available in ArbOS version 41
62
+ function getAllNativeTokenOwners() external view returns (address[] memory);
63
+
36
64
  /// @notice Set how slowly ArbOS updates its estimate of the L1 basefee
37
65
  function setL1BaseFeeEstimateInertia(
38
66
  uint64 inertia
@@ -24,6 +24,16 @@ interface ArbOwnerPublic {
24
24
  /// @notice Retrieves the list of chain owners
25
25
  function getAllChainOwners() external view returns (address[] memory);
26
26
 
27
+ /// @notice See if the user is a native token owner
28
+ /// Available in ArbOS version 41
29
+ function isNativeTokenOwner(
30
+ address addr
31
+ ) external view returns (bool);
32
+
33
+ /// @notice Retrieves the list of native token owners
34
+ /// Available in ArbOS version 41
35
+ function getAllNativeTokenOwners() external view returns (address[] memory);
36
+
27
37
  /// @notice Gets the network fee collector
28
38
  function getNetworkFeeAccount() external view returns (address);
29
39
 
@@ -120,7 +120,8 @@ contract BridgeCreator is Ownable {
120
120
  address rollup,
121
121
  address nativeToken,
122
122
  ISequencerInbox.MaxTimeVariation calldata maxTimeVariation,
123
- BufferConfig calldata bufferConfig
123
+ BufferConfig calldata bufferConfig,
124
+ IFeeTokenPricer feeTokenPricer
124
125
  ) external returns (BridgeContracts memory) {
125
126
  // use create2 salt to ensure deterministic addresses
126
127
  bytes32 create2Salt = keccak256(abi.encode(msg.data, msg.sender));
@@ -141,7 +142,9 @@ contract BridgeCreator is Ownable {
141
142
  } else {
142
143
  IERC20Bridge(address(frame.bridge)).initialize(IOwnable(rollup), nativeToken);
143
144
  }
144
- frame.sequencerInbox.initialize(IBridge(frame.bridge), maxTimeVariation, bufferConfig);
145
+ frame.sequencerInbox.initialize(
146
+ IBridge(frame.bridge), maxTimeVariation, bufferConfig, feeTokenPricer
147
+ );
145
148
  frame.inbox.initialize(frame.bridge, frame.sequencerInbox);
146
149
  frame.rollupEventInbox.initialize(frame.bridge);
147
150
  frame.outbox.initialize(frame.bridge);
@@ -6,6 +6,7 @@ pragma solidity ^0.8.0;
6
6
 
7
7
  import "./AbsRollupEventInbox.sol";
8
8
  import "../bridge/IERC20Bridge.sol";
9
+ import "../bridge/ISequencerInbox.sol";
9
10
  import {INITIALIZATION_MSG_TYPE} from "../libraries/MessageTypes.sol";
10
11
 
11
12
  /**
@@ -23,8 +24,21 @@ contract ERC20RollupEventInbox is AbsRollupEventInbox {
23
24
  );
24
25
  }
25
26
 
26
- function _currentDataCostToReport() internal pure override returns (uint256) {
27
- // at the moment chains using fee token in Anytrust mode do not charge for the data posting fees
27
+ function _currentDataCostToReport() internal override returns (uint256) {
28
+ // if a fee token pricer is configured then it can be used to charge for data posting fees
29
+ ISequencerInbox seqInbox = ISequencerInbox(bridge.sequencerInbox());
30
+ IFeeTokenPricer feeTokenPricer = seqInbox.feeTokenPricer();
31
+ if (address(feeTokenPricer) != address(0)) {
32
+ uint256 gasPrice = block.basefee;
33
+ if (ArbitrumChecker.runningOnArbitrum()) {
34
+ gasPrice += ArbGasInfo(address(0x6c)).getL1BaseFeeEstimate();
35
+ }
36
+ // scale the current gas price to the child chain gas price
37
+ uint256 exchangeRate = feeTokenPricer.getExchangeRate();
38
+ return (gasPrice * exchangeRate) / 1e18;
39
+ }
40
+
41
+ // if no fee token pricer is configured then data costs cant be reimbursed, and l1 price is set to 0
28
42
  return 0;
29
43
  }
30
44
  }
@@ -308,9 +308,6 @@ contract RollupAdminLogic is RollupCore, IRollupAdmin, DoubleLogicUUPSUpgradeabl
308
308
  // 4. create a new assertion using the assertion with the updated config has as a prev
309
309
  // 5. force confirm it - this is necessary to set latestConfirmed on the correct line
310
310
  // 6. unpause the contract
311
-
312
- // Normally, a new assertion is created using its prev's confirmPeriodBlocks
313
- // in the case of a force create, we use the rollup's current confirmPeriodBlocks
314
311
  createNewAssertion(assertion, prevAssertionHash, expectedAssertionHash);
315
312
 
316
313
  emit AssertionForceCreated(expectedAssertionHash);
@@ -41,6 +41,7 @@ contract RollupCreator is Ownable {
41
41
  uint256 maxFeePerGasForRetryables;
42
42
  address[] batchPosters;
43
43
  address batchPosterManager;
44
+ IFeeTokenPricer feeTokenPricer;
44
45
  }
45
46
 
46
47
  BridgeCreator public bridgeCreator;
@@ -186,7 +187,8 @@ contract RollupCreator is Ownable {
186
187
  address(rollup),
187
188
  deployParams.nativeToken,
188
189
  deployParams.config.sequencerInboxMaxTimeVariation,
189
- deployParams.config.bufferConfig
190
+ deployParams.config.bufferConfig,
191
+ deployParams.feeTokenPricer
190
192
  );
191
193
 
192
194
  IEdgeChallengeManager challengeManager =
@@ -0,0 +1,165 @@
1
+ // SPDX-License-Identifier: MIT
2
+ pragma solidity 0.8.17;
3
+
4
+ import {ArbWasm} from "../precompiles/ArbWasm.sol";
5
+
6
+ /// @title A Stylus contract deployer, activator and initializer
7
+ /// @author The name of the author
8
+ /// @notice Stylus contracts do not support constructors. Instead, Stylus devs can use this contract to deploy and
9
+ /// initialize their contracts atomically
10
+ contract StylusDeployer {
11
+ ArbWasm constant ARB_WASM = ArbWasm(0x0000000000000000000000000000000000000071);
12
+
13
+ event ContractDeployed(address deployedContract);
14
+
15
+ error ContractDeploymentError(bytes bytecode);
16
+ error ContractInitializationError(address newContract, bytes data);
17
+ error RefundExcessValueError(uint256 excessValue);
18
+ error EmptyBytecode();
19
+ error InitValueButNotInitData();
20
+
21
+ /// @notice Deploy, activate and initialize a stylus contract
22
+ /// In order to call a stylus contract, and therefore initialize it, it must first be activated.
23
+ /// This contract provides an atomic way of deploying, activating and initializing a stylus contract.
24
+ ///
25
+ /// Initialisation will be called if initData is supplied, other initialization is skipped
26
+ /// Activation is not always necessary. If a contract has the same code has as another recently activated
27
+ /// contract then activation will be skipped.
28
+ /// If additional value remains in the contract after activation it will be transferred to the msg.sender
29
+ /// to that end the caller must ensure that they can receive eth.
30
+ ///
31
+ /// The caller should do the following before calling this contract:
32
+ /// 1. Check whether the contract will require activation, and if so what the cost will be.
33
+ /// This can be done by spoofing an address with the contract code, then calling ArbWasm.programVersion to compare the
34
+ /// the returned result against ArbWasm.stylusVersion. If activation is required ArbWasm.activateProgram can then be called
35
+ /// to find the returned dataFee.
36
+ /// 2. Next this deploy function can be called. The value of the call must be set to the previously ascertained dataFee + initValue
37
+ /// If activation is not require, the value of the call should be set to initValue
38
+ ///
39
+ /// Note: Stylus contract caching is not done by the deployer, and will have to be done separately after deployment.
40
+ /// See https://docs.arbitrum.io/stylus/how-tos/caching-contracts for more details on caching
41
+ /// @param bytecode The bytecode of the stylus contract to be deployed
42
+ /// @param initData Initialisation call data. After deployment the contract will be called with this data
43
+ /// If no initialisation data is provided then the newly deployed contract will not be called.
44
+ /// This means that the receive or dataless fallback function cannot be called from this contract.
45
+ /// @param initValue Initialisation value. After deployment, the contract will be called with the init data and this value.
46
+ /// At least as much eth as init value must be provided with this call. Init value is specified here separately
47
+ /// rather than using the msg.value since the msg.value may need to be greater than the init value to accomodate activation data fee.
48
+ /// See the @notice block above for more details.
49
+ /// @param salt If a non zero salt is provided the contract will be created using CREATE2 instead of CREATE
50
+ /// The supplied salt will be hashed with the initData so that wherever the address is observed
51
+ /// it was initialised with the same variables.
52
+ /// @return The address of the deployed conract
53
+ function deploy(
54
+ bytes calldata bytecode,
55
+ bytes calldata initData,
56
+ uint256 initValue,
57
+ bytes32 salt
58
+ ) public payable returns (address) {
59
+ if (salt != 0) {
60
+ // if a salt was supplied, hash the salt with the init data. This guarantees that
61
+ // anywhere the address of this contract is seen the same init data was used
62
+ salt = initSalt(salt, initData);
63
+ }
64
+
65
+ address newContractAddress = deployContract(bytecode, salt);
66
+ bool shouldActivate = requiresActivation(newContractAddress);
67
+ uint256 dataFee = 0;
68
+ if (shouldActivate) {
69
+ // ensure there will be enough left over for init
70
+ // activateProgram will return unused value back to this contract without an EVM call
71
+ uint256 activationValue = msg.value - initValue;
72
+ (, dataFee) = ARB_WASM.activateProgram{value: activationValue}(newContractAddress);
73
+ }
74
+
75
+ // initialize - this will fail if the program wasn't activated by this point
76
+ // we check if initData exists to avoid calling contracts unnecessarily
77
+ if (initData.length != 0) {
78
+ (bool success, bytes memory data) =
79
+ address(newContractAddress).call{value: initValue}(initData);
80
+ if (!success) {
81
+ revert ContractInitializationError(newContractAddress, data);
82
+ }
83
+ } else if (initValue != 0) {
84
+ // if initValue exists init data should too
85
+ revert InitValueButNotInitData();
86
+ }
87
+
88
+ // refund any remaining value
89
+ uint256 bal = msg.value - dataFee - initValue;
90
+ if (bal != 0) {
91
+ // the caller must be payable
92
+ (bool sent,) = payable(msg.sender).call{value: bal}("");
93
+ if (!sent) {
94
+ revert RefundExcessValueError(bal);
95
+ }
96
+ }
97
+
98
+ // activation already emits the following event:
99
+ // event ProgramActivated(bytes32 indexed codehash, bytes32 moduleHash, address program, uint256 dataFee, uint16 version);
100
+ emit ContractDeployed(newContractAddress);
101
+
102
+ return newContractAddress;
103
+ }
104
+
105
+ /// @notice When using CREATE2 the deployer includes the init data and value in the salt so that callers
106
+ /// can be sure that wherever they encourter this address it was initialized with the same data and value
107
+ /// @param salt A user supplied salt
108
+ /// @param initData The init data that will be used to init the deployed contract
109
+ function initSalt(bytes32 salt, bytes calldata initData) public pure returns (bytes32) {
110
+ return keccak256(abi.encodePacked(salt, initData));
111
+ }
112
+
113
+ /// @notice Checks whether a contract requires activation
114
+ function requiresActivation(
115
+ address addr
116
+ ) public view returns (bool) {
117
+ // currently codeHashVersion returns an error when codeHashVersion != stylus version
118
+ // so we do a try/catch to to check it
119
+ uint16 codeHashVersion;
120
+ try ARB_WASM.codehashVersion(addr.codehash) returns (uint16 version) {
121
+ codeHashVersion = version;
122
+ } catch {
123
+ // stylus version is always >= 1
124
+ codeHashVersion = 0;
125
+ }
126
+
127
+ // due to the bug in ARB_WASM.codeHashVersion we know that codeHashVersion will either be 0 or the current
128
+ // version. We still check that is not equal to the stylusVersion
129
+ return codeHashVersion != ARB_WASM.stylusVersion();
130
+ }
131
+
132
+ /// @notice Deploy the a contract with the supplied bytecode.
133
+ /// Will create2 if the supplied salt is non zero
134
+ function deployContract(bytes memory bytecode, bytes32 salt) internal returns (address) {
135
+ if (bytecode.length == 0) {
136
+ revert EmptyBytecode();
137
+ }
138
+
139
+ address newContractAddress;
140
+ if (salt != 0) {
141
+ assembly {
142
+ newContractAddress := create2(0, add(bytecode, 0x20), mload(bytecode), salt)
143
+ }
144
+ } else {
145
+ assembly {
146
+ newContractAddress := create(0, add(bytecode, 0x20), mload(bytecode))
147
+ }
148
+ }
149
+
150
+ // bubble up the revert if there was one
151
+ assembly {
152
+ if and(iszero(newContractAddress), not(iszero(returndatasize()))) {
153
+ let p := mload(0x40)
154
+ returndatacopy(p, 0, returndatasize())
155
+ revert(p, returndatasize())
156
+ }
157
+ }
158
+
159
+ if (newContractAddress == address(0)) {
160
+ revert ContractDeploymentError(bytecode);
161
+ }
162
+
163
+ return newContractAddress;
164
+ }
165
+ }
@@ -0,0 +1,38 @@
1
+ // SPDX-License-Identifier: MIT
2
+ pragma solidity ^0.8.0;
3
+
4
+ /// @notice A call forward that doesnt implement the receive or fallback functions, so cant receive value
5
+ contract NoReceiveForwarder {
6
+ function forward(address to, bytes calldata data) public payable {
7
+ (bool success,) = address(to).call{value: msg.value}(data);
8
+ require(success, "call forward failed");
9
+ }
10
+ }
11
+
12
+ /// @notice A call forward that does implement the receive or fallback functions, so cant receive value
13
+ contract ReceivingForwarder {
14
+ function forward(address to, bytes calldata data) public payable {
15
+ (bool success,) = address(to).call{value: msg.value}(data);
16
+ require(success, "call forward failed");
17
+ }
18
+
19
+ receive() external payable {}
20
+ }
21
+
22
+ /// @notice Errors upon construction
23
+ contract ConstructorError {
24
+ constructor() {
25
+ require(false, "test error in constructor");
26
+ }
27
+ }
28
+
29
+ /// @notice Errors upon construction
30
+ contract ConstructorFine {
31
+ constructor() {
32
+ require(true, "test error in constructor");
33
+ }
34
+
35
+ function number() public pure returns (uint256) {
36
+ return 0;
37
+ }
38
+ }
@@ -1,4 +0,0 @@
1
- {
2
- "_format": "hh-sol-dbg-1",
3
- "buildInfo": "../../../build-info/1683a44162c56a9ae49a49989460e03e.json"
4
- }
@@ -1,24 +0,0 @@
1
- {
2
- "_format": "hh-sol-artifact-1",
3
- "contractName": "ArbOS11To32UpgradeTest",
4
- "sourceName": "src/mocks/ArbOS11To32UpgradeTest.sol",
5
- "abi": [
6
- {
7
- "inputs": [],
8
- "name": "mcopy",
9
- "outputs": [
10
- {
11
- "internalType": "bytes32",
12
- "name": "x",
13
- "type": "bytes32"
14
- }
15
- ],
16
- "stateMutability": "nonpayable",
17
- "type": "function"
18
- }
19
- ],
20
- "bytecode": "0x608060405234801561000f575f80fd5b5061014e8061001d5f395ff3fe608060405234801561000f575f80fd5b5060043610610029575f3560e01c806319b0cc231461002d575b5f80fd5b610035610047565b60405190815260200160405180910390f35b5f60096020526020805f5e5f51905060646001600160a01b031663051038f26040518163ffffffff1660e01b8152600401602060405180830381865afa158015610093573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906100b79190610101565b6057146100fe5760405162461bcd60e51b815260206004820152601160248201527022ac2822a1aa22a22fa0a92127a9af999960791b604482015260640160405180910390fd5b90565b5f60208284031215610111575f80fd5b505191905056fea26469706673582212209dea1ebe41065a9fcc7551ce48ee3750697e8689adeae54c74e6ead3a017aef464736f6c63430008180033",
21
- "deployedBytecode": "0x608060405234801561000f575f80fd5b5060043610610029575f3560e01c806319b0cc231461002d575b5f80fd5b610035610047565b60405190815260200160405180910390f35b5f60096020526020805f5e5f51905060646001600160a01b031663051038f26040518163ffffffff1660e01b8152600401602060405180830381865afa158015610093573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906100b79190610101565b6057146100fe5760405162461bcd60e51b815260206004820152601160248201527022ac2822a1aa22a22fa0a92127a9af999960791b604482015260640160405180910390fd5b90565b5f60208284031215610111575f80fd5b505191905056fea26469706673582212209dea1ebe41065a9fcc7551ce48ee3750697e8689adeae54c74e6ead3a017aef464736f6c63430008180033",
22
- "linkReferences": {},
23
- "deployedLinkReferences": {}
24
- }
@@ -1,4 +0,0 @@
1
- {
2
- "_format": "hh-sol-dbg-1",
3
- "buildInfo": "../../../build-info/05975d8ff980ada82754db53ad500688.json"
4
- }
@@ -1,46 +0,0 @@
1
- {
2
- "_format": "hh-sol-artifact-1",
3
- "contractName": "Benchmarks",
4
- "sourceName": "src/mocks/Benchmarks.sol",
5
- "abi": [
6
- {
7
- "inputs": [],
8
- "name": "fillBlockAdd",
9
- "outputs": [],
10
- "stateMutability": "payable",
11
- "type": "function"
12
- },
13
- {
14
- "inputs": [],
15
- "name": "fillBlockHash",
16
- "outputs": [],
17
- "stateMutability": "payable",
18
- "type": "function"
19
- },
20
- {
21
- "inputs": [],
22
- "name": "fillBlockMulMod",
23
- "outputs": [],
24
- "stateMutability": "payable",
25
- "type": "function"
26
- },
27
- {
28
- "inputs": [],
29
- "name": "fillBlockQuickStep",
30
- "outputs": [],
31
- "stateMutability": "payable",
32
- "type": "function"
33
- },
34
- {
35
- "inputs": [],
36
- "name": "fillBlockRecover",
37
- "outputs": [],
38
- "stateMutability": "payable",
39
- "type": "function"
40
- }
41
- ],
42
- "bytecode": "0x608060405234801561001057600080fd5b50610321806100206000396000f3fe60806040526004361061005a5760003560e01c80636488e930116100435780636488e93014610071578063ea01a66f14610079578063fb721c181461008157600080fd5b80630b39d8e51461005f578063142ddcf914610069575b600080fd5b610067610089565b005b6100676101ff565b610067610229565b610067610296565b6100676102a0565b7feddecf107b5740cef7f5a01e3ea7e287665c4e75a8eb6afae2fda2e3d436778673361594f5429d23ece0a88e4fbe529e1c49d524d8601b7fc6178c2de1078cd36c3bd302cde755340d7f17fcb3fcc0b9c333ba03b217029f7f5fdbcefe2675e96219cdae57a7894280bf80fd40d44ce146a35e169ea6a78fd35b60408051600081526020810180835287905260ff851691810191909152606081018390526080810182905273ffffffffffffffffffffffffffffffffffffffff85169060019060a0016020604051602081039080840390855afa15801561016f573d6000803e3d6000fd5b5050506020604051035173ffffffffffffffffffffffffffffffffffffffff16146101fa576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600e60248201527f57524f4e475f415242494e415554000000000000000000000000000000000000604482015260640160405180910390fd5b610104565b60005b7feddecf107b5740cef7f5a01e3ea7e287665c4e75a8eb6afae2fda2e3d436778601610202565b7feddecf107b5740cef7f5a01e3ea7e287665c4e75a8eb6afae2fda2e3d43677865b7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffefffffc2f7fc6178c2de1078cd36c3bd302cde755340d7f17fcb3fcc0b9c333ba03b217029f8209905061024b565b60005b5034610299565b7feddecf107b5740cef7f5a01e3ea7e287665c4e75a8eb6afae2fda2e3d43677865b6040805160208101839052016040516020818303038152906040528051906020012090506102c256fea264697066735822122027bb326e97bf6a46d542532f574c63c704a8e473e80dfcc3f9d3971a6d1d41b764736f6c63430008110033",
43
- "deployedBytecode": "0x60806040526004361061005a5760003560e01c80636488e930116100435780636488e93014610071578063ea01a66f14610079578063fb721c181461008157600080fd5b80630b39d8e51461005f578063142ddcf914610069575b600080fd5b610067610089565b005b6100676101ff565b610067610229565b610067610296565b6100676102a0565b7feddecf107b5740cef7f5a01e3ea7e287665c4e75a8eb6afae2fda2e3d436778673361594f5429d23ece0a88e4fbe529e1c49d524d8601b7fc6178c2de1078cd36c3bd302cde755340d7f17fcb3fcc0b9c333ba03b217029f7f5fdbcefe2675e96219cdae57a7894280bf80fd40d44ce146a35e169ea6a78fd35b60408051600081526020810180835287905260ff851691810191909152606081018390526080810182905273ffffffffffffffffffffffffffffffffffffffff85169060019060a0016020604051602081039080840390855afa15801561016f573d6000803e3d6000fd5b5050506020604051035173ffffffffffffffffffffffffffffffffffffffff16146101fa576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600e60248201527f57524f4e475f415242494e415554000000000000000000000000000000000000604482015260640160405180910390fd5b610104565b60005b7feddecf107b5740cef7f5a01e3ea7e287665c4e75a8eb6afae2fda2e3d436778601610202565b7feddecf107b5740cef7f5a01e3ea7e287665c4e75a8eb6afae2fda2e3d43677865b7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffefffffc2f7fc6178c2de1078cd36c3bd302cde755340d7f17fcb3fcc0b9c333ba03b217029f8209905061024b565b60005b5034610299565b7feddecf107b5740cef7f5a01e3ea7e287665c4e75a8eb6afae2fda2e3d43677865b6040805160208101839052016040516020818303038152906040528051906020012090506102c256fea264697066735822122027bb326e97bf6a46d542532f574c63c704a8e473e80dfcc3f9d3971a6d1d41b764736f6c63430008110033",
44
- "linkReferences": {},
45
- "deployedLinkReferences": {}
46
- }
@@ -1,4 +0,0 @@
1
- {
2
- "_format": "hh-sol-dbg-1",
3
- "buildInfo": "../../../build-info/05975d8ff980ada82754db53ad500688.json"
4
- }
@@ -1,48 +0,0 @@
1
- {
2
- "_format": "hh-sol-artifact-1",
3
- "contractName": "BigMap",
4
- "sourceName": "src/mocks/BigMap.sol",
5
- "abi": [
6
- {
7
- "inputs": [
8
- {
9
- "internalType": "uint256",
10
- "name": "clear",
11
- "type": "uint256"
12
- },
13
- {
14
- "internalType": "uint256",
15
- "name": "add",
16
- "type": "uint256"
17
- }
18
- ],
19
- "name": "clearAndAddValues",
20
- "outputs": [],
21
- "stateMutability": "nonpayable",
22
- "type": "function"
23
- },
24
- {
25
- "inputs": [
26
- {
27
- "internalType": "uint256",
28
- "name": "",
29
- "type": "uint256"
30
- }
31
- ],
32
- "name": "data",
33
- "outputs": [
34
- {
35
- "internalType": "uint256",
36
- "name": "",
37
- "type": "uint256"
38
- }
39
- ],
40
- "stateMutability": "view",
41
- "type": "function"
42
- }
43
- ],
44
- "bytecode": "0x608060405234801561001057600080fd5b506101e9806100206000396000f3fe608060405234801561001057600080fd5b50600436106100365760003560e01c8063a2fe30ff1461003b578063f0ba844014610050575b600080fd5b61004e6100493660046100f8565b610082565b005b61007061005e36600461011a565b60006020819052908152604090205481565b60405190815260200160405180910390f35b6001545b816001546100949190610162565b8110156100c157600081815260208190526040902062845fed9055806100b98161017b565b915050610086565b600181905560005b838110156100f257600081815260208190526040812055806100ea8161017b565b9150506100c9565b50505050565b6000806040838503121561010b57600080fd5b50508035926020909101359150565b60006020828403121561012c57600080fd5b5035919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b8082018082111561017557610175610133565b92915050565b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82036101ac576101ac610133565b506001019056fea2646970667358221220d7c605ba9e85f421d609c402eb23f4342b0fa52d1bc480f84d7e85aa5b77801b64736f6c63430008110033",
45
- "deployedBytecode": "0x608060405234801561001057600080fd5b50600436106100365760003560e01c8063a2fe30ff1461003b578063f0ba844014610050575b600080fd5b61004e6100493660046100f8565b610082565b005b61007061005e36600461011a565b60006020819052908152604090205481565b60405190815260200160405180910390f35b6001545b816001546100949190610162565b8110156100c157600081815260208190526040902062845fed9055806100b98161017b565b915050610086565b600181905560005b838110156100f257600081815260208190526040812055806100ea8161017b565b9150506100c9565b50505050565b6000806040838503121561010b57600080fd5b50508035926020909101359150565b60006020828403121561012c57600080fd5b5035919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b8082018082111561017557610175610133565b92915050565b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82036101ac576101ac610133565b506001019056fea2646970667358221220d7c605ba9e85f421d609c402eb23f4342b0fa52d1bc480f84d7e85aa5b77801b64736f6c63430008110033",
46
- "linkReferences": {},
47
- "deployedLinkReferences": {}
48
- }
@@ -1,4 +0,0 @@
1
- {
2
- "_format": "hh-sol-dbg-1",
3
- "buildInfo": "../../../build-info/05975d8ff980ada82754db53ad500688.json"
4
- }
@@ -1,15 +0,0 @@
1
- {
2
- "_format": "hh-sol-artifact-1",
3
- "contractName": "CreateTest",
4
- "sourceName": "src/mocks/CreateTest.sol",
5
- "abi": [
6
- {
7
- "stateMutability": "nonpayable",
8
- "type": "fallback"
9
- }
10
- ],
11
- "bytecode": "0x608060405234801561001057600080fd5b506102d2806100206000396000f3fe608060405234801561001057600080fd5b50600036606060008383600081811061002b5761002b610206565b919091013560f81c915061004490508360018187610235565b909450925060006100586020828688610235565b6100619161025f565b90506100708460208188610235565b9450945060008260ff166002036100fb576000610090602082888a610235565b6100999161025f565b90506100a8866020818a610235565b96509650600087878080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525050825192935084929150506020830186f592505050610143565b600086868080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152505082519293505060208301905084f09150505b73ffffffffffffffffffffffffffffffffffffffff81166101c4576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601060248201527f6661696c656420746f2063726561746500000000000000000000000000000000604482015260640160405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff16803b806020016040519081016040528181526000908060200190933c80519650602001945050505050f35b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b6000808585111561024557600080fd5b8386111561025257600080fd5b5050820193919092039150565b80356020831015610296577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff602084900360031b1b165b9291505056fea26469706673582212209431771ba2c9b8e2676999adcd0dff83847db2d5a6b3805a1b7d04ccc2f5231564736f6c63430008110033",
12
- "deployedBytecode": "0x608060405234801561001057600080fd5b50600036606060008383600081811061002b5761002b610206565b919091013560f81c915061004490508360018187610235565b909450925060006100586020828688610235565b6100619161025f565b90506100708460208188610235565b9450945060008260ff166002036100fb576000610090602082888a610235565b6100999161025f565b90506100a8866020818a610235565b96509650600087878080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525050825192935084929150506020830186f592505050610143565b600086868080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152505082519293505060208301905084f09150505b73ffffffffffffffffffffffffffffffffffffffff81166101c4576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601060248201527f6661696c656420746f2063726561746500000000000000000000000000000000604482015260640160405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff16803b806020016040519081016040528181526000908060200190933c80519650602001945050505050f35b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b6000808585111561024557600080fd5b8386111561025257600080fd5b5050820193919092039150565b80356020831015610296577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff602084900360031b1b165b9291505056fea26469706673582212209431771ba2c9b8e2676999adcd0dff83847db2d5a6b3805a1b7d04ccc2f5231564736f6c63430008110033",
13
- "linkReferences": {},
14
- "deployedLinkReferences": {}
15
- }
@@ -1,4 +0,0 @@
1
- {
2
- "_format": "hh-sol-dbg-1",
3
- "buildInfo": "../../../build-info/978e361bf8e54e1dce144c4f140df5e6.json"
4
- }