@arbitrum/nitro-contracts 3.0.1-beta.0 → 3.1.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 (286) 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/chain/CacheManager.sol/CacheManager.dbg.json +1 -1
  93. package/build/contracts/src/chain/CacheManager.sol/CacheManager.json +2 -2
  94. package/build/contracts/src/challengeV2/EdgeChallengeManager.sol/EdgeChallengeManager.dbg.json +1 -1
  95. package/build/contracts/src/challengeV2/EdgeChallengeManager.sol/EdgeChallengeManager.json +2 -2
  96. package/build/contracts/src/challengeV2/IAssertionChain.sol/IAssertionChain.dbg.json +1 -1
  97. package/build/contracts/src/challengeV2/IEdgeChallengeManager.sol/IEdgeChallengeManager.dbg.json +1 -1
  98. package/build/contracts/src/challengeV2/libraries/ArrayUtilsLib.sol/ArrayUtilsLib.dbg.json +1 -1
  99. package/build/contracts/src/challengeV2/libraries/ChallengeEdgeLib.sol/ChallengeEdgeLib.dbg.json +1 -1
  100. package/build/contracts/src/challengeV2/libraries/ChallengeEdgeLib.sol/ChallengeEdgeLib.json +2 -2
  101. package/build/contracts/src/challengeV2/libraries/EdgeChallengeManagerLib.sol/EdgeChallengeManagerLib.dbg.json +1 -1
  102. package/build/contracts/src/challengeV2/libraries/EdgeChallengeManagerLib.sol/EdgeChallengeManagerLib.json +2 -2
  103. package/build/contracts/src/challengeV2/libraries/MerkleTreeAccumulatorLib.sol/MerkleTreeAccumulatorLib.dbg.json +1 -1
  104. package/build/contracts/src/challengeV2/libraries/MerkleTreeAccumulatorLib.sol/MerkleTreeAccumulatorLib.json +2 -2
  105. package/build/contracts/src/challengeV2/libraries/UintUtilsLib.sol/UintUtilsLib.dbg.json +1 -1
  106. package/build/contracts/src/express-lane-auction/Balance.sol/BalanceLib.dbg.json +1 -1
  107. package/build/contracts/src/express-lane-auction/Burner.sol/Burner.dbg.json +1 -1
  108. package/build/contracts/src/express-lane-auction/ELCRound.sol/LatestELCRoundsLib.dbg.json +1 -1
  109. package/build/contracts/src/express-lane-auction/ExpressLaneAuction.sol/ExpressLaneAuction.dbg.json +1 -1
  110. package/build/contracts/src/express-lane-auction/ExpressLaneAuction.sol/ExpressLaneAuction.json +2 -2
  111. package/build/contracts/src/express-lane-auction/IExpressLaneAuction.sol/IExpressLaneAuction.dbg.json +1 -1
  112. package/build/contracts/src/express-lane-auction/RoundTimingInfo.sol/RoundTimingInfoLib.dbg.json +1 -1
  113. package/build/contracts/src/libraries/AddressAliasHelper.sol/AddressAliasHelper.dbg.json +1 -1
  114. package/build/contracts/src/libraries/AdminFallbackProxy.sol/AdminFallbackProxy.dbg.json +1 -1
  115. package/build/contracts/src/libraries/AdminFallbackProxy.sol/DoubleLogicERC1967Upgrade.dbg.json +1 -1
  116. package/build/contracts/src/libraries/ArbitrumChecker.sol/ArbitrumChecker.dbg.json +1 -1
  117. package/build/contracts/src/libraries/CallerChecker.sol/CallerChecker.dbg.json +1 -1
  118. package/build/contracts/src/libraries/CryptographyPrimitives.sol/CryptographyPrimitives.dbg.json +1 -1
  119. package/build/contracts/src/libraries/DecimalsConverterHelper.sol/DecimalsConverterHelper.dbg.json +1 -1
  120. package/build/contracts/src/libraries/DelegateCallAware.sol/DelegateCallAware.dbg.json +1 -1
  121. package/build/contracts/src/libraries/DoubleLogicUUPSUpgradeable.sol/DoubleLogicUUPSUpgradeable.dbg.json +1 -1
  122. package/build/contracts/src/libraries/GasRefundEnabled.sol/GasRefundEnabled.dbg.json +1 -1
  123. package/build/contracts/src/libraries/IGasRefunder.sol/IGasRefunder.dbg.json +1 -1
  124. package/build/contracts/src/libraries/IReader4844.sol/IReader4844.dbg.json +1 -1
  125. package/build/contracts/src/libraries/MerkleLib.sol/MerkleLib.dbg.json +1 -1
  126. package/build/contracts/src/libraries/MerkleLib.sol/MerkleLib.json +2 -2
  127. package/build/contracts/src/libraries/UUPSNotUpgradeable.sol/UUPSNotUpgradeable.dbg.json +1 -1
  128. package/build/contracts/src/mocks/Benchmarks.sol/Benchmarks.dbg.json +1 -1
  129. package/build/contracts/src/mocks/BigMap.sol/BigMap.dbg.json +1 -1
  130. package/build/contracts/src/mocks/BridgeStub.sol/BridgeStub.dbg.json +1 -1
  131. package/build/contracts/src/mocks/BridgeStub.sol/BridgeStub.json +2 -2
  132. package/build/contracts/src/mocks/BridgeUnproxied.sol/BridgeUnproxied.dbg.json +1 -1
  133. package/build/contracts/src/mocks/BridgeUnproxied.sol/BridgeUnproxied.json +2 -2
  134. package/build/contracts/src/mocks/CreateTest.sol/CreateTest.dbg.json +1 -1
  135. package/build/contracts/src/mocks/InboxStub.sol/InboxStub.dbg.json +1 -1
  136. package/build/contracts/src/mocks/InboxStub.sol/InboxStub.json +2 -2
  137. package/build/contracts/src/mocks/MerkleTreeAccess.sol/MerkleTreeAccess.dbg.json +1 -1
  138. package/build/contracts/src/mocks/MerkleTreeAccess.sol/MerkleTreeAccess.json +2 -2
  139. package/build/contracts/src/mocks/MockRollupEventInbox.sol/MockRollupEventInbox.dbg.json +1 -1
  140. package/build/contracts/src/mocks/MockRollupEventInbox.sol/MockRollupEventInbox.json +2 -2
  141. package/build/contracts/src/mocks/MultiCallTest.sol/MultiCallTest.dbg.json +1 -1
  142. package/build/contracts/src/mocks/PendingBlkTimeAndNrAdvanceCheck.sol/PendingBlkTimeAndNrAdvanceCheck.dbg.json +1 -1
  143. package/build/contracts/src/mocks/Program.sol/ProgramTest.dbg.json +1 -1
  144. package/build/contracts/src/mocks/ProxyAdminForBinding.sol/ProxyAdminForBinding.dbg.json +1 -1
  145. package/build/contracts/src/mocks/SdkStorage.sol/SdkStorage.dbg.json +1 -1
  146. package/build/contracts/src/mocks/SelfDestruct.sol/SelfDestructInConstructorWithDestination.dbg.json +4 -0
  147. package/build/contracts/src/mocks/SelfDestruct.sol/SelfDestructInConstructorWithDestination.json +22 -0
  148. package/build/contracts/src/mocks/SelfDestruct.sol/SelfDestructInConstructorWithoutDestination.dbg.json +4 -0
  149. package/build/contracts/src/mocks/SelfDestruct.sol/SelfDestructInConstructorWithoutDestination.json +16 -0
  150. package/build/contracts/src/mocks/SelfDestruct.sol/SelfDestructOutsideConstructor.dbg.json +4 -0
  151. package/build/contracts/src/mocks/SelfDestruct.sol/SelfDestructOutsideConstructor.json +36 -0
  152. package/build/contracts/src/mocks/SequencerInboxBlobMock.sol/SequencerInboxBlobMock.dbg.json +1 -1
  153. package/build/contracts/src/mocks/SequencerInboxBlobMock.sol/SequencerInboxBlobMock.json +51 -2
  154. package/build/contracts/src/mocks/SequencerInboxStub.sol/SequencerInboxStub.dbg.json +1 -1
  155. package/build/contracts/src/mocks/SequencerInboxStub.sol/SequencerInboxStub.json +51 -2
  156. package/build/contracts/src/mocks/Simple.sol/Simple.dbg.json +1 -1
  157. package/build/contracts/src/mocks/Simple.sol/Simple.json +20 -2
  158. package/build/contracts/src/mocks/SimpleCacheManager.sol/SimpleCacheManager.dbg.json +1 -1
  159. package/build/contracts/src/mocks/SimpleOneStepProofEntry.sol/SimpleOneStepProofEntry.dbg.json +1 -1
  160. package/build/contracts/src/mocks/SimpleOneStepProofEntry.sol/SimpleOneStepProofEntry.json +2 -2
  161. package/build/contracts/src/mocks/SimpleProxy.sol/SimpleProxy.dbg.json +1 -1
  162. package/build/contracts/src/mocks/TestWETH9.sol/IWETH9.dbg.json +1 -1
  163. package/build/contracts/src/mocks/TestWETH9.sol/TestWETH9.dbg.json +1 -1
  164. package/build/contracts/src/mocks/UpgradeExecutorMock.sol/UpgradeExecutorMock.dbg.json +1 -1
  165. package/build/contracts/src/node-interface/NodeInterface.sol/NodeInterface.dbg.json +1 -1
  166. package/build/contracts/src/node-interface/NodeInterfaceDebug.sol/NodeInterfaceDebug.dbg.json +1 -1
  167. package/build/contracts/src/osp/HashProofHelper.sol/HashProofHelper.dbg.json +1 -1
  168. package/build/contracts/src/osp/IOneStepProofEntry.sol/IOneStepProofEntry.dbg.json +1 -1
  169. package/build/contracts/src/osp/IOneStepProofEntry.sol/OneStepProofEntryLib.dbg.json +1 -1
  170. package/build/contracts/src/osp/IOneStepProofEntry.sol/OneStepProofEntryLib.json +2 -2
  171. package/build/contracts/src/osp/IOneStepProver.sol/IOneStepProver.dbg.json +1 -1
  172. package/build/contracts/src/osp/OneStepProofEntry.sol/OneStepProofEntry.dbg.json +1 -1
  173. package/build/contracts/src/osp/OneStepProofEntry.sol/OneStepProofEntry.json +2 -2
  174. package/build/contracts/src/osp/OneStepProver0.sol/OneStepProver0.dbg.json +1 -1
  175. package/build/contracts/src/osp/OneStepProver0.sol/OneStepProver0.json +2 -2
  176. package/build/contracts/src/osp/OneStepProverHostIo.sol/OneStepProverHostIo.dbg.json +1 -1
  177. package/build/contracts/src/osp/OneStepProverHostIo.sol/OneStepProverHostIo.json +2 -2
  178. package/build/contracts/src/osp/OneStepProverMath.sol/OneStepProverMath.dbg.json +1 -1
  179. package/build/contracts/src/osp/OneStepProverMath.sol/OneStepProverMath.json +2 -2
  180. package/build/contracts/src/osp/OneStepProverMemory.sol/OneStepProverMemory.dbg.json +1 -1
  181. package/build/contracts/src/osp/OneStepProverMemory.sol/OneStepProverMemory.json +2 -2
  182. package/build/contracts/src/precompiles/ArbAddressTable.sol/ArbAddressTable.dbg.json +1 -1
  183. package/build/contracts/src/precompiles/ArbAggregator.sol/ArbAggregator.dbg.json +1 -1
  184. package/build/contracts/src/precompiles/ArbBLS.sol/ArbBLS.dbg.json +1 -1
  185. package/build/contracts/src/precompiles/ArbDebug.sol/ArbDebug.dbg.json +1 -1
  186. package/build/contracts/src/precompiles/ArbFunctionTable.sol/ArbFunctionTable.dbg.json +1 -1
  187. package/build/contracts/src/precompiles/ArbGasInfo.sol/ArbGasInfo.dbg.json +1 -1
  188. package/build/contracts/src/precompiles/ArbInfo.sol/ArbInfo.dbg.json +1 -1
  189. package/build/contracts/src/precompiles/ArbOwner.sol/ArbOwner.dbg.json +1 -1
  190. package/build/contracts/src/precompiles/ArbOwner.sol/ArbOwner.json +26 -0
  191. package/build/contracts/src/precompiles/ArbOwnerPublic.sol/ArbOwnerPublic.dbg.json +1 -1
  192. package/build/contracts/src/precompiles/ArbOwnerPublic.sol/ArbOwnerPublic.json +13 -0
  193. package/build/contracts/src/precompiles/ArbRetryableTx.sol/ArbRetryableTx.dbg.json +1 -1
  194. package/build/contracts/src/precompiles/ArbStatistics.sol/ArbStatistics.dbg.json +1 -1
  195. package/build/contracts/src/precompiles/ArbSys.sol/ArbSys.dbg.json +1 -1
  196. package/build/contracts/src/precompiles/ArbWasm.sol/ArbWasm.dbg.json +1 -1
  197. package/build/contracts/src/precompiles/ArbWasmCache.sol/ArbWasmCache.dbg.json +1 -1
  198. package/build/contracts/src/precompiles/ArbosActs.sol/ArbosActs.dbg.json +1 -1
  199. package/build/contracts/src/precompiles/ArbosTest.sol/ArbosTest.dbg.json +1 -1
  200. package/build/contracts/src/rollup/AbsRollupEventInbox.sol/AbsRollupEventInbox.dbg.json +1 -1
  201. package/build/contracts/src/rollup/Assertion.sol/AssertionNodeLib.dbg.json +1 -1
  202. package/build/contracts/src/rollup/Assertion.sol/AssertionNodeLib.json +2 -2
  203. package/build/contracts/src/rollup/AssertionState.sol/AssertionStateLib.dbg.json +1 -1
  204. package/build/contracts/src/rollup/AssertionState.sol/AssertionStateLib.json +2 -2
  205. package/build/contracts/src/rollup/BOLDUpgradeAction.sol/BOLDUpgradeAction.dbg.json +1 -1
  206. package/build/contracts/src/rollup/BOLDUpgradeAction.sol/BOLDUpgradeAction.json +2 -2
  207. package/build/contracts/src/rollup/BOLDUpgradeAction.sol/ConstantArrayStorage.dbg.json +1 -1
  208. package/build/contracts/src/rollup/BOLDUpgradeAction.sol/ConstantArrayStorage.json +2 -2
  209. package/build/contracts/src/rollup/BOLDUpgradeAction.sol/IOldRollup.dbg.json +1 -1
  210. package/build/contracts/src/rollup/BOLDUpgradeAction.sol/IOldRollupAdmin.dbg.json +1 -1
  211. package/build/contracts/src/rollup/BOLDUpgradeAction.sol/ISeqInboxPostUpgradeInit.dbg.json +1 -1
  212. package/build/contracts/src/rollup/BOLDUpgradeAction.sol/StateHashPreImageLookup.dbg.json +1 -1
  213. package/build/contracts/src/rollup/BOLDUpgradeAction.sol/StateHashPreImageLookup.json +2 -2
  214. package/build/contracts/src/rollup/BridgeCreator.sol/BridgeCreator.dbg.json +1 -1
  215. package/build/contracts/src/rollup/BridgeCreator.sol/BridgeCreator.json +7 -2
  216. package/build/contracts/src/rollup/DeployHelper.sol/DeployHelper.dbg.json +1 -1
  217. package/build/contracts/src/rollup/DeployHelper.sol/DeployHelper.json +2 -2
  218. package/build/contracts/src/rollup/ERC20RollupEventInbox.sol/ERC20RollupEventInbox.dbg.json +1 -1
  219. package/build/contracts/src/rollup/ERC20RollupEventInbox.sol/ERC20RollupEventInbox.json +2 -2
  220. package/build/contracts/src/rollup/FactoryDeployerHelper.sol/FactoryDeployerHelper.dbg.json +1 -1
  221. package/build/contracts/src/rollup/FactoryDeployerHelper.sol/IDeployHelper.dbg.json +1 -1
  222. package/build/contracts/src/rollup/FactoryDeployerHelper.sol/IERC20.dbg.json +1 -1
  223. package/build/contracts/src/rollup/FactoryDeployerHelper.sol/IERC20Bridge.dbg.json +1 -1
  224. package/build/contracts/src/rollup/FactoryDeployerHelper.sol/IInboxBase.dbg.json +1 -1
  225. package/build/contracts/src/rollup/IRollupAdmin.sol/IRollupAdmin.dbg.json +1 -1
  226. package/build/contracts/src/rollup/IRollupCore.sol/IRollupCore.dbg.json +1 -1
  227. package/build/contracts/src/rollup/IRollupEventInbox.sol/IRollupEventInbox.dbg.json +1 -1
  228. package/build/contracts/src/rollup/IRollupLogic.sol/IRollupUser.dbg.json +1 -1
  229. package/build/contracts/src/rollup/RollupAdminLogic.sol/RollupAdminLogic.dbg.json +1 -1
  230. package/build/contracts/src/rollup/RollupAdminLogic.sol/RollupAdminLogic.json +2 -2
  231. package/build/contracts/src/rollup/RollupCore.sol/RollupCore.dbg.json +1 -1
  232. package/build/contracts/src/rollup/RollupCreator.sol/RollupCreator.dbg.json +1 -1
  233. package/build/contracts/src/rollup/RollupCreator.sol/RollupCreator.json +7 -2
  234. package/build/contracts/src/rollup/RollupEventInbox.sol/RollupEventInbox.dbg.json +1 -1
  235. package/build/contracts/src/rollup/RollupEventInbox.sol/RollupEventInbox.json +2 -2
  236. package/build/contracts/src/rollup/RollupLib.sol/RollupLib.dbg.json +1 -1
  237. package/build/contracts/src/rollup/RollupLib.sol/RollupLib.json +2 -2
  238. package/build/contracts/src/rollup/RollupProxy.sol/RollupProxy.dbg.json +1 -1
  239. package/build/contracts/src/rollup/RollupProxy.sol/RollupProxy.json +2 -2
  240. package/build/contracts/src/rollup/RollupUserLogic.sol/RollupUserLogic.dbg.json +1 -1
  241. package/build/contracts/src/rollup/RollupUserLogic.sol/RollupUserLogic.json +2 -2
  242. package/build/contracts/src/rollup/ValidatorWallet.sol/ValidatorWallet.dbg.json +1 -1
  243. package/build/contracts/src/rollup/ValidatorWallet.sol/ValidatorWallet.json +2 -2
  244. package/build/contracts/src/rollup/ValidatorWalletCreator.sol/ValidatorWalletCreator.dbg.json +1 -1
  245. package/build/contracts/src/rollup/ValidatorWalletCreator.sol/ValidatorWalletCreator.json +2 -2
  246. package/build/contracts/src/state/Deserialize.sol/Deserialize.dbg.json +1 -1
  247. package/build/contracts/src/state/GlobalState.sol/GlobalStateLib.dbg.json +1 -1
  248. package/build/contracts/src/state/Instructions.sol/Instructions.dbg.json +1 -1
  249. package/build/contracts/src/state/Machine.sol/MachineLib.dbg.json +1 -1
  250. package/build/contracts/src/state/MerkleProof.sol/MerkleProofLib.dbg.json +1 -1
  251. package/build/contracts/src/state/Module.sol/ModuleLib.dbg.json +1 -1
  252. package/build/contracts/src/state/ModuleMemory.sol/ModuleMemoryLib.dbg.json +1 -1
  253. package/build/contracts/src/state/ModuleMemoryCompact.sol/ModuleMemoryCompactLib.dbg.json +1 -1
  254. package/build/contracts/src/state/MultiStack.sol/MultiStackLib.dbg.json +1 -1
  255. package/build/contracts/src/state/PcArray.sol/PcArrayLib.dbg.json +1 -1
  256. package/build/contracts/src/state/StackFrame.sol/StackFrameLib.dbg.json +1 -1
  257. package/build/contracts/src/state/Value.sol/ValueLib.dbg.json +1 -1
  258. package/build/contracts/src/state/ValueArray.sol/ValueArrayLib.dbg.json +1 -1
  259. package/build/contracts/src/state/ValueStack.sol/ValueStackLib.dbg.json +1 -1
  260. package/build/contracts/src/stylus/StylusDeployer.sol/StylusDeployer.dbg.json +1 -1
  261. package/build/contracts/src/test-helpers/BridgeTester.sol/BridgeTester.dbg.json +1 -1
  262. package/build/contracts/src/test-helpers/BridgeTester.sol/BridgeTester.json +2 -2
  263. package/build/contracts/src/test-helpers/CryptographyPrimitivesTester.sol/CryptographyPrimitivesTester.dbg.json +1 -1
  264. package/build/contracts/src/test-helpers/EthVault.sol/EthVault.dbg.json +1 -1
  265. package/build/contracts/src/test-helpers/MessageTester.sol/MessageTester.dbg.json +1 -1
  266. package/build/contracts/src/test-helpers/NoReceiveForwarder.sol/ConstructorError.dbg.json +1 -1
  267. package/build/contracts/src/test-helpers/NoReceiveForwarder.sol/ConstructorFine.dbg.json +1 -1
  268. package/build/contracts/src/test-helpers/NoReceiveForwarder.sol/NoReceiveForwarder.dbg.json +1 -1
  269. package/build/contracts/src/test-helpers/NoReceiveForwarder.sol/ReceivingForwarder.dbg.json +1 -1
  270. package/build/contracts/src/test-helpers/OutboxWithoutOptTester.sol/OutboxWithoutOptTester.dbg.json +1 -1
  271. package/build/contracts/src/test-helpers/OutboxWithoutOptTester.sol/OutboxWithoutOptTester.json +2 -2
  272. package/build/contracts/src/test-helpers/RollupMock.sol/RollupMock.dbg.json +1 -1
  273. package/build/contracts/src/test-helpers/TestToken.sol/TestToken.dbg.json +1 -1
  274. package/build/contracts/src/test-helpers/ValueArrayTester.sol/ValueArrayTester.dbg.json +1 -1
  275. package/package.json +38 -35
  276. package/src/bridge/ISequencerInbox.sol +33 -1
  277. package/src/bridge/SequencerInbox.sol +49 -10
  278. package/src/libraries/Error.sol +3 -0
  279. package/src/mocks/SelfDestruct.sol +33 -0
  280. package/src/mocks/Simple.sol +22 -0
  281. package/src/precompiles/ArbOwner.sol +13 -0
  282. package/src/precompiles/ArbOwnerPublic.sol +6 -0
  283. package/src/rollup/BridgeCreator.sol +5 -2
  284. package/src/rollup/ERC20RollupEventInbox.sol +16 -2
  285. package/src/rollup/RollupAdminLogic.sol +0 -3
  286. package/src/rollup/RollupCreator.sol +3 -1
