@arbitrum/nitro-contracts 3.0.0-alpha.0 → 3.0.0-alpha.2

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 (277) hide show
  1. package/LICENSE.md +1 -1
  2. package/build/contracts/@openzeppelin/contracts/access/Ownable.sol/Ownable.dbg.json +1 -1
  3. package/build/contracts/@openzeppelin/contracts/interfaces/draft-IERC1822.sol/IERC1822Proxiable.dbg.json +1 -1
  4. package/build/contracts/@openzeppelin/contracts/proxy/ERC1967/ERC1967Proxy.sol/ERC1967Proxy.dbg.json +1 -1
  5. package/build/contracts/@openzeppelin/contracts/proxy/ERC1967/ERC1967Upgrade.sol/ERC1967Upgrade.dbg.json +1 -1
  6. package/build/contracts/@openzeppelin/contracts/proxy/Proxy.sol/Proxy.dbg.json +1 -1
  7. package/build/contracts/@openzeppelin/contracts/proxy/beacon/IBeacon.sol/IBeacon.dbg.json +1 -1
  8. package/build/contracts/@openzeppelin/contracts/proxy/beacon/UpgradeableBeacon.sol/UpgradeableBeacon.dbg.json +1 -1
  9. package/build/contracts/@openzeppelin/contracts/proxy/transparent/ProxyAdmin.sol/ProxyAdmin.dbg.json +1 -1
  10. package/build/contracts/@openzeppelin/contracts/proxy/transparent/TransparentUpgradeableProxy.sol/TransparentUpgradeableProxy.dbg.json +1 -1
  11. package/build/contracts/@openzeppelin/contracts/proxy/utils/UUPSUpgradeable.sol/UUPSUpgradeable.dbg.json +1 -1
  12. package/build/contracts/@openzeppelin/contracts/security/ReentrancyGuard.sol/ReentrancyGuard.dbg.json +1 -1
  13. package/build/contracts/@openzeppelin/contracts/token/ERC20/ERC20.sol/ERC20.dbg.json +1 -1
  14. package/build/contracts/@openzeppelin/contracts/token/ERC20/IERC20.sol/IERC20.dbg.json +1 -1
  15. package/build/contracts/@openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata.sol/IERC20Metadata.dbg.json +1 -1
  16. package/build/contracts/@openzeppelin/contracts/token/ERC20/extensions/draft-IERC20Permit.sol/IERC20Permit.dbg.json +1 -1
  17. package/build/contracts/@openzeppelin/contracts/token/ERC20/utils/SafeERC20.sol/SafeERC20.dbg.json +1 -1
  18. package/build/contracts/@openzeppelin/contracts/utils/Address.sol/Address.dbg.json +1 -1
  19. package/build/contracts/@openzeppelin/contracts/utils/Context.sol/Context.dbg.json +1 -1
  20. package/build/contracts/@openzeppelin/contracts/utils/Create2.sol/Create2.dbg.json +1 -1
  21. package/build/contracts/@openzeppelin/contracts/utils/StorageSlot.sol/StorageSlot.dbg.json +1 -1
  22. package/build/contracts/@openzeppelin/contracts/utils/Strings.sol/Strings.dbg.json +1 -1
  23. package/build/contracts/@openzeppelin/contracts-upgradeable/access/AccessControlUpgradeable.sol/AccessControlUpgradeable.dbg.json +1 -1
  24. package/build/contracts/@openzeppelin/contracts-upgradeable/access/IAccessControlUpgradeable.sol/IAccessControlUpgradeable.dbg.json +1 -1
  25. package/build/contracts/@openzeppelin/contracts-upgradeable/access/OwnableUpgradeable.sol/OwnableUpgradeable.dbg.json +1 -1
  26. package/build/contracts/@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol/Initializable.dbg.json +1 -1
  27. package/build/contracts/@openzeppelin/contracts-upgradeable/security/PausableUpgradeable.sol/PausableUpgradeable.dbg.json +1 -1
  28. package/build/contracts/@openzeppelin/contracts-upgradeable/utils/AddressUpgradeable.sol/AddressUpgradeable.dbg.json +1 -1
  29. package/build/contracts/@openzeppelin/contracts-upgradeable/utils/ContextUpgradeable.sol/ContextUpgradeable.dbg.json +1 -1
  30. package/build/contracts/@openzeppelin/contracts-upgradeable/utils/Create2Upgradeable.sol/Create2Upgradeable.dbg.json +1 -1
  31. package/build/contracts/@openzeppelin/contracts-upgradeable/utils/StorageSlotUpgradeable.sol/StorageSlotUpgradeable.dbg.json +1 -1
  32. package/build/contracts/@openzeppelin/contracts-upgradeable/utils/StringsUpgradeable.sol/StringsUpgradeable.dbg.json +1 -1
  33. package/build/contracts/@openzeppelin/contracts-upgradeable/utils/introspection/ERC165Upgradeable.sol/ERC165Upgradeable.dbg.json +1 -1
  34. package/build/contracts/@openzeppelin/contracts-upgradeable/utils/introspection/IERC165Upgradeable.sol/IERC165Upgradeable.dbg.json +1 -1
  35. package/build/contracts/@openzeppelin/contracts-upgradeable/utils/structs/EnumerableSetUpgradeable.sol/EnumerableSetUpgradeable.dbg.json +1 -1
  36. package/build/contracts/src/assertionStakingPool/AbsBoldStakingPool.sol/AbsBoldStakingPool.dbg.json +1 -1
  37. package/build/contracts/src/assertionStakingPool/AssertionStakingPool.sol/AssertionStakingPool.dbg.json +1 -1
  38. package/build/contracts/src/assertionStakingPool/AssertionStakingPool.sol/AssertionStakingPool.json +2 -2
  39. package/build/contracts/src/assertionStakingPool/AssertionStakingPoolCreator.sol/AssertionStakingPoolCreator.dbg.json +1 -1
  40. package/build/contracts/src/assertionStakingPool/AssertionStakingPoolCreator.sol/AssertionStakingPoolCreator.json +2 -2
  41. package/build/contracts/src/assertionStakingPool/EdgeStakingPool.sol/EdgeStakingPool.dbg.json +1 -1
  42. package/build/contracts/src/assertionStakingPool/EdgeStakingPool.sol/EdgeStakingPool.json +2 -2
  43. package/build/contracts/src/assertionStakingPool/EdgeStakingPoolCreator.sol/EdgeStakingPoolCreator.dbg.json +1 -1
  44. package/build/contracts/src/assertionStakingPool/EdgeStakingPoolCreator.sol/EdgeStakingPoolCreator.json +2 -2
  45. package/build/contracts/src/assertionStakingPool/StakingPoolCreatorUtils.sol/StakingPoolCreatorUtils.dbg.json +1 -1
  46. package/build/contracts/src/assertionStakingPool/interfaces/IAbsBoldStakingPool.sol/IAbsBoldStakingPool.dbg.json +1 -1
  47. package/build/contracts/src/assertionStakingPool/interfaces/IAssertionStakingPool.sol/IAssertionStakingPool.dbg.json +1 -1
  48. package/build/contracts/src/assertionStakingPool/interfaces/IAssertionStakingPoolCreator.sol/IAssertionStakingPoolCreator.dbg.json +1 -1
  49. package/build/contracts/src/assertionStakingPool/interfaces/IEdgeStakingPool.sol/IEdgeStakingPool.dbg.json +1 -1
  50. package/build/contracts/src/assertionStakingPool/interfaces/IEdgeStakingPoolCreator.sol/IEdgeStakingPoolCreator.dbg.json +1 -1
  51. package/build/contracts/src/bridge/AbsBridge.sol/AbsBridge.dbg.json +1 -1
  52. package/build/contracts/src/bridge/AbsInbox.sol/AbsInbox.dbg.json +1 -1
  53. package/build/contracts/src/bridge/AbsInbox.sol/AbsInbox.json +7 -7
  54. package/build/contracts/src/bridge/AbsOutbox.sol/AbsOutbox.dbg.json +1 -1
  55. package/build/contracts/src/bridge/Bridge.sol/Bridge.dbg.json +1 -1
  56. package/build/contracts/src/bridge/Bridge.sol/Bridge.json +2 -2
  57. package/build/contracts/src/bridge/DelayBuffer.sol/DelayBuffer.dbg.json +1 -1
  58. package/build/contracts/src/bridge/ERC20Bridge.sol/ERC20Bridge.dbg.json +1 -1
  59. package/build/contracts/src/bridge/ERC20Bridge.sol/ERC20Bridge.json +2 -2
  60. package/build/contracts/src/bridge/ERC20Inbox.sol/ERC20Inbox.dbg.json +1 -1
  61. package/build/contracts/src/bridge/ERC20Inbox.sol/ERC20Inbox.json +9 -9
  62. package/build/contracts/src/bridge/ERC20Outbox.sol/ERC20Outbox.dbg.json +1 -1
  63. package/build/contracts/src/bridge/ERC20Outbox.sol/ERC20Outbox.json +2 -2
  64. package/build/contracts/src/bridge/GasRefunder.sol/GasRefunder.dbg.json +1 -1
  65. package/build/contracts/src/bridge/IBridge.sol/IBridge.dbg.json +1 -1
  66. package/build/contracts/src/bridge/IDelayedMessageProvider.sol/IDelayedMessageProvider.dbg.json +1 -1
  67. package/build/contracts/src/bridge/IERC20Bridge.sol/IERC20Bridge.dbg.json +1 -1
  68. package/build/contracts/src/bridge/IERC20Inbox.sol/IERC20Inbox.dbg.json +1 -1
  69. package/build/contracts/src/bridge/IERC20Inbox.sol/IERC20Inbox.json +1 -1
  70. package/build/contracts/src/bridge/IEthBridge.sol/IEthBridge.dbg.json +1 -1
  71. package/build/contracts/src/bridge/IInbox.sol/IInbox.dbg.json +1 -1
  72. package/build/contracts/src/bridge/IInbox.sol/IInbox.json +1 -1
  73. package/build/contracts/src/bridge/IInboxBase.sol/IInboxBase.dbg.json +1 -1
  74. package/build/contracts/src/bridge/IInboxBase.sol/IInboxBase.json +1 -1
  75. package/build/contracts/src/bridge/IOutbox.sol/IOutbox.dbg.json +1 -1
  76. package/build/contracts/src/bridge/IOwnable.sol/IOwnable.dbg.json +1 -1
  77. package/build/contracts/src/bridge/ISequencerInbox.sol/ISequencerInbox.dbg.json +1 -1
  78. package/build/contracts/src/bridge/Inbox.sol/Inbox.dbg.json +1 -1
  79. package/build/contracts/src/bridge/Inbox.sol/Inbox.json +9 -9
  80. package/build/contracts/src/bridge/Messages.sol/Messages.dbg.json +1 -1
  81. package/build/contracts/src/bridge/Outbox.sol/Outbox.dbg.json +1 -1
  82. package/build/contracts/src/bridge/Outbox.sol/Outbox.json +2 -2
  83. package/build/contracts/src/bridge/SequencerInbox.sol/SequencerInbox.dbg.json +1 -1
  84. package/build/contracts/src/bridge/SequencerInbox.sol/SequencerInbox.json +5 -5
  85. package/build/contracts/src/chain/CacheManager.sol/CacheManager.dbg.json +1 -1
  86. package/build/contracts/src/chain/CacheManager.sol/CacheManager.json +2 -2
  87. package/build/contracts/src/challengeV2/EdgeChallengeManager.sol/EdgeChallengeManager.dbg.json +1 -1
  88. package/build/contracts/src/challengeV2/EdgeChallengeManager.sol/EdgeChallengeManager.json +2 -2
  89. package/build/contracts/src/challengeV2/IAssertionChain.sol/IAssertionChain.dbg.json +1 -1
  90. package/build/contracts/src/challengeV2/IEdgeChallengeManager.sol/IEdgeChallengeManager.dbg.json +4 -0
  91. package/build/contracts/src/challengeV2/{EdgeChallengeManager.sol → IEdgeChallengeManager.sol}/IEdgeChallengeManager.json +33 -1
  92. package/build/contracts/src/challengeV2/libraries/ArrayUtilsLib.sol/ArrayUtilsLib.dbg.json +1 -1
  93. package/build/contracts/src/challengeV2/libraries/ChallengeEdgeLib.sol/ChallengeEdgeLib.dbg.json +1 -1
  94. package/build/contracts/src/challengeV2/libraries/ChallengeEdgeLib.sol/ChallengeEdgeLib.json +2 -2
  95. package/build/contracts/src/challengeV2/libraries/EdgeChallengeManagerLib.sol/EdgeChallengeManagerLib.dbg.json +1 -1
  96. package/build/contracts/src/challengeV2/libraries/EdgeChallengeManagerLib.sol/EdgeChallengeManagerLib.json +2 -2
  97. package/build/contracts/src/challengeV2/libraries/MerkleTreeAccumulatorLib.sol/MerkleTreeAccumulatorLib.dbg.json +1 -1
  98. package/build/contracts/src/challengeV2/libraries/MerkleTreeAccumulatorLib.sol/MerkleTreeAccumulatorLib.json +2 -2
  99. package/build/contracts/src/challengeV2/libraries/UintUtilsLib.sol/UintUtilsLib.dbg.json +1 -1
  100. package/build/contracts/src/libraries/AddressAliasHelper.sol/AddressAliasHelper.dbg.json +1 -1
  101. package/build/contracts/src/libraries/AdminFallbackProxy.sol/AdminFallbackProxy.dbg.json +1 -1
  102. package/build/contracts/src/libraries/AdminFallbackProxy.sol/DoubleLogicERC1967Upgrade.dbg.json +1 -1
  103. package/build/contracts/src/libraries/ArbitrumChecker.sol/ArbitrumChecker.dbg.json +1 -1
  104. package/build/contracts/src/libraries/ArbitrumChecker.sol/ArbitrumChecker.json +2 -2
  105. package/build/contracts/src/libraries/CallerChecker.sol/CallerChecker.dbg.json +4 -0
  106. package/build/contracts/src/libraries/CallerChecker.sol/CallerChecker.json +10 -0
  107. package/build/contracts/src/libraries/CryptographyPrimitives.sol/CryptographyPrimitives.dbg.json +1 -1
  108. package/build/contracts/src/libraries/DecimalsConverterHelper.sol/DecimalsConverterHelper.dbg.json +1 -1
  109. package/build/contracts/src/libraries/DelegateCallAware.sol/DelegateCallAware.dbg.json +1 -1
  110. package/build/contracts/src/libraries/DoubleLogicUUPSUpgradeable.sol/DoubleLogicUUPSUpgradeable.dbg.json +1 -1
  111. package/build/contracts/src/libraries/GasRefundEnabled.sol/GasRefundEnabled.dbg.json +1 -1
  112. package/build/contracts/src/libraries/IGasRefunder.sol/IGasRefunder.dbg.json +1 -1
  113. package/build/contracts/src/libraries/IReader4844.sol/IReader4844.dbg.json +1 -1
  114. package/build/contracts/src/libraries/MerkleLib.sol/MerkleLib.dbg.json +1 -1
  115. package/build/contracts/src/libraries/MerkleLib.sol/MerkleLib.json +2 -2
  116. package/build/contracts/src/libraries/UUPSNotUpgradeable.sol/UUPSNotUpgradeable.dbg.json +1 -1
  117. package/build/contracts/src/mocks/Benchmarks.sol/Benchmarks.dbg.json +1 -1
  118. package/build/contracts/src/mocks/BridgeStub.sol/BridgeStub.dbg.json +1 -1
  119. package/build/contracts/src/mocks/BridgeStub.sol/BridgeStub.json +2 -2
  120. package/build/contracts/src/mocks/BridgeUnproxied.sol/BridgeUnproxied.dbg.json +1 -1
  121. package/build/contracts/src/mocks/BridgeUnproxied.sol/BridgeUnproxied.json +2 -2
  122. package/build/contracts/src/mocks/CreateTest.sol/CreateTest.dbg.json +4 -0
  123. package/build/contracts/src/mocks/CreateTest.sol/CreateTest.json +15 -0
  124. package/build/contracts/src/mocks/HostioTest.sol/HostioTest.dbg.json +4 -0
  125. package/build/contracts/src/mocks/HostioTest.sol/HostioTest.json +513 -0
  126. package/build/contracts/src/mocks/InboxStub.sol/InboxStub.dbg.json +1 -1
  127. package/build/contracts/src/mocks/InboxStub.sol/InboxStub.json +2 -2
  128. package/build/contracts/src/mocks/MerkleTreeAccess.sol/MerkleTreeAccess.dbg.json +1 -1
  129. package/build/contracts/src/mocks/MerkleTreeAccess.sol/MerkleTreeAccess.json +2 -2
  130. package/build/contracts/src/mocks/MockRollupEventInbox.sol/MockRollupEventInbox.dbg.json +1 -1
  131. package/build/contracts/src/mocks/MockRollupEventInbox.sol/MockRollupEventInbox.json +2 -2
  132. package/build/contracts/src/mocks/MultiCallTest.sol/MultiCallTest.dbg.json +1 -1
  133. package/build/contracts/src/mocks/PendingBlkTimeAndNrAdvanceCheck.sol/PendingBlkTimeAndNrAdvanceCheck.dbg.json +1 -1
  134. package/build/contracts/src/mocks/PendingBlkTimeAndNrAdvanceCheck.sol/PendingBlkTimeAndNrAdvanceCheck.json +2 -2
  135. package/build/contracts/src/mocks/Program.sol/ProgramTest.dbg.json +1 -1
  136. package/build/contracts/src/mocks/Program.sol/ProgramTest.json +2 -2
  137. package/build/contracts/src/mocks/ProxyAdminForBinding.sol/ProxyAdminForBinding.dbg.json +1 -1
  138. package/build/contracts/src/mocks/SdkStorage.sol/SdkStorage.dbg.json +1 -1
  139. package/build/contracts/src/mocks/SequencerInboxBlobMock.sol/SequencerInboxBlobMock.dbg.json +1 -1
  140. package/build/contracts/src/mocks/SequencerInboxBlobMock.sol/SequencerInboxBlobMock.json +5 -5
  141. package/build/contracts/src/mocks/SequencerInboxStub.sol/SequencerInboxStub.dbg.json +1 -1
  142. package/build/contracts/src/mocks/SequencerInboxStub.sol/SequencerInboxStub.json +5 -5
  143. package/build/contracts/src/mocks/Simple.sol/Simple.dbg.json +1 -1
  144. package/build/contracts/src/mocks/Simple.sol/Simple.json +2 -2
  145. package/build/contracts/src/mocks/SimpleCacheManager.sol/SimpleCacheManager.dbg.json +1 -1
  146. package/build/contracts/src/mocks/SimpleOneStepProofEntry.sol/SimpleOneStepProofEntry.dbg.json +1 -1
  147. package/build/contracts/src/mocks/SimpleOneStepProofEntry.sol/SimpleOneStepProofEntry.json +2 -2
  148. package/build/contracts/src/mocks/SimpleProxy.sol/SimpleProxy.dbg.json +1 -1
  149. package/build/contracts/src/mocks/TestWETH9.sol/IWETH9.dbg.json +1 -1
  150. package/build/contracts/src/mocks/TestWETH9.sol/TestWETH9.dbg.json +1 -1
  151. package/build/contracts/src/mocks/UpgradeExecutorMock.sol/UpgradeExecutorMock.dbg.json +1 -1
  152. package/build/contracts/src/node-interface/NodeInterface.sol/NodeInterface.dbg.json +1 -1
  153. package/build/contracts/src/node-interface/NodeInterfaceDebug.sol/NodeInterfaceDebug.dbg.json +1 -1
  154. package/build/contracts/src/osp/HashProofHelper.sol/HashProofHelper.dbg.json +1 -1
  155. package/build/contracts/src/osp/IOneStepProofEntry.sol/IOneStepProofEntry.dbg.json +1 -1
  156. package/build/contracts/src/osp/IOneStepProofEntry.sol/OneStepProofEntryLib.dbg.json +1 -1
  157. package/build/contracts/src/osp/IOneStepProver.sol/IOneStepProver.dbg.json +1 -1
  158. package/build/contracts/src/osp/OneStepProofEntry.sol/OneStepProofEntry.dbg.json +1 -1
  159. package/build/contracts/src/osp/OneStepProver0.sol/OneStepProver0.dbg.json +1 -1
  160. package/build/contracts/src/osp/OneStepProverHostIo.sol/OneStepProverHostIo.dbg.json +1 -1
  161. package/build/contracts/src/osp/OneStepProverMath.sol/OneStepProverMath.dbg.json +1 -1
  162. package/build/contracts/src/osp/OneStepProverMemory.sol/OneStepProverMemory.dbg.json +1 -1
  163. package/build/contracts/src/precompiles/ArbAddressTable.sol/ArbAddressTable.dbg.json +1 -1
  164. package/build/contracts/src/precompiles/ArbAggregator.sol/ArbAggregator.dbg.json +1 -1
  165. package/build/contracts/src/precompiles/ArbBLS.sol/ArbBLS.dbg.json +1 -1
  166. package/build/contracts/src/precompiles/ArbDebug.sol/ArbDebug.dbg.json +1 -1
  167. package/build/contracts/src/precompiles/ArbFunctionTable.sol/ArbFunctionTable.dbg.json +1 -1
  168. package/build/contracts/src/precompiles/ArbGasInfo.sol/ArbGasInfo.dbg.json +1 -1
  169. package/build/contracts/src/precompiles/ArbInfo.sol/ArbInfo.dbg.json +1 -1
  170. package/build/contracts/src/precompiles/ArbOwner.sol/ArbOwner.dbg.json +1 -1
  171. package/build/contracts/src/precompiles/ArbOwnerPublic.sol/ArbOwnerPublic.dbg.json +1 -1
  172. package/build/contracts/src/precompiles/ArbRetryableTx.sol/ArbRetryableTx.dbg.json +1 -1
  173. package/build/contracts/src/precompiles/ArbStatistics.sol/ArbStatistics.dbg.json +1 -1
  174. package/build/contracts/src/precompiles/ArbSys.sol/ArbSys.dbg.json +1 -1
  175. package/build/contracts/src/precompiles/ArbWasm.sol/ArbWasm.dbg.json +1 -1
  176. package/build/contracts/src/precompiles/ArbWasm.sol/ArbWasm.json +4 -4
  177. package/build/contracts/src/precompiles/ArbWasmCache.sol/ArbWasmCache.dbg.json +1 -1
  178. package/build/contracts/src/precompiles/ArbosActs.sol/ArbosActs.dbg.json +1 -1
  179. package/build/contracts/src/precompiles/ArbosTest.sol/ArbosTest.dbg.json +1 -1
  180. package/build/contracts/src/rollup/AbsRollupEventInbox.sol/AbsRollupEventInbox.dbg.json +1 -1
  181. package/build/contracts/src/rollup/Assertion.sol/AssertionNodeLib.dbg.json +1 -1
  182. package/build/contracts/src/rollup/AssertionState.sol/AssertionStateLib.dbg.json +1 -1
  183. package/build/contracts/src/rollup/BOLDUpgradeAction.sol/BOLDUpgradeAction.dbg.json +1 -1
  184. package/build/contracts/src/rollup/BOLDUpgradeAction.sol/BOLDUpgradeAction.json +2 -2
  185. package/build/contracts/src/rollup/BOLDUpgradeAction.sol/ConstantArrayStorage.dbg.json +1 -1
  186. package/build/contracts/src/rollup/BOLDUpgradeAction.sol/ConstantArrayStorage.json +2 -2
  187. package/build/contracts/src/rollup/BOLDUpgradeAction.sol/IOldRollup.dbg.json +1 -1
  188. package/build/contracts/src/rollup/BOLDUpgradeAction.sol/IOldRollupAdmin.dbg.json +1 -1
  189. package/build/contracts/src/rollup/BOLDUpgradeAction.sol/ISeqInboxPostUpgradeInit.dbg.json +1 -1
  190. package/build/contracts/src/rollup/BOLDUpgradeAction.sol/RollupReader.dbg.json +1 -1
  191. package/build/contracts/src/rollup/BOLDUpgradeAction.sol/RollupReader.json +2 -2
  192. package/build/contracts/src/rollup/BOLDUpgradeAction.sol/StateHashPreImageLookup.dbg.json +1 -1
  193. package/build/contracts/src/rollup/BOLDUpgradeAction.sol/StateHashPreImageLookup.json +2 -2
  194. package/build/contracts/src/rollup/BridgeCreator.sol/BridgeCreator.dbg.json +1 -1
  195. package/build/contracts/src/rollup/BridgeCreator.sol/BridgeCreator.json +2 -2
  196. package/build/contracts/src/rollup/DeployHelper.sol/DeployHelper.dbg.json +1 -1
  197. package/build/contracts/src/rollup/DeployHelper.sol/DeployHelper.json +2 -2
  198. package/build/contracts/src/rollup/ERC20RollupEventInbox.sol/ERC20RollupEventInbox.dbg.json +1 -1
  199. package/build/contracts/src/rollup/ERC20RollupEventInbox.sol/ERC20RollupEventInbox.json +2 -2
  200. package/build/contracts/src/rollup/FactoryDeployerHelper.sol/FactoryDeployerHelper.dbg.json +1 -1
  201. package/build/contracts/src/rollup/FactoryDeployerHelper.sol/IDeployHelper.dbg.json +1 -1
  202. package/build/contracts/src/rollup/FactoryDeployerHelper.sol/IERC20.dbg.json +1 -1
  203. package/build/contracts/src/rollup/FactoryDeployerHelper.sol/IERC20Bridge.dbg.json +1 -1
  204. package/build/contracts/src/rollup/FactoryDeployerHelper.sol/IInboxBase.dbg.json +1 -1
  205. package/build/contracts/src/rollup/IRollupAdmin.sol/IRollupAdmin.dbg.json +1 -1
  206. package/build/contracts/src/rollup/IRollupCore.sol/IRollupCore.dbg.json +1 -1
  207. package/build/contracts/src/rollup/IRollupEventInbox.sol/IRollupEventInbox.dbg.json +1 -1
  208. package/build/contracts/src/rollup/IRollupLogic.sol/IRollupUser.dbg.json +1 -1
  209. package/build/contracts/src/rollup/RollupAdminLogic.sol/RollupAdminLogic.dbg.json +1 -1
  210. package/build/contracts/src/rollup/RollupAdminLogic.sol/RollupAdminLogic.json +2 -2
  211. package/build/contracts/src/rollup/RollupCore.sol/RollupCore.dbg.json +1 -1
  212. package/build/contracts/src/rollup/RollupCreator.sol/RollupCreator.dbg.json +1 -1
  213. package/build/contracts/src/rollup/RollupCreator.sol/RollupCreator.json +2 -2
  214. package/build/contracts/src/rollup/RollupEventInbox.sol/RollupEventInbox.dbg.json +1 -1
  215. package/build/contracts/src/rollup/RollupEventInbox.sol/RollupEventInbox.json +2 -2
  216. package/build/contracts/src/rollup/RollupLib.sol/RollupLib.dbg.json +1 -1
  217. package/build/contracts/src/rollup/RollupLib.sol/RollupLib.json +2 -2
  218. package/build/contracts/src/rollup/RollupProxy.sol/RollupProxy.dbg.json +1 -1
  219. package/build/contracts/src/rollup/RollupProxy.sol/RollupProxy.json +2 -2
  220. package/build/contracts/src/rollup/RollupUserLogic.sol/RollupUserLogic.dbg.json +1 -1
  221. package/build/contracts/src/rollup/RollupUserLogic.sol/RollupUserLogic.json +2 -2
  222. package/build/contracts/src/rollup/ValidatorWallet.sol/ValidatorWallet.dbg.json +1 -1
  223. package/build/contracts/src/rollup/ValidatorWallet.sol/ValidatorWallet.json +2 -2
  224. package/build/contracts/src/rollup/ValidatorWalletCreator.sol/ValidatorWalletCreator.dbg.json +1 -1
  225. package/build/contracts/src/rollup/ValidatorWalletCreator.sol/ValidatorWalletCreator.json +2 -2
  226. package/build/contracts/src/state/Deserialize.sol/Deserialize.dbg.json +1 -1
  227. package/build/contracts/src/state/GlobalState.sol/GlobalStateLib.dbg.json +1 -1
  228. package/build/contracts/src/state/Instructions.sol/Instructions.dbg.json +1 -1
  229. package/build/contracts/src/state/Machine.sol/MachineLib.dbg.json +1 -1
  230. package/build/contracts/src/state/MerkleProof.sol/MerkleProofLib.dbg.json +1 -1
  231. package/build/contracts/src/state/Module.sol/ModuleLib.dbg.json +1 -1
  232. package/build/contracts/src/state/ModuleMemory.sol/ModuleMemoryLib.dbg.json +1 -1
  233. package/build/contracts/src/state/ModuleMemoryCompact.sol/ModuleMemoryCompactLib.dbg.json +1 -1
  234. package/build/contracts/src/state/MultiStack.sol/MultiStackLib.dbg.json +1 -1
  235. package/build/contracts/src/state/PcArray.sol/PcArrayLib.dbg.json +1 -1
  236. package/build/contracts/src/state/StackFrame.sol/StackFrameLib.dbg.json +1 -1
  237. package/build/contracts/src/state/Value.sol/ValueLib.dbg.json +1 -1
  238. package/build/contracts/src/state/ValueArray.sol/ValueArrayLib.dbg.json +1 -1
  239. package/build/contracts/src/state/ValueStack.sol/ValueStackLib.dbg.json +1 -1
  240. package/build/contracts/src/test-helpers/BridgeTester.sol/BridgeTester.dbg.json +1 -1
  241. package/build/contracts/src/test-helpers/BridgeTester.sol/BridgeTester.json +2 -2
  242. package/build/contracts/src/test-helpers/CryptographyPrimitivesTester.sol/CryptographyPrimitivesTester.dbg.json +1 -1
  243. package/build/contracts/src/test-helpers/EthVault.sol/EthVault.dbg.json +1 -1
  244. package/build/contracts/src/test-helpers/MessageTester.sol/MessageTester.dbg.json +1 -1
  245. package/build/contracts/src/test-helpers/OutboxWithoutOptTester.sol/OutboxWithoutOptTester.dbg.json +1 -1
  246. package/build/contracts/src/test-helpers/OutboxWithoutOptTester.sol/OutboxWithoutOptTester.json +2 -2
  247. package/build/contracts/src/test-helpers/RollupMock.sol/RollupMock.dbg.json +1 -1
  248. package/build/contracts/src/test-helpers/TestToken.sol/TestToken.dbg.json +1 -1
  249. package/build/contracts/src/test-helpers/ValueArrayTester.sol/ValueArrayTester.dbg.json +1 -1
  250. package/out/yul/Reader4844.yul/Reader4844.json +1 -1
  251. package/package.json +1 -1
  252. package/src/assertionStakingPool/EdgeStakingPool.sol +3 -4
  253. package/src/assertionStakingPool/interfaces/IEdgeStakingPool.sol +1 -1
  254. package/src/bridge/AbsInbox.sol +10 -4
  255. package/src/bridge/IInboxBase.sol +6 -2
  256. package/src/bridge/Inbox.sol +3 -0
  257. package/src/bridge/SequencerInbox.sol +10 -11
  258. package/src/challengeV2/EdgeChallengeManager.sol +1 -225
  259. package/src/challengeV2/IAssertionChain.sol +1 -1
  260. package/src/challengeV2/IEdgeChallengeManager.sol +239 -0
  261. package/src/challengeV2/libraries/ChallengeEdgeLib.sol +1 -57
  262. package/src/challengeV2/libraries/EdgeChallengeManagerLib.sol +2 -113
  263. package/src/challengeV2/libraries/Structs.sol +176 -0
  264. package/src/libraries/CallerChecker.sol +18 -0
  265. package/src/libraries/Error.sol +3 -0
  266. package/src/libraries/GasRefundEnabled.sol +2 -2
  267. package/src/mocks/CreateTest.sol +44 -0
  268. package/src/mocks/HostioTest.sol +200 -0
  269. package/src/mocks/SimpleOneStepProofEntry.sol +1 -1
  270. package/src/precompiles/ArbSys.sol +2 -1
  271. package/src/precompiles/ArbWasm.sol +1 -1
  272. package/src/rollup/Config.sol +1 -1
  273. package/src/rollup/IRollupCore.sol +1 -1
  274. package/src/rollup/RollupCore.sol +1 -1
  275. package/src/rollup/RollupLib.sol +1 -1
  276. package/src/rollup/RollupUserLogic.sol +1 -0
  277. package/build/contracts/src/challengeV2/EdgeChallengeManager.sol/IEdgeChallengeManager.dbg.json +0 -4
