@arbitrum/nitro-contracts 3.1.1 → 3.2.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 (392) hide show
  1. package/LICENSE.md +1 -1
  2. package/README.md +1 -1
  3. package/build/contracts/@openzeppelin/contracts/access/AccessControl.sol/AccessControl.dbg.json +4 -0
  4. package/build/contracts/@openzeppelin/contracts/access/AccessControl.sol/AccessControl.json +215 -0
  5. package/build/contracts/@openzeppelin/contracts/access/AccessControlEnumerable.sol/AccessControlEnumerable.dbg.json +4 -0
  6. package/build/contracts/@openzeppelin/contracts/access/AccessControlEnumerable.sol/AccessControlEnumerable.json +258 -0
  7. package/build/contracts/@openzeppelin/contracts/access/IAccessControl.sol/IAccessControl.dbg.json +4 -0
  8. package/build/contracts/@openzeppelin/contracts/access/IAccessControl.sol/IAccessControl.json +183 -0
  9. package/build/contracts/@openzeppelin/contracts/access/IAccessControlEnumerable.sol/IAccessControlEnumerable.dbg.json +4 -0
  10. package/build/contracts/@openzeppelin/contracts/access/IAccessControlEnumerable.sol/IAccessControlEnumerable.json +226 -0
  11. package/build/contracts/@openzeppelin/contracts/access/Ownable.sol/Ownable.dbg.json +1 -1
  12. package/build/contracts/@openzeppelin/contracts/interfaces/draft-IERC1822.sol/IERC1822Proxiable.dbg.json +1 -1
  13. package/build/contracts/@openzeppelin/contracts/proxy/ERC1967/ERC1967Proxy.sol/ERC1967Proxy.dbg.json +1 -1
  14. package/build/contracts/@openzeppelin/contracts/proxy/ERC1967/ERC1967Proxy.sol/ERC1967Proxy.json +2 -2
  15. package/build/contracts/@openzeppelin/contracts/proxy/ERC1967/ERC1967Upgrade.sol/ERC1967Upgrade.dbg.json +1 -1
  16. package/build/contracts/@openzeppelin/contracts/proxy/Proxy.sol/Proxy.dbg.json +1 -1
  17. package/build/contracts/@openzeppelin/contracts/proxy/beacon/IBeacon.sol/IBeacon.dbg.json +1 -1
  18. package/build/contracts/@openzeppelin/contracts/proxy/transparent/ProxyAdmin.sol/ProxyAdmin.dbg.json +1 -1
  19. package/build/contracts/@openzeppelin/contracts/proxy/transparent/ProxyAdmin.sol/ProxyAdmin.json +2 -2
  20. package/build/contracts/@openzeppelin/contracts/proxy/transparent/TransparentUpgradeableProxy.sol/TransparentUpgradeableProxy.dbg.json +1 -1
  21. package/build/contracts/@openzeppelin/contracts/proxy/transparent/TransparentUpgradeableProxy.sol/TransparentUpgradeableProxy.json +2 -2
  22. package/build/contracts/@openzeppelin/contracts/proxy/utils/UUPSUpgradeable.sol/UUPSUpgradeable.dbg.json +1 -1
  23. package/build/contracts/@openzeppelin/contracts/security/ReentrancyGuard.sol/ReentrancyGuard.dbg.json +1 -1
  24. package/build/contracts/@openzeppelin/contracts/token/ERC20/ERC20.sol/ERC20.dbg.json +1 -1
  25. package/build/contracts/@openzeppelin/contracts/token/ERC20/ERC20.sol/ERC20.json +2 -2
  26. package/build/contracts/@openzeppelin/contracts/token/ERC20/IERC20.sol/IERC20.dbg.json +1 -1
  27. package/build/contracts/@openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata.sol/IERC20Metadata.dbg.json +1 -1
  28. package/build/contracts/@openzeppelin/contracts/token/ERC20/extensions/draft-IERC20Permit.sol/IERC20Permit.dbg.json +1 -1
  29. package/build/contracts/@openzeppelin/contracts/token/ERC20/utils/SafeERC20.sol/SafeERC20.dbg.json +1 -1
  30. package/build/contracts/@openzeppelin/contracts/token/ERC20/utils/SafeERC20.sol/SafeERC20.json +2 -2
  31. package/build/contracts/@openzeppelin/contracts/utils/Address.sol/Address.dbg.json +1 -1
  32. package/build/contracts/@openzeppelin/contracts/utils/Address.sol/Address.json +2 -2
  33. package/build/contracts/@openzeppelin/contracts/utils/Context.sol/Context.dbg.json +1 -1
  34. package/build/contracts/@openzeppelin/contracts/utils/Create2.sol/Create2.dbg.json +1 -1
  35. package/build/contracts/@openzeppelin/contracts/utils/Create2.sol/Create2.json +2 -2
  36. package/build/contracts/@openzeppelin/contracts/utils/StorageSlot.sol/StorageSlot.dbg.json +1 -1
  37. package/build/contracts/@openzeppelin/contracts/utils/StorageSlot.sol/StorageSlot.json +2 -2
  38. package/build/contracts/@openzeppelin/contracts/utils/Strings.sol/Strings.dbg.json +1 -1
  39. package/build/contracts/@openzeppelin/contracts/utils/Strings.sol/Strings.json +2 -2
  40. package/build/contracts/@openzeppelin/contracts/utils/cryptography/ECDSA.sol/ECDSA.dbg.json +1 -1
  41. package/build/contracts/@openzeppelin/contracts/utils/cryptography/ECDSA.sol/ECDSA.json +2 -2
  42. package/build/contracts/@openzeppelin/contracts/utils/introspection/ERC165.sol/ERC165.dbg.json +4 -0
  43. package/build/contracts/@openzeppelin/contracts/utils/introspection/ERC165.sol/ERC165.json +30 -0
  44. package/build/contracts/@openzeppelin/contracts/utils/introspection/IERC165.sol/IERC165.dbg.json +4 -0
  45. package/build/contracts/@openzeppelin/contracts/utils/introspection/IERC165.sol/IERC165.json +30 -0
  46. package/build/contracts/@openzeppelin/contracts/utils/structs/EnumerableSet.sol/EnumerableSet.dbg.json +4 -0
  47. package/build/contracts/@openzeppelin/contracts/utils/structs/EnumerableSet.sol/EnumerableSet.json +10 -0
  48. package/build/contracts/@openzeppelin/contracts-upgradeable/access/AccessControlEnumerableUpgradeable.sol/AccessControlEnumerableUpgradeable.dbg.json +1 -1
  49. package/build/contracts/@openzeppelin/contracts-upgradeable/access/AccessControlUpgradeable.sol/AccessControlUpgradeable.dbg.json +1 -1
  50. package/build/contracts/@openzeppelin/contracts-upgradeable/access/IAccessControlEnumerableUpgradeable.sol/IAccessControlEnumerableUpgradeable.dbg.json +1 -1
  51. package/build/contracts/@openzeppelin/contracts-upgradeable/access/IAccessControlUpgradeable.sol/IAccessControlUpgradeable.dbg.json +1 -1
  52. package/build/contracts/@openzeppelin/contracts-upgradeable/access/OwnableUpgradeable.sol/OwnableUpgradeable.dbg.json +1 -1
  53. package/build/contracts/@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol/Initializable.dbg.json +1 -1
  54. package/build/contracts/@openzeppelin/contracts-upgradeable/security/PausableUpgradeable.sol/PausableUpgradeable.dbg.json +1 -1
  55. package/build/contracts/@openzeppelin/contracts-upgradeable/token/ERC20/ERC20Upgradeable.sol/ERC20Upgradeable.dbg.json +1 -1
  56. package/build/contracts/@openzeppelin/contracts-upgradeable/token/ERC20/ERC20Upgradeable.sol/ERC20Upgradeable.json +2 -2
  57. package/build/contracts/@openzeppelin/contracts-upgradeable/token/ERC20/IERC20Upgradeable.sol/IERC20Upgradeable.dbg.json +1 -1
  58. package/build/contracts/@openzeppelin/contracts-upgradeable/token/ERC20/extensions/ERC20BurnableUpgradeable.sol/ERC20BurnableUpgradeable.dbg.json +1 -1
  59. package/build/contracts/@openzeppelin/contracts-upgradeable/token/ERC20/extensions/IERC20MetadataUpgradeable.sol/IERC20MetadataUpgradeable.dbg.json +1 -1
  60. package/build/contracts/@openzeppelin/contracts-upgradeable/utils/AddressUpgradeable.sol/AddressUpgradeable.dbg.json +1 -1
  61. package/build/contracts/@openzeppelin/contracts-upgradeable/utils/AddressUpgradeable.sol/AddressUpgradeable.json +2 -2
  62. package/build/contracts/@openzeppelin/contracts-upgradeable/utils/ContextUpgradeable.sol/ContextUpgradeable.dbg.json +1 -1
  63. package/build/contracts/@openzeppelin/contracts-upgradeable/utils/Create2Upgradeable.sol/Create2Upgradeable.dbg.json +1 -1
  64. package/build/contracts/@openzeppelin/contracts-upgradeable/utils/Create2Upgradeable.sol/Create2Upgradeable.json +2 -2
  65. package/build/contracts/@openzeppelin/contracts-upgradeable/utils/StorageSlotUpgradeable.sol/StorageSlotUpgradeable.dbg.json +1 -1
  66. package/build/contracts/@openzeppelin/contracts-upgradeable/utils/StorageSlotUpgradeable.sol/StorageSlotUpgradeable.json +2 -2
  67. package/build/contracts/@openzeppelin/contracts-upgradeable/utils/StringsUpgradeable.sol/StringsUpgradeable.dbg.json +1 -1
  68. package/build/contracts/@openzeppelin/contracts-upgradeable/utils/StringsUpgradeable.sol/StringsUpgradeable.json +2 -2
  69. package/build/contracts/@openzeppelin/contracts-upgradeable/utils/cryptography/ECDSAUpgradeable.sol/ECDSAUpgradeable.dbg.json +1 -1
  70. package/build/contracts/@openzeppelin/contracts-upgradeable/utils/cryptography/ECDSAUpgradeable.sol/ECDSAUpgradeable.json +2 -2
  71. package/build/contracts/@openzeppelin/contracts-upgradeable/utils/cryptography/draft-EIP712Upgradeable.sol/EIP712Upgradeable.dbg.json +1 -1
  72. package/build/contracts/@openzeppelin/contracts-upgradeable/utils/introspection/ERC165Upgradeable.sol/ERC165Upgradeable.dbg.json +1 -1
  73. package/build/contracts/@openzeppelin/contracts-upgradeable/utils/introspection/IERC165Upgradeable.sol/IERC165Upgradeable.dbg.json +1 -1
  74. package/build/contracts/@openzeppelin/contracts-upgradeable/utils/structs/EnumerableSetUpgradeable.sol/EnumerableSetUpgradeable.dbg.json +1 -1
  75. package/build/contracts/@openzeppelin/contracts-upgradeable/utils/structs/EnumerableSetUpgradeable.sol/EnumerableSetUpgradeable.json +2 -2
  76. package/build/contracts/src/assertionStakingPool/AbsBoldStakingPool.sol/AbsBoldStakingPool.dbg.json +1 -1
  77. package/build/contracts/src/assertionStakingPool/AssertionStakingPool.sol/AssertionStakingPool.dbg.json +1 -1
  78. package/build/contracts/src/assertionStakingPool/AssertionStakingPool.sol/AssertionStakingPool.json +2 -2
  79. package/build/contracts/src/assertionStakingPool/AssertionStakingPoolCreator.sol/AssertionStakingPoolCreator.dbg.json +1 -1
  80. package/build/contracts/src/assertionStakingPool/AssertionStakingPoolCreator.sol/AssertionStakingPoolCreator.json +2 -2
  81. package/build/contracts/src/assertionStakingPool/EdgeStakingPool.sol/EdgeStakingPool.dbg.json +1 -1
  82. package/build/contracts/src/assertionStakingPool/EdgeStakingPool.sol/EdgeStakingPool.json +2 -2
  83. package/build/contracts/src/assertionStakingPool/EdgeStakingPoolCreator.sol/EdgeStakingPoolCreator.dbg.json +1 -1
  84. package/build/contracts/src/assertionStakingPool/EdgeStakingPoolCreator.sol/EdgeStakingPoolCreator.json +2 -2
  85. package/build/contracts/src/assertionStakingPool/StakingPoolCreatorUtils.sol/StakingPoolCreatorUtils.dbg.json +1 -1
  86. package/build/contracts/src/assertionStakingPool/StakingPoolCreatorUtils.sol/StakingPoolCreatorUtils.json +2 -2
  87. package/build/contracts/src/assertionStakingPool/interfaces/IAbsBoldStakingPool.sol/IAbsBoldStakingPool.dbg.json +1 -1
  88. package/build/contracts/src/assertionStakingPool/interfaces/IAssertionStakingPool.sol/IAssertionStakingPool.dbg.json +1 -1
  89. package/build/contracts/src/assertionStakingPool/interfaces/IAssertionStakingPoolCreator.sol/IAssertionStakingPoolCreator.dbg.json +1 -1
  90. package/build/contracts/src/assertionStakingPool/interfaces/IEdgeStakingPool.sol/IEdgeStakingPool.dbg.json +1 -1
  91. package/build/contracts/src/assertionStakingPool/interfaces/IEdgeStakingPoolCreator.sol/IEdgeStakingPoolCreator.dbg.json +1 -1
  92. package/build/contracts/src/bridge/AbsBridge.sol/AbsBridge.dbg.json +1 -1
  93. package/build/contracts/src/bridge/AbsInbox.sol/AbsInbox.dbg.json +1 -1
  94. package/build/contracts/src/bridge/AbsOutbox.sol/AbsOutbox.dbg.json +1 -1
  95. package/build/contracts/src/bridge/Bridge.sol/Bridge.dbg.json +1 -1
  96. package/build/contracts/src/bridge/Bridge.sol/Bridge.json +2 -2
  97. package/build/contracts/src/bridge/DelayBuffer.sol/DelayBuffer.dbg.json +1 -1
  98. package/build/contracts/src/bridge/DelayBuffer.sol/DelayBuffer.json +2 -2
  99. package/build/contracts/src/bridge/ERC20Bridge.sol/ERC20Bridge.dbg.json +1 -1
  100. package/build/contracts/src/bridge/ERC20Bridge.sol/ERC20Bridge.json +2 -2
  101. package/build/contracts/src/bridge/ERC20Inbox.sol/ERC20Inbox.dbg.json +1 -1
  102. package/build/contracts/src/bridge/ERC20Inbox.sol/ERC20Inbox.json +2 -2
  103. package/build/contracts/src/bridge/ERC20Outbox.sol/ERC20Outbox.dbg.json +1 -1
  104. package/build/contracts/src/bridge/ERC20Outbox.sol/ERC20Outbox.json +2 -2
  105. package/build/contracts/src/bridge/GasRefunder.sol/GasRefunder.dbg.json +1 -1
  106. package/build/contracts/src/bridge/GasRefunder.sol/GasRefunder.json +2 -2
  107. package/build/contracts/src/bridge/IBridge.sol/IBridge.dbg.json +1 -1
  108. package/build/contracts/src/bridge/IDelayedMessageProvider.sol/IDelayedMessageProvider.dbg.json +1 -1
  109. package/build/contracts/src/bridge/IERC20Bridge.sol/IERC20Bridge.dbg.json +1 -1
  110. package/build/contracts/src/bridge/IERC20Inbox.sol/IERC20Inbox.dbg.json +1 -1
  111. package/build/contracts/src/bridge/IEthBridge.sol/IEthBridge.dbg.json +1 -1
  112. package/build/contracts/src/bridge/IInbox.sol/IInbox.dbg.json +1 -1
  113. package/build/contracts/src/bridge/IInboxBase.sol/IInboxBase.dbg.json +1 -1
  114. package/build/contracts/src/bridge/IOutbox.sol/IOutbox.dbg.json +1 -1
  115. package/build/contracts/src/bridge/IOwnable.sol/IOwnable.dbg.json +1 -1
  116. package/build/contracts/src/bridge/ISequencerInbox.sol/IFeeTokenPricer.dbg.json +1 -1
  117. package/build/contracts/src/bridge/ISequencerInbox.sol/ISequencerInbox.dbg.json +1 -1
  118. package/build/contracts/src/bridge/ISequencerInbox.sol/ISequencerInbox.json +13 -0
  119. package/build/contracts/src/bridge/Inbox.sol/Inbox.dbg.json +1 -1
  120. package/build/contracts/src/bridge/Inbox.sol/Inbox.json +2 -2
  121. package/build/contracts/src/bridge/Messages.sol/Messages.dbg.json +1 -1
  122. package/build/contracts/src/bridge/Messages.sol/Messages.json +2 -2
  123. package/build/contracts/src/bridge/Outbox.sol/Outbox.dbg.json +1 -1
  124. package/build/contracts/src/bridge/Outbox.sol/Outbox.json +2 -2
  125. package/build/contracts/src/bridge/SequencerInbox.sol/SequencerInbox.dbg.json +1 -1
  126. package/build/contracts/src/bridge/SequencerInbox.sol/SequencerInbox.json +15 -2
  127. package/build/contracts/src/bridge/extra/ERC20MigrationOutbox.sol/ERC20MigrationOutbox.dbg.json +1 -1
  128. package/build/contracts/src/bridge/extra/ERC20MigrationOutbox.sol/ERC20MigrationOutbox.json +2 -2
  129. package/build/contracts/src/bridge/extra/IERC20MigrationOutbox.sol/IERC20MigrationOutbox.dbg.json +1 -1
  130. package/build/contracts/src/chain/CacheManager.sol/CacheManager.dbg.json +1 -1
  131. package/build/contracts/src/chain/CacheManager.sol/CacheManager.json +2 -2
  132. package/build/contracts/src/chain/ResourceConstraintManager.sol/ResourceConstraintManager.dbg.json +4 -0
  133. package/build/contracts/src/chain/ResourceConstraintManager.sol/ResourceConstraintManager.json +388 -0
  134. package/build/contracts/src/challengeV2/EdgeChallengeManager.sol/EdgeChallengeManager.dbg.json +1 -1
  135. package/build/contracts/src/challengeV2/EdgeChallengeManager.sol/EdgeChallengeManager.json +2 -2
  136. package/build/contracts/src/challengeV2/IAssertionChain.sol/IAssertionChain.dbg.json +1 -1
  137. package/build/contracts/src/challengeV2/IEdgeChallengeManager.sol/IEdgeChallengeManager.dbg.json +1 -1
  138. package/build/contracts/src/challengeV2/libraries/ArrayUtilsLib.sol/ArrayUtilsLib.dbg.json +1 -1
  139. package/build/contracts/src/challengeV2/libraries/ArrayUtilsLib.sol/ArrayUtilsLib.json +2 -2
  140. package/build/contracts/src/challengeV2/libraries/ChallengeEdgeLib.sol/ChallengeEdgeLib.dbg.json +1 -1
  141. package/build/contracts/src/challengeV2/libraries/ChallengeEdgeLib.sol/ChallengeEdgeLib.json +2 -2
  142. package/build/contracts/src/challengeV2/libraries/EdgeChallengeManagerLib.sol/EdgeChallengeManagerLib.dbg.json +1 -1
  143. package/build/contracts/src/challengeV2/libraries/EdgeChallengeManagerLib.sol/EdgeChallengeManagerLib.json +2 -2
  144. package/build/contracts/src/challengeV2/libraries/MerkleTreeAccumulatorLib.sol/MerkleTreeAccumulatorLib.dbg.json +1 -1
  145. package/build/contracts/src/challengeV2/libraries/MerkleTreeAccumulatorLib.sol/MerkleTreeAccumulatorLib.json +2 -2
  146. package/build/contracts/src/challengeV2/libraries/UintUtilsLib.sol/UintUtilsLib.dbg.json +1 -1
  147. package/build/contracts/src/challengeV2/libraries/UintUtilsLib.sol/UintUtilsLib.json +2 -2
  148. package/build/contracts/src/express-lane-auction/Balance.sol/BalanceLib.dbg.json +1 -1
  149. package/build/contracts/src/express-lane-auction/Balance.sol/BalanceLib.json +2 -2
  150. package/build/contracts/src/express-lane-auction/Burner.sol/Burner.dbg.json +1 -1
  151. package/build/contracts/src/express-lane-auction/Burner.sol/Burner.json +2 -2
  152. package/build/contracts/src/express-lane-auction/ELCRound.sol/LatestELCRoundsLib.dbg.json +1 -1
  153. package/build/contracts/src/express-lane-auction/ELCRound.sol/LatestELCRoundsLib.json +2 -2
  154. package/build/contracts/src/express-lane-auction/ExpressLaneAuction.sol/ExpressLaneAuction.dbg.json +1 -1
  155. package/build/contracts/src/express-lane-auction/ExpressLaneAuction.sol/ExpressLaneAuction.json +2 -2
  156. package/build/contracts/src/express-lane-auction/IExpressLaneAuction.sol/IExpressLaneAuction.dbg.json +1 -1
  157. package/build/contracts/src/express-lane-auction/RoundTimingInfo.sol/RoundTimingInfoLib.dbg.json +1 -1
  158. package/build/contracts/src/express-lane-auction/RoundTimingInfo.sol/RoundTimingInfoLib.json +2 -2
  159. package/build/contracts/src/libraries/AddressAliasHelper.sol/AddressAliasHelper.dbg.json +1 -1
  160. package/build/contracts/src/libraries/AddressAliasHelper.sol/AddressAliasHelper.json +2 -2
  161. package/build/contracts/src/libraries/AdminFallbackProxy.sol/AdminFallbackProxy.dbg.json +1 -1
  162. package/build/contracts/src/libraries/AdminFallbackProxy.sol/AdminFallbackProxy.json +2 -2
  163. package/build/contracts/src/libraries/AdminFallbackProxy.sol/DoubleLogicERC1967Upgrade.dbg.json +1 -1
  164. package/build/contracts/src/libraries/ArbitrumChecker.sol/ArbitrumChecker.dbg.json +1 -1
  165. package/build/contracts/src/libraries/ArbitrumChecker.sol/ArbitrumChecker.json +2 -2
  166. package/build/contracts/src/libraries/CallerChecker.sol/CallerChecker.dbg.json +1 -1
  167. package/build/contracts/src/libraries/CallerChecker.sol/CallerChecker.json +2 -2
  168. package/build/contracts/src/libraries/CryptographyPrimitives.sol/CryptographyPrimitives.dbg.json +1 -1
  169. package/build/contracts/src/libraries/CryptographyPrimitives.sol/CryptographyPrimitives.json +2 -2
  170. package/build/contracts/src/libraries/DecimalsConverterHelper.sol/DecimalsConverterHelper.dbg.json +1 -1
  171. package/build/contracts/src/libraries/DecimalsConverterHelper.sol/DecimalsConverterHelper.json +2 -2
  172. package/build/contracts/src/libraries/DelegateCallAware.sol/DelegateCallAware.dbg.json +1 -1
  173. package/build/contracts/src/libraries/DoubleLogicUUPSUpgradeable.sol/DoubleLogicUUPSUpgradeable.dbg.json +1 -1
  174. package/build/contracts/src/libraries/GasRefundEnabled.sol/GasRefundEnabled.dbg.json +1 -1
  175. package/build/contracts/src/libraries/IGasRefunder.sol/IGasRefunder.dbg.json +1 -1
  176. package/build/contracts/src/libraries/IReader4844.sol/IReader4844.dbg.json +1 -1
  177. package/build/contracts/src/libraries/MerkleLib.sol/MerkleLib.dbg.json +1 -1
  178. package/build/contracts/src/libraries/MerkleLib.sol/MerkleLib.json +2 -2
  179. package/build/contracts/src/libraries/UUPSNotUpgradeable.sol/UUPSNotUpgradeable.dbg.json +1 -1
  180. package/build/contracts/src/mocks/BridgeStub.sol/BridgeStub.dbg.json +1 -1
  181. package/build/contracts/src/mocks/BridgeStub.sol/BridgeStub.json +2 -2
  182. package/build/contracts/src/mocks/BridgeUnproxied.sol/BridgeUnproxied.dbg.json +1 -1
  183. package/build/contracts/src/mocks/BridgeUnproxied.sol/BridgeUnproxied.json +2 -2
  184. package/build/contracts/src/mocks/InboxStub.sol/InboxStub.dbg.json +1 -1
  185. package/build/contracts/src/mocks/InboxStub.sol/InboxStub.json +2 -2
  186. package/build/contracts/src/mocks/MerkleTreeAccess.sol/MerkleTreeAccess.dbg.json +1 -1
  187. package/build/contracts/src/mocks/MerkleTreeAccess.sol/MerkleTreeAccess.json +2 -2
  188. package/build/contracts/src/mocks/MockRollupEventInbox.sol/MockRollupEventInbox.dbg.json +1 -1
  189. package/build/contracts/src/mocks/MockRollupEventInbox.sol/MockRollupEventInbox.json +7 -2
  190. package/build/contracts/src/mocks/SequencerInboxBlobMock.sol/SequencerInboxBlobMock.dbg.json +1 -1
  191. package/build/contracts/src/mocks/SequencerInboxBlobMock.sol/SequencerInboxBlobMock.json +15 -2
  192. package/build/contracts/src/mocks/SequencerInboxStub.sol/SequencerInboxStub.dbg.json +1 -1
  193. package/build/contracts/src/mocks/SequencerInboxStub.sol/SequencerInboxStub.json +15 -2
  194. package/build/contracts/src/mocks/SimpleOneStepProofEntry.sol/SimpleOneStepProofEntry.dbg.json +1 -1
  195. package/build/contracts/src/mocks/SimpleOneStepProofEntry.sol/SimpleOneStepProofEntry.json +2 -2
  196. package/build/contracts/src/mocks/TestWETH9.sol/IWETH9.dbg.json +1 -1
  197. package/build/contracts/src/mocks/TestWETH9.sol/TestWETH9.dbg.json +1 -1
  198. package/build/contracts/src/mocks/TestWETH9.sol/TestWETH9.json +2 -2
  199. package/build/contracts/src/mocks/UpgradeExecutorMock.sol/UpgradeExecutorMock.dbg.json +1 -1
  200. package/build/contracts/src/mocks/UpgradeExecutorMock.sol/UpgradeExecutorMock.json +2 -2
  201. package/build/contracts/src/node-interface/NodeInterface.sol/NodeInterface.dbg.json +1 -1
  202. package/build/contracts/src/node-interface/NodeInterfaceDebug.sol/NodeInterfaceDebug.dbg.json +1 -1
  203. package/build/contracts/src/osp/HashProofHelper.sol/HashProofHelper.dbg.json +1 -1
  204. package/build/contracts/src/osp/HashProofHelper.sol/HashProofHelper.json +2 -2
  205. package/build/contracts/src/osp/ICustomDAProofValidator.sol/ICustomDAProofValidator.dbg.json +4 -0
  206. package/build/contracts/src/osp/ICustomDAProofValidator.sol/ICustomDAProofValidator.json +59 -0
  207. package/build/contracts/src/osp/IOneStepProofEntry.sol/IOneStepProofEntry.dbg.json +1 -1
  208. package/build/contracts/src/osp/IOneStepProofEntry.sol/OneStepProofEntryLib.dbg.json +1 -1
  209. package/build/contracts/src/osp/IOneStepProofEntry.sol/OneStepProofEntryLib.json +2 -2
  210. package/build/contracts/src/osp/IOneStepProver.sol/IOneStepProver.dbg.json +1 -1
  211. package/build/contracts/src/osp/OneStepProofEntry.sol/OneStepProofEntry.dbg.json +1 -1
  212. package/build/contracts/src/osp/OneStepProofEntry.sol/OneStepProofEntry.json +2 -2
  213. package/build/contracts/src/osp/OneStepProver0.sol/OneStepProver0.dbg.json +1 -1
  214. package/build/contracts/src/osp/OneStepProver0.sol/OneStepProver0.json +2 -2
  215. package/build/contracts/src/osp/OneStepProverHostIo.sol/OneStepProverHostIo.dbg.json +1 -1
  216. package/build/contracts/src/osp/OneStepProverHostIo.sol/OneStepProverHostIo.json +26 -2
  217. package/build/contracts/src/osp/OneStepProverMath.sol/OneStepProverMath.dbg.json +1 -1
  218. package/build/contracts/src/osp/OneStepProverMath.sol/OneStepProverMath.json +2 -2
  219. package/build/contracts/src/osp/OneStepProverMemory.sol/OneStepProverMemory.dbg.json +1 -1
  220. package/build/contracts/src/osp/OneStepProverMemory.sol/OneStepProverMemory.json +2 -2
  221. package/build/contracts/src/precompiles/ArbAddressTable.sol/ArbAddressTable.dbg.json +1 -1
  222. package/build/contracts/src/precompiles/ArbAggregator.sol/ArbAggregator.dbg.json +1 -1
  223. package/build/contracts/src/precompiles/ArbBLS.sol/ArbBLS.dbg.json +1 -1
  224. package/build/contracts/src/precompiles/ArbDebug.sol/ArbDebug.dbg.json +1 -1
  225. package/build/contracts/src/precompiles/ArbDebug.sol/ArbDebug.json +24 -0
  226. package/build/contracts/src/precompiles/ArbFunctionTable.sol/ArbFunctionTable.dbg.json +1 -1
  227. package/build/contracts/src/precompiles/ArbGasInfo.sol/ArbGasInfo.dbg.json +1 -1
  228. package/build/contracts/src/precompiles/ArbGasInfo.sol/ArbGasInfo.json +39 -0
  229. package/build/contracts/src/precompiles/ArbInfo.sol/ArbInfo.dbg.json +1 -1
  230. package/build/contracts/src/precompiles/ArbNativeTokenManager.sol/ArbNativeTokenManager.dbg.json +1 -1
  231. package/build/contracts/src/precompiles/ArbOwner.sol/ArbOwner.dbg.json +1 -1
  232. package/build/contracts/src/precompiles/ArbOwner.sol/ArbOwner.json +52 -0
  233. package/build/contracts/src/precompiles/ArbOwnerPublic.sol/ArbOwnerPublic.dbg.json +1 -1
  234. package/build/contracts/src/precompiles/ArbOwnerPublic.sol/ArbOwnerPublic.json +26 -0
  235. package/build/contracts/src/precompiles/ArbRetryableTx.sol/ArbRetryableTx.dbg.json +1 -1
  236. package/build/contracts/src/precompiles/ArbStatistics.sol/ArbStatistics.dbg.json +1 -1
  237. package/build/contracts/src/precompiles/ArbSys.sol/ArbSys.dbg.json +1 -1
  238. package/build/contracts/src/precompiles/ArbWasm.sol/ArbWasm.dbg.json +1 -1
  239. package/build/contracts/src/precompiles/ArbWasmCache.sol/ArbWasmCache.dbg.json +1 -1
  240. package/build/contracts/src/precompiles/ArbosActs.sol/ArbosActs.dbg.json +1 -1
  241. package/build/contracts/src/precompiles/ArbosActs.sol/ArbosActs.json +43 -0
  242. package/build/contracts/src/precompiles/ArbosTest.sol/ArbosTest.dbg.json +1 -1
  243. package/build/contracts/src/rollup/AbsRollupEventInbox.sol/AbsRollupEventInbox.dbg.json +1 -1
  244. package/build/contracts/src/rollup/AbsRollupEventInbox.sol/AbsRollupEventInbox.json +5 -0
  245. package/build/contracts/src/rollup/Assertion.sol/AssertionNodeLib.dbg.json +1 -1
  246. package/build/contracts/src/rollup/Assertion.sol/AssertionNodeLib.json +2 -2
  247. package/build/contracts/src/rollup/AssertionState.sol/AssertionStateLib.dbg.json +1 -1
  248. package/build/contracts/src/rollup/AssertionState.sol/AssertionStateLib.json +2 -2
  249. package/build/contracts/src/rollup/BOLDUpgradeAction.sol/BOLDUpgradeAction.dbg.json +1 -1
  250. package/build/contracts/src/rollup/BOLDUpgradeAction.sol/BOLDUpgradeAction.json +2 -2
  251. package/build/contracts/src/rollup/BOLDUpgradeAction.sol/ConstantArrayStorage.dbg.json +1 -1
  252. package/build/contracts/src/rollup/BOLDUpgradeAction.sol/ConstantArrayStorage.json +2 -2
  253. package/build/contracts/src/rollup/BOLDUpgradeAction.sol/IOldRollup.dbg.json +1 -1
  254. package/build/contracts/src/rollup/BOLDUpgradeAction.sol/IOldRollupAdmin.dbg.json +1 -1
  255. package/build/contracts/src/rollup/BOLDUpgradeAction.sol/ISeqInboxPostUpgradeInit.dbg.json +1 -1
  256. package/build/contracts/src/rollup/BOLDUpgradeAction.sol/StateHashPreImageLookup.dbg.json +1 -1
  257. package/build/contracts/src/rollup/BOLDUpgradeAction.sol/StateHashPreImageLookup.json +2 -2
  258. package/build/contracts/src/rollup/BridgeCreator.sol/BridgeCreator.dbg.json +1 -1
  259. package/build/contracts/src/rollup/BridgeCreator.sol/BridgeCreator.json +2 -144
  260. package/build/contracts/src/rollup/DeployHelper.sol/DeployHelper.dbg.json +1 -1
  261. package/build/contracts/src/rollup/DeployHelper.sol/DeployHelper.json +2 -2
  262. package/build/contracts/src/rollup/ERC20RollupEventInbox.sol/ERC20RollupEventInbox.dbg.json +1 -1
  263. package/build/contracts/src/rollup/ERC20RollupEventInbox.sol/ERC20RollupEventInbox.json +7 -2
  264. package/build/contracts/src/rollup/IRollupAdmin.sol/IRollupAdmin.dbg.json +1 -1
  265. package/build/contracts/src/rollup/IRollupAdmin.sol/IRollupAdmin.json +36 -13
  266. package/build/contracts/src/rollup/IRollupCore.sol/IRollupCore.dbg.json +1 -1
  267. package/build/contracts/src/rollup/IRollupEventInbox.sol/IRollupEventInbox.dbg.json +1 -1
  268. package/build/contracts/src/rollup/IRollupEventInbox.sol/IRollupEventInbox.json +5 -0
  269. package/build/contracts/src/rollup/IRollupLogic.sol/IRollupUser.dbg.json +1 -1
  270. package/build/contracts/src/rollup/RollupAdminLogic.sol/RollupAdminLogic.dbg.json +1 -1
  271. package/build/contracts/src/rollup/RollupAdminLogic.sol/RollupAdminLogic.json +38 -15
  272. package/build/contracts/src/rollup/RollupCore.sol/RollupCore.dbg.json +1 -1
  273. package/build/contracts/src/rollup/RollupCreator.sol/RollupCreator.dbg.json +1 -1
  274. package/build/contracts/src/rollup/RollupCreator.sol/RollupCreator.json +59 -3
  275. package/build/contracts/src/rollup/RollupEventInbox.sol/RollupEventInbox.dbg.json +1 -1
  276. package/build/contracts/src/rollup/RollupEventInbox.sol/RollupEventInbox.json +7 -2
  277. package/build/contracts/src/rollup/RollupLib.sol/RollupLib.dbg.json +1 -1
  278. package/build/contracts/src/rollup/RollupLib.sol/RollupLib.json +2 -2
  279. package/build/contracts/src/rollup/RollupProxy.sol/RollupProxy.dbg.json +1 -1
  280. package/build/contracts/src/rollup/RollupProxy.sol/RollupProxy.json +7 -2
  281. package/build/contracts/src/rollup/RollupUserLogic.sol/RollupUserLogic.dbg.json +1 -1
  282. package/build/contracts/src/rollup/RollupUserLogic.sol/RollupUserLogic.json +2 -2
  283. package/build/contracts/src/rollup/ValidatorWallet.sol/ValidatorWallet.dbg.json +1 -1
  284. package/build/contracts/src/rollup/ValidatorWallet.sol/ValidatorWallet.json +2 -2
  285. package/build/contracts/src/rollup/ValidatorWalletCreator.sol/ValidatorWalletCreator.dbg.json +1 -1
  286. package/build/contracts/src/rollup/ValidatorWalletCreator.sol/ValidatorWalletCreator.json +2 -78
  287. package/build/contracts/src/state/Deserialize.sol/Deserialize.dbg.json +1 -1
  288. package/build/contracts/src/state/Deserialize.sol/Deserialize.json +2 -2
  289. package/build/contracts/src/state/GlobalState.sol/GlobalStateLib.dbg.json +1 -1
  290. package/build/contracts/src/state/GlobalState.sol/GlobalStateLib.json +2 -2
  291. package/build/contracts/src/state/Instructions.sol/Instructions.dbg.json +1 -1
  292. package/build/contracts/src/state/Instructions.sol/Instructions.json +2 -2
  293. package/build/contracts/src/state/Machine.sol/MachineLib.dbg.json +1 -1
  294. package/build/contracts/src/state/Machine.sol/MachineLib.json +2 -2
  295. package/build/contracts/src/state/MerkleProof.sol/MerkleProofLib.dbg.json +1 -1
  296. package/build/contracts/src/state/MerkleProof.sol/MerkleProofLib.json +2 -2
  297. package/build/contracts/src/state/Module.sol/ModuleLib.dbg.json +1 -1
  298. package/build/contracts/src/state/Module.sol/ModuleLib.json +2 -2
  299. package/build/contracts/src/state/ModuleMemory.sol/ModuleMemoryLib.dbg.json +1 -1
  300. package/build/contracts/src/state/ModuleMemory.sol/ModuleMemoryLib.json +2 -2
  301. package/build/contracts/src/state/ModuleMemoryCompact.sol/ModuleMemoryCompactLib.dbg.json +1 -1
  302. package/build/contracts/src/state/ModuleMemoryCompact.sol/ModuleMemoryCompactLib.json +2 -2
  303. package/build/contracts/src/state/MultiStack.sol/MultiStackLib.dbg.json +1 -1
  304. package/build/contracts/src/state/MultiStack.sol/MultiStackLib.json +2 -2
  305. package/build/contracts/src/state/PcArray.sol/PcArrayLib.dbg.json +1 -1
  306. package/build/contracts/src/state/PcArray.sol/PcArrayLib.json +2 -2
  307. package/build/contracts/src/state/StackFrame.sol/StackFrameLib.dbg.json +1 -1
  308. package/build/contracts/src/state/StackFrame.sol/StackFrameLib.json +2 -2
  309. package/build/contracts/src/state/Value.sol/ValueLib.dbg.json +1 -1
  310. package/build/contracts/src/state/Value.sol/ValueLib.json +2 -2
  311. package/build/contracts/src/state/ValueArray.sol/ValueArrayLib.dbg.json +1 -1
  312. package/build/contracts/src/state/ValueArray.sol/ValueArrayLib.json +2 -2
  313. package/build/contracts/src/state/ValueStack.sol/ValueStackLib.dbg.json +1 -1
  314. package/build/contracts/src/state/ValueStack.sol/ValueStackLib.json +2 -2
  315. package/build/contracts/src/stylus/StylusDeployer.sol/StylusDeployer.dbg.json +1 -1
  316. package/build/contracts/src/stylus/StylusDeployer.sol/StylusDeployer.json +2 -2
  317. package/build/contracts/src/test-helpers/BridgeTester.sol/BridgeTester.dbg.json +1 -1
  318. package/build/contracts/src/test-helpers/BridgeTester.sol/BridgeTester.json +2 -2
  319. package/build/contracts/src/test-helpers/CryptographyPrimitivesTester.sol/CryptographyPrimitivesTester.dbg.json +1 -1
  320. package/build/contracts/src/test-helpers/CryptographyPrimitivesTester.sol/CryptographyPrimitivesTester.json +2 -2
  321. package/build/contracts/src/test-helpers/EthVault.sol/EthVault.dbg.json +1 -1
  322. package/build/contracts/src/test-helpers/EthVault.sol/EthVault.json +2 -2
  323. package/build/contracts/src/test-helpers/MessageTester.sol/MessageTester.dbg.json +1 -1
  324. package/build/contracts/src/test-helpers/MessageTester.sol/MessageTester.json +2 -2
  325. package/build/contracts/src/test-helpers/NoReceiveForwarder.sol/ConstructorError.dbg.json +1 -1
  326. package/build/contracts/src/test-helpers/NoReceiveForwarder.sol/ConstructorError.json +1 -1
  327. package/build/contracts/src/test-helpers/NoReceiveForwarder.sol/ConstructorFine.dbg.json +1 -1
  328. package/build/contracts/src/test-helpers/NoReceiveForwarder.sol/ConstructorFine.json +2 -2
  329. package/build/contracts/src/test-helpers/NoReceiveForwarder.sol/NoReceiveForwarder.dbg.json +1 -1
  330. package/build/contracts/src/test-helpers/NoReceiveForwarder.sol/NoReceiveForwarder.json +2 -2
  331. package/build/contracts/src/test-helpers/NoReceiveForwarder.sol/ReceivingForwarder.dbg.json +1 -1
  332. package/build/contracts/src/test-helpers/NoReceiveForwarder.sol/ReceivingForwarder.json +2 -2
  333. package/build/contracts/src/test-helpers/OutboxWithoutOptTester.sol/OutboxWithoutOptTester.dbg.json +1 -1
  334. package/build/contracts/src/test-helpers/OutboxWithoutOptTester.sol/OutboxWithoutOptTester.json +2 -2
  335. package/build/contracts/src/test-helpers/RollupMock.sol/RollupMock.dbg.json +1 -1
  336. package/build/contracts/src/test-helpers/RollupMock.sol/RollupMock.json +2 -2
  337. package/build/contracts/src/test-helpers/TestToken.sol/TestToken.dbg.json +1 -1
  338. package/build/contracts/src/test-helpers/TestToken.sol/TestToken.json +2 -2
  339. package/build/contracts/src/test-helpers/ValueArrayTester.sol/ValueArrayTester.dbg.json +1 -1
  340. package/build/contracts/src/test-helpers/ValueArrayTester.sol/ValueArrayTester.json +2 -2
  341. package/out/yul/Reader4844.yul/Reader4844.json +1 -1
  342. package/package.json +6 -5
  343. package/src/bridge/ISequencerInbox.sol +5 -0
  344. package/src/bridge/SequencerInbox.sol +11 -3
  345. package/src/chain/ResourceConstraintManager.sol +88 -0
  346. package/src/mocks/BridgeStub.sol +5 -1
  347. package/src/mocks/MockRollupEventInbox.sol +10 -4
  348. package/src/osp/ICustomDAProofValidator.sol +43 -0
  349. package/src/osp/OneStepProofEntry.sol +2 -1
  350. package/src/osp/OneStepProver0.sol +2 -3
  351. package/src/osp/OneStepProverHostIo.sol +132 -12
  352. package/src/osp/OneStepProverMath.sol +2 -3
  353. package/src/osp/OneStepProverMemory.sol +2 -3
  354. package/src/precompiles/.github/workflows/contract-tests.yml +39 -0
  355. package/src/precompiles/ArbDebug.sol +7 -0
  356. package/src/precompiles/ArbGasInfo.sol +34 -8
  357. package/src/precompiles/ArbNativeTokenManager.sol +1 -1
  358. package/src/precompiles/ArbOwner.sol +73 -14
  359. package/src/precompiles/ArbOwnerPublic.sol +19 -13
  360. package/src/precompiles/ArbWasm.sol +1 -0
  361. package/src/precompiles/ArbWasmCache.sol +3 -0
  362. package/src/precompiles/ArbosActs.sol +10 -0
  363. package/src/precompiles/LICENSE.md +116 -0
  364. package/src/precompiles/README.md +11 -0
  365. package/src/precompiles/foundry.toml +20 -0
  366. package/src/precompiles/package.json +24 -0
  367. package/src/precompiles/yarn.lock +4 -0
  368. package/src/rollup/AbsRollupEventInbox.sol +8 -2
  369. package/src/rollup/BOLDUpgradeAction.sol +2 -2
  370. package/src/rollup/BridgeCreator.sol +2 -16
  371. package/src/rollup/Config.sol +2 -0
  372. package/src/rollup/IRollupAdmin.sol +15 -3
  373. package/src/rollup/IRollupEventInbox.sol +5 -1
  374. package/src/rollup/RollupAdminLogic.sol +68 -9
  375. package/src/rollup/RollupCore.sol +6 -1
  376. package/src/rollup/RollupCreator.sol +35 -6
  377. package/src/rollup/RollupUserLogic.sol +6 -0
  378. package/src/rollup/ValidatorWalletCreator.sol +2 -15
  379. package/src/state/Instructions.sol +1 -0
  380. package/build/contracts/@openzeppelin/contracts/proxy/beacon/UpgradeableBeacon.sol/UpgradeableBeacon.dbg.json +0 -4
  381. package/build/contracts/@openzeppelin/contracts/proxy/beacon/UpgradeableBeacon.sol/UpgradeableBeacon.json +0 -113
  382. package/build/contracts/src/rollup/FactoryDeployerHelper.sol/FactoryDeployerHelper.dbg.json +0 -4
  383. package/build/contracts/src/rollup/FactoryDeployerHelper.sol/FactoryDeployerHelper.json +0 -68
  384. package/build/contracts/src/rollup/FactoryDeployerHelper.sol/IDeployHelper.dbg.json +0 -4
  385. package/build/contracts/src/rollup/FactoryDeployerHelper.sol/IDeployHelper.json +0 -58
  386. package/build/contracts/src/rollup/FactoryDeployerHelper.sol/IERC20.dbg.json +0 -4
  387. package/build/contracts/src/rollup/FactoryDeployerHelper.sol/IERC20.json +0 -40
  388. package/build/contracts/src/rollup/FactoryDeployerHelper.sol/IERC20Bridge.dbg.json +0 -4
  389. package/build/contracts/src/rollup/FactoryDeployerHelper.sol/IERC20Bridge.json +0 -24
  390. package/build/contracts/src/rollup/FactoryDeployerHelper.sol/IInboxBase.dbg.json +0 -4
  391. package/build/contracts/src/rollup/FactoryDeployerHelper.sol/IInboxBase.json +0 -24
  392. package/src/rollup/FactoryDeployerHelper.sol +0 -52