@@ -543,8 +543,8 @@
543
543
  "type": "function"
544
544
  }
545
545
  ],
546
- "bytecode": "0x60a06040523060805234801561001457600080fd5b506080516114d7610030600039600061072e01526114d76000f3fe608060405234801561001057600080fd5b506004361061016b5760003560e01c806395fcea78116100cd578063c4d66de811610081578063cb23bcb511610066578063cb23bcb5146102ed578063d5b5cc2314610300578063e78cea921461031357600080fd5b8063c4d66de8146102ba578063c75184df146102cd57600080fd5b8063a04cee60116100b2578063a04cee6014610276578063ae6dead714610289578063b0f30537146102a957600080fd5b806395fcea78146101a95780639f0c04bf1461026357600080fd5b80635a129efe1161012457806372f2a8c71161010957806372f2a8c71461021157806380648b02146102195780638515bc6a1461023e57600080fd5b80635a129efe146101d65780636ae71f121461020957600080fd5b8063119852711161015557806311985271146101ab578063288e5b10146101b257806346547790146101c557600080fd5b80627436d31461017057806308635a9514610196575b600080fd5b61018361017e366004610e37565b610326565b6040519081526020015b60405180910390f35b6101a96101a4366004610f5e565b610363565b005b6000610183565b6101a96101c0366004611053565b6106d7565b6004546001600160801b0316610183565b6101f96101e43660046110ef565b60026020526000908152604090205460ff1681565b604051901515815260200161018d565b6101a9610724565b600654610183565b6007546001600160a01b03165b6040516001600160a01b03909116815260200161018d565b60045470010000000000000000000000000000000090046001600160801b0316610183565b610183610271366004611108565b6108e0565b6101a9610284366004611197565b610925565b6101836102973660046110ef565b60036020526000908152604090205481565b6005546001600160801b0316610183565b6101a96102c83660046111b9565b610964565b6102d5600281565b6040516001600160801b03909116815260200161018d565b600054610226906001600160a01b031681565b61018361030e3660046110ef565b610a7a565b600154610226906001600160a01b031681565b600061035b84848460405160200161034091815260200190565b60405160208183030381529060405280519060200120610ac5565b949350505050565b6000806103768a8a8a8a8a8a8a8a6108e0565b90506103b88d8d808060200260200160405190810160405280939291908181526020018383602002808284376000920191909152508f9250859150610b809050565b915060008a6001600160a01b03168a6001600160a01b03167f20af7f3bbfe38132b8900ae295cd9c8d1914be7052d061a511f3f728dab189648e60405161040191815260200190565b60405180910390a450600060046040518060a00160405290816000820160009054906101000a90046001600160801b03166001600160801b03166001600160801b031681526020016000820160109054906101000a90046001600160801b03166001600160801b03166001600160801b031681526020016001820160009054906101000a90046001600160801b03166001600160801b03166001600160801b03168152602001600282015481526020016003820160009054906101000a90046001600160a01b03166001600160a01b03166001600160a01b03168152505090506040518060a00160405280896001600160801b03168152602001886001600160801b03168152602001876001600160801b031681526020018381526020018b6001600160a01b0316815250600460008201518160000160006101000a8154816001600160801b0302191690836001600160801b0316021790555060208201518160000160106101000a8154816001600160801b0302191690836001600160801b0316021790555060408201518160010160006101000a8154816001600160801b0302191690836001600160801b031602179055506060820151816002015560808201518160030160006101000a8154816001600160a01b0302191690836001600160a01b03160217905550905050610630898686868080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250610d0592505050565b805160208201516001600160801b0391821670010000000000000000000000000000000091831691909102176004556040820151600580547fffffffffffffffffffffffffffffffff0000000000000000000000000000000016919092161790556060810151600655608001516007805473ffffffffffffffffffffffffffffffffffffffff19166001600160a01b03909216919091179055505050505050505050505050565b60405162461bcd60e51b815260206004820152600f60248201527f4e6f7420696d706c656d656e746564000000000000000000000000000000000060448201526064015b60405180910390fd5b6001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001630036107c25760405162461bcd60e51b815260206004820152602c60248201527f46756e6374696f6e206d7573742062652063616c6c6564207468726f7567682060448201527f64656c656761746563616c6c0000000000000000000000000000000000000000606482015260840161071b565b7fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61038054336001600160a01b03821614610838576040517f23295f0e0000000000000000000000000000000000000000000000000000000081523360048201526001600160a01b038216602482015260440161071b565b600160009054906101000a90046001600160a01b03166001600160a01b031663cb23bcb56040518163ffffffff1660e01b8152600401602060405180830381865afa15801561088b573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108af91906111dd565b6000805473ffffffffffffffffffffffffffffffffffffffff19166001600160a01b03929092169190911790555050565b600088888888888888886040516020016109019897969594939291906111fa565b60405160208183030381529060405280519060200120905098975050505050505050565b60008281526003602052604080822083905551829184917fb4df3847300f076a369cd76d2314b470a1194d9e8a6bb97f1860aee88a5f67489190a35050565b6001546001600160a01b0316156109a7576040517fef34ca5c00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001805473ffffffffffffffffffffffffffffffffffffffff19166001600160a01b038316908117909155604080517fcb23bcb5000000000000000000000000000000000000000000000000000000008152905163cb23bcb5916004808201926020929091908290030181865afa158015610a26573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610a4a91906111dd565b6000805473ffffffffffffffffffffffffffffffffffffffff19166001600160a01b039290921691909117905550565b60405162461bcd60e51b815260206004820152600e60248201527f4e4f545f494d504c454d45544544000000000000000000000000000000000000604482015260009060640161071b565b8251600090610100811115610b11576040517ffdac331e00000000000000000000000000000000000000000000000000000000815260048101829052610100602482015260440161071b565b8260005b82811015610b76576000878281518110610b3157610b31611266565b60200260200101519050816001901b8716600003610b5d57826000528060205260406000209250610b6d565b8060005282602052604060002092505b50600101610b15565b5095945050505050565b6000610100845110610bc35783516040517fab6a068300000000000000000000000000000000000000000000000000000000815260040161071b91815260200190565b8351610bd0906002611378565b8310610c20578284516002610be59190611378565b6040517f0b8a724b0000000000000000000000000000000000000000000000000000000081526004810192909252602482015260440161071b565b6000610c2d858585610326565b600081815260036020526040902054909150610c78576040517f8730d7c80000000000000000000000000000000000000000000000000000000081526004810182905260240161071b565b60008481526002602052604090205460ff1615610cc4576040517f9715b8d30000000000000000000000000000000000000000000000000000000081526004810185905260240161071b565b5050600082815260026020526040902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00166001179055819392505050565b6001546040517f9e5d4c4900000000000000000000000000000000000000000000000000000000815260009182916001600160a01b0390911690639e5d4c4990610d57908890889088906004016113a8565b6000604051808303816000875af1158015610d76573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052610d9e91908101906113f2565b9150915081610de957805115610db75780518082602001fd5b6040517f376fb55a00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5050505050565b634e487b7160e01b600052604160045260246000fd5b604051601f8201601f1916810167ffffffffffffffff81118282101715610e2f57610e2f610df0565b604052919050565b600080600060608486031215610e4c57600080fd5b833567ffffffffffffffff80821115610e6457600080fd5b818601915086601f830112610e7857600080fd5b8135602082821115610e8c57610e8c610df0565b8160051b9250610e9d818401610e06565b828152928401810192818101908a851115610eb757600080fd5b948201945b84861015610ed557853582529482019490820190610ebc565b9a918901359950506040909701359695505050505050565b6001600160a01b0381168114610f0257600080fd5b50565b8035610f1081610eed565b919050565b60008083601f840112610f2757600080fd5b50813567ffffffffffffffff811115610f3f57600080fd5b602083019150836020828501011115610f5757600080fd5b9250929050565b60008060008060008060008060008060006101208c8e031215610f8057600080fd5b8b3567ffffffffffffffff80821115610f9857600080fd5b818e0191508e601f830112610fac57600080fd5b813581811115610fbb57600080fd5b8f60208260051b8501011115610fd057600080fd5b60208381019e50909c508e01359a50610feb60408f01610f05565b9950610ff960608f01610f05565b985060808e0135975060a08e0135965060c08e0135955060e08e013594506101008e013591508082111561102c57600080fd5b506110398e828f01610f15565b915080935050809150509295989b509295989b9093969950565b60008060008060008060008060006101008a8c03121561107257600080fd5b8935985060208a013561108481610eed565b975060408a013561109481610eed565b965060608a0135955060808a0135945060a08a0135935060c08a0135925060e08a013567ffffffffffffffff8111156110cc57600080fd5b6110d88c828d01610f15565b915080935050809150509295985092959850929598565b60006020828403121561110157600080fd5b5035919050565b60008060008060008060008060e0898b03121561112457600080fd5b883561112f81610eed565b9750602089013561113f81610eed565b965060408901359550606089013594506080890135935060a0890135925060c089013567ffffffffffffffff81111561117757600080fd5b6111838b828c01610f15565b999c989b5096995094979396929594505050565b600080604083850312156111aa57600080fd5b50508035926020909101359150565b6000602082840312156111cb57600080fd5b81356111d681610eed565b9392505050565b6000602082840312156111ef57600080fd5b81516111d681610eed565b60007fffffffffffffffffffffffffffffffffffffffff000000000000000000000000808b60601b168352808a60601b16601484015250876028830152866048830152856068830152846088830152828460a8840137506000910160a801908152979650505050505050565b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052601160045260246000fd5b600181815b808511156112cd5781600019048211156112b3576112b361127c565b808516156112c057918102915b93841c9390800290611297565b509250929050565b6000826112e457506001611372565b816112f157506000611372565b816001811461130757600281146113115761132d565b6001915050611372565b60ff8411156113225761132261127c565b50506001821b611372565b5060208310610133831016604e8410600b8410161715611350575081810a611372565b61135a8383611292565b806000190482111561136e5761136e61127c565b0290505b92915050565b60006111d683836112d5565b60005b8381101561139f578181015183820152602001611387565b50506000910152565b6001600160a01b038416815282602082015260606040820152600082518060608401526113dc816080850160208701611384565b601f01601f191691909101608001949350505050565b6000806040838503121561140557600080fd5b8251801515811461141557600080fd5b602084015190925067ffffffffffffffff8082111561143357600080fd5b818501915085601f83011261144757600080fd5b81518181111561145957611459610df0565b61146c6020601f19601f84011601610e06565b915080825286602082850101111561148357600080fd5b611494816020840160208601611384565b508092505050925092905056fea26469706673582212209134c8539ccd56bd758346b91447d71c4cf7cfc5f897dbb879185467ebd0284964736f6c63430008110033",
547
- "deployedBytecode": "0x608060405234801561001057600080fd5b506004361061016b5760003560e01c806395fcea78116100cd578063c4d66de811610081578063cb23bcb511610066578063cb23bcb5146102ed578063d5b5cc2314610300578063e78cea921461031357600080fd5b8063c4d66de8146102ba578063c75184df146102cd57600080fd5b8063a04cee60116100b2578063a04cee6014610276578063ae6dead714610289578063b0f30537146102a957600080fd5b806395fcea78146101a95780639f0c04bf1461026357600080fd5b80635a129efe1161012457806372f2a8c71161010957806372f2a8c71461021157806380648b02146102195780638515bc6a1461023e57600080fd5b80635a129efe146101d65780636ae71f121461020957600080fd5b8063119852711161015557806311985271146101ab578063288e5b10146101b257806346547790146101c557600080fd5b80627436d31461017057806308635a9514610196575b600080fd5b61018361017e366004610e37565b610326565b6040519081526020015b60405180910390f35b6101a96101a4366004610f5e565b610363565b005b6000610183565b6101a96101c0366004611053565b6106d7565b6004546001600160801b0316610183565b6101f96101e43660046110ef565b60026020526000908152604090205460ff1681565b604051901515815260200161018d565b6101a9610724565b600654610183565b6007546001600160a01b03165b6040516001600160a01b03909116815260200161018d565b60045470010000000000000000000000000000000090046001600160801b0316610183565b610183610271366004611108565b6108e0565b6101a9610284366004611197565b610925565b6101836102973660046110ef565b60036020526000908152604090205481565b6005546001600160801b0316610183565b6101a96102c83660046111b9565b610964565b6102d5600281565b6040516001600160801b03909116815260200161018d565b600054610226906001600160a01b031681565b61018361030e3660046110ef565b610a7a565b600154610226906001600160a01b031681565b600061035b84848460405160200161034091815260200190565b60405160208183030381529060405280519060200120610ac5565b949350505050565b6000806103768a8a8a8a8a8a8a8a6108e0565b90506103b88d8d808060200260200160405190810160405280939291908181526020018383602002808284376000920191909152508f9250859150610b809050565b915060008a6001600160a01b03168a6001600160a01b03167f20af7f3bbfe38132b8900ae295cd9c8d1914be7052d061a511f3f728dab189648e60405161040191815260200190565b60405180910390a450600060046040518060a00160405290816000820160009054906101000a90046001600160801b03166001600160801b03166001600160801b031681526020016000820160109054906101000a90046001600160801b03166001600160801b03166001600160801b031681526020016001820160009054906101000a90046001600160801b03166001600160801b03166001600160801b03168152602001600282015481526020016003820160009054906101000a90046001600160a01b03166001600160a01b03166001600160a01b03168152505090506040518060a00160405280896001600160801b03168152602001886001600160801b03168152602001876001600160801b031681526020018381526020018b6001600160a01b0316815250600460008201518160000160006101000a8154816001600160801b0302191690836001600160801b0316021790555060208201518160000160106101000a8154816001600160801b0302191690836001600160801b0316021790555060408201518160010160006101000a8154816001600160801b0302191690836001600160801b031602179055506060820151816002015560808201518160030160006101000a8154816001600160a01b0302191690836001600160a01b03160217905550905050610630898686868080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250610d0592505050565b805160208201516001600160801b0391821670010000000000000000000000000000000091831691909102176004556040820151600580547fffffffffffffffffffffffffffffffff0000000000000000000000000000000016919092161790556060810151600655608001516007805473ffffffffffffffffffffffffffffffffffffffff19166001600160a01b03909216919091179055505050505050505050505050565b60405162461bcd60e51b815260206004820152600f60248201527f4e6f7420696d706c656d656e746564000000000000000000000000000000000060448201526064015b60405180910390fd5b6001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001630036107c25760405162461bcd60e51b815260206004820152602c60248201527f46756e6374696f6e206d7573742062652063616c6c6564207468726f7567682060448201527f64656c656761746563616c6c0000000000000000000000000000000000000000606482015260840161071b565b7fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61038054336001600160a01b03821614610838576040517f23295f0e0000000000000000000000000000000000000000000000000000000081523360048201526001600160a01b038216602482015260440161071b565b600160009054906101000a90046001600160a01b03166001600160a01b031663cb23bcb56040518163ffffffff1660e01b8152600401602060405180830381865afa15801561088b573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108af91906111dd565b6000805473ffffffffffffffffffffffffffffffffffffffff19166001600160a01b03929092169190911790555050565b600088888888888888886040516020016109019897969594939291906111fa565b60405160208183030381529060405280519060200120905098975050505050505050565b60008281526003602052604080822083905551829184917fb4df3847300f076a369cd76d2314b470a1194d9e8a6bb97f1860aee88a5f67489190a35050565b6001546001600160a01b0316156109a7576040517fef34ca5c00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001805473ffffffffffffffffffffffffffffffffffffffff19166001600160a01b038316908117909155604080517fcb23bcb5000000000000000000000000000000000000000000000000000000008152905163cb23bcb5916004808201926020929091908290030181865afa158015610a26573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610a4a91906111dd565b6000805473ffffffffffffffffffffffffffffffffffffffff19166001600160a01b039290921691909117905550565b60405162461bcd60e51b815260206004820152600e60248201527f4e4f545f494d504c454d45544544000000000000000000000000000000000000604482015260009060640161071b565b8251600090610100811115610b11576040517ffdac331e00000000000000000000000000000000000000000000000000000000815260048101829052610100602482015260440161071b565b8260005b82811015610b76576000878281518110610b3157610b31611266565b60200260200101519050816001901b8716600003610b5d57826000528060205260406000209250610b6d565b8060005282602052604060002092505b50600101610b15565b5095945050505050565b6000610100845110610bc35783516040517fab6a068300000000000000000000000000000000000000000000000000000000815260040161071b91815260200190565b8351610bd0906002611378565b8310610c20578284516002610be59190611378565b6040517f0b8a724b0000000000000000000000000000000000000000000000000000000081526004810192909252602482015260440161071b565b6000610c2d858585610326565b600081815260036020526040902054909150610c78576040517f8730d7c80000000000000000000000000000000000000000000000000000000081526004810182905260240161071b565b60008481526002602052604090205460ff1615610cc4576040517f9715b8d30000000000000000000000000000000000000000000000000000000081526004810185905260240161071b565b5050600082815260026020526040902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00166001179055819392505050565b6001546040517f9e5d4c4900000000000000000000000000000000000000000000000000000000815260009182916001600160a01b0390911690639e5d4c4990610d57908890889088906004016113a8565b6000604051808303816000875af1158015610d76573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052610d9e91908101906113f2565b9150915081610de957805115610db75780518082602001fd5b6040517f376fb55a00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5050505050565b634e487b7160e01b600052604160045260246000fd5b604051601f8201601f1916810167ffffffffffffffff81118282101715610e2f57610e2f610df0565b604052919050565b600080600060608486031215610e4c57600080fd5b833567ffffffffffffffff80821115610e6457600080fd5b818601915086601f830112610e7857600080fd5b8135602082821115610e8c57610e8c610df0565b8160051b9250610e9d818401610e06565b828152928401810192818101908a851115610eb757600080fd5b948201945b84861015610ed557853582529482019490820190610ebc565b9a918901359950506040909701359695505050505050565b6001600160a01b0381168114610f0257600080fd5b50565b8035610f1081610eed565b919050565b60008083601f840112610f2757600080fd5b50813567ffffffffffffffff811115610f3f57600080fd5b602083019150836020828501011115610f5757600080fd5b9250929050565b60008060008060008060008060008060006101208c8e031215610f8057600080fd5b8b3567ffffffffffffffff80821115610f9857600080fd5b818e0191508e601f830112610fac57600080fd5b813581811115610fbb57600080fd5b8f60208260051b8501011115610fd057600080fd5b60208381019e50909c508e01359a50610feb60408f01610f05565b9950610ff960608f01610f05565b985060808e0135975060a08e0135965060c08e0135955060e08e013594506101008e013591508082111561102c57600080fd5b506110398e828f01610f15565b915080935050809150509295989b509295989b9093969950565b60008060008060008060008060006101008a8c03121561107257600080fd5b8935985060208a013561108481610eed565b975060408a013561109481610eed565b965060608a0135955060808a0135945060a08a0135935060c08a0135925060e08a013567ffffffffffffffff8111156110cc57600080fd5b6110d88c828d01610f15565b915080935050809150509295985092959850929598565b60006020828403121561110157600080fd5b5035919050565b60008060008060008060008060e0898b03121561112457600080fd5b883561112f81610eed565b9750602089013561113f81610eed565b965060408901359550606089013594506080890135935060a0890135925060c089013567ffffffffffffffff81111561117757600080fd5b6111838b828c01610f15565b999c989b5096995094979396929594505050565b600080604083850312156111aa57600080fd5b50508035926020909101359150565b6000602082840312156111cb57600080fd5b81356111d681610eed565b9392505050565b6000602082840312156111ef57600080fd5b81516111d681610eed565b60007fffffffffffffffffffffffffffffffffffffffff000000000000000000000000808b60601b168352808a60601b16601484015250876028830152866048830152856068830152846088830152828460a8840137506000910160a801908152979650505050505050565b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052601160045260246000fd5b600181815b808511156112cd5781600019048211156112b3576112b361127c565b808516156112c057918102915b93841c9390800290611297565b509250929050565b6000826112e457506001611372565b816112f157506000611372565b816001811461130757600281146113115761132d565b6001915050611372565b60ff8411156113225761132261127c565b50506001821b611372565b5060208310610133831016604e8410600b8410161715611350575081810a611372565b61135a8383611292565b806000190482111561136e5761136e61127c565b0290505b92915050565b60006111d683836112d5565b60005b8381101561139f578181015183820152602001611387565b50506000910152565b6001600160a01b038416815282602082015260606040820152600082518060608401526113dc816080850160208701611384565b601f01601f191691909101608001949350505050565b6000806040838503121561140557600080fd5b8251801515811461141557600080fd5b602084015190925067ffffffffffffffff8082111561143357600080fd5b818501915085601f83011261144757600080fd5b81518181111561145957611459610df0565b61146c6020601f19601f84011601610e06565b915080825286602082850101111561148357600080fd5b611494816020840160208601611384565b508092505050925092905056fea26469706673582212209134c8539ccd56bd758346b91447d71c4cf7cfc5f897dbb879185467ebd0284964736f6c63430008110033",
546
+ "bytecode": "0x60a06040523060805234801561001457600080fd5b506080516114d7610030600039600061072e01526114d76000f3fe608060405234801561001057600080fd5b506004361061016b5760003560e01c806395fcea78116100cd578063c4d66de811610081578063cb23bcb511610066578063cb23bcb5146102ed578063d5b5cc2314610300578063e78cea921461031357600080fd5b8063c4d66de8146102ba578063c75184df146102cd57600080fd5b8063a04cee60116100b2578063a04cee6014610276578063ae6dead714610289578063b0f30537146102a957600080fd5b806395fcea78146101a95780639f0c04bf1461026357600080fd5b80635a129efe1161012457806372f2a8c71161010957806372f2a8c71461021157806380648b02146102195780638515bc6a1461023e57600080fd5b80635a129efe146101d65780636ae71f121461020957600080fd5b8063119852711161015557806311985271146101ab578063288e5b10146101b257806346547790146101c557600080fd5b80627436d31461017057806308635a9514610196575b600080fd5b61018361017e366004610e37565b610326565b6040519081526020015b60405180910390f35b6101a96101a4366004610f5e565b610363565b005b6000610183565b6101a96101c0366004611053565b6106d7565b6004546001600160801b0316610183565b6101f96101e43660046110ef565b60026020526000908152604090205460ff1681565b604051901515815260200161018d565b6101a9610724565b600654610183565b6007546001600160a01b03165b6040516001600160a01b03909116815260200161018d565b60045470010000000000000000000000000000000090046001600160801b0316610183565b610183610271366004611108565b6108e0565b6101a9610284366004611197565b610925565b6101836102973660046110ef565b60036020526000908152604090205481565b6005546001600160801b0316610183565b6101a96102c83660046111b9565b610964565b6102d5600281565b6040516001600160801b03909116815260200161018d565b600054610226906001600160a01b031681565b61018361030e3660046110ef565b610a7a565b600154610226906001600160a01b031681565b600061035b84848460405160200161034091815260200190565b60405160208183030381529060405280519060200120610ac5565b949350505050565b6000806103768a8a8a8a8a8a8a8a6108e0565b90506103b88d8d808060200260200160405190810160405280939291908181526020018383602002808284376000920191909152508f9250859150610b809050565b915060008a6001600160a01b03168a6001600160a01b03167f20af7f3bbfe38132b8900ae295cd9c8d1914be7052d061a511f3f728dab189648e60405161040191815260200190565b60405180910390a450600060046040518060a00160405290816000820160009054906101000a90046001600160801b03166001600160801b03166001600160801b031681526020016000820160109054906101000a90046001600160801b03166001600160801b03166001600160801b031681526020016001820160009054906101000a90046001600160801b03166001600160801b03166001600160801b03168152602001600282015481526020016003820160009054906101000a90046001600160a01b03166001600160a01b03166001600160a01b03168152505090506040518060a00160405280896001600160801b03168152602001886001600160801b03168152602001876001600160801b031681526020018381526020018b6001600160a01b0316815250600460008201518160000160006101000a8154816001600160801b0302191690836001600160801b0316021790555060208201518160000160106101000a8154816001600160801b0302191690836001600160801b0316021790555060408201518160010160006101000a8154816001600160801b0302191690836001600160801b031602179055506060820151816002015560808201518160030160006101000a8154816001600160a01b0302191690836001600160a01b03160217905550905050610630898686868080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250610d0592505050565b805160208201516001600160801b0391821670010000000000000000000000000000000091831691909102176004556040820151600580547fffffffffffffffffffffffffffffffff0000000000000000000000000000000016919092161790556060810151600655608001516007805473ffffffffffffffffffffffffffffffffffffffff19166001600160a01b03909216919091179055505050505050505050505050565b60405162461bcd60e51b815260206004820152600f60248201527f4e6f7420696d706c656d656e746564000000000000000000000000000000000060448201526064015b60405180910390fd5b6001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001630036107c25760405162461bcd60e51b815260206004820152602c60248201527f46756e6374696f6e206d7573742062652063616c6c6564207468726f7567682060448201527f64656c656761746563616c6c0000000000000000000000000000000000000000606482015260840161071b565b7fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61038054336001600160a01b03821614610838576040517f23295f0e0000000000000000000000000000000000000000000000000000000081523360048201526001600160a01b038216602482015260440161071b565b600160009054906101000a90046001600160a01b03166001600160a01b031663cb23bcb56040518163ffffffff1660e01b8152600401602060405180830381865afa15801561088b573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108af91906111dd565b6000805473ffffffffffffffffffffffffffffffffffffffff19166001600160a01b03929092169190911790555050565b600088888888888888886040516020016109019897969594939291906111fa565b60405160208183030381529060405280519060200120905098975050505050505050565b60008281526003602052604080822083905551829184917fb4df3847300f076a369cd76d2314b470a1194d9e8a6bb97f1860aee88a5f67489190a35050565b6001546001600160a01b0316156109a7576040517fef34ca5c00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001805473ffffffffffffffffffffffffffffffffffffffff19166001600160a01b038316908117909155604080517fcb23bcb5000000000000000000000000000000000000000000000000000000008152905163cb23bcb5916004808201926020929091908290030181865afa158015610a26573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610a4a91906111dd565b6000805473ffffffffffffffffffffffffffffffffffffffff19166001600160a01b039290921691909117905550565b60405162461bcd60e51b815260206004820152600e60248201527f4e4f545f494d504c454d45544544000000000000000000000000000000000000604482015260009060640161071b565b8251600090610100811115610b11576040517ffdac331e00000000000000000000000000000000000000000000000000000000815260048101829052610100602482015260440161071b565b8260005b82811015610b76576000878281518110610b3157610b31611266565b60200260200101519050816001901b8716600003610b5d57826000528060205260406000209250610b6d565b8060005282602052604060002092505b50600101610b15565b5095945050505050565b6000610100845110610bc35783516040517fab6a068300000000000000000000000000000000000000000000000000000000815260040161071b91815260200190565b8351610bd0906002611378565b8310610c20578284516002610be59190611378565b6040517f0b8a724b0000000000000000000000000000000000000000000000000000000081526004810192909252602482015260440161071b565b6000610c2d858585610326565b600081815260036020526040902054909150610c78576040517f8730d7c80000000000000000000000000000000000000000000000000000000081526004810182905260240161071b565b60008481526002602052604090205460ff1615610cc4576040517f9715b8d30000000000000000000000000000000000000000000000000000000081526004810185905260240161071b565b5050600082815260026020526040902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00166001179055819392505050565b6001546040517f9e5d4c4900000000000000000000000000000000000000000000000000000000815260009182916001600160a01b0390911690639e5d4c4990610d57908890889088906004016113a8565b6000604051808303816000875af1158015610d76573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052610d9e91908101906113f2565b9150915081610de957805115610db75780518082602001fd5b6040517f376fb55a00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5050505050565b634e487b7160e01b600052604160045260246000fd5b604051601f8201601f1916810167ffffffffffffffff81118282101715610e2f57610e2f610df0565b604052919050565b600080600060608486031215610e4c57600080fd5b833567ffffffffffffffff80821115610e6457600080fd5b818601915086601f830112610e7857600080fd5b8135602082821115610e8c57610e8c610df0565b8160051b9250610e9d818401610e06565b828152928401810192818101908a851115610eb757600080fd5b948201945b84861015610ed557853582529482019490820190610ebc565b9a918901359950506040909701359695505050505050565b6001600160a01b0381168114610f0257600080fd5b50565b8035610f1081610eed565b919050565b60008083601f840112610f2757600080fd5b50813567ffffffffffffffff811115610f3f57600080fd5b602083019150836020828501011115610f5757600080fd5b9250929050565b60008060008060008060008060008060006101208c8e031215610f8057600080fd5b8b3567ffffffffffffffff80821115610f9857600080fd5b818e0191508e601f830112610fac57600080fd5b813581811115610fbb57600080fd5b8f60208260051b8501011115610fd057600080fd5b60208381019e50909c508e01359a50610feb60408f01610f05565b9950610ff960608f01610f05565b985060808e0135975060a08e0135965060c08e0135955060e08e013594506101008e013591508082111561102c57600080fd5b506110398e828f01610f15565b915080935050809150509295989b509295989b9093969950565b60008060008060008060008060006101008a8c03121561107257600080fd5b8935985060208a013561108481610eed565b975060408a013561109481610eed565b965060608a0135955060808a0135945060a08a0135935060c08a0135925060e08a013567ffffffffffffffff8111156110cc57600080fd5b6110d88c828d01610f15565b915080935050809150509295985092959850929598565b60006020828403121561110157600080fd5b5035919050565b60008060008060008060008060e0898b03121561112457600080fd5b883561112f81610eed565b9750602089013561113f81610eed565b965060408901359550606089013594506080890135935060a0890135925060c089013567ffffffffffffffff81111561117757600080fd5b6111838b828c01610f15565b999c989b5096995094979396929594505050565b600080604083850312156111aa57600080fd5b50508035926020909101359150565b6000602082840312156111cb57600080fd5b81356111d681610eed565b9392505050565b6000602082840312156111ef57600080fd5b81516111d681610eed565b60007fffffffffffffffffffffffffffffffffffffffff000000000000000000000000808b60601b168352808a60601b16601484015250876028830152866048830152856068830152846088830152828460a8840137506000910160a801908152979650505050505050565b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052601160045260246000fd5b600181815b808511156112cd5781600019048211156112b3576112b361127c565b808516156112c057918102915b93841c9390800290611297565b509250929050565b6000826112e457506001611372565b816112f157506000611372565b816001811461130757600281146113115761132d565b6001915050611372565b60ff8411156113225761132261127c565b50506001821b611372565b5060208310610133831016604e8410600b8410161715611350575081810a611372565b61135a8383611292565b806000190482111561136e5761136e61127c565b0290505b92915050565b60006111d683836112d5565b60005b8381101561139f578181015183820152602001611387565b50506000910152565b6001600160a01b038416815282602082015260606040820152600082518060608401526113dc816080850160208701611384565b601f01601f191691909101608001949350505050565b6000806040838503121561140557600080fd5b8251801515811461141557600080fd5b602084015190925067ffffffffffffffff8082111561143357600080fd5b818501915085601f83011261144757600080fd5b81518181111561145957611459610df0565b61146c6020601f19601f84011601610e06565b915080825286602082850101111561148357600080fd5b611494816020840160208601611384565b508092505050925092905056fea2646970667358221220014399e92a28947a32390d6afdc097a293798951a2b0de1adba980920cda6c7964736f6c63430008110033",
547
+ "deployedBytecode": "0x608060405234801561001057600080fd5b506004361061016b5760003560e01c806395fcea78116100cd578063c4d66de811610081578063cb23bcb511610066578063cb23bcb5146102ed578063d5b5cc2314610300578063e78cea921461031357600080fd5b8063c4d66de8146102ba578063c75184df146102cd57600080fd5b8063a04cee60116100b2578063a04cee6014610276578063ae6dead714610289578063b0f30537146102a957600080fd5b806395fcea78146101a95780639f0c04bf1461026357600080fd5b80635a129efe1161012457806372f2a8c71161010957806372f2a8c71461021157806380648b02146102195780638515bc6a1461023e57600080fd5b80635a129efe146101d65780636ae71f121461020957600080fd5b8063119852711161015557806311985271146101ab578063288e5b10146101b257806346547790146101c557600080fd5b80627436d31461017057806308635a9514610196575b600080fd5b61018361017e366004610e37565b610326565b6040519081526020015b60405180910390f35b6101a96101a4366004610f5e565b610363565b005b6000610183565b6101a96101c0366004611053565b6106d7565b6004546001600160801b0316610183565b6101f96101e43660046110ef565b60026020526000908152604090205460ff1681565b604051901515815260200161018d565b6101a9610724565b600654610183565b6007546001600160a01b03165b6040516001600160a01b03909116815260200161018d565b60045470010000000000000000000000000000000090046001600160801b0316610183565b610183610271366004611108565b6108e0565b6101a9610284366004611197565b610925565b6101836102973660046110ef565b60036020526000908152604090205481565b6005546001600160801b0316610183565b6101a96102c83660046111b9565b610964565b6102d5600281565b6040516001600160801b03909116815260200161018d565b600054610226906001600160a01b031681565b61018361030e3660046110ef565b610a7a565b600154610226906001600160a01b031681565b600061035b84848460405160200161034091815260200190565b60405160208183030381529060405280519060200120610ac5565b949350505050565b6000806103768a8a8a8a8a8a8a8a6108e0565b90506103b88d8d808060200260200160405190810160405280939291908181526020018383602002808284376000920191909152508f9250859150610b809050565b915060008a6001600160a01b03168a6001600160a01b03167f20af7f3bbfe38132b8900ae295cd9c8d1914be7052d061a511f3f728dab189648e60405161040191815260200190565b60405180910390a450600060046040518060a00160405290816000820160009054906101000a90046001600160801b03166001600160801b03166001600160801b031681526020016000820160109054906101000a90046001600160801b03166001600160801b03166001600160801b031681526020016001820160009054906101000a90046001600160801b03166001600160801b03166001600160801b03168152602001600282015481526020016003820160009054906101000a90046001600160a01b03166001600160a01b03166001600160a01b03168152505090506040518060a00160405280896001600160801b03168152602001886001600160801b03168152602001876001600160801b031681526020018381526020018b6001600160a01b0316815250600460008201518160000160006101000a8154816001600160801b0302191690836001600160801b0316021790555060208201518160000160106101000a8154816001600160801b0302191690836001600160801b0316021790555060408201518160010160006101000a8154816001600160801b0302191690836001600160801b031602179055506060820151816002015560808201518160030160006101000a8154816001600160a01b0302191690836001600160a01b03160217905550905050610630898686868080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250610d0592505050565b805160208201516001600160801b0391821670010000000000000000000000000000000091831691909102176004556040820151600580547fffffffffffffffffffffffffffffffff0000000000000000000000000000000016919092161790556060810151600655608001516007805473ffffffffffffffffffffffffffffffffffffffff19166001600160a01b03909216919091179055505050505050505050505050565b60405162461bcd60e51b815260206004820152600f60248201527f4e6f7420696d706c656d656e746564000000000000000000000000000000000060448201526064015b60405180910390fd5b6001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001630036107c25760405162461bcd60e51b815260206004820152602c60248201527f46756e6374696f6e206d7573742062652063616c6c6564207468726f7567682060448201527f64656c656761746563616c6c0000000000000000000000000000000000000000606482015260840161071b565b7fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61038054336001600160a01b03821614610838576040517f23295f0e0000000000000000000000000000000000000000000000000000000081523360048201526001600160a01b038216602482015260440161071b565b600160009054906101000a90046001600160a01b03166001600160a01b031663cb23bcb56040518163ffffffff1660e01b8152600401602060405180830381865afa15801561088b573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108af91906111dd565b6000805473ffffffffffffffffffffffffffffffffffffffff19166001600160a01b03929092169190911790555050565b600088888888888888886040516020016109019897969594939291906111fa565b60405160208183030381529060405280519060200120905098975050505050505050565b60008281526003602052604080822083905551829184917fb4df3847300f076a369cd76d2314b470a1194d9e8a6bb97f1860aee88a5f67489190a35050565b6001546001600160a01b0316156109a7576040517fef34ca5c00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001805473ffffffffffffffffffffffffffffffffffffffff19166001600160a01b038316908117909155604080517fcb23bcb5000000000000000000000000000000000000000000000000000000008152905163cb23bcb5916004808201926020929091908290030181865afa158015610a26573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610a4a91906111dd565b6000805473ffffffffffffffffffffffffffffffffffffffff19166001600160a01b039290921691909117905550565b60405162461bcd60e51b815260206004820152600e60248201527f4e4f545f494d504c454d45544544000000000000000000000000000000000000604482015260009060640161071b565b8251600090610100811115610b11576040517ffdac331e00000000000000000000000000000000000000000000000000000000815260048101829052610100602482015260440161071b565b8260005b82811015610b76576000878281518110610b3157610b31611266565b60200260200101519050816001901b8716600003610b5d57826000528060205260406000209250610b6d565b8060005282602052604060002092505b50600101610b15565b5095945050505050565b6000610100845110610bc35783516040517fab6a068300000000000000000000000000000000000000000000000000000000815260040161071b91815260200190565b8351610bd0906002611378565b8310610c20578284516002610be59190611378565b6040517f0b8a724b0000000000000000000000000000000000000000000000000000000081526004810192909252602482015260440161071b565b6000610c2d858585610326565b600081815260036020526040902054909150610c78576040517f8730d7c80000000000000000000000000000000000000000000000000000000081526004810182905260240161071b565b60008481526002602052604090205460ff1615610cc4576040517f9715b8d30000000000000000000000000000000000000000000000000000000081526004810185905260240161071b565b5050600082815260026020526040902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00166001179055819392505050565b6001546040517f9e5d4c4900000000000000000000000000000000000000000000000000000000815260009182916001600160a01b0390911690639e5d4c4990610d57908890889088906004016113a8565b6000604051808303816000875af1158015610d76573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052610d9e91908101906113f2565b9150915081610de957805115610db75780518082602001fd5b6040517f376fb55a00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5050505050565b634e487b7160e01b600052604160045260246000fd5b604051601f8201601f1916810167ffffffffffffffff81118282101715610e2f57610e2f610df0565b604052919050565b600080600060608486031215610e4c57600080fd5b833567ffffffffffffffff80821115610e6457600080fd5b818601915086601f830112610e7857600080fd5b8135602082821115610e8c57610e8c610df0565b8160051b9250610e9d818401610e06565b828152928401810192818101908a851115610eb757600080fd5b948201945b84861015610ed557853582529482019490820190610ebc565b9a918901359950506040909701359695505050505050565b6001600160a01b0381168114610f0257600080fd5b50565b8035610f1081610eed565b919050565b60008083601f840112610f2757600080fd5b50813567ffffffffffffffff811115610f3f57600080fd5b602083019150836020828501011115610f5757600080fd5b9250929050565b60008060008060008060008060008060006101208c8e031215610f8057600080fd5b8b3567ffffffffffffffff80821115610f9857600080fd5b818e0191508e601f830112610fac57600080fd5b813581811115610fbb57600080fd5b8f60208260051b8501011115610fd057600080fd5b60208381019e50909c508e01359a50610feb60408f01610f05565b9950610ff960608f01610f05565b985060808e0135975060a08e0135965060c08e0135955060e08e013594506101008e013591508082111561102c57600080fd5b506110398e828f01610f15565b915080935050809150509295989b509295989b9093969950565b60008060008060008060008060006101008a8c03121561107257600080fd5b8935985060208a013561108481610eed565b975060408a013561109481610eed565b965060608a0135955060808a0135945060a08a0135935060c08a0135925060e08a013567ffffffffffffffff8111156110cc57600080fd5b6110d88c828d01610f15565b915080935050809150509295985092959850929598565b60006020828403121561110157600080fd5b5035919050565b60008060008060008060008060e0898b03121561112457600080fd5b883561112f81610eed565b9750602089013561113f81610eed565b965060408901359550606089013594506080890135935060a0890135925060c089013567ffffffffffffffff81111561117757600080fd5b6111838b828c01610f15565b999c989b5096995094979396929594505050565b600080604083850312156111aa57600080fd5b50508035926020909101359150565b6000602082840312156111cb57600080fd5b81356111d681610eed565b9392505050565b6000602082840312156111ef57600080fd5b81516111d681610eed565b60007fffffffffffffffffffffffffffffffffffffffff000000000000000000000000808b60601b168352808a60601b16601484015250876028830152866048830152856068830152846088830152828460a8840137506000910160a801908152979650505050505050565b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052601160045260246000fd5b600181815b808511156112cd5781600019048211156112b3576112b361127c565b808516156112c057918102915b93841c9390800290611297565b509250929050565b6000826112e457506001611372565b816112f157506000611372565b816001811461130757600281146113115761132d565b6001915050611372565b60ff8411156113225761132261127c565b50506001821b611372565b5060208310610133831016604e8410600b8410161715611350575081810a611372565b61135a8383611292565b806000190482111561136e5761136e61127c565b0290505b92915050565b60006111d683836112d5565b60005b8381101561139f578181015183820152602001611387565b50506000910152565b6001600160a01b038416815282602082015260606040820152600082518060608401526113dc816080850160208701611384565b601f01601f191691909101608001949350505050565b6000806040838503121561140557600080fd5b8251801515811461141557600080fd5b602084015190925067ffffffffffffffff8082111561143357600080fd5b818501915085601f83011261144757600080fd5b81518181111561145957611459610df0565b61146c6020601f19601f84011601610e06565b915080825286602082850101111561148357600080fd5b611494816020840160208601611384565b508092505050925092905056fea2646970667358221220014399e92a28947a32390d6afdc097a293798951a2b0de1adba980920cda6c7964736f6c63430008110033",
548
548
  "linkReferences": {},