@@ -1,4 +1,4 @@
1
1
  {
2
2
  "_format": "hh-sol-dbg-1",
3
- "buildInfo": "../../../build-info/28754c4998b67fc9c9d6d849262cf39e.json"
3
+ "buildInfo": "../../../build-info/a354aaf7cb79bc63f750c0ca36db8cc9.json"
4
4
  }
@@ -1 +1 @@
1
- {"abi":null,"bytecode":{"object":"0x605b80600c6000396000f3fe346056576000803560e01c8063e83a2d8214602857631f6d6ef71460205780fd5b6020904a8152f35b50805b804990811560435760019160408260051b015201602b565b60409150602083528060205260051b0190f35b600080fd","sourceMap":"76:19:0:-:0;53:21;;50:1;41:55;50:1;105:30","linkReferences":{}},"deployedBytecode":{"object":"0x346056576000803560e01c8063e83a2d8214602857631f6d6ef71460205780fd5b6020904a8152f35b50805b804990811560435760019160408260051b015201602b565b60409150602083528060205260051b0190f35b600080fd","sourceMap":"250:11:0:-:0;247:31;;400:1;387:15;;381:4;377:26;465:486;470:10;465:486;;;1019:10;1014:216;;;1294:12;;1030:200;1213:2;1124:23;;1164:22;;1203:13;481:470;499:10;;559:271;651:26;;701:12;;;698:25;;810:1;755:10;767:2;755:10;;;751:19;744:33;803:9;539:3;;714:9;767:2;716:5;;762:2;847:13;;877;762:2;877:13;755:10;921;917:19;907:30;;262:16;274:1;264:12;","linkReferences":{}},"methodIdentifiers":{}}
1
+ {"abi":null,"bytecode":{"object":"0x605780600a5f395ff3fe346053575f3560e01c8063e83a2d8214602757631f6d6ef714601f575f80fd5b4a5f5260205ff35b5f5b804990811560415760019160408260051b0152016029565b60409060205f528060205260051b015ff35b5f80fd","sourceMap":"65:19:0:-:0;109:21;;106:1;97:38;155:1;148:13","linkReferences":{}},"deployedBytecode":{"object":"0x346053575f3560e01c8063e83a2d8214602757631f6d6ef714601f575f80fd5b4a5f5260205ff35b5f5b804990811560415760019160408260051b0152016029565b60409060205f528060205260051b015ff35b5f80fd","sourceMap":"249:11:0:-:0;246:31;;324:1;311:15;305:4;301:26;344:467;349:10;344:467;;;833:10;828:120;;;985:1;975:12;;844:104;876:19;873:1;866:30;927:2;924:1;917:13;360:451;391:1;447:228;485:22;;535:12;;;532:25;;651:1;593:9;604:2;593:9;597:1;593:9;589:18;582:32;644:9;423:3;;548:9;789:2;550:5;706:2;703:1;696:13;730;737:2;730:13;782:1;778:9;774:18;771:1;764:29;261:16;273:1;263:12;","linkReferences":{}},"methodIdentifiers":{}}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@arbitrum/nitro-contracts",
3
- "version": "3.0.0-alpha.0",
3
+ "version": "3.0.0-alpha.2",
4
4
  "description": "Layer 2 precompiles and rollup for Arbitrum Nitro",