@@ -12,11 +12,9 @@ interface ArbOwnerPublic {
12
12
  address addr
13
13
  ) external view returns (bool);
14
14
 
15
- /**
16
- * @notice Rectify the list of chain owners
17
- * If successful, emits ChainOwnerRectified event
18
- * Available in ArbOS version 11
19
- */
15
+ /// @notice Rectify the list of chain owners
16
+ /// @notice If successful, emits ChainOwnerRectified event
17
+ /// @notice Available in ArbOS version 11 and above
20
18
  function rectifyChainOwner(
21
19
  address ownerToRectify
22
20
  ) external;
@@ -24,14 +22,19 @@ interface ArbOwnerPublic {
24
22
  /// @notice Retrieves the list of chain owners
25
23
  function getAllChainOwners() external view returns (address[] memory);
26
24
 
25
+ /// @notice Retrieves the timestamp from when the native token management
26
+ /// modifications are enabled.
27
+ /// @notice Available in ArbOS version 50 and above
28
+ function getNativeTokenManagementFrom() external view returns (uint64);
29
+
27
30
  /// @notice See if the user is a native token owner
28
- /// Available in ArbOS version 41
31
+ /// @notice Available in ArbOS version 41 and above
29
32
  function isNativeTokenOwner(
30
33
  address addr
31
34
  ) external view returns (bool);
32
35
 
33
36
  /// @notice Retrieves the list of native token owners
34
- /// Available in ArbOS version 41
37
+ /// @notice Available in ArbOS version 41 and above
35
38
  function getAllNativeTokenOwners() external view returns (address[] memory);
36
39
 
37
40
  /// @notice Gets the network fee collector
@@ -41,20 +44,23 @@ interface ArbOwnerPublic {
41
44
  function getInfraFeeAccount() external view returns (address);
42
45
 
43
46
  /// @notice Get the Brotli compression level used for fast compression
47
+ /// @notice Available in ArbOS version 20 and above
44
48
  function getBrotliCompressionLevel() external view returns (uint64);
45
49
 
50
+ /// @notice Get how much L1 charges per non-zero byte of calldata
51
+ /// @notice Available in ArbOS version 50 and above
52
+ function getParentGasFloorPerToken() external view returns (uint64);
53
+
46
54
  /// @notice Get the next scheduled ArbOS version upgrade and its activation timestamp.
47
- /// Returns (0, 0) if no ArbOS upgrade is scheduled.
48
- /// Available in ArbOS version 20.
55
+ /// @notice Returns (0, 0) if no ArbOS upgrade is scheduled.
56
+ /// @notice Available in ArbOS version 20 and above
49
57
  function getScheduledUpgrade()
50
58
  external
51
59
  view
52
60
  returns (uint64 arbosVersion, uint64 scheduledForTimestamp);
53
61
 
54
- /**
55
- * @notice Checks if the increased calldata price feature (EIP-7623) is enabled
56
- * Available in ArbOS version 40 with default as false
57
- */
62
+ /// @notice Checks if the increased calldata price feature (EIP-7623) is enabled
63
+ /// @notice Available in ArbOS version 40 with default as false
58
64
  function isCalldataPriceIncreaseEnabled() external view returns (bool);
59
65
 
60
66
  event ChainOwnerRectified(address rectifiedOwner);
@@ -7,6 +7,7 @@ pragma solidity >=0.4.21 <0.9.0;
7
7
  /**
8
8
  * @title Methods for managing user programs
9
9
  * @notice Precompiled contract that exists in every Arbitrum chain at 0x0000000000000000000000000000000000000071.
10
+ * @notice Available in ArbOS version 30 and above
10
11
  */
11
12
  interface ArbWasm {
12
13
  /// @notice Activate a wasm program
@@ -7,6 +7,7 @@ pragma solidity >=0.4.21 <0.9.0;
7
7
  /**
8
8
  * @title Methods for managing Stylus caches
9
9
  * @notice Precompiled contract that exists in every Arbitrum chain at 0x0000000000000000000000000000000000000072.
10
+ * @notice Available in ArbOS version 30 and above
10
11
  */
11
12
  interface ArbWasmCache {
12
13
  /// @notice See if the user is a cache manager.
@@ -19,6 +20,7 @@ interface ArbWasmCache {
19
20
  function allCacheManagers() external view returns (address[] memory managers);
20
21
 
21
22
  /// @dev Deprecated, replaced with cacheProgram
23
+ /// @notice Available in ArbOS version 30 only
22
24
  function cacheCodehash(
23
25
  bytes32 codehash
24
26
  ) external;
@@ -27,6 +29,7 @@ interface ArbWasmCache {
27
29
  /// @notice Reverts if the programs have expired.
28
30
  /// @notice Caller must be a cache manager or chain owner.
29
31
  /// @notice If you're looking for how to bid for position, interact with the chain's cache manager contract.
32
+ /// @notice Available in ArbOS version 31 and above
30
33
  function cacheProgram(
31
34
  address addr
32
35
  ) external;
@@ -44,5 +44,15 @@ interface ArbosActs {
44
44
  uint256 l1BaseFeeWei
45
45
  ) external;
46
46
 
47
+ function batchPostingReportV2(
48
+ uint256 batchTimestamp,
49
+ address batchPosterAddress,
50
+ uint64 batchNumber,
51
+ uint64 batchCalldataLength,
52
+ uint64 batchCalldataNonZeros,
53
+ uint64 batchExtraGas,
54
+ uint256 l1BaseFeeWei
55
+ ) external;
56
+
47
57
  error CallerNotArbOS();
48
58
  }
@@ -0,0 +1,116 @@
1
+ Business Source License 1.1
2
+
3
+ License text copyright (c) 2017 MariaDB Corporation Ab, All Rights Reserved.
4
+ "Business Source License" is a trademark of MariaDB Corporation Ab.
5
+
6
+ -----------------------------------------------------------------------------
7
+
8
+ Parameters
9
+
10
+ Licensor: Offchain Labs
11
+
12
+ Licensed Work: Arbitrum Nitro Contracts
13
+ The Licensed Work is (c) 2021-2024 Offchain Labs
14
+
15
+ Additional Use Grant: You may use the Licensed Work in a production environment solely
16
+ to provide a point of interface to permit end users or applications
17
+ utilizing the Covered Arbitrum Chains to interact and query the
18
+ state of a Covered Arbitrum Chain, including without limitation
19
+ validating the correctness of the posted chain state, or to deploy
20
+ and operate (x) a blockchain that settles to a Covered Arbitrum Chain
21
+ or (y) a blockchain in accordance with, and subject to, the [Arbitrum
22
+ Expansion Program Term of Use](https://docs.arbitrum.foundation/aep/ArbitrumExpansionProgramTerms.pdf). For purposes of this
23
+ Additional Use Grant, the "Covered Arbitrum Chains" are
24
+ (a) Arbitrum One (chainid:42161), Arbitrum Nova (chainid:42170),
25
+ Arbitrum Rinkeby testnet/Rinkarby (chainid:421611),Arbitrum Nitro
26
+ Goerli testnet (chainid:421613), and Arbitrum Sepolia Testnet
27
+ (chainid:421614); (b) any future blockchains authorized to be
28
+ designated as Covered Arbitrum Chains by the decentralized autonomous
29
+ organization governing the Arbitrum network; and (c) any “Layer 3”
30
+ Arbitrum-based blockchain that is built on and settles to another
31
+ Covered Arbitrum Chain.
32
+
33
+
34
+
35
+ Change Date: Dec 31, 2028
36
+
37
+ Change License: Apache License Version 2.0
38
+
39
+ -----------------------------------------------------------------------------
40
+
41
+ Terms
42
+
43
+ The Licensor hereby grants you the right to copy, modify, create derivative
44
+ works, redistribute, and make non-production use of the Licensed Work. The
45
+ Licensor may make an Additional Use Grant, above, permitting limited
46
+ production use.
47
+
48
+ Effective on the Change Date, or the fourth anniversary of the first publicly
49
+ available distribution of a specific version of the Licensed Work under this
50
+ License, whichever comes first, the Licensor hereby grants you rights under
51
+ the terms of the Change License, and the rights granted in the paragraph
52
+ above terminate.
53
+
54
+ If your use of the Licensed Work does not comply with the requirements
55
+ currently in effect as described in this License, you must purchase a
56
+ commercial license from the Licensor, its affiliated entities, or authorized
57
+ resellers, or you must refrain from using the Licensed Work.
58
+
59
+ All copies of the original and modified Licensed Work, and derivative works
60
+ of the Licensed Work, are subject to this License. This License applies
61
+ separately for each version of the Licensed Work and the Change Date may vary
62
+ for each version of the Licensed Work released by Licensor.
63
+
64
+ You must conspicuously display this License on each original or modified copy
65
+ of the Licensed Work. If you receive the Licensed Work in original or
66
+ modified form from a third party, the terms and conditions set forth in this
67
+ License apply to your use of that work.
68
+
69
+ Any use of the Licensed Work in violation of this License will automatically
70
+ terminate your rights under this License for the current and all other
71
+ versions of the Licensed Work.
72
+
73
+ This License does not grant you any right in any trademark or logo of
74
+ Licensor or its affiliates (provided that you may use a trademark or logo of
75
+ Licensor as expressly required by this License).
76
+
77
+ TO THE EXTENT PERMITTED BY APPLICABLE LAW, THE LICENSED WORK IS PROVIDED ON
78
+ AN "AS IS" BASIS. LICENSOR HEREBY DISCLAIMS ALL WARRANTIES AND CONDITIONS,
79
+ EXPRESS OR IMPLIED, INCLUDING (WITHOUT LIMITATION) WARRANTIES OF
80
+ MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE, NON-INFRINGEMENT, AND
81
+ TITLE.
82
+
83
+ MariaDB hereby grants you permission to use this License’s text to license
84
+ your works, and to refer to it using the trademark "Business Source License",
85
+ as long as you comply with the Covenants of Licensor below.
86
+
87
+ -----------------------------------------------------------------------------
88
+
89
+ Covenants of Licensor
90
+
91
+ In consideration of the right to use this License’s text and the "Business
92
+ Source License" name and trademark, Licensor covenants to MariaDB, and to all
93
+ other recipients of the licensed work to be provided by Licensor:
94
+
95
+ 1. To specify as the Change License the GPL Version 2.0 or any later version,
96
+ or a license that is compatible with GPL Version 2.0 or a later version,
97
+ where "compatible" means that software provided under the Change License can
98
+ be included in a program with software provided under GPL Version 2.0 or a
99
+ later version. Licensor may specify additional Change Licenses without
100
+ limitation.
101
+
102
+ 2. To either: (a) specify an additional grant of rights to use that does not
103
+ impose any additional restriction on the right granted in this License, as
104
+ the Additional Use Grant; or (b) insert the text "None".
105
+
106
+ 3. To specify a Change Date.
107
+
108
+ 4. Not to modify this License in any other way.
109
+
110
+ -----------------------------------------------------------------------------
111
+
112
+ Notice
113
+
114
+ The Business Source License (this document, or the "License") is not an Open
115
+ Source license. However, the Licensed Work will eventually be made available
116
+ under an Open Source License, as stated in this License.
@@ -0,0 +1,11 @@
1
+ # Nitro Precompile Interfaces
2
+
3
+ Solidity interfaces for Arbitrum Nitro precompiled contracts.
4
+
5
+ ## Overview
6
+
7
+ This repository contains the Solidity interface definitions for Arbitrum Nitro's precompiled contracts.
8
+
9
+ ## License
10
+
11
+ Licensed under BUSL-1.1. See individual files for specific license information.
@@ -0,0 +1,20 @@
1
+ [profile.default]
2
+ src = ''
3
+
4
+ [fmt]
5
+ line_length = 100
6
+ tab_width = 4
7
+ bracket_spacing = false
8
+ int_types = "long"
9
+ multiline_func_header = "params_first"
10
+ quote_style = "double"
11
+ number_underscore = "preserve"
12
+ hex_underscore = "remove"
13
+ single_line_statement_blocks = "preserve"
14
+ override_spacing = false
15
+ wrap_comments = false
16
+ ignore = []
17
+ contract_new_lines = false
18
+ sort_imports = false
19
+
20
+ # See more config options https://github.com/foundry-rs/foundry/tree/master/config
@@ -0,0 +1,24 @@
1
+ {
2
+ "name": "@arbitrum/nitro-precompile-interfaces",
3
+ "version": "41.0.0",
4
+ "description": "Solidity interfaces for Arbitrum Nitro precompiled contracts",
5
+ "author": "Offchain Labs, Inc.",
6
+ "license": "BUSL-1.1",
7
+ "repository": {
8
+ "type": "git",
9
+ "url": "git+https://github.com/offchainlabs/nitro-precompile-interfaces.git"
10
+ },
11
+ "files": [
12
+ "*.sol",
13
+ "README.md",
14
+ "LICENSE.md"
15
+ ],
16
+ "bugs": {
17
+ "url": "https://github.com/offchainlabs/nitro-precompile-interfaces/issues"
18
+ },
19
+ "scripts": {
20
+ "build": "forge build",
21
+ "format": "forge fmt"
22
+ },
23
+ "private": false
24
+ }
@@ -0,0 +1,4 @@
1
+ # THIS IS AN AUTOGENERATED FILE. DO NOT EDIT THIS FILE DIRECTLY.
2
+ # yarn lockfile v1
3
+
4
+
@@ -50,11 +50,17 @@ abstract contract AbsRollupEventInbox is
50
50
 
51
51
  function rollupInitialized(
52
52
  uint256 chainId,
53
- string calldata chainConfig
53
+ string calldata chainConfig,
54
+ uint256 dataCostEstimate
54
55
  ) external override onlyRollup {
55
56
  require(bytes(chainConfig).length > 0, "EMPTY_CHAIN_CONFIG");
56
57
  uint8 initMsgVersion = 1;
57
- uint256 currentDataCost = _currentDataCostToReport();
58
+ uint256 currentDataCost;
59
+ if (dataCostEstimate != 0) {
60
+ currentDataCost = dataCostEstimate;
61
+ } else {
62
+ currentDataCost = _currentDataCostToReport();
63
+ }
58
64
  bytes memory initMsg =
59
65
  abi.encodePacked(chainId, initMsgVersion, currentDataCost, chainConfig);
60
66
  uint256 num = _enqueueInitializationMsg(initMsg);
@@ -8,7 +8,6 @@ import "@openzeppelin/contracts-upgradeable/utils/Create2Upgradeable.sol";
8
8
  import "@openzeppelin/contracts/proxy/transparent/ProxyAdmin.sol";
9
9
  import "./RollupProxy.sol";
10
10
  import "./RollupLib.sol";
11
- import "./RollupAdminLogic.sol";
12
11
 
13
12
  struct Node {
14
13
  // Hash of the state of the chain as of this node
@@ -392,7 +391,8 @@ contract BOLDUpgradeAction {
392
391
  anyTrustFastConfirmer: address(0), // fast confirmer would be migrated from the old rollup if existed
393
392
  numBigStepLevel: NUM_BIGSTEP_LEVEL,
394
393
  challengeGracePeriodBlocks: CHALLENGE_GRACE_PERIOD_BLOCKS,
395
- bufferConfig: bufferConfig
394
+ bufferConfig: bufferConfig,
395
+ dataCostEstimate: 0
396
396
  });
397
397
  }
398
398
 
@@ -18,7 +18,7 @@ import "../bridge/IBridge.sol";
18
18
  import "@openzeppelin/contracts/access/Ownable.sol";
19
19
  import "@openzeppelin/contracts/proxy/transparent/ProxyAdmin.sol";
20
20
 
21
- contract BridgeCreator is Ownable {
21
+ contract BridgeCreator {
22
22
  BridgeTemplates public ethBasedTemplates;
23
23
  BridgeTemplates public erc20BasedTemplates;
24
24
 
@@ -45,25 +45,11 @@ contract BridgeCreator is Ownable {
45
45
  constructor(
46
46
  BridgeTemplates memory _ethBasedTemplates,
47
47
  BridgeTemplates memory _erc20BasedTemplates
48
- ) Ownable() {
48
+ ) {
49
49
  ethBasedTemplates = _ethBasedTemplates;
50
50
  erc20BasedTemplates = _erc20BasedTemplates;
51
51
  }
52
52
 
53
- function updateTemplates(
54
- BridgeTemplates calldata _newTemplates
55
- ) external onlyOwner {
56
- ethBasedTemplates = _newTemplates;
57
- emit TemplatesUpdated();
58
- }
59
-
60
- function updateERC20Templates(
61
- BridgeTemplates calldata _newTemplates
62
- ) external onlyOwner {
63
- erc20BasedTemplates = _newTemplates;
64
- emit ERC20TemplatesUpdated();
65
- }
66
-
67
53
  function _createBridge(
68
54
  bytes32 create2Salt,
69
55
  address adminProxy,
@@ -38,6 +38,8 @@ struct Config {
38
38
  uint8 numBigStepLevel;
39
39
  uint64 challengeGracePeriodBlocks;
40
40
  BufferConfig bufferConfig;
41
+ /// @notice Parent chain's base fee estimate for rollup initialization, if 0 block.basefee will be used
42
+ uint256 dataCostEstimate;
41
43
  }
42
44
 
43
45
  struct ContractDependencies {
@@ -150,10 +150,22 @@ interface IRollupAdmin {
150
150
  ) external;
151
151
 
152
152
  /**
153
- * @notice Set base stake required for an assertion
154
- * @param newBaseStake maximum avmgas to be used per block
153
+ * @notice Decrease the base stake required for creating an assertion
154
+ * @dev Can only be called on permissioned chains with whitelist enabled
155
+ * Can only be called when there is exactly one stake on a pending assertion - this ensures a linear chain of assertions
156
+ * Cannot be called immediately after genesis since there are no pending assertions
157
+ * After decreasing the base stake the current staker will still have full stake locked up. They can release it by creating a new staker with the
158
+ * new smaller amount, and using it to create a child of the latest pending assertion. This will make the old staker inactive and withdrawable.
159
+ * @param newBaseStake New base stake to be set. Must be less than current base stake, otherwise use increaseBaseStake
160
+ * @param latestNextInboxPosition The nextInboxPosition of the only pending latestStakedAssertion
155
161
  */
156
- function setBaseStake(
162
+ function decreaseBaseStake(uint256 newBaseStake, uint64 latestNextInboxPosition) external;
163
+
164
+ /**
165
+ * @notice Increase the base stake required for creating an assertion
166
+ * @param newBaseStake New base stake to be set. Must be greater than current base stake, otherwise use reduceBaseStake
167
+ */
168
+ function increaseBaseStake(
157
169
  uint256 newBaseStake
158
170
  ) external;
159
171
 
@@ -17,5 +17,9 @@ interface IRollupEventInbox {
17
17
 
18
18
  function updateRollupAddress() external;
19
19
 
20
- function rollupInitialized(uint256 chainId, string calldata chainConfig) external;
20
+ function rollupInitialized(
21
+ uint256 chainId,
22
+ string calldata chainConfig,
23
+ uint256 l1BaseFeeEstimate
24
+ ) external;
21
25
  }
@@ -10,7 +10,6 @@ import "./RollupCore.sol";
10
10
  import "../bridge/IOutbox.sol";
11
11
  import "../bridge/ISequencerInbox.sol";
12
12
  import "../libraries/DoubleLogicUUPSUpgradeable.sol";
13
- import "@openzeppelin/contracts/proxy/beacon/UpgradeableBeacon.sol";
14
13
 
15
14
  contract RollupAdminLogic is RollupCore, IRollupAdmin, DoubleLogicUUPSUpgradeable {
16
15
  using AssertionStateLib for AssertionState;
@@ -36,7 +35,7 @@ contract RollupAdminLogic is RollupCore, IRollupAdmin, DoubleLogicUUPSUpgradeabl
36
35
  address(connectedContracts.rollupEventInbox), true
37
36
  );
38
37
  connectedContracts.rollupEventInbox.rollupInitialized(
39
- config.chainId, config.chainConfig
38
+ config.chainId, config.chainConfig, config.dataCostEstimate
40
39
  );
41
40
  }
42
41
 
@@ -264,20 +263,80 @@ contract RollupAdminLogic is RollupCore, IRollupAdmin, DoubleLogicUUPSUpgradeabl
264
263
  }
265
264
 
266
265
  /**
267
- * @notice Set base stake required for an assertion
268
- * @param newBaseStake minimum amount of stake required
266
+ * @inheritdoc IRollupAdmin
269
267
  */
270
- function setBaseStake(
271
- uint256 newBaseStake
268
+ function decreaseBaseStake(
269
+ uint256 newBaseStake,
270
+ uint64 latestNextInboxPosition
272
271
  ) external override {
273
- // we do not currently allow base stake to be reduced since as doing so might allow a malicious party
272
+ require(newBaseStake < baseStake, "BASE_STAKE_NOT_DECREASED");
273
+
274
+ // if we're decreasing the stake we need to be more careful not to allow a malicious party
274
275
  // to withdraw some (up to the difference between baseStake and newBaseStake) honest funds from this contract
275
276
  // The sequence of events is as follows:
276
277
  // 1. The malicious party creates a sibling assertion, stake size is currently S
277
- // 2. The base stake is then reduced to S'
278
+ // 2. The base stake is then decreased to S'
278
279
  // 3. The malicious party uses a different address to create a child of the malicious assertion, using stake size S'
279
280
  // 4. This allows the malicious party to withdraw the stake S, since assertions with children set the staker to "inactive"
280
- require(newBaseStake > baseStake, "BASE_STAKE_MUST_BE_INCREASED");
281
+
282
+ // for this reason the base stake can only be decreased on permissioned chains where the creation of pending assertions can be controlled
283
+ // In a permissionless setting, it's possible for a staker to DOS base stake decrease by creating themselves as a staker.
284
+ // we can do a basic safety check to ensure that we're in the permissioned setting by checking that there is only one
285
+ // staker on a pending assertion. It could be that we're in the permissionless setting and that pending assertion is a malicious one
286
+ // but we assume that the rollup admin will ensure that's not the case before calling this function by checking that a staker they trust is
287
+ // on a correct pending assertion.
288
+ require(validatorWhitelistDisabled == false, "DECREASE_ONLY_FOR_PERMISSIONED_CHAINS");
289
+
290
+ bytes32 currentConfigHash = RollupLib.configHash({
291
+ wasmModuleRoot: wasmModuleRoot,
292
+ requiredStake: baseStake,
293
+ challengeManager: address(challengeManager),
294
+ confirmPeriodBlocks: confirmPeriodBlocks,
295
+ nextInboxPosition: uint64(latestNextInboxPosition)
296
+ });
297
+
298
+ uint256 pendingCount = 0;
299
+ uint64 nStakers = stakerCount();
300
+ for (uint64 i = 0; i < nStakers; i++) {
301
+ bytes32 latestStaked = latestStakedAssertion(getStakerAddress(i));
302
+ AssertionNode storage latestAssertion = getAssertionStorage(latestStaked);
303
+ if (latestAssertion.status == AssertionStatus.Pending) {
304
+ // check that in overwriting the config hash, we'll only be updating the required stake field
305
+ require(latestAssertion.configHash == currentConfigHash, "EXPIRED_CONFIG_HASH");
306
+ // In order to support transitioning from permissioned to permissionless, we need to ensure that after the transition
307
+ // a malicious party cannot created decreased stake assertions as children of historical (even confirmed) assertions.
308
+ // To avoid this an additional check has been added in RollupUserLogic.createNewAssertion to ensure that the base stake
309
+ // is always >= the required stake of the prev assertion. Having added this check we also need to override the config hash of
310
+ // the latest staked assertion so that children can be created from it in the normal way. We do that below
311
+ latestAssertion.configHash = RollupLib.configHash({
312
+ wasmModuleRoot: wasmModuleRoot,
313
+ requiredStake: newBaseStake,
314
+ challengeManager: address(challengeManager),
315
+ confirmPeriodBlocks: confirmPeriodBlocks,
316
+ nextInboxPosition: uint64(latestNextInboxPosition)
317
+ });
318
+
319
+ pendingCount++;
320
+ }
321
+
322
+ require(pendingCount <= 1, "TOO_MANY_PENDING_STAKERS");
323
+ }
324
+
325
+ // we need to have a non zero pending count to ensure that exactly one config hash was updated
326
+ // if no config hashes are updated then no new assertions will be created, since they will all trigger STAKE_TOO_LOW
327
+ require(pendingCount == 1, "PENDING_ASSERTION_NOT_UPDATED");
328
+
329
+ baseStake = newBaseStake;
330
+ emit BaseStakeSet(newBaseStake);
331
+ }
332
+
333
+ /**
334
+ * @inheritdoc IRollupAdmin
335
+ */
336
+ function increaseBaseStake(
337
+ uint256 newBaseStake
338
+ ) external override {
339
+ require(newBaseStake > baseStake, "BASE_STAKE_NOT_INCREASED");
281
340
  baseStake = newBaseStake;
282
341
  emit BaseStakeSet(newBaseStake);
283
342
  // previously: emit OwnerFunctionCalled(12);
@@ -171,7 +171,7 @@ abstract contract RollupCore is IRollupCore, PausableUpgradeable {
171
171
  */
172
172
  function getStakerAddress(
173
173
  uint64 stakerNum
174
- ) external view override returns (address) {
174
+ ) public view override returns (address) {
175
175
  return _stakerList[stakerNum];
176
176
  }
177
177
 
@@ -576,6 +576,11 @@ abstract contract RollupCore is IRollupCore, PausableUpgradeable {
576
576
  }
577
577
  }
578
578
 
579
+ /**
580
+ * @notice Returns an empty genesis assertion hash
581
+ * @dev In chains that were created with a non-empty genesis state, this function
582
+ * will return a different value than the actual genesis assertion hash.
583
+ */
579
584
  function genesisAssertionHash() external pure returns (bytes32) {
580
585
  GlobalState memory emptyGlobalState;
581
586
  AssertionState memory emptyAssertionState =
@@ -13,6 +13,8 @@ import "@openzeppelin/contracts/proxy/transparent/TransparentUpgradeableProxy.so
13
13
  import "@openzeppelin/contracts/access/Ownable.sol";
14
14
  import {DeployHelper} from "./DeployHelper.sol";
15
15
  import {SafeERC20, IERC20} from "@openzeppelin/contracts/token/ERC20/utils/SafeERC20.sol";
16
+ import {OneStepProofEntry, IOneStepProofEntry, IOneStepProver} from "../osp/OneStepProofEntry.sol";
17
+ import {OneStepProverHostIo} from "../osp/OneStepProverHostIo.sol";
16
18
 
17
19
  contract RollupCreator is Ownable {
18
20
  using SafeERC20 for IERC20;
@@ -42,6 +44,7 @@ contract RollupCreator is Ownable {
42
44
  address[] batchPosters;
43
45
  address batchPosterManager;
44
46
  IFeeTokenPricer feeTokenPricer;
47
+ address customOsp;
45
48
  }
46
49
 
47
50
  BridgeCreator public bridgeCreator;
@@ -55,7 +58,29 @@ contract RollupCreator is Ownable {
55
58
 
56
59
  DeployHelper public l2FactoriesDeployer;
57
60
 
58
- constructor() Ownable() {}
61
+ constructor(
62
+ address initialOwner,
63
+ BridgeCreator _bridgeCreator,
64
+ IOneStepProofEntry _osp,
65
+ IEdgeChallengeManager _challengeManagerLogic,
66
+ IRollupAdmin _rollupAdminLogic,
67
+ IRollupUser _rollupUserLogic,
68
+ IUpgradeExecutor _upgradeExecutorLogic,
69
+ address _validatorWalletCreator,
70
+ DeployHelper _l2FactoriesDeployer
71
+ ) Ownable() {
72
+ setTemplates(
73
+ _bridgeCreator,
74
+ _osp,
75
+ _challengeManagerLogic,
76
+ _rollupAdminLogic,
77
+ _rollupUserLogic,
78
+ _upgradeExecutorLogic,
79
+ _validatorWalletCreator,
80
+ _l2FactoriesDeployer
81
+ );
82
+ _transferOwnership(initialOwner);
83
+ }
59
84
 
60
85
  // creator receives back excess fees (for deploying L2 factories) so it can refund the caller
61
86
  receive() external payable {}
@@ -69,7 +94,7 @@ contract RollupCreator is Ownable {
69
94
  IUpgradeExecutor _upgradeExecutorLogic,
70
95
  address _validatorWalletCreator,
71
96
  DeployHelper _l2FactoriesDeployer
72
- ) external onlyOwner {
97
+ ) public onlyOwner {
73
98
  bridgeCreator = _bridgeCreator;
74
99
  osp = _osp;
75
100
  challengeManagerTemplate = _challengeManagerLogic;
@@ -85,7 +110,8 @@ contract RollupCreator is Ownable {
85
110
  function createChallengeManager(
86
111
  address rollupAddr,
87
112
  address proxyAdminAddr,
88
- Config memory config
113
+ Config memory config,
114
+ address customOsp
89
115
  ) internal returns (IEdgeChallengeManager) {
90
116
  IEdgeChallengeManager challengeManager = IEdgeChallengeManager(
91
117
  address(
@@ -98,7 +124,7 @@ contract RollupCreator is Ownable {
98
124
  challengeManager.initialize({
99
125
  _assertionChain: IAssertionChain(rollupAddr),
100
126
  _challengePeriodBlocks: config.confirmPeriodBlocks,
101
- _oneStepProofEntry: osp,
127
+ _oneStepProofEntry: customOsp == address(0) ? osp : IOneStepProofEntry(customOsp),
102
128
  layerZeroBlockEdgeHeight: config.layerZeroBlockEdgeHeight,
103
129
  layerZeroBigStepEdgeHeight: config.layerZeroBigStepEdgeHeight,
104
130
  layerZeroSmallStepEdgeHeight: config.layerZeroSmallStepEdgeHeight,
@@ -132,6 +158,8 @@ contract RollupCreator is Ownable {
132
158
  * - maxFeePerGasForRetryables price bid for L2 execution.
133
159
  * - batchPosters The list of batch poster addresses, not used when set to empty list
134
160
  * - batchPosterManager The address which has the ability to rotate batch poster keys
161
+ * - feeTokenPricer Fee token pricer contract for converting custom fee token to ETH
162
+ * - customOsp Custom OSP address, if set to address(0) the default OSP will be used
135
163
  * @return The address of the newly created rollup
136
164
  */
137
165
  function createRollup(
@@ -191,8 +219,9 @@ contract RollupCreator is Ownable {
191
219
  deployParams.feeTokenPricer
192
220
  );
193
221
 
194
- IEdgeChallengeManager challengeManager =
195
- createChallengeManager(address(rollup), address(proxyAdmin), deployParams.config);
222
+ IEdgeChallengeManager challengeManager = createChallengeManager(
223
+ address(rollup), address(proxyAdmin), deployParams.config, deployParams.customOsp
224
+ );
196
225
 
197
226
  // deploy and init upgrade executor
198
227
  address upgradeExecutor = _deployUpgradeExecutor(deployParams.config.owner, proxyAdmin);
@@ -184,6 +184,12 @@ contract RollupUserLogic is RollupCore, UUPSNotUpgradeable, IRollupUser {
184
184
  "INSUFFICIENT_STAKE"
185
185
  );
186
186
 
187
+ // the new assertion will be created with requiredStake equal to the baseStake
188
+ // however, for the reasons explained in RollupAdminLogic.decreaseBaseStake we cannot allow an assertion to be created
189
+ // base stake than it's prev. In order to reduce the base stake the config hash of the latest assertion
190
+ // must be overridden, this occurs in the RollupAdminLogic.decreaseBaseStake function
191
+ require(baseStake >= assertion.beforeStateData.configData.requiredStake, "STAKE_TOO_LOW");
192
+
187
193
  bytes32 prevAssertion = RollupLib.assertionHash(
188
194
  assertion.beforeStateData.prevPrevAssertionHash,
189
195
  assertion.beforeState,