549
549
  "deployedLinkReferences": {}
550
550
  }
@@ -1,4 +1,4 @@
1
1
  {
2
2
  "_format": "hh-sol-dbg-1",
3
- "buildInfo": "../../../build-info/911b9fef16d3e7eaeb8dea63439959bf.json"
3
+ "buildInfo": "../../../build-info/4f999a6cce19b0d9a5ec3f1d8da6db35.json"
4
4
  }
@@ -1,4 +1,4 @@
1
1
  {
2
2
  "_format": "hh-sol-dbg-1",
3
- "buildInfo": "../../../build-info/911b9fef16d3e7eaeb8dea63439959bf.json"
3
+ "buildInfo": "../../../build-info/4f999a6cce19b0d9a5ec3f1d8da6db35.json"
4
4
  }
@@ -1,4 +1,4 @@
1
1
  {
2
2
  "_format": "hh-sol-dbg-1",
3
- "buildInfo": "../../../build-info/911b9fef16d3e7eaeb8dea63439959bf.json"
3
+ "buildInfo": "../../../build-info/4f999a6cce19b0d9a5ec3f1d8da6db35.json"
4
4
  }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@arbitrum/nitro-contracts",
3
- "version": "3.0.1-beta.0",
3
+ "version": "3.1.0",
4
4
  "description": "Layer 2 precompiles and rollup for Arbitrum Nitro",
