@arbitrum/nitro-contracts 2.0.0 → 3.0.0-alpha.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 (503) hide show
  1. package/build/contracts/@openzeppelin/contracts/access/Ownable.sol/Ownable.dbg.json +1 -1
  2. package/build/contracts/@openzeppelin/contracts/interfaces/draft-IERC1822.sol/IERC1822Proxiable.dbg.json +1 -1
  3. package/build/contracts/@openzeppelin/contracts/proxy/ERC1967/ERC1967Proxy.sol/ERC1967Proxy.dbg.json +1 -1
  4. package/build/contracts/@openzeppelin/contracts/proxy/ERC1967/ERC1967Proxy.sol/ERC1967Proxy.json +2 -2
  5. package/build/contracts/@openzeppelin/contracts/proxy/ERC1967/ERC1967Upgrade.sol/ERC1967Upgrade.dbg.json +1 -1
  6. package/build/contracts/@openzeppelin/contracts/proxy/Proxy.sol/Proxy.dbg.json +1 -1
  7. package/build/contracts/@openzeppelin/contracts/proxy/beacon/IBeacon.sol/IBeacon.dbg.json +1 -1
  8. package/build/contracts/@openzeppelin/contracts/proxy/beacon/UpgradeableBeacon.sol/UpgradeableBeacon.dbg.json +1 -1
  9. package/build/contracts/@openzeppelin/contracts/proxy/beacon/UpgradeableBeacon.sol/UpgradeableBeacon.json +2 -2
  10. package/build/contracts/@openzeppelin/contracts/proxy/transparent/ProxyAdmin.sol/ProxyAdmin.dbg.json +1 -1
  11. package/build/contracts/@openzeppelin/contracts/proxy/transparent/ProxyAdmin.sol/ProxyAdmin.json +2 -2
  12. package/build/contracts/@openzeppelin/contracts/proxy/transparent/TransparentUpgradeableProxy.sol/TransparentUpgradeableProxy.dbg.json +1 -1
  13. package/build/contracts/@openzeppelin/contracts/proxy/transparent/TransparentUpgradeableProxy.sol/TransparentUpgradeableProxy.json +2 -2
  14. package/build/contracts/@openzeppelin/contracts/proxy/utils/UUPSUpgradeable.sol/UUPSUpgradeable.dbg.json +1 -1
  15. package/build/contracts/@openzeppelin/contracts/security/ReentrancyGuard.sol/ReentrancyGuard.dbg.json +1 -1
  16. package/build/contracts/@openzeppelin/contracts/token/ERC20/ERC20.sol/ERC20.dbg.json +1 -1
  17. package/build/contracts/@openzeppelin/contracts/token/ERC20/ERC20.sol/ERC20.json +2 -2
  18. package/build/contracts/@openzeppelin/contracts/token/ERC20/IERC20.sol/IERC20.dbg.json +1 -1
  19. package/build/contracts/@openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata.sol/IERC20Metadata.dbg.json +1 -1
  20. package/build/contracts/@openzeppelin/contracts/token/ERC20/extensions/draft-IERC20Permit.sol/IERC20Permit.dbg.json +4 -0
  21. package/build/contracts/@openzeppelin/contracts/token/ERC20/extensions/draft-IERC20Permit.sol/IERC20Permit.json +86 -0
  22. package/build/contracts/@openzeppelin/contracts/token/ERC20/utils/SafeERC20.sol/SafeERC20.dbg.json +1 -1
  23. package/build/contracts/@openzeppelin/contracts/token/ERC20/utils/SafeERC20.sol/SafeERC20.json +2 -2
  24. package/build/contracts/@openzeppelin/contracts/utils/Address.sol/Address.dbg.json +1 -1
  25. package/build/contracts/@openzeppelin/contracts/utils/Address.sol/Address.json +2 -2
  26. package/build/contracts/@openzeppelin/contracts/utils/Context.sol/Context.dbg.json +1 -1
  27. package/build/contracts/@openzeppelin/contracts/utils/Create2.sol/Create2.dbg.json +4 -0
  28. package/build/contracts/@openzeppelin/contracts/utils/Create2.sol/Create2.json +10 -0
  29. package/build/contracts/@openzeppelin/contracts/utils/StorageSlot.sol/StorageSlot.dbg.json +1 -1
  30. package/build/contracts/@openzeppelin/contracts/utils/StorageSlot.sol/StorageSlot.json +2 -2
  31. package/build/contracts/@openzeppelin/contracts/utils/Strings.sol/Strings.dbg.json +1 -1
  32. package/build/contracts/@openzeppelin/contracts/utils/Strings.sol/Strings.json +2 -2
  33. package/build/contracts/@openzeppelin/contracts-upgradeable/access/AccessControlUpgradeable.sol/AccessControlUpgradeable.dbg.json +1 -1
  34. package/build/contracts/@openzeppelin/contracts-upgradeable/access/AccessControlUpgradeable.sol/AccessControlUpgradeable.json +13 -0
  35. package/build/contracts/@openzeppelin/contracts-upgradeable/access/IAccessControlUpgradeable.sol/IAccessControlUpgradeable.dbg.json +1 -1
  36. package/build/contracts/@openzeppelin/contracts-upgradeable/access/OwnableUpgradeable.sol/OwnableUpgradeable.dbg.json +1 -1
  37. package/build/contracts/@openzeppelin/contracts-upgradeable/access/OwnableUpgradeable.sol/OwnableUpgradeable.json +13 -0
  38. package/build/contracts/@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol/Initializable.dbg.json +1 -1
  39. package/build/contracts/@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol/Initializable.json +15 -1
  40. package/build/contracts/@openzeppelin/contracts-upgradeable/security/PausableUpgradeable.sol/PausableUpgradeable.dbg.json +1 -1
  41. package/build/contracts/@openzeppelin/contracts-upgradeable/security/PausableUpgradeable.sol/PausableUpgradeable.json +13 -0
  42. package/build/contracts/@openzeppelin/contracts-upgradeable/utils/AddressUpgradeable.sol/AddressUpgradeable.dbg.json +1 -1
  43. package/build/contracts/@openzeppelin/contracts-upgradeable/utils/AddressUpgradeable.sol/AddressUpgradeable.json +2 -2
  44. package/build/contracts/@openzeppelin/contracts-upgradeable/utils/ContextUpgradeable.sol/ContextUpgradeable.dbg.json +1 -1
  45. package/build/contracts/@openzeppelin/contracts-upgradeable/utils/ContextUpgradeable.sol/ContextUpgradeable.json +15 -1
  46. package/build/contracts/@openzeppelin/contracts-upgradeable/utils/Create2Upgradeable.sol/Create2Upgradeable.dbg.json +4 -0
  47. package/build/contracts/@openzeppelin/contracts-upgradeable/utils/Create2Upgradeable.sol/Create2Upgradeable.json +10 -0
  48. package/build/contracts/@openzeppelin/contracts-upgradeable/utils/StorageSlotUpgradeable.sol/StorageSlotUpgradeable.dbg.json +1 -1
  49. package/build/contracts/@openzeppelin/contracts-upgradeable/utils/StorageSlotUpgradeable.sol/StorageSlotUpgradeable.json +2 -2
  50. package/build/contracts/@openzeppelin/contracts-upgradeable/utils/StringsUpgradeable.sol/StringsUpgradeable.dbg.json +1 -1
  51. package/build/contracts/@openzeppelin/contracts-upgradeable/utils/StringsUpgradeable.sol/StringsUpgradeable.json +2 -2
  52. package/build/contracts/@openzeppelin/contracts-upgradeable/utils/introspection/ERC165Upgradeable.sol/ERC165Upgradeable.dbg.json +1 -1
  53. package/build/contracts/@openzeppelin/contracts-upgradeable/utils/introspection/ERC165Upgradeable.sol/ERC165Upgradeable.json +13 -0
  54. package/build/contracts/@openzeppelin/contracts-upgradeable/utils/introspection/IERC165Upgradeable.sol/IERC165Upgradeable.dbg.json +1 -1
  55. package/build/contracts/@openzeppelin/contracts-upgradeable/utils/structs/EnumerableSetUpgradeable.sol/EnumerableSetUpgradeable.dbg.json +4 -0
  56. package/build/contracts/@openzeppelin/contracts-upgradeable/utils/structs/EnumerableSetUpgradeable.sol/EnumerableSetUpgradeable.json +10 -0
  57. package/build/contracts/src/assertionStakingPool/AbsBoldStakingPool.sol/AbsBoldStakingPool.dbg.json +4 -0
  58. package/build/contracts/{@openzeppelin/contracts-upgradeable/token/ERC20/IERC20Upgradeable.sol/IERC20Upgradeable.json → src/assertionStakingPool/AbsBoldStakingPool.sol/AbsBoldStakingPool.json} +41 -95
  59. package/build/contracts/src/assertionStakingPool/AssertionStakingPool.sol/AssertionStakingPool.dbg.json +4 -0
  60. package/build/contracts/src/assertionStakingPool/AssertionStakingPool.sol/AssertionStakingPool.json +340 -0
  61. package/build/contracts/src/assertionStakingPool/AssertionStakingPoolCreator.sol/AssertionStakingPoolCreator.dbg.json +4 -0
  62. package/build/contracts/src/assertionStakingPool/AssertionStakingPoolCreator.sol/AssertionStakingPoolCreator.json +89 -0
  63. package/build/contracts/src/assertionStakingPool/EdgeStakingPool.sol/EdgeStakingPool.dbg.json +4 -0
  64. package/build/contracts/src/assertionStakingPool/EdgeStakingPool.sol/EdgeStakingPool.json +248 -0
  65. package/build/contracts/src/assertionStakingPool/EdgeStakingPoolCreator.sol/EdgeStakingPoolCreator.dbg.json +4 -0
  66. package/build/contracts/src/assertionStakingPool/EdgeStakingPoolCreator.sol/EdgeStakingPoolCreator.json +83 -0
  67. package/build/contracts/src/assertionStakingPool/StakingPoolCreatorUtils.sol/StakingPoolCreatorUtils.dbg.json +4 -0
  68. package/build/contracts/src/assertionStakingPool/StakingPoolCreatorUtils.sol/StakingPoolCreatorUtils.json +16 -0
  69. package/build/contracts/src/assertionStakingPool/interfaces/IAbsBoldStakingPool.sol/IAbsBoldStakingPool.dbg.json +4 -0
  70. package/build/contracts/src/assertionStakingPool/interfaces/IAbsBoldStakingPool.sol/IAbsBoldStakingPool.json +140 -0
  71. package/build/contracts/src/assertionStakingPool/interfaces/IAssertionStakingPool.sol/IAssertionStakingPool.dbg.json +4 -0
  72. package/build/contracts/src/assertionStakingPool/interfaces/IAssertionStakingPool.sol/IAssertionStakingPool.json +324 -0
  73. package/build/contracts/src/assertionStakingPool/interfaces/IAssertionStakingPoolCreator.sol/IAssertionStakingPoolCreator.dbg.json +4 -0
  74. package/build/contracts/src/assertionStakingPool/interfaces/IAssertionStakingPoolCreator.sol/IAssertionStakingPoolCreator.json +84 -0
  75. package/build/contracts/src/assertionStakingPool/interfaces/IEdgeStakingPool.sol/IEdgeStakingPool.dbg.json +4 -0
  76. package/build/contracts/src/assertionStakingPool/interfaces/IEdgeStakingPool.sol/IEdgeStakingPool.json +232 -0
  77. package/build/contracts/src/assertionStakingPool/interfaces/IEdgeStakingPoolCreator.sol/IEdgeStakingPoolCreator.dbg.json +4 -0
  78. package/build/contracts/src/assertionStakingPool/interfaces/IEdgeStakingPoolCreator.sol/IEdgeStakingPoolCreator.json +78 -0
  79. package/build/contracts/src/bridge/AbsBridge.sol/AbsBridge.dbg.json +1 -1
  80. package/build/contracts/src/bridge/AbsBridge.sol/AbsBridge.json +13 -0
  81. package/build/contracts/src/bridge/AbsInbox.sol/AbsInbox.dbg.json +1 -1
  82. package/build/contracts/src/bridge/AbsInbox.sol/AbsInbox.json +20 -7
  83. package/build/contracts/src/bridge/AbsOutbox.sol/AbsOutbox.dbg.json +1 -1
  84. package/build/contracts/src/bridge/Bridge.sol/Bridge.dbg.json +1 -1
  85. package/build/contracts/src/bridge/Bridge.sol/Bridge.json +15 -2
  86. package/build/contracts/src/bridge/DelayBuffer.sol/DelayBuffer.dbg.json +4 -0
  87. package/build/contracts/src/bridge/DelayBuffer.sol/DelayBuffer.json +24 -0
  88. package/build/contracts/src/bridge/ERC20Bridge.sol/ERC20Bridge.dbg.json +1 -1
  89. package/build/contracts/src/bridge/ERC20Bridge.sol/ERC20Bridge.json +15 -2
  90. package/build/contracts/src/bridge/ERC20Inbox.sol/ERC20Inbox.dbg.json +1 -1
  91. package/build/contracts/src/bridge/ERC20Inbox.sol/ERC20Inbox.json +22 -9
  92. package/build/contracts/src/bridge/ERC20Outbox.sol/ERC20Outbox.dbg.json +1 -1
  93. package/build/contracts/src/bridge/ERC20Outbox.sol/ERC20Outbox.json +2 -2
  94. package/build/contracts/src/bridge/GasRefunder.sol/GasRefunder.dbg.json +1 -1
  95. package/build/contracts/src/bridge/GasRefunder.sol/GasRefunder.json +2 -2
  96. package/build/contracts/src/bridge/IBridge.sol/IBridge.dbg.json +1 -1
  97. package/build/contracts/src/bridge/IDelayedMessageProvider.sol/IDelayedMessageProvider.dbg.json +1 -1
  98. package/build/contracts/src/bridge/IERC20Bridge.sol/IERC20Bridge.dbg.json +1 -1
  99. package/build/contracts/src/bridge/IERC20Inbox.sol/IERC20Inbox.dbg.json +1 -1
  100. package/build/contracts/src/bridge/IERC20Inbox.sol/IERC20Inbox.json +1 -1
  101. package/build/contracts/src/bridge/IEthBridge.sol/IEthBridge.dbg.json +1 -1
  102. package/build/contracts/src/bridge/IInbox.sol/IInbox.dbg.json +1 -1
  103. package/build/contracts/src/bridge/IInbox.sol/IInbox.json +1 -1
  104. package/build/contracts/src/bridge/IInboxBase.sol/IInboxBase.dbg.json +1 -1
  105. package/build/contracts/src/bridge/IInboxBase.sol/IInboxBase.json +1 -1
  106. package/build/contracts/src/bridge/IOutbox.sol/IOutbox.dbg.json +1 -1
  107. package/build/contracts/src/bridge/IOwnable.sol/IOwnable.dbg.json +1 -1
  108. package/build/contracts/src/bridge/ISequencerInbox.sol/ISequencerInbox.dbg.json +1 -1
  109. package/build/contracts/src/bridge/ISequencerInbox.sol/ISequencerInbox.json +441 -0
  110. package/build/contracts/src/bridge/Inbox.sol/Inbox.dbg.json +1 -1
  111. package/build/contracts/src/bridge/Inbox.sol/Inbox.json +22 -4
  112. package/build/contracts/src/bridge/Messages.sol/Messages.dbg.json +1 -1
  113. package/build/contracts/src/bridge/Messages.sol/Messages.json +2 -2
  114. package/build/contracts/src/bridge/Outbox.sol/Outbox.dbg.json +1 -1
  115. package/build/contracts/src/bridge/Outbox.sol/Outbox.json +2 -2
  116. package/build/contracts/src/bridge/SequencerInbox.sol/SequencerInbox.dbg.json +1 -1
  117. package/build/contracts/src/bridge/SequencerInbox.sol/SequencerInbox.json +564 -7
  118. package/build/contracts/src/chain/CacheManager.sol/CacheManager.dbg.json +1 -1
  119. package/build/contracts/src/chain/CacheManager.sol/CacheManager.json +15 -2
  120. package/build/contracts/src/challengeV2/EdgeChallengeManager.sol/EdgeChallengeManager.dbg.json +4 -0
  121. package/build/contracts/src/challengeV2/EdgeChallengeManager.sol/EdgeChallengeManager.json +1631 -0
  122. package/build/contracts/src/challengeV2/EdgeChallengeManager.sol/IEdgeChallengeManager.dbg.json +4 -0
  123. package/build/contracts/src/challengeV2/EdgeChallengeManager.sol/IEdgeChallengeManager.json +762 -0
  124. package/build/contracts/src/challengeV2/IAssertionChain.sol/IAssertionChain.dbg.json +4 -0
  125. package/build/contracts/src/challengeV2/IAssertionChain.sol/IAssertionChain.json +247 -0
  126. package/build/contracts/src/challengeV2/libraries/ArrayUtilsLib.sol/ArrayUtilsLib.dbg.json +4 -0
  127. package/build/contracts/src/challengeV2/libraries/ArrayUtilsLib.sol/ArrayUtilsLib.json +10 -0
  128. package/build/contracts/src/challengeV2/libraries/ChallengeEdgeLib.sol/ChallengeEdgeLib.dbg.json +4 -0
  129. package/build/contracts/src/challengeV2/libraries/ChallengeEdgeLib.sol/ChallengeEdgeLib.json +10 -0
  130. package/build/contracts/src/challengeV2/libraries/EdgeChallengeManagerLib.sol/EdgeChallengeManagerLib.dbg.json +4 -0
  131. package/build/contracts/src/challengeV2/libraries/EdgeChallengeManagerLib.sol/EdgeChallengeManagerLib.json +24 -0
  132. package/build/contracts/src/challengeV2/libraries/MerkleTreeAccumulatorLib.sol/MerkleTreeAccumulatorLib.dbg.json +4 -0
  133. package/build/contracts/src/challengeV2/libraries/MerkleTreeAccumulatorLib.sol/MerkleTreeAccumulatorLib.json +24 -0
  134. package/build/contracts/src/challengeV2/libraries/UintUtilsLib.sol/UintUtilsLib.dbg.json +4 -0
  135. package/build/contracts/src/challengeV2/libraries/UintUtilsLib.sol/UintUtilsLib.json +10 -0
  136. package/build/contracts/src/libraries/AddressAliasHelper.sol/AddressAliasHelper.dbg.json +1 -1
  137. package/build/contracts/src/libraries/AddressAliasHelper.sol/AddressAliasHelper.json +2 -2
  138. package/build/contracts/src/libraries/AdminFallbackProxy.sol/AdminFallbackProxy.dbg.json +1 -1
  139. package/build/contracts/src/libraries/AdminFallbackProxy.sol/AdminFallbackProxy.json +2 -2
  140. package/build/contracts/src/libraries/AdminFallbackProxy.sol/DoubleLogicERC1967Upgrade.dbg.json +1 -1
  141. package/build/contracts/src/libraries/ArbitrumChecker.sol/ArbitrumChecker.dbg.json +1 -1
  142. package/build/contracts/src/libraries/ArbitrumChecker.sol/ArbitrumChecker.json +2 -2
  143. package/build/contracts/src/libraries/CryptographyPrimitives.sol/CryptographyPrimitives.dbg.json +1 -1
  144. package/build/contracts/src/libraries/CryptographyPrimitives.sol/CryptographyPrimitives.json +2 -2
  145. package/build/contracts/src/libraries/DecimalsConverterHelper.sol/DecimalsConverterHelper.dbg.json +1 -1
  146. package/build/contracts/src/libraries/DecimalsConverterHelper.sol/DecimalsConverterHelper.json +2 -2
  147. package/build/contracts/src/libraries/DelegateCallAware.sol/DelegateCallAware.dbg.json +1 -1
  148. package/build/contracts/src/libraries/DoubleLogicUUPSUpgradeable.sol/DoubleLogicUUPSUpgradeable.dbg.json +1 -1
  149. package/build/contracts/src/libraries/GasRefundEnabled.sol/GasRefundEnabled.dbg.json +1 -1
  150. package/build/contracts/src/libraries/IGasRefunder.sol/IGasRefunder.dbg.json +1 -1
  151. package/build/contracts/src/libraries/IReader4844.sol/IReader4844.dbg.json +1 -1
  152. package/build/contracts/src/libraries/MerkleLib.sol/MerkleLib.dbg.json +1 -1
  153. package/build/contracts/src/libraries/MerkleLib.sol/MerkleLib.json +2 -2
  154. package/build/contracts/src/libraries/UUPSNotUpgradeable.sol/UUPSNotUpgradeable.dbg.json +1 -1
  155. package/build/contracts/src/mocks/Benchmarks.sol/Benchmarks.dbg.json +1 -1
  156. package/build/contracts/src/mocks/Benchmarks.sol/Benchmarks.json +2 -2
  157. package/build/contracts/src/mocks/BridgeStub.sol/BridgeStub.dbg.json +1 -1
  158. package/build/contracts/src/mocks/BridgeStub.sol/BridgeStub.json +8 -8
  159. package/build/contracts/src/mocks/BridgeUnproxied.sol/BridgeUnproxied.dbg.json +1 -1
  160. package/build/contracts/src/mocks/BridgeUnproxied.sol/BridgeUnproxied.json +28 -2
  161. package/build/contracts/src/mocks/InboxStub.sol/InboxStub.dbg.json +1 -1
  162. package/build/contracts/src/mocks/InboxStub.sol/InboxStub.json +2 -2
  163. package/build/contracts/src/mocks/MerkleTreeAccess.sol/MerkleTreeAccess.dbg.json +4 -0
  164. package/build/contracts/src/mocks/MerkleTreeAccess.sol/MerkleTreeAccess.json +227 -0
  165. package/build/contracts/src/mocks/MockRollupEventInbox.sol/MockRollupEventInbox.dbg.json +4 -0
  166. package/build/contracts/src/mocks/MockRollupEventInbox.sol/MockRollupEventInbox.json +133 -0
  167. package/build/contracts/src/mocks/MultiCallTest.sol/MultiCallTest.dbg.json +1 -1
  168. package/build/contracts/src/mocks/MultiCallTest.sol/MultiCallTest.json +2 -2
  169. package/build/contracts/src/mocks/PendingBlkTimeAndNrAdvanceCheck.sol/PendingBlkTimeAndNrAdvanceCheck.dbg.json +1 -1
  170. package/build/contracts/src/mocks/PendingBlkTimeAndNrAdvanceCheck.sol/PendingBlkTimeAndNrAdvanceCheck.json +2 -2
  171. package/build/contracts/src/mocks/Program.sol/ProgramTest.dbg.json +1 -1
  172. package/build/contracts/src/mocks/Program.sol/ProgramTest.json +2 -2
  173. package/build/contracts/src/mocks/ProxyAdminForBinding.sol/ProxyAdminForBinding.dbg.json +1 -1
  174. package/build/contracts/src/mocks/ProxyAdminForBinding.sol/ProxyAdminForBinding.json +2 -2
  175. package/build/contracts/src/mocks/SdkStorage.sol/SdkStorage.dbg.json +1 -1
  176. package/build/contracts/src/mocks/SdkStorage.sol/SdkStorage.json +2 -2
  177. package/build/contracts/src/mocks/SequencerInboxBlobMock.sol/SequencerInboxBlobMock.dbg.json +4 -0
  178. package/build/contracts/src/mocks/SequencerInboxBlobMock.sol/SequencerInboxBlobMock.json +1632 -0
  179. package/build/contracts/src/mocks/SequencerInboxStub.sol/SequencerInboxStub.dbg.json +1 -1
  180. package/build/contracts/src/mocks/SequencerInboxStub.sol/SequencerInboxStub.json +564 -7
  181. package/build/contracts/src/mocks/Simple.sol/Simple.dbg.json +1 -1
  182. package/build/contracts/src/mocks/Simple.sol/Simple.json +2 -2
  183. package/build/contracts/src/mocks/SimpleCacheManager.sol/SimpleCacheManager.dbg.json +1 -1
  184. package/build/contracts/src/mocks/SimpleCacheManager.sol/SimpleCacheManager.json +2 -2
  185. package/build/contracts/src/mocks/SimpleOneStepProofEntry.sol/SimpleOneStepProofEntry.dbg.json +4 -0
  186. package/build/contracts/src/mocks/SimpleOneStepProofEntry.sol/SimpleOneStepProofEntry.json +142 -0
  187. package/build/contracts/src/mocks/SimpleProxy.sol/SimpleProxy.dbg.json +1 -1
  188. package/build/contracts/src/mocks/SimpleProxy.sol/SimpleProxy.json +2 -2
  189. package/build/contracts/src/mocks/TestWETH9.sol/IWETH9.dbg.json +4 -0
  190. package/build/contracts/src/mocks/TestWETH9.sol/IWETH9.json +31 -0
  191. package/build/contracts/src/mocks/TestWETH9.sol/TestWETH9.dbg.json +4 -0
  192. package/build/contracts/src/mocks/TestWETH9.sol/TestWETH9.json +317 -0
  193. package/build/contracts/src/mocks/UpgradeExecutorMock.sol/UpgradeExecutorMock.dbg.json +1 -1
  194. package/build/contracts/src/mocks/UpgradeExecutorMock.sol/UpgradeExecutorMock.json +15 -2
  195. package/build/contracts/src/node-interface/NodeInterface.sol/NodeInterface.dbg.json +1 -1
  196. package/build/contracts/src/node-interface/NodeInterfaceDebug.sol/NodeInterfaceDebug.dbg.json +1 -1
  197. package/build/contracts/src/osp/HashProofHelper.sol/HashProofHelper.dbg.json +1 -1
  198. package/build/contracts/src/osp/HashProofHelper.sol/HashProofHelper.json +2 -2
  199. package/build/contracts/src/osp/IOneStepProofEntry.sol/IOneStepProofEntry.dbg.json +1 -1
  200. package/build/contracts/src/osp/IOneStepProofEntry.sol/IOneStepProofEntry.json +33 -9
  201. package/build/contracts/src/osp/IOneStepProofEntry.sol/OneStepProofEntryLib.dbg.json +1 -1
  202. package/build/contracts/src/osp/IOneStepProofEntry.sol/OneStepProofEntryLib.json +2 -2
  203. package/build/contracts/src/osp/IOneStepProver.sol/IOneStepProver.dbg.json +1 -1
  204. package/build/contracts/src/osp/IOneStepProver.sol/IOneStepProver.json +5 -0
  205. package/build/contracts/src/osp/OneStepProofEntry.sol/OneStepProofEntry.dbg.json +1 -1
  206. package/build/contracts/src/osp/OneStepProofEntry.sol/OneStepProofEntry.json +35 -11
  207. package/build/contracts/src/osp/OneStepProver0.sol/OneStepProver0.dbg.json +1 -1
  208. package/build/contracts/src/osp/OneStepProver0.sol/OneStepProver0.json +7 -2
  209. package/build/contracts/src/osp/OneStepProverHostIo.sol/OneStepProverHostIo.dbg.json +1 -1
  210. package/build/contracts/src/osp/OneStepProverHostIo.sol/OneStepProverHostIo.json +7 -2
  211. package/build/contracts/src/osp/OneStepProverMath.sol/OneStepProverMath.dbg.json +1 -1
  212. package/build/contracts/src/osp/OneStepProverMath.sol/OneStepProverMath.json +7 -2
  213. package/build/contracts/src/osp/OneStepProverMemory.sol/OneStepProverMemory.dbg.json +1 -1
  214. package/build/contracts/src/osp/OneStepProverMemory.sol/OneStepProverMemory.json +7 -2
  215. package/build/contracts/src/precompiles/ArbAddressTable.sol/ArbAddressTable.dbg.json +1 -1
  216. package/build/contracts/src/precompiles/ArbAggregator.sol/ArbAggregator.dbg.json +1 -1
  217. package/build/contracts/src/precompiles/ArbBLS.sol/ArbBLS.dbg.json +1 -1
  218. package/build/contracts/src/precompiles/ArbDebug.sol/ArbDebug.dbg.json +1 -1
  219. package/build/contracts/src/precompiles/ArbFunctionTable.sol/ArbFunctionTable.dbg.json +1 -1
  220. package/build/contracts/src/precompiles/ArbGasInfo.sol/ArbGasInfo.dbg.json +1 -1
  221. package/build/contracts/src/precompiles/ArbInfo.sol/ArbInfo.dbg.json +1 -1
  222. package/build/contracts/src/precompiles/ArbOwner.sol/ArbOwner.dbg.json +1 -1
  223. package/build/contracts/src/precompiles/ArbOwnerPublic.sol/ArbOwnerPublic.dbg.json +1 -1
  224. package/build/contracts/src/precompiles/ArbRetryableTx.sol/ArbRetryableTx.dbg.json +1 -1
  225. package/build/contracts/src/precompiles/ArbStatistics.sol/ArbStatistics.dbg.json +1 -1
  226. package/build/contracts/src/precompiles/ArbSys.sol/ArbSys.dbg.json +1 -1
  227. package/build/contracts/src/precompiles/ArbWasm.sol/ArbWasm.dbg.json +1 -1
  228. package/build/contracts/src/precompiles/ArbWasmCache.sol/ArbWasmCache.dbg.json +1 -1
  229. package/build/contracts/src/precompiles/ArbosActs.sol/ArbosActs.dbg.json +1 -1
  230. package/build/contracts/src/precompiles/ArbosTest.sol/ArbosTest.dbg.json +1 -1
  231. package/build/contracts/src/rollup/AbsRollupEventInbox.sol/AbsRollupEventInbox.dbg.json +1 -1
  232. package/build/contracts/src/rollup/Assertion.sol/AssertionNodeLib.dbg.json +4 -0
  233. package/build/contracts/src/rollup/{Node.sol/NodeLib.json → Assertion.sol/AssertionNodeLib.json} +4 -4
  234. package/build/contracts/src/rollup/AssertionState.sol/AssertionStateLib.dbg.json +4 -0
  235. package/build/contracts/src/{challenge/ChallengeLib.sol/ChallengeLib.json → rollup/AssertionState.sol/AssertionStateLib.json} +4 -4
  236. package/build/contracts/src/rollup/BOLDUpgradeAction.sol/BOLDUpgradeAction.dbg.json +4 -0
  237. package/build/contracts/src/rollup/BOLDUpgradeAction.sol/BOLDUpgradeAction.json +807 -0
  238. package/build/contracts/src/rollup/BOLDUpgradeAction.sol/ConstantArrayStorage.dbg.json +4 -0
  239. package/build/contracts/src/rollup/BOLDUpgradeAction.sol/ConstantArrayStorage.json +35 -0
  240. package/build/contracts/src/rollup/BOLDUpgradeAction.sol/IOldRollup.dbg.json +4 -0
  241. package/build/contracts/src/rollup/BOLDUpgradeAction.sol/IOldRollup.json +361 -0
  242. package/build/contracts/src/rollup/BOLDUpgradeAction.sol/IOldRollupAdmin.dbg.json +4 -0
  243. package/build/contracts/src/rollup/BOLDUpgradeAction.sol/IOldRollupAdmin.json +38 -0
  244. package/build/contracts/src/rollup/BOLDUpgradeAction.sol/ISeqInboxPostUpgradeInit.dbg.json +4 -0
  245. package/build/contracts/src/rollup/BOLDUpgradeAction.sol/ISeqInboxPostUpgradeInit.json +41 -0
  246. package/build/contracts/src/rollup/BOLDUpgradeAction.sol/RollupReader.dbg.json +4 -0
  247. package/build/contracts/src/rollup/BOLDUpgradeAction.sol/RollupReader.json +385 -0
  248. package/build/contracts/src/rollup/BOLDUpgradeAction.sol/StateHashPreImageLookup.dbg.json +4 -0
  249. package/build/contracts/src/rollup/BOLDUpgradeAction.sol/StateHashPreImageLookup.json +203 -0
  250. package/build/contracts/src/rollup/BridgeCreator.sol/BridgeCreator.dbg.json +1 -1
  251. package/build/contracts/src/rollup/BridgeCreator.sol/BridgeCreator.json +62 -10
  252. package/build/contracts/src/rollup/DeployHelper.sol/DeployHelper.dbg.json +1 -1
  253. package/build/contracts/src/rollup/DeployHelper.sol/DeployHelper.json +2 -2
  254. package/build/contracts/src/rollup/ERC20RollupEventInbox.sol/ERC20RollupEventInbox.dbg.json +1 -1
  255. package/build/contracts/src/rollup/ERC20RollupEventInbox.sol/ERC20RollupEventInbox.json +2 -2
  256. package/build/contracts/src/rollup/FactoryDeployerHelper.sol/FactoryDeployerHelper.dbg.json +1 -1
  257. package/build/contracts/src/rollup/FactoryDeployerHelper.sol/FactoryDeployerHelper.json +2 -2
  258. package/build/contracts/src/rollup/FactoryDeployerHelper.sol/IDeployHelper.dbg.json +1 -1
  259. package/build/contracts/src/rollup/FactoryDeployerHelper.sol/IERC20.dbg.json +1 -1
  260. package/build/contracts/src/rollup/FactoryDeployerHelper.sol/IERC20Bridge.dbg.json +1 -1
  261. package/build/contracts/src/rollup/FactoryDeployerHelper.sol/IInboxBase.dbg.json +1 -1
  262. package/build/contracts/src/rollup/IRollupAdmin.sol/IRollupAdmin.dbg.json +1 -1
  263. package/build/contracts/src/rollup/IRollupAdmin.sol/IRollupAdmin.json +473 -99
  264. package/build/contracts/src/rollup/IRollupCore.sol/IRollupCore.dbg.json +1 -1
  265. package/build/contracts/src/rollup/IRollupCore.sol/IRollupCore.json +315 -221
  266. package/build/contracts/src/rollup/IRollupEventInbox.sol/IRollupEventInbox.dbg.json +1 -1
  267. package/build/contracts/src/rollup/IRollupLogic.sol/IRollupUser.dbg.json +1 -1
  268. package/build/contracts/src/rollup/IRollupLogic.sol/IRollupUser.json +678 -494
  269. package/build/contracts/src/rollup/RollupAdminLogic.sol/RollupAdminLogic.dbg.json +1 -1
  270. package/build/contracts/src/rollup/RollupAdminLogic.sol/RollupAdminLogic.json +806 -435
  271. package/build/contracts/src/rollup/RollupCore.sol/RollupCore.dbg.json +1 -1
  272. package/build/contracts/src/rollup/RollupCore.sol/RollupCore.json +323 -235
  273. package/build/contracts/src/rollup/RollupCreator.sol/RollupCreator.dbg.json +1 -1
  274. package/build/contracts/src/rollup/RollupCreator.sol/RollupCreator.json +98 -36
  275. package/build/contracts/src/rollup/RollupEventInbox.sol/RollupEventInbox.dbg.json +1 -1
  276. package/build/contracts/src/rollup/RollupEventInbox.sol/RollupEventInbox.json +2 -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 +97 -16
  281. package/build/contracts/src/rollup/RollupUserLogic.sol/RollupUserLogic.dbg.json +1 -1
  282. package/build/contracts/src/rollup/RollupUserLogic.sol/RollupUserLogic.json +924 -530
  283. package/build/contracts/src/rollup/ValidatorWallet.sol/ValidatorWallet.dbg.json +1 -1
  284. package/build/contracts/src/rollup/ValidatorWallet.sol/ValidatorWallet.json +15 -43
  285. package/build/contracts/src/rollup/ValidatorWalletCreator.sol/ValidatorWalletCreator.dbg.json +1 -1
  286. package/build/contracts/src/rollup/ValidatorWalletCreator.sol/ValidatorWalletCreator.json +2 -2
  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/test-helpers/BridgeTester.sol/BridgeTester.dbg.json +1 -1
  316. package/build/contracts/src/test-helpers/BridgeTester.sol/BridgeTester.json +15 -2
  317. package/build/contracts/src/test-helpers/CryptographyPrimitivesTester.sol/CryptographyPrimitivesTester.dbg.json +1 -1
  318. package/build/contracts/src/test-helpers/CryptographyPrimitivesTester.sol/CryptographyPrimitivesTester.json +2 -2
  319. package/build/contracts/src/test-helpers/EthVault.sol/EthVault.dbg.json +1 -1
  320. package/build/contracts/src/test-helpers/EthVault.sol/EthVault.json +2 -2
  321. package/build/contracts/src/test-helpers/MessageTester.sol/MessageTester.dbg.json +1 -1
  322. package/build/contracts/src/test-helpers/MessageTester.sol/MessageTester.json +2 -2
  323. package/build/contracts/src/test-helpers/OutboxWithoutOptTester.sol/OutboxWithoutOptTester.dbg.json +1 -1
  324. package/build/contracts/src/test-helpers/OutboxWithoutOptTester.sol/OutboxWithoutOptTester.json +2 -2
  325. package/build/contracts/src/test-helpers/RollupMock.sol/RollupMock.dbg.json +1 -1
  326. package/build/contracts/src/test-helpers/RollupMock.sol/RollupMock.json +2 -15
  327. package/build/contracts/src/test-helpers/TestToken.sol/TestToken.dbg.json +1 -1
  328. package/build/contracts/src/test-helpers/TestToken.sol/TestToken.json +2 -2
  329. package/build/contracts/src/test-helpers/ValueArrayTester.sol/ValueArrayTester.dbg.json +1 -1
  330. package/build/contracts/src/test-helpers/ValueArrayTester.sol/ValueArrayTester.json +2 -2
  331. package/out/yul/Reader4844.yul/Reader4844.json +1 -1
  332. package/package.json +16 -6
  333. package/src/assertionStakingPool/AbsBoldStakingPool.sol +66 -0
  334. package/src/assertionStakingPool/AssertionStakingPool.sol +70 -0
  335. package/src/assertionStakingPool/AssertionStakingPoolCreator.sol +35 -0
  336. package/src/assertionStakingPool/EdgeStakingPool.sol +57 -0
  337. package/src/assertionStakingPool/EdgeStakingPoolCreator.sol +34 -0
  338. package/src/assertionStakingPool/StakingPoolCreatorUtils.sol +25 -0
  339. package/src/assertionStakingPool/interfaces/IAbsBoldStakingPool.sol +41 -0
  340. package/src/assertionStakingPool/interfaces/IAssertionStakingPool.sol +36 -0
  341. package/src/assertionStakingPool/interfaces/IAssertionStakingPoolCreator.sol +31 -0
  342. package/src/assertionStakingPool/interfaces/IEdgeStakingPool.sol +27 -0
  343. package/src/assertionStakingPool/interfaces/IEdgeStakingPoolCreator.sol +28 -0
  344. package/src/bridge/AbsBridge.sol +38 -48
  345. package/src/bridge/AbsInbox.sol +88 -97
  346. package/src/bridge/AbsOutbox.sol +23 -37
  347. package/src/bridge/Bridge.sol +6 -4
  348. package/src/bridge/DelayBuffer.sol +123 -0
  349. package/src/bridge/DelayBufferTypes.sol +38 -0
  350. package/src/bridge/ERC20Bridge.sol +8 -4
  351. package/src/bridge/ERC20Inbox.sol +46 -53
  352. package/src/bridge/ERC20Outbox.sol +7 -3
  353. package/src/bridge/GasRefunder.sol +38 -24
  354. package/src/bridge/IBridge.sol +30 -21
  355. package/src/bridge/IERC20Bridge.sol +1 -1
  356. package/src/bridge/IERC20Inbox.sol +4 -2
  357. package/src/bridge/IEthBridge.sol +4 -2
  358. package/src/bridge/IInbox.sol +4 -2
  359. package/src/bridge/IInboxBase.sol +17 -13
  360. package/src/bridge/IOutbox.sol +13 -8
  361. package/src/bridge/ISequencerInbox.sol +118 -13
  362. package/src/bridge/Inbox.sol +131 -151
  363. package/src/bridge/Messages.sol +48 -18
  364. package/src/bridge/Outbox.sol +6 -2
  365. package/src/bridge/SequencerInbox.sol +339 -274
  366. package/src/chain/CacheManager.sol +49 -18
  367. package/src/challengeV2/EdgeChallengeManager.sol +783 -0
  368. package/src/challengeV2/IAssertionChain.sol +39 -0
  369. package/src/challengeV2/libraries/ArrayUtilsLib.sol +61 -0
  370. package/src/challengeV2/libraries/ChallengeEdgeLib.sol +333 -0
  371. package/src/challengeV2/libraries/ChallengeErrors.sol +108 -0
  372. package/src/challengeV2/libraries/EdgeChallengeManagerLib.sol +930 -0
  373. package/src/challengeV2/libraries/Enums.sol +26 -0
  374. package/src/challengeV2/libraries/MerkleTreeAccumulatorLib.sol +390 -0
  375. package/src/challengeV2/libraries/UintUtilsLib.sol +74 -0
  376. package/src/libraries/AddressAliasHelper.sol +6 -2
  377. package/src/libraries/AdminFallbackProxy.sol +8 -4
  378. package/src/libraries/ArbitrumChecker.sol +3 -4
  379. package/src/libraries/CryptographyPrimitives.sol +39 -46
  380. package/src/libraries/DecimalsConverterHelper.sol +2 -4
  381. package/src/libraries/DoubleLogicUUPSUpgradeable.sol +10 -7
  382. package/src/libraries/Error.sol +18 -12
  383. package/src/libraries/GasRefundEnabled.sol +3 -4
  384. package/src/libraries/MerkleLib.sol +6 -5
  385. package/src/libraries/UUPSNotUpgradeable.sol +2 -4
  386. package/src/mocks/BridgeStub.sol +50 -48
  387. package/src/mocks/BridgeUnproxied.sol +2 -0
  388. package/src/mocks/InboxStub.sol +22 -17
  389. package/src/mocks/MerkleTreeAccess.sol +72 -0
  390. package/src/mocks/MockRollupEventInbox.sol +59 -0
  391. package/src/mocks/MultiCallTest.sol +3 -1
  392. package/src/mocks/PendingBlkTimeAndNrAdvanceCheck.sol +3 -1
  393. package/src/mocks/Program.sol +9 -7
  394. package/src/mocks/SequencerInboxBlobMock.sol +38 -0
  395. package/src/mocks/SequencerInboxStub.sol +9 -12
  396. package/src/mocks/Simple.sol +13 -25
  397. package/src/mocks/SimpleCacheManager.sol +10 -3
  398. package/src/mocks/SimpleOneStepProofEntry.sol +60 -0
  399. package/src/mocks/SimpleProxy.sol +3 -1
  400. package/src/mocks/TestWETH9.sol +30 -0
  401. package/src/mocks/UpgradeExecutorMock.sol +10 -17
  402. package/src/node-interface/NodeInterface.sol +23 -22
  403. package/src/node-interface/NodeInterfaceDebug.sol +5 -3
  404. package/src/osp/HashProofHelper.sol +9 -10
  405. package/src/osp/IOneStepProofEntry.sol +14 -9
  406. package/src/osp/IOneStepProver.sol +1 -0
  407. package/src/osp/OneStepProofEntry.sol +63 -54
  408. package/src/osp/OneStepProver0.sol +14 -27
  409. package/src/osp/OneStepProverHostIo.sol +31 -58
  410. package/src/osp/OneStepProverMath.sol +15 -23
  411. package/src/osp/OneStepProverMemory.sol +9 -23
  412. package/src/precompiles/ArbAddressTable.sol +19 -9
  413. package/src/precompiles/ArbAggregator.sol +12 -4
  414. package/src/precompiles/ArbBLS.sol +1 -3
  415. package/src/precompiles/ArbDebug.sol +5 -11
  416. package/src/precompiles/ArbFunctionTable.sol +7 -10
  417. package/src/precompiles/ArbGasInfo.sol +9 -43
  418. package/src/precompiles/ArbInfo.sol +6 -2
  419. package/src/precompiles/ArbOwner.sol +101 -34
  420. package/src/precompiles/ArbOwnerPublic.sol +6 -2
  421. package/src/precompiles/ArbRetryableTx.sol +15 -5
  422. package/src/precompiles/ArbStatistics.sol +1 -8
  423. package/src/precompiles/ArbSys.sol +16 -18
  424. package/src/precompiles/ArbWasm.sol +24 -14
  425. package/src/precompiles/ArbWasmCache.sol +15 -5
  426. package/src/precompiles/ArbosTest.sol +3 -1
  427. package/src/rollup/AbsRollupEventInbox.sol +15 -16
  428. package/src/rollup/Assertion.sol +100 -0
  429. package/src/rollup/AssertionState.sol +29 -0
  430. package/src/rollup/BOLDUpgradeAction.sol +631 -0
  431. package/src/rollup/BridgeCreator.sol +42 -15
  432. package/src/rollup/Config.sol +15 -7
  433. package/src/rollup/DeployHelper.sol +12 -31
  434. package/src/rollup/ERC20RollupEventInbox.sol +8 -9
  435. package/src/rollup/FactoryDeployerHelper.sol +8 -10
  436. package/src/rollup/IRollupAdmin.sol +127 -45
  437. package/src/rollup/IRollupCore.sol +64 -84
  438. package/src/rollup/IRollupEventInbox.sol +3 -1
  439. package/src/rollup/IRollupLogic.sol +36 -69
  440. package/src/rollup/RollupAdminLogic.sol +224 -203
  441. package/src/rollup/RollupCore.sol +407 -428
  442. package/src/rollup/RollupCreator.sol +88 -75
  443. package/src/rollup/RollupEventInbox.sol +7 -7
  444. package/src/rollup/RollupLib.sol +50 -86
  445. package/src/rollup/RollupProxy.sol +8 -12
  446. package/src/rollup/RollupUserLogic.sol +279 -642
  447. package/src/rollup/ValidatorUtils.sol +0 -242
  448. package/src/rollup/ValidatorWallet.sol +22 -38
  449. package/src/rollup/ValidatorWalletCreator.sol +8 -8
  450. package/src/state/Deserialize.sol +74 -96
  451. package/src/state/GlobalState.sol +74 -20
  452. package/src/state/Instructions.sol +4 -3
  453. package/src/state/Machine.sol +18 -19
  454. package/src/state/Module.sol +14 -13
  455. package/src/state/ModuleMemory.sol +6 -25
  456. package/src/state/ModuleMemoryCompact.sol +3 -1
  457. package/src/state/MultiStack.sol +16 -20
  458. package/src/state/PcArray.sol +7 -7
  459. package/src/state/StackFrame.sol +21 -14
  460. package/src/state/Value.sol +18 -6
  461. package/src/state/ValueArray.sol +7 -7
  462. package/src/state/ValueStack.sol +9 -3
  463. package/src/test-helpers/BridgeTester.sol +32 -42
  464. package/src/test-helpers/CryptographyPrimitivesTester.sol +12 -13
  465. package/src/test-helpers/EthVault.sol +4 -2
  466. package/src/test-helpers/InterfaceCompatibilityTester.sol +1 -1
  467. package/src/test-helpers/MessageTester.sol +3 -10
  468. package/src/test-helpers/OutboxWithoutOptTester.sol +12 -19
  469. package/src/test-helpers/RollupMock.sol +3 -7
  470. package/src/test-helpers/TestToken.sol +4 -2
  471. package/build/contracts/@openzeppelin/contracts-upgradeable/token/ERC20/IERC20Upgradeable.sol/IERC20Upgradeable.dbg.json +0 -4
  472. package/build/contracts/src/challenge/ChallengeLib.sol/ChallengeLib.dbg.json +0 -4
  473. package/build/contracts/src/challenge/ChallengeManager.sol/ChallengeManager.dbg.json +0 -4
  474. package/build/contracts/src/challenge/ChallengeManager.sol/ChallengeManager.json +0 -746
  475. package/build/contracts/src/challenge/IChallengeManager.sol/IChallengeManager.dbg.json +0 -4
  476. package/build/contracts/src/challenge/IChallengeManager.sol/IChallengeManager.json +0 -441
  477. package/build/contracts/src/challenge/IChallengeResultReceiver.sol/IChallengeResultReceiver.dbg.json +0 -4
  478. package/build/contracts/src/challenge/IChallengeResultReceiver.sol/IChallengeResultReceiver.json +0 -34
  479. package/build/contracts/src/mocks/MockResultReceiver.sol/MockResultReceiver.dbg.json +0 -4
  480. package/build/contracts/src/mocks/MockResultReceiver.sol/MockResultReceiver.json +0 -188
  481. package/build/contracts/src/mocks/SingleExecutionChallenge.sol/SingleExecutionChallenge.dbg.json +0 -4
  482. package/build/contracts/src/mocks/SingleExecutionChallenge.sol/SingleExecutionChallenge.json +0 -797
  483. package/build/contracts/src/mocks/TimedOutChallengeManager.sol/TimedOutChallengeManager.dbg.json +0 -4
  484. package/build/contracts/src/mocks/TimedOutChallengeManager.sol/TimedOutChallengeManager.json +0 -746
  485. package/build/contracts/src/rollup/IRollupLogic.sol/IRollupUserAbs.dbg.json +0 -4
  486. package/build/contracts/src/rollup/IRollupLogic.sol/IRollupUserAbs.json +0 -1327
  487. package/build/contracts/src/rollup/IRollupLogic.sol/IRollupUserERC20.dbg.json +0 -4
  488. package/build/contracts/src/rollup/IRollupLogic.sol/IRollupUserERC20.json +0 -1461
  489. package/build/contracts/src/rollup/Node.sol/NodeLib.dbg.json +0 -4
  490. package/build/contracts/src/rollup/RollupUserLogic.sol/AbsRollupUserLogic.dbg.json +0 -4
  491. package/build/contracts/src/rollup/RollupUserLogic.sol/AbsRollupUserLogic.json +0 -1609
  492. package/build/contracts/src/rollup/RollupUserLogic.sol/ERC20RollupUserLogic.dbg.json +0 -4
  493. package/build/contracts/src/rollup/RollupUserLogic.sol/ERC20RollupUserLogic.json +0 -1743
  494. package/build/contracts/src/rollup/ValidatorUtils.sol/ValidatorUtils.dbg.json +0 -4
  495. package/build/contracts/src/rollup/ValidatorUtils.sol/ValidatorUtils.json +0 -379
  496. package/src/challenge/ChallengeLib.sol +0 -88
  497. package/src/challenge/ChallengeManager.sol +0 -375
  498. package/src/challenge/IChallengeManager.sol +0 -86
  499. package/src/challenge/IChallengeResultReceiver.sol +0 -13
  500. package/src/mocks/MockResultReceiver.sol +0 -59
  501. package/src/mocks/SingleExecutionChallenge.sol +0 -41
  502. package/src/mocks/TimedOutChallengeManager.sol +0 -13
  503. package/src/rollup/Node.sol +0 -113