5
5
  "author": "Offchain Labs, Inc.",
6
6
  "license": "BUSL-1.1",
@@ -6,7 +6,6 @@ pragma solidity ^0.8.0;
6
6
 
7
7
  import "./AbsBoldStakingPool.sol";
8
8
  import "./interfaces/IEdgeStakingPool.sol";
9
- import "../challengeV2/EdgeChallengeManager.sol";
10
9
 
11
10
  import "@openzeppelin/contracts/token/ERC20/IERC20.sol";
12
11
  import "@openzeppelin/contracts/token/ERC20/utils/SafeERC20.sol";
@@ -35,7 +34,7 @@ contract EdgeStakingPool is AbsBoldStakingPool, IEdgeStakingPool {
35
34
  constructor(
36
35
  address _challengeManager,
37
36
  bytes32 _edgeId
38
- ) AbsBoldStakingPool(address(EdgeChallengeManager(_challengeManager).stakeToken())) {
37
+ ) AbsBoldStakingPool(address(IEdgeChallengeManager(_challengeManager).stakeToken())) {
39
38
  if (_edgeId == bytes32(0)) {
40
39
  revert EmptyEdgeId();
41
40
  }
@@ -47,9 +46,9 @@ contract EdgeStakingPool is AbsBoldStakingPool, IEdgeStakingPool {
47
46
  function createEdge(
48
47
  CreateEdgeArgs calldata args
49
48
  ) external {
50
- uint256 requiredStake = EdgeChallengeManager(challengeManager).stakeAmounts(args.level);
49
+ uint256 requiredStake = IEdgeChallengeManager(challengeManager).stakeAmounts(args.level);
51
50
  IERC20(stakeToken).safeIncreaseAllowance(address(challengeManager), requiredStake);
52
- bytes32 newEdgeId = EdgeChallengeManager(challengeManager).createLayerZeroEdge(args);
51
+ bytes32 newEdgeId = IEdgeChallengeManager(challengeManager).createLayerZeroEdge(args);
53
52
  if (newEdgeId != edgeId) {
54
53
  revert IncorrectEdgeId(newEdgeId, edgeId);
55
54
  }
@@ -4,7 +4,7 @@
4
4
 
5
5
  pragma solidity ^0.8.0;
6
6
 
7
- import "../../challengeV2/EdgeChallengeManager.sol";
7
+ import "../../challengeV2/IEdgeChallengeManager.sol";
8
8
  import "./IAbsBoldStakingPool.sol";
9
9
 
10
10
  interface IEdgeStakingPool is IAbsBoldStakingPool {
@@ -6,12 +6,12 @@ pragma solidity ^0.8.4;
6
6
 
7
7
  import {
8
8
  DataTooLarge,
9
- Deprecated,
10
9
  GasLimitTooLarge,
11
10
  InsufficientValue,
12
11
  InsufficientSubmissionCost,
13
12
  L1Forked,
14
13
  NotAllowedOrigin,
14
+ NotCodelessOrigin,
15
15
  NotRollupOrOwner,
16
16
  RetryableData
17
17
  } from "../libraries/Error.sol";
@@ -19,6 +19,7 @@ import "./IInboxBase.sol";
19
19
  import "./ISequencerInbox.sol";
20
20
  import "./IBridge.sol";
21
21
  import "../libraries/AddressAliasHelper.sol";
22
+ import "../libraries/CallerChecker.sol";
22
23
  import "../libraries/DelegateCallAware.sol";
23
24
  import {
24
25
  L1MessageType_submitRetryableTx,
@@ -136,9 +137,14 @@ abstract contract AbsInbox is DelegateCallAware, PausableUpgradeable, IInboxBase
136
137
 
137
138
  /// @inheritdoc IInboxBase
138
139
  function sendL2MessageFromOrigin(
139
- bytes calldata
140
- ) external pure returns (uint256) {
141
- revert Deprecated();
140
+ bytes calldata messageData
141
+ ) external whenNotPaused onlyAllowed returns (uint256) {
142
+ if (_chainIdChanged()) revert L1Forked();
143
+ if (!CallerChecker.isCallerCodelessOrigin()) revert NotCodelessOrigin();
144
+ if (messageData.length > maxDataSize) revert DataTooLarge(messageData.length, maxDataSize);
145
+ uint256 msgNum = _deliverToBridge(L2_MSG, msg.sender, keccak256(messageData), 0);
146
+ emit InboxMessageDeliveredFromOrigin(msgNum);
147
+ return msgNum;
142
148
  }
143
149
 
144
150
  /// @inheritdoc IInboxBase
@@ -16,9 +16,13 @@ interface IInboxBase is IDelayedMessageProvider {
16
16
 
17
17
  function maxDataSize() external view returns (uint256);
18
18
 
19
- /// @dev Deprecated due to EIP-3074
19
+ /**
20
+ * @notice Send a generic L2 message to the chain
21
+ * @dev This method is an optimization to avoid having to emit the entirety of the messageData in a log. Instead validators are expected to be able to parse the data from the transaction's input
22
+ * @param messageData Data of the message being sent
23
+ */
20
24
  function sendL2MessageFromOrigin(
21
- bytes calldata
25
+ bytes calldata messageData
22
26
  ) external returns (uint256);
23
27
 
24
28
  /**
@@ -109,6 +109,7 @@ contract Inbox is AbsInbox, IInbox {
109
109
  if (!_chainIdChanged()) revert NotForked();
110
110
  // solhint-disable-next-line avoid-tx-origin
111
111
  if (msg.sender != tx.origin) revert NotOrigin();
112
+ // no code size check required because we only want to know if msg.sender is an EOA to undo alias
112
113
  // arbos will discard unsigned tx with gas limit too large
113
114
  if (gasLimit > type(uint64).max) {
114
115
  revert GasLimitTooLarge();
@@ -142,6 +143,7 @@ contract Inbox is AbsInbox, IInbox {
142
143
  if (!_chainIdChanged()) revert NotForked();
143
144
  // solhint-disable-next-line avoid-tx-origin
144
145
  if (msg.sender != tx.origin) revert NotOrigin();
146
+ // no code size check required because we only want to know if msg.sender is an EOA to undo alias
145
147
  // arbos will discard unsigned tx with gas limit too large
146
148
  if (gasLimit > type(uint64).max) {
147
149
  revert GasLimitTooLarge();
@@ -174,6 +176,7 @@ contract Inbox is AbsInbox, IInbox {
174
176
  if (!_chainIdChanged()) revert NotForked();
175
177
  // solhint-disable-next-line avoid-tx-origin
176
178
  if (msg.sender != tx.origin) revert NotOrigin();
179
+ // no code size check required because we only want to know if msg.sender is an EOA to undo alias
177
180
  // arbos will discard unsigned tx with gas limit too large
178
181
  if (gasLimit > type(uint64).max) {
179
182
  revert GasLimitTooLarge();
@@ -19,6 +19,7 @@ import {
19
19
  NoSuchKeyset,
20
20
  NotForked,
21
21
  NotBatchPosterManager,
22
+ NotCodelessOrigin,
22
23
  RollupNotChanged,
23
24
  DataBlobsNotSupported,
24
25
  InitParamZero,
@@ -42,6 +43,7 @@ import "../rollup/IRollupLogic.sol";
42
43
  import "./Messages.sol";
43
44
  import "../precompiles/ArbGasInfo.sol";
44
45
  import "../precompiles/ArbSys.sol";
46
+ import "../libraries/CallerChecker.sol";
45
47
  import "../libraries/IReader4844.sol";
46
48
 
47
49
  import "../libraries/DelegateCallAware.sol";
@@ -333,8 +335,7 @@ contract SequencerInbox is DelegateCallAware, GasRefundEnabled, ISequencerInbox
333
335
  uint256 prevMessageCount,
334
336
  uint256 newMessageCount
335
337
  ) external refundsGas(gasRefunder, IReader4844(address(0))) {
336
- // solhint-disable-next-line avoid-tx-origin
337
- if (msg.sender != tx.origin) revert NotOrigin();
338
+ if (!CallerChecker.isCallerCodelessOrigin()) revert NotCodelessOrigin();
338
339
  if (!isBatchPoster[msg.sender]) revert NotBatchPoster();
339
340
  if (isDelayProofRequired(afterDelayedMessagesRead)) revert DelayProofRequired();
340
341
 
@@ -387,8 +388,7 @@ contract SequencerInbox is DelegateCallAware, GasRefundEnabled, ISequencerInbox
387
388
  uint256 newMessageCount,
388
389
  DelayProof calldata delayProof
389
390
  ) external refundsGas(gasRefunder, IReader4844(address(0))) {
390
- // solhint-disable-next-line avoid-tx-origin
391
- if (msg.sender != tx.origin) revert NotOrigin();
391
+ if (!CallerChecker.isCallerCodelessOrigin()) revert NotCodelessOrigin();
392
392
  if (!isBatchPoster[msg.sender]) revert NotBatchPoster();
393
393
  if (!isDelayBufferable) revert NotDelayBufferable();
394
394
 
@@ -436,10 +436,9 @@ contract SequencerInbox is DelegateCallAware, GasRefundEnabled, ISequencerInbox
436
436
  if (hostChainIsArbitrum) revert DataBlobsNotSupported();
437
437
 
438
438
  // submit a batch spending report to refund the entity that produced the blob batch data
439
- // same as using calldata, we only submit spending report if the caller is the origin of the tx
439
+ // same as using calldata, we only submit spending report if the caller is the origin and is codeless
440
440
  // such that one cannot "double-claim" batch posting refund in the same tx
441
- // solhint-disable-next-line avoid-tx-origin
442
- if (msg.sender == tx.origin && !isUsingFeeToken) {
441
+ if (CallerChecker.isCallerCodelessOrigin() && !isUsingFeeToken) {
443
442
  submitBatchSpendingReport(dataHash, seqMessageIndex, block.basefee, blobGas);
444
443
  }
445
444
  }
@@ -450,7 +449,7 @@ contract SequencerInbox is DelegateCallAware, GasRefundEnabled, ISequencerInbox
450
449
  uint256 afterDelayedMessagesRead,
451
450
  uint256 prevMessageCount,
452
451
  uint256 newMessageCount,
453
- bool isFromOrigin
452
+ bool isFromCodelessOrigin
454
453
  ) internal {
455
454
  (bytes32 dataHash, IBridge.TimeBounds memory timeBounds) =
456
455
  formCallDataHash(data, afterDelayedMessagesRead);
@@ -458,7 +457,7 @@ contract SequencerInbox is DelegateCallAware, GasRefundEnabled, ISequencerInbox
458
457
  addSequencerL2BatchImpl(
459
458
  dataHash,
460
459
  afterDelayedMessagesRead,
461
- isFromOrigin ? data.length : 0,
460
+ isFromCodelessOrigin ? data.length : 0,
462
461
  prevMessageCount,
463
462
  newMessageCount
464
463
  );
@@ -475,12 +474,12 @@ contract SequencerInbox is DelegateCallAware, GasRefundEnabled, ISequencerInbox
475
474
  delayedAcc,
476
475
  totalDelayedMessagesRead,
477
476
  timeBounds,
478
- isFromOrigin
477
+ isFromCodelessOrigin
479
478
  ? IBridge.BatchDataLocation.TxInput
480
479
  : IBridge.BatchDataLocation.SeparateBatchEvent
481
480
  );
482
481
 
483
- if (!isFromOrigin) {
482
+ if (!isFromCodelessOrigin) {
484
483
  emit SequencerBatchData(seqMessageIndex, data);
485
484
  }
486
485
  }
@@ -6,7 +6,7 @@ pragma solidity ^0.8.17;
6
6
 
7
7
  import "../rollup/Assertion.sol";
8
8
  import "./libraries/UintUtilsLib.sol";
9
- import "./IAssertionChain.sol";
9
+ import "./IEdgeChallengeManager.sol";
10
10
  import "./libraries/EdgeChallengeManagerLib.sol";
11
11
  import "../libraries/Constants.sol";
12
12
  import "../state/Machine.sol";
@@ -14,230 +14,6 @@ import "../state/Machine.sol";
14
14
  import "@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol";
15
15
  import "@openzeppelin/contracts/token/ERC20/utils/SafeERC20.sol";
16
16
 
17
- /// @title EdgeChallengeManager interface
18
- interface IEdgeChallengeManager {
19
- /// @notice Initialize the EdgeChallengeManager. EdgeChallengeManagers are upgradeable
20
- /// so use the initializer paradigm
21
- /// @param _assertionChain The assertion chain contract
22
- /// @param _challengePeriodBlocks The amount of cumulative time an edge must spend unrivaled before it can be confirmed
23
- /// This should be the censorship period + the cumulative amount of time needed to do any
24
- /// offchain calculation. We currently estimate around 10 mins for each layer zero edge and 1
25
- /// one minute for each other edge.
26
- /// @param _oneStepProofEntry The one step proof logic
27
- /// @param layerZeroBlockEdgeHeight The end height of layer zero edges of type Block
28
- /// @param layerZeroBigStepEdgeHeight The end height of layer zero edges of type BigStep
29
- /// @param layerZeroSmallStepEdgeHeight The end height of layer zero edges of type SmallStep
30
- /// @param _stakeToken The token that stake will be provided in when creating zero layer block edges
31
- /// @param _excessStakeReceiver The address that excess stake will be sent to when 2nd+ block edge is created
32
- /// @param _numBigStepLevel The number of bigstep levels
33
- /// @param _stakeAmounts The stake amount for each level. (first element is for block level)
34
- function initialize(
35
- IAssertionChain _assertionChain,
36
- uint64 _challengePeriodBlocks,
37
- IOneStepProofEntry _oneStepProofEntry,
38
- uint256 layerZeroBlockEdgeHeight,
39
- uint256 layerZeroBigStepEdgeHeight,
40
- uint256 layerZeroSmallStepEdgeHeight,
41
- IERC20 _stakeToken,
42
- address _excessStakeReceiver,
43
- uint8 _numBigStepLevel,
44
- uint256[] calldata _stakeAmounts
45
- ) external;
46
-
47
- function challengePeriodBlocks() external view returns (uint64);
48
-
49
- /// @notice The one step proof resolver used to decide between rival SmallStep edges of length 1
50
- function oneStepProofEntry() external view returns (IOneStepProofEntry);
51
-
52
- /// @notice Performs necessary checks and creates a new layer zero edge
53
- /// @param args Edge creation args
54
- function createLayerZeroEdge(
55
- CreateEdgeArgs calldata args
56
- ) external returns (bytes32);
57
-
58
- /// @notice Bisect an edge. This creates two child edges:
59
- /// lowerChild: has the same start root and height as this edge, but a different end root and height
60
- /// upperChild: has the same end root and height as this edge, but a different start root and height
61
- /// The lower child end root and height are equal to the upper child start root and height. This height
62
- /// is the mandatoryBisectionHeight.
63
- /// The lower child may already exist, however it's not possible for the upper child to exist as that would
64
- /// mean that the edge has already been bisected
65
- /// @param edgeId Edge to bisect
66
- /// @param bisectionHistoryRoot The new history root to be used in the lower and upper children
67
- /// @param prefixProof A proof to show that the bisectionHistoryRoot commits to a prefix of the current endHistoryRoot
68
- /// @return lowerChildId The id of the newly created lower child edge
69
- /// @return upperChildId The id of the newly created upper child edge
70
- function bisectEdge(
71
- bytes32 edgeId,
72
- bytes32 bisectionHistoryRoot,
73
- bytes calldata prefixProof
74
- ) external returns (bytes32, bytes32);
75
-
76
- /// @notice An edge can be confirmed if the total amount of time it and a single chain of its direct ancestors
77
- /// has spent unrivaled is greater than the challenge period.
78
- /// @dev Edges inherit time from their parents, so the sum of unrivaled timers is compared against the threshold.
79
- /// Given that an edge cannot become unrivaled after becoming rivaled, once the threshold is passed
80
- /// it will always remain passed. The direct ancestors of an edge are linked by parent-child links for edges
81
- /// of the same level, and claimId-edgeId links for zero layer edges that claim an edge in the level below.
82
- /// This method also includes the amount of time the assertion being claimed spent without a sibling
83
- /// @param edgeId The id of the edge to confirm
84
- function confirmEdgeByTime(
85
- bytes32 edgeId,
86
- AssertionStateData calldata claimStateData
87
- ) external;
88
-
89
- /// @notice Update multiple edges' timer cache by their children. Equivalent to calling updateTimerCacheByChildren for each edge.
90
- /// May update timer cache above maximum if the last edge's timer cache was below maximumCachedTime.
91
- /// Revert when the last edge's timer cache is already equal to or above maximumCachedTime.
92
- /// @param edgeIds The ids of the edges to update
93
- /// @param maximumCachedTime The maximum amount of cached time allowed on the last edge (β∗)
94
- function multiUpdateTimeCacheByChildren(
95
- bytes32[] calldata edgeIds,
96
- uint256 maximumCachedTime
97
- ) external;
98
-
99
- /// @notice Update an edge's timer cache by its children.
100
- /// Sets the edge's timer cache to its timeUnrivaled + (minimum timer cache of its children).
101
- /// May update timer cache above maximum if the last edge's timer cache was below maximumCachedTime.
102
- /// Revert when the edge's timer cache is already equal to or above maximumCachedTime.
103
- /// @param edgeId The id of the edge to update
104
- /// @param maximumCachedTime The maximum amount of cached time allowed on the edge (β∗)
105
- function updateTimerCacheByChildren(bytes32 edgeId, uint256 maximumCachedTime) external;
106
-
107
- /// @notice Given a one step fork edge and an edge with matching claim id,
108
- /// set the one step fork edge's timer cache to its timeUnrivaled + claiming edge's timer cache.
109
- /// May update timer cache above maximum if the last edge's timer cache was below maximumCachedTime.
110
- /// Revert when the edge's timer cache is already equal to or above maximumCachedTime.
111
- /// @param edgeId The id of the edge to update
112
- /// @param claimingEdgeId The id of the edge which has a claimId equal to edgeId
113
- /// @param maximumCachedTime The maximum amount of cached time allowed on the edge (β∗)
114
- function updateTimerCacheByClaim(
115
- bytes32 edgeId,
116
- bytes32 claimingEdgeId,
117
- uint256 maximumCachedTime
118
- ) external;
119
-
120
- /// @notice Confirm an edge by executing a one step proof
121
- /// @dev One step proofs can only be executed against edges that have length one and of type SmallStep
122
- /// @param edgeId The id of the edge to confirm
123
- /// @param oneStepData Input data to the one step proof
124
- /// @param prevConfig Data about the config set in prev
125
- /// @param beforeHistoryInclusionProof Proof that the state which is the start of the edge is committed to by the startHistoryRoot
126
- /// @param afterHistoryInclusionProof Proof that the state which is the end of the edge is committed to by the endHistoryRoot
127
- function confirmEdgeByOneStepProof(
128
- bytes32 edgeId,
129
- OneStepData calldata oneStepData,
130
- ConfigData calldata prevConfig,
131
- bytes32[] calldata beforeHistoryInclusionProof,
132
- bytes32[] calldata afterHistoryInclusionProof
133
- ) external;
134
-
135
- /// @notice When zero layer block edges are created a stake is also provided
136
- /// The stake on this edge can be refunded if the edge is confirme
137
- function refundStake(
138
- bytes32 edgeId
139
- ) external;
140
-
141
- /// @notice Zero layer edges have to be a fixed height.
142
- /// This function returns the end height for a given edge type
143
- function getLayerZeroEndHeight(
144
- EdgeType eType
145
- ) external view returns (uint256);
146
-
147
- /// @notice Calculate the unique id of an edge
148
- /// @param level The level of the edge
149
- /// @param originId The origin id of the edge
150
- /// @param startHeight The start height of the edge
151
- /// @param startHistoryRoot The start history root of the edge
152
- /// @param endHeight The end height of the edge
153
- /// @param endHistoryRoot The end history root of the edge
154
- function calculateEdgeId(
155
- uint8 level,
156
- bytes32 originId,
157
- uint256 startHeight,
158
- bytes32 startHistoryRoot,
159
- uint256 endHeight,
160
- bytes32 endHistoryRoot
161
- ) external pure returns (bytes32);
162
-
163
- /// @notice Calculate the mutual id of the edge
164
- /// Edges that are rivals share the same mutual id
165
- /// @param level The level of the edge
166
- /// @param originId The origin id of the edge
167
- /// @param startHeight The start height of the edge
168
- /// @param startHistoryRoot The start history root of the edge
169
- /// @param endHeight The end height of the edge
170
- function calculateMutualId(
171
- uint8 level,
172
- bytes32 originId,
173
- uint256 startHeight,
174
- bytes32 startHistoryRoot,
175
- uint256 endHeight
176
- ) external pure returns (bytes32);
177
-
178
- /// @notice Has the edge already been stored in the manager
179
- function edgeExists(
180
- bytes32 edgeId
181
- ) external view returns (bool);
182
-
183
- /// @notice Get full edge data for an edge
184
- function getEdge(
185
- bytes32 edgeId
186
- ) external view returns (ChallengeEdge memory);
187
-
188
- /// @notice The length of the edge, from start height to end height
189
- function edgeLength(
190
- bytes32 edgeId
191
- ) external view returns (uint256);
192
-
193
- /// @notice Does this edge currently have one or more rivals
194
- /// Rival edges share the same mutual id
195
- function hasRival(
196
- bytes32 edgeId
197
- ) external view returns (bool);
198
-
199
- /// @notice The confirmed rival of this mutual id
200
- /// Returns 0 if one does not exist
201
- function confirmedRival(
202
- bytes32 mutualId
203
- ) external view returns (bytes32);
204
-
205
- /// @notice Does the edge have at least one rival, and it has length one
206
- function hasLengthOneRival(
207
- bytes32 edgeId
208
- ) external view returns (bool);
209
-
210
- /// @notice The amount of time this edge has spent without rivals
211
- /// This value is increasing whilst an edge is unrivaled, once a rival is created
212
- /// it is fixed. If an edge has rivals from the moment it is created then it will have
213
- /// a zero time unrivaled
214
- function timeUnrivaled(
215
- bytes32 edgeId
216
- ) external view returns (uint256);
217
-
218
- /// @notice Get the id of the prev assertion that this edge is originates from
219
- /// @dev Uses the parent chain to traverse upwards SmallStep->BigStep->Block->Assertion
220
- /// until it gets to the origin assertion
221
- function getPrevAssertionHash(
222
- bytes32 edgeId
223
- ) external view returns (bytes32);
224
-
225
- /// @notice Fetch the raw first rival record for the given mutual id
226
- /// @dev Returns 0 if there is no edge with the given mutual id
227
- /// Returns a magic value if there is one edge but it is unrivaled
228
- /// Returns the id of the second edge created with the mutual id, if > 1 exists
229
- function firstRival(
230
- bytes32 mutualId
231
- ) external view returns (bytes32);
232
-
233
- /// @notice True if an account has made a layer zero edge with the given mutual id.
234
- /// This is only tracked when the validator whitelist is enabled
235
- function hasMadeLayerZeroRival(
236
- address account,
237
- bytes32 mutualId
238
- ) external view returns (bool);
239
- }
240
-
241
17
  /// @title A challenge manager that uses edge structures to decide between Assertions
242
18
  /// @notice When two assertions are created that have the same predecessor the protocol needs to decide which of the two is correct
243
19
  /// This challenge manager allows the staker who has created the valid assertion to enforce that it will be confirmed, and all
@@ -2,7 +2,7 @@
2
2
  // For license information, see https://github.com/offchainlabs/bold/blob/main/LICENSE
3
3
  // SPDX-License-Identifier: BUSL-1.1
4
4
  //
5
- pragma solidity ^0.8.17;
5
+ pragma solidity ^0.8.0;
6
6
 
7
7
  import "../bridge/IBridge.sol";
8
8
  import "../osp/IOneStepProofEntry.sol";