5
5
  "author": "Offchain Labs, Inc.",
6
6
  "license": "BUSL-1.1",
@@ -39,6 +39,8 @@
39
39
  "test:compatibility": "yarn run build:0.6 && yarn run build:0.7",
40
40
  "test:storage": "./test/storage/test.bash",
41
41
  "test:signatures": "./test/signatures/test-sigs.bash",
42
+ "test:e2e:orbit": "hardhat test test/e2e/orbitChain.ts",
43
+ "test:e2e:orbit-fee-token-rollup": "hardhat test test/e2e/customFeeRollup.ts",
42
44
  "test:e2e": "hardhat test test/e2e/*.ts",
43
45
  "test:e2e:stylus": "hardhat test test/e2e/stylusDeployer.ts",
44
46
  "test:upgrade": "./scripts/testUpgrade.bash",
@@ -51,6 +53,7 @@
51
53
  "deploy-eth-rollup": "hardhat run scripts/createEthRollup.ts",
52
54
  "deploy-erc20-rollup": "hardhat run scripts/createERC20Rollup.ts",
53
55
  "create-rollup-testnode": "hardhat run scripts/local-deployment/deployCreatorAndCreateRollup.ts",
56
+ "slither-triage": "slither . --skip-assembly --triage-mode",
54
57
  "script:bold-prepare": "hardhat run ./scripts/prepareBoldUpgrade.ts",