@@ -0,0 +1,26 @@
1
+ // Copyright 2023, Offchain Labs, Inc.
2
+ // For license information, see https://github.com/offchainlabs/bold/blob/main/LICENSE
3
+ // SPDX-License-Identifier: BUSL-1.1
4
+ //
5
+ pragma solidity ^0.8.17;
6
+
7
+ /// @notice The status of the edge
8
+ /// - Pending: Yet to be confirmed. Not all edges can be confirmed.
9
+ /// - Confirmed: Once confirmed it cannot transition back to pending
10
+ enum EdgeStatus {
11
+ Pending,
12
+ Confirmed
13
+ }
14
+
15
+ /// @notice The type of the edge. Challenges are decomposed into 3 types of subchallenge
16
+ /// represented here by the edge type. Edges are initially created of type Block
17
+ /// and are then bisected until they have length one. After that new BigStep edges are
18
+ /// added that claim a Block type edge, and are then bisected until they have length one.
19
+ /// Then a SmallStep edge is added that claims a length one BigStep edge, and these
20
+ /// SmallStep edges are bisected until they reach length one. A length one small step edge
21
+ /// can then be directly executed using a one-step proof.
22
+ enum EdgeType {
23
+ Block,
24
+ BigStep,
25
+ SmallStep
26
+ }
@@ -0,0 +1,390 @@
1
+ // Copyright 2023, Offchain Labs, Inc.
2
+ // For license information, see https://github.com/offchainlabs/bold/blob/main/LICENSE
3
+ // SPDX-License-Identifier: BUSL-1.1
4
+ //
5
+ pragma solidity ^0.8.17;
6
+
7
+ import "../../libraries/MerkleLib.sol";
8
+ import "./ArrayUtilsLib.sol";
9
+ import "./UintUtilsLib.sol";
10
+
11
+ /// @title Merkle tree accumulator utilities
12
+ /// @notice
13
+ /// This library provides utilities for manipulating, and verifying proofs about, a kind of
14
+ /// merkle tree accumulator.
15
+ ///
16
+ /// --------------------------------------------------------------------------------------------
17
+ /// The accumulator is composed of a number of complete merkle trees.
18
+ /// A complete tree is a tree with a leaf size of a power of 2
19
+ /// One or zero complete trees at each power of 2 is enough to define any size of accumulator.
20
+ /// The root of the accumulator is defined as the cumulative hashing of all of the
21
+ /// roots of each of its complete trees, substituting a zero where no tree is necessary at that power of 2
22
+ /// Where we refer to "level" in this documentation we mean the power of 2 used at the level: 2^level
23
+ /// Where we refer to a subtree we mean one of the complete trees which makes up the accumulator.
24
+ /// ---------
25
+ /// eg. Below are 3 leaves (A, B, C) which can be represented as an accumulator made up of the
26
+ /// composition of 2 complete subtrees, one of level=1: 2^1=2 (AB) and one of level=0: 2^0=1 (C).
27
+ /// AB
28
+ /// / \
29
+ /// A B C
30
+ ///
31
+ ///
32
+ /// Merkle expansions and roots
33
+ /// --------------------------------------------------------------------------------------------
34
+ /// The minimal amount of information we need to keep in order to compute the accumulator
35
+ /// is the roots of each of its complete subtrees, and the levels of each of those subtrees
36
+ /// A "merkle expansion" (ME) is a representation of this information - it is a vector of roots of each complete subtree,
37
+ /// the level of the tree being the index in the vector, the subtree root being the value.
38
+ /// The accumulator root is calculated by hashing each of the levels of the subtree together, adding zero hashes
39
+ /// where relevant to make a balanced tree.
40
+ /// ---------
41
+ ///
42
+ /// ME Example 1 - 1 leaf C
43
+ ///
44
+ /// C => (C)
45
+ ///
46
+ /// ME of the C tree = (C), accumulator=(C)
47
+ /// The merkle expansion of an accumulator consisting of a single leaf is vector of size one with the
48
+ /// zeroth index being the leaf C. The zeroth index of the vector represents the presence of a size
49
+ /// one complete subtree in the accumulator. So if an accumulator has a size one complete subtree as part
50
+ /// of its composition, the root of that size one accumulator will be present in the zeroth index.
51
+ ///
52
+ /// ME Example 2 - 2 leaves A and B
53
+ ///
54
+ /// AB
55
+ /// / \
56
+ /// A B
57
+ ///
58
+ /// ME of the AB tree = (0, AB), accumulator=AB
59
+ /// The merkle expansion of an accumulator consisting of a single size 2 complete subtree is a vector
60
+ /// of size 2, with the zeroth index value being 0, and the 1st index value being the root of the size
61
+ /// 2 subtree. The zero in the zeroth index indicated that there is not a size 1 subtree in the accumulators's
62
+ /// composition. If an accumulator has a size 2 subtree in its composition the root of the subtree will be present in the
63
+ /// 1st index.
64
+ ///
65
+ /// ME Example 3 - 3 leaves A, B, C
66
+ ///
67
+ /// AB
68
+ /// / \
69
+ /// A B C
70
+ ///
71
+ /// ME of the composed ABC tree = (C, AB), accumulator=hash(AB, hash(C, 0)).
72
+ /// When a accumulator size is not a power of 2, a composition of subtrees is used to calculate it's value.
73
+ /// The lowest level sub tree is hashed with zero, to form the initial accumulator. The accumulator is then
74
+ /// hashed with the value (including zeros) at each level of the expansion.
75
+ /// The merkle expansion of this composed tree is a vector of size two. Since it has a size one tree in
76
+ /// its composition, the root of which goes in the zeroth index of the expansion - C, and since it has a
77
+ /// size two tree in its composition the root of that goes in the 1st index, to give (C, AB).
78
+ ///
79
+ /// Tree operations
80
+ /// --------------------------------------------------------------------------------------------
81
+ /// Accumulators are modified by adding or subtracting complete subtrees, however this library
82
+ /// supports additive only accumulators since we dont have a specific use for subtraction at the moment.
83
+ /// We call adding a complete subtree to an accumulator "appending", appending has the following
84
+ /// rules:
85
+ /// 1. Only a complete sub trees can be appended
86
+ /// 2. Complete sub trees can only be appended at the level of the lowest complete subtree in the tree, or below
87
+ /// 3. If the existing accumulator is empty a sub tree can be appended at any level
88
+ /// When appending a sub tree we may increase the size of the merkle expansion vector, in the same
89
+ /// way that adding 1 to a binary number may increase the index of its most significant bit
90
+ /// ---------
91
+ /// eg. A complete subtree can only be appended to the ABC accumulator at level 0, since the its lowest complete
92
+ /// subtree (C) is at level 0. Doing so would create a complete sub tree at level 1, which would in turn
93
+ /// cause the creation of new size 4 sub tree
94
+ ///
95
+ /// ABCD
96
+ /// / \
97
+ /// AB AB CD
98
+ /// / \ + = / \ / \
99
+ /// A B C D A B C D
100
+ ///
101
+ /// ME of ABCD = (0, AB) + (C) + (D)
102
+ /// = (C, AB) + (D)
103
+ /// = (0, 0, ABCD)
104
+ /// accumulator of ABCD = hash(AB, CD)
105
+ /// --------------------------------------------------------------------------------------------
106
+ library MerkleTreeAccumulatorLib {
107
+ // the go code uses uint64, so we ensure we never go above that here
108
+ uint256 public constant MAX_LEVEL = 64;
109
+
110
+ /// @notice The accumulator root of the a merkle expansion.
111
+ /// @dev The accumulator root is defined as the cumulative hashing of the
112
+ /// roots of all of its subtrees. Throws error for an empty merkle expansion
113
+ /// @param me The merkle expansion to calculate the root of
114
+ function root(
115
+ bytes32[] memory me
116
+ ) internal pure returns (bytes32) {
117
+ require(me.length > 0, "Empty merkle expansion");
118
+ require(me.length <= MAX_LEVEL, "Merkle expansion too large");
119
+
120
+ bytes32 accum = 0;
121
+ for (uint256 i = 0; i < me.length; i++) {
122
+ bytes32 val = me[i];
123
+ if (accum == 0) {
124
+ if (val != 0) {
125
+ accum = val;
126
+
127
+ // the tree is balanced if the only non zero entry in the merkle extension
128
+ // is the last entry
129
+ // otherwise the lowest level entry needs to be combined with a zero to balance the bottom
130
+ // level, after which zeros in the merkle extension above that will balance the rest
131
+ if (i != me.length - 1) {
132
+ accum = keccak256(abi.encodePacked(accum, bytes32(0)));
133
+ }
134
+ }
135
+ } else if (val != 0) {
136
+ // accum represents the smaller sub trees, since it is earlier in the expansion
137
+ // we put the larger subtrees on the left
138
+ accum = keccak256(abi.encodePacked(val, accum));
139
+ } else {
140
+ // by definition we always complete trees by appending zeros to the right
141
+ accum = keccak256(abi.encodePacked(accum, bytes32(0)));
142
+ }
143
+ }
144
+
145
+ return accum;
146
+ }
147
+
148
+ /// @notice Append a complete subtree to an existing accumulator
149
+ /// @dev See above description of the accumulator for rules on how appending can occur.
150
+ /// Briefly, appending works like binary addition only that the value being added must be an
151
+ /// exact power of two (complete), and must equal to or less than the least significant bit
152
+ /// in the existing tree.
153
+ /// If the me is empty, will just append directly.
154
+ /// @param me The merkle expansion to append a complete sub tree to
155
+ /// @param level The level at which to append the complete subtree
156
+ /// @param subtreeRoot The root of the complete subtree to be appended
157
+ function appendCompleteSubTree(
158
+ bytes32[] memory me,
159
+ uint256 level,
160
+ bytes32 subtreeRoot
161
+ ) internal pure returns (bytes32[] memory) {
162
+ // we use number representations of the levels elsewhere, so we need to ensure we're appending a leve
163
+ // that's too high to use in uint
164
+ require(level < MAX_LEVEL, "Level too high");
165
+ require(subtreeRoot != 0, "Cannot append empty subtree");
166
+ require(me.length <= MAX_LEVEL, "Merkle expansion too large");
167
+
168
+ if (me.length == 0) {
169
+ bytes32[] memory empty = new bytes32[](level + 1);
170
+ empty[level] = subtreeRoot;
171
+ return empty;
172
+ }
173
+
174
+ // This technically isn't necessary since it would be caught by the i < level check
175
+ // on the last loop of the for-loop below, but we add it for a clearer error message
176
+ require(level < me.length, "Level greater than highest level of current expansion");
177
+
178
+ bytes32 accumHash = subtreeRoot;
179
+ uint256 meSize = treeSize(me);
180
+ uint256 postSize = meSize + 2 ** level;
181
+
182
+ // if by appending the sub tree we increase the numbe of most sig bits of the size, that means
183
+ // we'll need more space in the expansion to describe the tree, so we enlarge by one
184
+ bytes32[] memory next = UintUtilsLib.mostSignificantBit(postSize)
185
+ > UintUtilsLib.mostSignificantBit(meSize)
186
+ ? new bytes32[](me.length + 1)
187
+ : new bytes32[](me.length);
188
+
189
+ // ensure we're never creating an expansion that's too big
190
+ require(next.length <= MAX_LEVEL, "Append creates oversize tree");
191
+
192
+ // loop through all the levels in self and try to append the new subtree
193
+ // since each node has two children by appending a subtree we may complete another one
194
+ // in the level above. So we move through the levels updating the result at each level
195
+ for (uint256 i = 0; i < me.length; i++) {
196
+ // we can only append at the level of the smallest complete sub tree or below
197
+ // appending above this level would mean create "holes" in the tree
198
+ // we can find the smallest complete sub tree by looking for the first entry in the merkle expansion
199
+ if (i < level) {
200
+ // we're below the level we want to append - no complete sub trees allowed down here
201
+ // if the level is 0 there are no complete subtrees, and we therefore cannot be too low
202
+ require(me[i] == 0, "Append above least significant bit");
203
+ } else {
204
+ // we're at or above the level
205
+ if (accumHash == 0) {
206
+ // no more changes to propagate upwards - just fill the tree
207
+ next[i] = me[i];
208
+ } else {
209
+ // we have a change to propagate
210
+ if (me[i] == 0) {
211
+ // if the level is currently empty we can just add the change
212
+ next[i] = accumHash;
213
+ // and then there's nothing more to propagate
214
+ accumHash = 0;
215
+ } else {
216
+ // if the level is not currently empty then we combine it with propagation
217
+ // change, and propagate that to the level above. This level is now part of a complete subtree
218
+ // so we zero it out
219
+ next[i] = 0;
220
+ accumHash = keccak256(abi.encodePacked(me[i], accumHash));
221
+ }
222
+ }
223
+ }
224
+ }
225
+
226
+ // we had a final change to propagate above the existing highest complete sub tree
227
+ // so we have a new highest complete sub tree in the level above - this was why we
228
+ // increased the storeage above
229
+ if (accumHash != 0) {
230
+ next[next.length - 1] = accumHash;
231
+ }
232
+
233
+ // it should never be possible to achieve this ever we sized the array correctly
234
+ // so this is just a sanity check
235
+ require(next[next.length - 1] != 0, "Last entry zero");
236
+
237
+ return next;
238
+ }
239
+
240
+ /// @notice Append a leaf to a merkle expansion
241
+ /// @dev Leaves are just complete subtrees at level 0, however we hash the leaf before putting it
242
+ /// into the tree to avoid root collisions.
243
+ /// @param me The merkle expansion to append a leaf to
244
+ /// @param leaf The leaf to append - will be hashed in here before appending
245
+ function appendLeaf(
246
+ bytes32[] memory me,
247
+ bytes32 leaf
248
+ ) internal pure returns (bytes32[] memory) {
249
+ // it's important that we hash the leaf, this ensures that this leaf cannot be a collision with any other non leaf
250
+ // or root node, since these are always the hash of 64 bytes of data, and we're hashing 32 bytes
251
+ return appendCompleteSubTree(me, 0, keccak256(abi.encodePacked(leaf)));
252
+ }
253
+
254
+ /// @notice Find the highest level which can be appended to an accumulator of size startSize without
255
+ /// creating a tree with size greater than end size (inclusive)
256
+ /// @dev Subtrees can only be appended according to certain rules, see tree description at top of file
257
+ /// for details. A subtree can only be appended if it is at the same level, or below, the current lowest
258
+ /// subtree in the expansion
259
+ /// @param startSize The size of the start tree to find the maximum append to
260
+ /// @param endSize The size of the end tree to find a maximum append under
261
+ function maximumAppendBetween(
262
+ uint256 startSize,
263
+ uint256 endSize
264
+ ) internal pure returns (uint256) {
265
+ // The accumulator can be represented in the same way as a binary representation of a number
266
+ // As described above, subtrees can only be appended to a tree if they are at the same level, or below,
267
+ // the current lowest subtree.
268
+ // In this function we want to find the level of the highest tree that can be appended to the current
269
+ // accumulator, without the resulting accumulator size surpassing the end point. We do this by looking at the difference
270
+ // between the start and end size, and iteratively reducing it in the maximal way.
271
+
272
+ // The start and end size will share some higher order bits, below that they differ, and it is this
273
+ // difference that we need to fill in the minimum number of appends
274
+ // startSize looks like: xxxxxxyyyy
275
+ // endSize looks like: xxxxxxzzzz
276
+ // where x are the complete sub trees they share, and y and z are the subtrees they dont
277
+
278
+ require(startSize < endSize, "Start not less than end");
279
+
280
+ // remove the high order bits that are shared
281
+ uint256 msb = UintUtilsLib.mostSignificantBit(startSize ^ endSize);
282
+ uint256 mask = (1 << (msb) + 1) - 1;
283
+ uint256 y = startSize & mask;
284
+ uint256 z = endSize & mask;
285
+
286
+ // Since in the verification we will be appending at start size, the highest level at which we
287
+ // can append is the lowest complete subtree - the least significant bit
288
+ if (y != 0) {
289
+ return UintUtilsLib.leastSignificantBit(y);
290
+ }
291
+
292
+ // y == 0, therefore we can append at any of levels where start and end differ
293
+ // The highest level that we can append at without surpassing the end, is the most significant
294
+ // bit of the end
295
+ if (z != 0) {
296
+ return UintUtilsLib.mostSignificantBit(z);
297
+ }
298
+
299
+ // since we enforce that start < end, we know that y and z cannot both be 0
300
+ revert("Both y and z cannot be zero");
301
+ }
302
+
303
+ /// @notice Calculate the full tree size represented by a merkle expansion
304
+ /// @param me The merkle expansion to calculate the tree size of
305
+ function treeSize(
306
+ bytes32[] memory me
307
+ ) internal pure returns (uint256) {
308
+ uint256 sum = 0;
309
+ for (uint256 i = 0; i < me.length; i++) {
310
+ if (me[i] != 0) {
311
+ sum += 2 ** i;
312
+ }
313
+ }
314
+ return sum;
315
+ }
316
+
317
+ /// @notice Verify that a pre-accumulator-root commits to a prefix of the leaves committed by a post-accumulator-root
318
+ /// @dev Verifies by appending sub trees to the pre accumulator until we get to the size of the post accumulator
319
+ /// and then checking that the root of the calculated post accumulator is equal to the supplied one
320
+ /// @param preRoot The root of the accumulator which is a prefix of the post accumulator
321
+ /// @param preSize The size of the pre-accumulator
322
+ /// @param postRoot The root the post-accumulator - the accumulator which we're proving pre is a prefix of
323
+ /// @param postSize The size of the post-accumulator
324
+ /// @param preExpansion The merkle expansion of the pre-accumulator
325
+ /// @param proof The proof is the minimum set of complete subtree hashes that can be appended to
326
+ /// the accumulator-tree in order to form the post accumulator
327
+ /// The first entry in the proof will be appended at the level of the first non-zero entry in the pre-expansion.
328
+ /// The second entry will then be appended to the the first non zero entry in the resulting expansion and so on, until
329
+ /// appending a sub tree will create a tree of greater that the post size. Then, starting at the highest level,
330
+ /// the next entry in the proof is attempted to be appended to the expansion, but the result is only accepted if has a size
331
+ /// less than or equal the post-size. This continues until all proof entries have been used up.
332
+ /// The resulting expansion is then checked to see if it equals the provided post-root
333
+ function verifyPrefixProof(
334
+ bytes32 preRoot,
335
+ uint256 preSize,
336
+ bytes32 postRoot,
337
+ uint256 postSize,
338
+ bytes32[] memory preExpansion,
339
+ bytes32[] memory proof
340
+ ) internal pure {
341
+ require(preSize > 0, "Pre-size cannot be 0");
342
+ require(root(preExpansion) == preRoot, "Pre expansion root mismatch");
343
+ require(treeSize(preExpansion) == preSize, "Pre size does not match expansion");
344
+ require(preSize < postSize, "Pre size not less than post size");
345
+
346
+ uint256 size = preSize;
347
+ uint256 proofIndex = 0;
348
+ // we clone here to avoid mutating the input arguments
349
+ // which could be unexpected for callers
350
+ bytes32[] memory exp = ArrayUtilsLib.slice(preExpansion, 0, preExpansion.length);
351
+
352
+ // Iteratively append a tree at the maximum possible level until we get to the post size
353
+ while (size < postSize) {
354
+ uint256 level = maximumAppendBetween(size, postSize);
355
+
356
+ require(proofIndex < proof.length, "Index out of range");
357
+ exp = appendCompleteSubTree(exp, level, proof[proofIndex]);
358
+
359
+ uint256 numLeaves = 1 << level;
360
+ size += numLeaves;
361
+ assert(size <= postSize);
362
+ proofIndex++;
363
+ }
364
+
365
+ // Check that the calculated root is equal to the provided post root
366
+ require(root(exp) == postRoot, "Post expansion root not equal post");
367
+
368
+ // ensure that we consumed the full proof
369
+ // this is just a safety check to guard against mistakenly supplied args
370
+ require(proofIndex == proof.length, "Incomplete proof usage");
371
+ }
372
+
373
+ /// @notice Using the provided proof verify that the provided leaf is included in the roothash of a complete tree at
374
+ /// the specified index. Note that here we use a 0-indexed value for the leaf number, whereas
375
+ /// elsewhere we use size.
376
+ /// @param rootHash The root hash to prove inclusion in
377
+ /// @param leaf The leaf preimage to prove inclusion - will be hashed in here before checking inclusion
378
+ /// @param index The index of the leaf in the tree
379
+ /// @param proof The path from the leaf to the root
380
+ function verifyInclusionProof(
381
+ bytes32 rootHash,
382
+ bytes32 leaf,
383
+ uint256 index,
384
+ bytes32[] memory proof
385
+ ) internal pure {
386
+ bytes32 calculatedRoot =
387
+ MerkleLib.calculateRoot(proof, index, keccak256(abi.encodePacked(leaf)));
388
+ require(rootHash == calculatedRoot, "Invalid inclusion proof");
389
+ }
390
+ }
@@ -0,0 +1,74 @@
1
+ // Copyright 2023, Offchain Labs, Inc.
2
+ // For license information, see https://github.com/offchainlabs/bold/blob/main/LICENSE
3
+ // SPDX-License-Identifier: BUSL-1.1
4
+ //
5
+ pragma solidity ^0.8.17;
6
+
7
+ /// @title Uint utils library
8
+ /// @notice Some additional bit inspection tools
9
+ library UintUtilsLib {
10
+ /// @notice The least significant bit in the bit representation of a uint
11
+ /// @dev Zero indexed from the least sig bit. Eg 1010 => 1, 1100 => 2, 1001 => 0
12
+ /// Finds lsb in linear (uint size) time
13
+ /// @param x Cannot be zero, since zero that has no signficant bits
14
+ function leastSignificantBit(
15
+ uint256 x
16
+ ) internal pure returns (uint256 msb) {
17
+ require(x > 0, "Zero has no significant bits");
18
+
19
+ // isolate the least sig bit
20
+ uint256 isolated = ((x - 1) & x) ^ x;
21
+
22
+ // since we removed all higher bits, least sig == most sig
23
+ return mostSignificantBit(isolated);
24
+ }
25
+
26
+ /// @notice The most significant bit in the bit representation of a uint
27
+ /// @dev Zero indexed from the least sig bit. Eg 1010 => 3, 110 => 2, 1 => 0
28
+ /// Taken from https://solidity-by-example.org/bitwise/
29
+ /// Finds msb in log (uint size) time
30
+ /// @param x Cannot be zero, since zero has no sigificant bits
31
+ function mostSignificantBit(
32
+ uint256 x
33
+ ) internal pure returns (uint256 msb) {
34
+ require(x != 0, "Zero has no significant bits");
35
+
36
+ // x >= 2 ** 128
37
+ if (x >= 0x100000000000000000000000000000000) {
38
+ x >>= 128;
39
+ msb += 128;
40
+ }
41
+ // x >= 2 ** 64
42
+ if (x >= 0x10000000000000000) {
43
+ x >>= 64;
44
+ msb += 64;
45
+ }
46
+ // x >= 2 ** 32
47
+ if (x >= 0x100000000) {
48
+ x >>= 32;
49
+ msb += 32;
50
+ }
51
+ // x >= 2 ** 16
52
+ if (x >= 0x10000) {
53
+ x >>= 16;
54
+ msb += 16;
55
+ }
56
+ // x >= 2 ** 8
57
+ if (x >= 0x100) {
58
+ x >>= 8;
59
+ msb += 8;
60
+ }
61
+ // x >= 2 ** 4
62
+ if (x >= 0x10) {
63
+ x >>= 4;
64
+ msb += 4;
65
+ }
66
+ // x >= 2 ** 2
67
+ if (x >= 0x4) {
68
+ x >>= 2;
69
+ msb += 2;
70
+ }
71
+ // x >= 2 ** 1
72
+ if (x >= 0x2) msb += 1;
73
+ }
74
+ }
@@ -11,7 +11,9 @@ library AddressAliasHelper {
11
11
  /// the inbox to the msg.sender viewed in the L2
12
12
  /// @param l1Address the address in the L1 that triggered the tx to L2
13
13
  /// @return l2Address L2 address as viewed in msg.sender
14
- function applyL1ToL2Alias(address l1Address) internal pure returns (address l2Address) {
14
+ function applyL1ToL2Alias(
15
+ address l1Address
16
+ ) internal pure returns (address l2Address) {
15
17
  unchecked {
16
18
  l2Address = address(uint160(l1Address) + OFFSET);
17
19
  }
@@ -21,7 +23,9 @@ library AddressAliasHelper {
21
23
  /// address in the L1 that submitted a tx to the inbox
22
24
  /// @param l2Address L2 address as viewed in msg.sender
23
25
  /// @return l1Address the address in the L1 that triggered the tx to L2
24
- function undoL1ToL2Alias(address l2Address) internal pure returns (address l1Address) {
26
+ function undoL1ToL2Alias(
27
+ address l2Address
28
+ ) internal pure returns (address l1Address) {
25
29
  unchecked {
26
30
  l1Address = address(uint160(l2Address) - OFFSET);
27
31
  }
@@ -34,7 +34,9 @@ abstract contract DoubleLogicERC1967Upgrade is ERC1967Upgrade {
34
34
  /**
35
35
  * @dev Stores a new address in the EIP1967 implementation slot.
36
36
  */
37
- function _setSecondaryImplementation(address newImplementation) private {
37
+ function _setSecondaryImplementation(
38
+ address newImplementation
39
+ ) private {
38
40
  require(
39
41
  Address.isContract(newImplementation),
40
42
  "ERC1967: new secondary implementation is not a contract"
@@ -47,7 +49,9 @@ abstract contract DoubleLogicERC1967Upgrade is ERC1967Upgrade {
47
49
  *
48
50
  * Emits an {UpgradedSecondary} event.
49
51
  */
50
- function _upgradeSecondaryTo(address newImplementation) internal {
52
+ function _upgradeSecondaryTo(
53
+ address newImplementation
54
+ ) internal {
51
55
  _setSecondaryImplementation(newImplementation);
52
56
  emit UpgradedSecondary(newImplementation);
53
57
  }
@@ -119,8 +123,8 @@ contract AdminFallbackProxy is Proxy, DoubleLogicERC1967Upgrade {
119
123
  _IMPLEMENTATION_SLOT == bytes32(uint256(keccak256("eip1967.proxy.implementation")) - 1)
120
124
  );
121
125
  assert(
122
- _IMPLEMENTATION_SECONDARY_SLOT ==
123
- bytes32(uint256(keccak256("eip1967.proxy.implementation.secondary")) - 1)
126
+ _IMPLEMENTATION_SECONDARY_SLOT
127
+ == bytes32(uint256(keccak256("eip1967.proxy.implementation.secondary")) - 1)
124
128
  );
125
129
  _changeAdmin(adminAddr);
126
130
  _upgradeToAndCall(adminLogic, adminData, false);
@@ -1,5 +1,5 @@
1
1
  // Copyright 2021-2022, Offchain Labs, Inc.
2
- // For license information, see https://github.com/nitro/blob/master/LICENSE
2
+ // For license information, see https://github.com/OffchainLabs/nitro-contracts/blob/main/LICENSE
3
3
  // SPDX-License-Identifier: BUSL-1.1
4
4
 
5
5
  pragma solidity ^0.8.0;
@@ -8,9 +8,8 @@ import "../precompiles/ArbSys.sol";
8
8
 
9
9
  library ArbitrumChecker {
10
10
  function runningOnArbitrum() internal view returns (bool) {
11
- (bool ok, bytes memory data) = address(100).staticcall(
12
- abi.encodeWithSelector(ArbSys.arbOSVersion.selector)
13
- );
11
+ (bool ok, bytes memory data) =
12
+ address(100).staticcall(abi.encodeWithSelector(ArbSys.arbOSVersion.selector));
14
13
  return ok && data.length == 32;
15
14
  }
16
15
  }