55
58
  "script:bold-populate-lookup": "hardhat run ./scripts/populateLookup.ts",
56
59
  "script:bold-local-execute": "hardhat run ./scripts/executeBoldUpgrade.ts",
@@ -60,49 +63,49 @@
60
63
  "@offchainlabs/upgrade-executor": "1.1.0-beta.0",
61
64
  "@openzeppelin/contracts": "4.7.3",
62
65
  "@openzeppelin/contracts-upgradeable": "4.7.3",
63
- "patch-package": "^6.4.7",
66
+ "patch-package": "^6.5.1",
64
67
  "solady": "0.0.182"
65
68
  },
66
69
  "private": false,
67
70
  "devDependencies": {
68
- "@arbitrum/sdk": "^3.4.1",
69
- "@ethersproject/providers": "^5.7.2",
70
- "@nomicfoundation/hardhat-verify": "^2.0.9",
71
- "@nomiclabs/hardhat-ethers": "npm:hardhat-deploy-ethers@^0.3.0-beta.13",
72
- "@nomiclabs/hardhat-waffle": "^2.0.1",
73
- "@tovarishfin/hardhat-yul": "^3.0.5",
74
- "@typechain/ethers-v5": "^10.0.0",
75
- "@typechain/hardhat": "^6.0.0",
76
- "@types/chai": "^4.3.0",
77
- "@types/mocha": "^9.0.0",
78
- "@types/node": "^17.0.5",
79
- "@typescript-eslint/eslint-plugin": "^5.14.0",
80
- "@typescript-eslint/eslint-plugin-tslint": "^5.27.1",
81
- "@typescript-eslint/parser": "^5.14.0",
71
+ "@arbitrum/sdk": "^3.7.3",
72
+ "@ethersproject/providers": "^5.8.0",
73
+ "@nomicfoundation/hardhat-chai-matchers": "^1.0.6",
74
+ "@nomicfoundation/hardhat-verify": "^2.0.13",
75
+ "@nomiclabs/hardhat-ethers": "^2.2.3",
76
+ "@typechain/ethers-v5": "^10.2.1",
77
+ "@typechain/hardhat": "^6.1.6",
78
+ "@types/chai": "^4.3.20",
79
+ "@types/mocha": "^9.1.1",
80
+ "@types/node": "^17.0.45",
81
+ "@typescript-eslint/eslint-plugin": "^5.62.0",
82
+ "@typescript-eslint/eslint-plugin-tslint": "^5.62.0",
83
+ "@typescript-eslint/parser": "^5.62.0",
84
+ "@uniswap/lib": "^4.0.1-alpha",
85
+ "@uniswap/v2-core": "^1.0.1",
82
86
  "audit-ci": "^6.6.1",
83
- "chai": "^4.3.4",
84
- "dotenv": "^16.3.1",
85
- "eslint": "^8.23.1",
86
- "eslint-config-prettier": "^8.3.0",
87
+ "chai": "^4.5.0",
88
+ "dotenv": "^16.4.7",
89
+ "eslint": "^8.57.1",
90
+ "eslint-config-prettier": "^8.10.0",
87
91
  "eslint-plugin-mocha": "^9.0.0",
88
- "eslint-plugin-prettier": "^4.0.0",
89
- "ethereum-waffle": "^4.0.10",
90
- "ethers": "^5.5.4",
91
- "hardhat": "^2.17.2",
92
+ "eslint-plugin-prettier": "^4.2.1",
93
+ "ethers": "^5.8.0",
94
+ "hardhat": "^2.22.19",
92
95
  "hardhat-contract-sizer": "^2.10.0",
93
- "hardhat-deploy": "^0.11.37",
94
- "hardhat-gas-reporter": "^1.0.9",
95
- "hardhat-ignore-warnings": "^0.2.9",
96
+ "hardhat-deploy": "^0.11.45",
97
+ "hardhat-gas-reporter": "^1.0.10",
98
+ "hardhat-ignore-warnings": "^0.2.12",
96
99
  "postinstall-postinstall": "^2.1.0",
97
- "prettier": "^2.5.1",
98
- "prettier-plugin-solidity": "^1.0.0-beta.19",
99
- "solhint": "^3.3.7",
100
- "solhint-plugin-prettier": "^0.0.5",
101
- "solidity-coverage": "^0.8.4",
102
- "ts-node": "^10.4.0",
100
+ "prettier": "^2.8.8",
101
+ "prettier-plugin-solidity": "^1.4.2",
102
+ "solhint": "^3.6.2",
103
+ "solhint-plugin-prettier": "^0.1.0",
104
+ "solidity-coverage": "^0.8.14",
105
+ "ts-node": "^10.9.2",
103
106
  "tslint": "^6.1.3",
104
107
  "typechain": "^8.3.2",
105
- "typescript": "^4.5.4",
106
- "yarn-audit-fix": "^10.0.7"
108
+ "typescript": "^4.9.5",
109
+ "yarn-audit-fix": "^10.1.1"
107
110
  }
108
111
  }
@@ -69,6 +69,9 @@ interface ISequencerInbox is IDelayedMessageProvider {
69
69
  /// @dev Owner set the buffer config.
70
70
  event BufferConfigSet(BufferConfig bufferConfig);
71
71
 
72
+ /// @dev Owner set the fee token pricer.
73
+ event FeeTokenPricerSet(address feeTokenPricer);
74
+
72
75
  function totalDelayedMessagesRead() external view returns (uint256);
73
76
 
74
77
  function bridge() external view returns (IBridge);
@@ -132,6 +135,15 @@ interface ISequencerInbox is IDelayedMessageProvider {
132
135
  /// This enables the batch poster to do key rotation
133
136
  function batchPosterManager() external view returns (address);
134
137
 
138
+ /// @notice The fee token pricer is used to get the exchange rate between the child chain's fee token
139
+ /// and parent chain's fee token. This is needed when the child chain uses a custom fee
140
+ /// token which is different from the parent chain's fee token. The exchange rate is
141
+ /// used to correctly report converted gas price in the batch spending reports, so
142
+ /// the batch poster can get properly reimbursed on the child chain. If the chain uses
143
+ /// a custom fee token, but the pricer is not set, then the batch poster reports won't be reported
144
+ /// and the batch poster won't get reimbursed.
145
+ function feeTokenPricer() external view returns (IFeeTokenPricer);
146
+
135
147
  struct DasKeySetInfo {
136
148
  bool isValidKeyset;
137
149
  uint64 creationBlock;
@@ -321,6 +333,15 @@ interface ISequencerInbox is IDelayedMessageProvider {
321
333
  address newBatchPosterManager
322
334
  ) external;
323
335
 
336
+ /**
337
+ * @notice Updates the fee token pricer, the contract which is used to get the exchange rate between child
338
+ * chain's fee token and parent chain's fee token in rollups that use a custom fee token.
339
+ * @param newFeeTokenPricer The new fee token pricer to be set
340
+ */
341
+ function setFeeTokenPricer(
342
+ IFeeTokenPricer newFeeTokenPricer
343
+ ) external;
344
+
324
345
  /// @notice Allows the rollup owner to sync the rollup address
325
346
  function updateRollupAddress() external;
326
347
 
@@ -329,6 +350,17 @@ interface ISequencerInbox is IDelayedMessageProvider {
329
350
  function initialize(
330
351
  IBridge bridge_,
331
352
  MaxTimeVariation calldata maxTimeVariation_,
332
- BufferConfig calldata bufferConfig_
353
+ BufferConfig calldata bufferConfig_,
354
+ IFeeTokenPricer feeTokenPricer_
333
355
  ) external;
334
356
  }
357
+
358
+ interface IFeeTokenPricer {
359
+ /**
360
+ * @notice Get the number of child chain fee tokens per 1 parent chain fee token. Exchange rate must be
361
+ * denominated in 18 decimals. Function is mutable so it allows the pricer to keep internal state.
362
+ * @dev For example, parent chain's native token is ETH, fee token is DAI. If price of 1ETH = 2000DAI, then function should return 2000*1e18.
363
+ * If fee token is USDC instead and price of 1ETH = 2000USDC, function should still return 2000*1e18, despite USDC using 6 decimals.
364
+ */
365
+ function getExchangeRate() external returns (uint256);
366
+ }
@@ -29,6 +29,7 @@ import {
29
29
  NativeTokenMismatch,
30
30
  BadMaxTimeVariation,
31
31
  Deprecated,
32
+ CannotSetFeeTokenPricer,
32
33
  NotDelayBufferable,
33
34
  InvalidDelayedAccPreimage,
34
35
  DelayProofRequired,
@@ -61,6 +62,8 @@ import "./DelayBuffer.sol";
61
62
  * sequencer within a time limit they can be force included into the rollup inbox by anyone.
62
63
  */
63
64
  contract SequencerInbox is DelegateCallAware, GasRefundEnabled, ISequencerInbox {
65
+ using DelayBuffer for BufferData;
66
+
64
67
  uint256 public totalDelayedMessagesRead;
65
68
 
66
69
  IBridge public bridge;
@@ -123,6 +126,11 @@ contract SequencerInbox is DelegateCallAware, GasRefundEnabled, ISequencerInbox
123
126
  /// @inheritdoc ISequencerInbox
124
127
  address public batchPosterManager;
125
128
 
129
+ BufferData public buffer;
130
+
131
+ /// @inheritdoc ISequencerInbox
132
+ IFeeTokenPricer public feeTokenPricer;
133
+
126
134
  // On L1 this should be set to 117964: 90% of Geth's 128KB tx size limit, leaving ~13KB for proving
127
135
  uint256 public immutable maxDataSize;
128
136
  uint256 internal immutable deployTimeChainId = block.chainid;
@@ -133,10 +141,6 @@ contract SequencerInbox is DelegateCallAware, GasRefundEnabled, ISequencerInbox
133
141
  // True if the SequencerInbox is delay bufferable
134
142
  bool public immutable isDelayBufferable;
135
143
 
136
- using DelayBuffer for BufferData;
137
-
138
- BufferData public buffer;
139
-
140
144
  constructor(
141
145
  uint256 _maxDataSize,
142
146
  IReader4844 reader4844_,
@@ -175,7 +179,8 @@ contract SequencerInbox is DelegateCallAware, GasRefundEnabled, ISequencerInbox
175
179
  function initialize(
176
180
  IBridge bridge_,
177
181
  ISequencerInbox.MaxTimeVariation calldata maxTimeVariation_,
178
- BufferConfig memory bufferConfig_
182
+ BufferConfig memory bufferConfig_,
183
+ IFeeTokenPricer feeTokenPricer_
179
184
  ) external onlyDelegated {
180
185
  if (bridge != IBridge(address(0))) revert AlreadyInit();
181
186
  if (bridge_ == IBridge(address(0))) revert HadZeroInit();
@@ -200,6 +205,11 @@ contract SequencerInbox is DelegateCallAware, GasRefundEnabled, ISequencerInbox
200
205
  if (isDelayBufferable) {
201
206
  _setBufferConfig(bufferConfig_);
202
207
  }
208
+
209
+ if (!isUsingFeeToken && feeTokenPricer_ != IFeeTokenPricer(address(0))) {
210
+ revert CannotSetFeeTokenPricer();
211
+ }
212
+ feeTokenPricer = feeTokenPricer_;
203
213
  }
204
214
 
205
215
  /// @notice Allows the rollup owner to sync the rollup address
@@ -438,7 +448,7 @@ contract SequencerInbox is DelegateCallAware, GasRefundEnabled, ISequencerInbox
438
448
  // submit a batch spending report to refund the entity that produced the blob batch data
439
449
  // same as using calldata, we only submit spending report if the caller is the origin and is codeless
440
450
  // such that one cannot "double-claim" batch posting refund in the same tx
441
- if (CallerChecker.isCallerCodelessOrigin() && !isUsingFeeToken) {
451
+ if (CallerChecker.isCallerCodelessOrigin()) {
442
452
  submitBatchSpendingReport(dataHash, seqMessageIndex, block.basefee, blobGas);
443
453
  }
444
454
  }
@@ -660,19 +670,36 @@ contract SequencerInbox is DelegateCallAware, GasRefundEnabled, ISequencerInbox
660
670
  uint256 gasPrice,
661
671
  uint256 extraGas
662
672
  ) internal {
673
+ // When using a fee token the batch poster needs to be reimbursed on the child chain in units of the child chain fee token.
674
+ // We need to get the exchange rate between the child chain fee token and the parent chain fee token using the pricer.
675
+ // If the pricer is not set, then we do not send batch reports and batch poster never gets reimbursed
676
+ IFeeTokenPricer _feeTokenPricer = feeTokenPricer;
677
+ if (isUsingFeeToken && address(_feeTokenPricer) == address(0)) {
678
+ return;
679
+ }
680
+
663
681
  // report the account who paid the gas (tx.origin) for the tx as batch poster
664
682
  // if msg.sender is used and is a contract, it might not be able to spend the refund on l2
665
683
  // solhint-disable-next-line avoid-tx-origin
666
684
  address batchPoster = tx.origin;
667
685
 
668
- // this msg isn't included in the current sequencer batch, but instead added to
669
- // the delayed messages queue that is yet to be included
670
686
  if (hostChainIsArbitrum) {
671
687
  // Include extra gas for the host chain's L1 gas charging
672
688
  uint256 l1Fees = ArbGasInfo(address(0x6c)).getCurrentTxL1GasFees();
673
689
  extraGas += l1Fees / block.basefee;
674
690
  }
675
691
  if (extraGas > type(uint64).max) revert ExtraGasNotUint64();
692
+
693
+ if (isUsingFeeToken && address(_feeTokenPricer) != address(0)) {
694
+ // gasPrice is originally denominated in parent chain's native token and we want to scale it to the child
695
+ // chain's fee token. For that we need the exchange rate which tells us how many child chain fee tokens
696
+ // we get for 1 parent chain fee token. Exchange rate is denominated in 18 decimals.
697
+ uint256 exchangeRate = _feeTokenPricer.getExchangeRate();
698
+ gasPrice = (gasPrice * exchangeRate) / 1e18;
699
+ }
700
+
701
+ // this msg isn't included in the current sequencer batch, but instead added to
702
+ // the delayed messages queue that is yet to be included
676
703
  bytes memory spendingReportMsg = abi.encodePacked(
677
704
  block.timestamp, batchPoster, dataHash, seqMessageIndex, gasPrice, uint64(extraGas)
678
705
  );
@@ -701,8 +728,7 @@ contract SequencerInbox is DelegateCallAware, GasRefundEnabled, ISequencerInbox
701
728
 
702
729
  totalDelayedMessagesRead = afterDelayedMessagesRead;
703
730
 
704
- if (calldataLengthPosted > 0 && !isUsingFeeToken) {
705
- // only report batch poster spendings if chain is using ETH as native currency
731
+ if (calldataLengthPosted > 0) {
706
732
  submitBatchSpendingReport(dataHash, seqMessageIndex, block.basefee, 0);
707
733
  }
708
734
  }
@@ -845,6 +871,19 @@ contract SequencerInbox is DelegateCallAware, GasRefundEnabled, ISequencerInbox
845
871
  emit OwnerFunctionCalled(5);
846
872
  }
847
873
 
874
+ /// @inheritdoc ISequencerInbox
875
+ function setFeeTokenPricer(
876
+ IFeeTokenPricer feeTokenPricer_
877
+ ) external onlyRollupOwner {
878
+ if (!isUsingFeeToken) {
879
+ revert CannotSetFeeTokenPricer();
880
+ }
881
+
882
+ feeTokenPricer = feeTokenPricer_;
883
+ emit FeeTokenPricerSet(address(feeTokenPricer_));
884
+ emit OwnerFunctionCalled(6);
885
+ }
886
+
848
887
  function setBufferConfig(
849
888
  BufferConfig memory bufferConfig_
850
889
  ) external onlyRollupOwner {
@@ -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,33 @@
1
+ // Copyright 2024, Offchain Labs, Inc.
2
+ // For license information, see https://github.com/OffchainLabs/nitro-contracts/blob/main/LICENSE
3
+ // SPDX-License-Identifier: BUSL-1.1
4
+
5
+ pragma solidity ^0.8.0;
6
+
7
+ contract SelfDestructInConstructorWithoutDestination {
8
+ constructor() public payable {
9
+ selfdestruct(payable(address(this)));
10
+ }
11
+ }
12
+
13
+ contract SelfDestructInConstructorWithDestination {
14
+ constructor(
15
+ address payable destination
16
+ ) public payable {
17
+ selfdestruct(destination);
18
+ }
19
+ }
20
+
21
+ contract SelfDestructOutsideConstructor {
22
+ constructor() public payable {}
23
+
24
+ function selfDestructWithDestination(
25
+ address payable destination
26
+ ) public {
27
+ selfdestruct(destination);
28
+ }
29
+
30
+ function selfDestructWithoutDestination() public {
31
+ selfdestruct(payable(address(this)));
32
+ }
33
+ }
@@ -41,6 +41,28 @@ contract Simple {
41
41
  emit RedeemedEvent(msg.sender, ArbRetryableTx(address(110)).getCurrentRedeemer());
42
42
  }
43
43
 
44
+ /**
45
+ * @notice Redeems a list of retryable tickets.
46
+ * @param ticketIds The array of retryable ticket identifiers (ticket hashes).
47
+ */
48
+ function redeemAllAndCreateAddresses(
49
+ bytes32[] calldata ticketIds,
50
+ address payable[] calldata addresses
51
+ ) external payable {
52
+ for (uint256 i = 0; i < ticketIds.length; i++) {
53
+ // Attempt to redeem each retryable ticket
54
+ try ArbRetryableTx(address(110)).redeem{gas: 100000}(ticketIds[i]) {
55
+ // Ticket redeemed successfully
56
+ counter++;
57
+ } catch {
58
+ revert("Failed to redeem one or more tickets");
59
+ }
60
+ }
61
+ for (uint256 i = 0; i < addresses.length; i++) {
62
+ addresses[i].transfer(1);
63
+ }
64
+ }
65
+
44
66
  function emitNullEvent() external {
45
67
  emit NullEvent();
46
68
  }
@@ -161,6 +161,11 @@ interface ArbOwner {
161
161
  uint16 limit
162
162
  ) external;
163
163
 
164
+ /// @notice Sets the maximum size of the uncompressed wasm code in bytes
165
+ function setWasmMaxSize(
166
+ uint32 size
167
+ ) external;
168
+
164
169
  /// @notice Sets the minimum costs to invoke a program
165
170
  /// @param gas amount of gas paid in increments of 256 when not the program is not cached
166
171
  /// @param cached amount of gas paid in increments of 64 when the program is cached
@@ -202,6 +207,14 @@ interface ArbOwner {
202
207
  string calldata chainConfig
203
208
  ) external;
204
209
 
210
+ /**
211
+ * @notice Sets the increased calldata price feature on or off (EIP-7623)
212
+ * Available in ArbOS version 40 with default as false
213
+ */
214
+ function setCalldataPriceIncrease(
215
+ bool enable
216
+ ) external;
217
+
205
218
  /// Emitted when a successful call is made to this precompile
206
219
  event OwnerActs(bytes4 indexed method, address indexed owner, bytes data);
207
220
  }
@@ -41,5 +41,11 @@ interface ArbOwnerPublic {
41
41
  view
42
42
  returns (uint64 arbosVersion, uint64 scheduledForTimestamp);
43
43
 
44
+ /**
45
+ * @notice Checks if the increased calldata price feature (EIP-7623) is enabled
46
+ * Available in ArbOS version 40 with default as false
47
+ */
48
+ function isCalldataPriceIncreaseEnabled() external view returns (bool);
49
+
44
50
  event ChainOwnerRectified(address rectifiedOwner);
45
51
  }
@@ -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 =