@arbitrum/nitro-contracts 3.0.0-alpha.2 → 3.0.0-beta.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 (249) hide show
  1. package/LICENSE.md +1 -1
  2. package/README.md +3 -3
  3. package/build/contracts/@openzeppelin/contracts/access/Ownable.sol/Ownable.dbg.json +1 -1
  4. package/build/contracts/@openzeppelin/contracts/interfaces/draft-IERC1822.sol/IERC1822Proxiable.dbg.json +1 -1
  5. package/build/contracts/@openzeppelin/contracts/proxy/ERC1967/ERC1967Proxy.sol/ERC1967Proxy.dbg.json +1 -1
  6. package/build/contracts/@openzeppelin/contracts/proxy/ERC1967/ERC1967Upgrade.sol/ERC1967Upgrade.dbg.json +1 -1
  7. package/build/contracts/@openzeppelin/contracts/proxy/Proxy.sol/Proxy.dbg.json +1 -1
  8. package/build/contracts/@openzeppelin/contracts/proxy/beacon/IBeacon.sol/IBeacon.dbg.json +1 -1
  9. package/build/contracts/@openzeppelin/contracts/proxy/beacon/UpgradeableBeacon.sol/UpgradeableBeacon.dbg.json +1 -1
  10. package/build/contracts/@openzeppelin/contracts/proxy/transparent/ProxyAdmin.sol/ProxyAdmin.dbg.json +1 -1
  11. package/build/contracts/@openzeppelin/contracts/proxy/transparent/TransparentUpgradeableProxy.sol/TransparentUpgradeableProxy.dbg.json +1 -1
  12. package/build/contracts/@openzeppelin/contracts/proxy/utils/UUPSUpgradeable.sol/UUPSUpgradeable.dbg.json +1 -1
  13. package/build/contracts/@openzeppelin/contracts/security/ReentrancyGuard.sol/ReentrancyGuard.dbg.json +1 -1
  14. package/build/contracts/@openzeppelin/contracts/token/ERC20/ERC20.sol/ERC20.dbg.json +1 -1
  15. package/build/contracts/@openzeppelin/contracts/token/ERC20/IERC20.sol/IERC20.dbg.json +1 -1
  16. package/build/contracts/@openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata.sol/IERC20Metadata.dbg.json +1 -1
  17. package/build/contracts/@openzeppelin/contracts/token/ERC20/extensions/draft-IERC20Permit.sol/IERC20Permit.dbg.json +1 -1
  18. package/build/contracts/@openzeppelin/contracts/token/ERC20/utils/SafeERC20.sol/SafeERC20.dbg.json +1 -1
  19. package/build/contracts/@openzeppelin/contracts/utils/Address.sol/Address.dbg.json +1 -1
  20. package/build/contracts/@openzeppelin/contracts/utils/Context.sol/Context.dbg.json +1 -1
  21. package/build/contracts/@openzeppelin/contracts/utils/Create2.sol/Create2.dbg.json +1 -1
  22. package/build/contracts/@openzeppelin/contracts/utils/StorageSlot.sol/StorageSlot.dbg.json +1 -1
  23. package/build/contracts/@openzeppelin/contracts/utils/Strings.sol/Strings.dbg.json +1 -1
  24. package/build/contracts/@openzeppelin/contracts/utils/cryptography/ECDSA.sol/ECDSA.dbg.json +4 -0
  25. package/build/contracts/@openzeppelin/contracts/utils/cryptography/ECDSA.sol/ECDSA.json +10 -0
  26. package/build/contracts/@openzeppelin/contracts-upgradeable/access/AccessControlEnumerableUpgradeable.sol/AccessControlEnumerableUpgradeable.dbg.json +4 -0
  27. package/build/contracts/@openzeppelin/contracts-upgradeable/access/AccessControlEnumerableUpgradeable.sol/AccessControlEnumerableUpgradeable.json +271 -0
  28. package/build/contracts/@openzeppelin/contracts-upgradeable/access/AccessControlUpgradeable.sol/AccessControlUpgradeable.dbg.json +1 -1
  29. package/build/contracts/@openzeppelin/contracts-upgradeable/access/IAccessControlEnumerableUpgradeable.sol/IAccessControlEnumerableUpgradeable.dbg.json +4 -0
  30. package/build/contracts/@openzeppelin/contracts-upgradeable/access/IAccessControlEnumerableUpgradeable.sol/IAccessControlEnumerableUpgradeable.json +226 -0
  31. package/build/contracts/@openzeppelin/contracts-upgradeable/access/IAccessControlUpgradeable.sol/IAccessControlUpgradeable.dbg.json +1 -1
  32. package/build/contracts/@openzeppelin/contracts-upgradeable/access/OwnableUpgradeable.sol/OwnableUpgradeable.dbg.json +1 -1
  33. package/build/contracts/@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol/Initializable.dbg.json +1 -1
  34. package/build/contracts/@openzeppelin/contracts-upgradeable/security/PausableUpgradeable.sol/PausableUpgradeable.dbg.json +1 -1
  35. package/build/contracts/@openzeppelin/contracts-upgradeable/token/ERC20/ERC20Upgradeable.sol/ERC20Upgradeable.dbg.json +4 -0
  36. package/build/contracts/@openzeppelin/contracts-upgradeable/token/ERC20/ERC20Upgradeable.sol/ERC20Upgradeable.json +294 -0
  37. package/build/contracts/@openzeppelin/contracts-upgradeable/token/ERC20/IERC20Upgradeable.sol/IERC20Upgradeable.dbg.json +4 -0
  38. package/build/contracts/@openzeppelin/contracts-upgradeable/token/ERC20/IERC20Upgradeable.sol/IERC20Upgradeable.json +194 -0
  39. package/build/contracts/@openzeppelin/contracts-upgradeable/token/ERC20/extensions/ERC20BurnableUpgradeable.sol/ERC20BurnableUpgradeable.dbg.json +4 -0
  40. package/build/contracts/@openzeppelin/contracts-upgradeable/token/ERC20/extensions/ERC20BurnableUpgradeable.sol/ERC20BurnableUpgradeable.json +325 -0
  41. package/build/contracts/@openzeppelin/contracts-upgradeable/token/ERC20/extensions/IERC20MetadataUpgradeable.sol/IERC20MetadataUpgradeable.dbg.json +4 -0
  42. package/build/contracts/@openzeppelin/contracts-upgradeable/token/ERC20/extensions/IERC20MetadataUpgradeable.sol/IERC20MetadataUpgradeable.json +233 -0
  43. package/build/contracts/@openzeppelin/contracts-upgradeable/utils/AddressUpgradeable.sol/AddressUpgradeable.dbg.json +1 -1
  44. package/build/contracts/@openzeppelin/contracts-upgradeable/utils/ContextUpgradeable.sol/ContextUpgradeable.dbg.json +1 -1
  45. package/build/contracts/@openzeppelin/contracts-upgradeable/utils/Create2Upgradeable.sol/Create2Upgradeable.dbg.json +1 -1
  46. package/build/contracts/@openzeppelin/contracts-upgradeable/utils/StorageSlotUpgradeable.sol/StorageSlotUpgradeable.dbg.json +1 -1
  47. package/build/contracts/@openzeppelin/contracts-upgradeable/utils/StringsUpgradeable.sol/StringsUpgradeable.dbg.json +1 -1
  48. package/build/contracts/@openzeppelin/contracts-upgradeable/utils/cryptography/ECDSAUpgradeable.sol/ECDSAUpgradeable.dbg.json +4 -0
  49. package/build/contracts/@openzeppelin/contracts-upgradeable/utils/cryptography/ECDSAUpgradeable.sol/ECDSAUpgradeable.json +10 -0
  50. package/build/contracts/@openzeppelin/contracts-upgradeable/utils/cryptography/draft-EIP712Upgradeable.sol/EIP712Upgradeable.dbg.json +4 -0
  51. package/build/contracts/@openzeppelin/contracts-upgradeable/utils/cryptography/draft-EIP712Upgradeable.sol/EIP712Upgradeable.json +24 -0
  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/IERC165Upgradeable.sol/IERC165Upgradeable.dbg.json +1 -1
  54. package/build/contracts/@openzeppelin/contracts-upgradeable/utils/structs/EnumerableSetUpgradeable.sol/EnumerableSetUpgradeable.dbg.json +1 -1
  55. package/build/contracts/src/assertionStakingPool/AbsBoldStakingPool.sol/AbsBoldStakingPool.dbg.json +1 -1
  56. package/build/contracts/src/assertionStakingPool/AssertionStakingPool.sol/AssertionStakingPool.dbg.json +1 -1
  57. package/build/contracts/src/assertionStakingPool/AssertionStakingPoolCreator.sol/AssertionStakingPoolCreator.dbg.json +1 -1
  58. package/build/contracts/src/assertionStakingPool/EdgeStakingPool.sol/EdgeStakingPool.dbg.json +1 -1
  59. package/build/contracts/src/assertionStakingPool/EdgeStakingPoolCreator.sol/EdgeStakingPoolCreator.dbg.json +1 -1
  60. package/build/contracts/src/assertionStakingPool/StakingPoolCreatorUtils.sol/StakingPoolCreatorUtils.dbg.json +1 -1
  61. package/build/contracts/src/assertionStakingPool/interfaces/IAbsBoldStakingPool.sol/IAbsBoldStakingPool.dbg.json +1 -1
  62. package/build/contracts/src/assertionStakingPool/interfaces/IAssertionStakingPool.sol/IAssertionStakingPool.dbg.json +1 -1
  63. package/build/contracts/src/assertionStakingPool/interfaces/IAssertionStakingPoolCreator.sol/IAssertionStakingPoolCreator.dbg.json +1 -1
  64. package/build/contracts/src/assertionStakingPool/interfaces/IEdgeStakingPool.sol/IEdgeStakingPool.dbg.json +1 -1
  65. package/build/contracts/src/assertionStakingPool/interfaces/IEdgeStakingPoolCreator.sol/IEdgeStakingPoolCreator.dbg.json +1 -1
  66. package/build/contracts/src/bridge/AbsBridge.sol/AbsBridge.dbg.json +1 -1
  67. package/build/contracts/src/bridge/AbsInbox.sol/AbsInbox.dbg.json +1 -1
  68. package/build/contracts/src/bridge/AbsOutbox.sol/AbsOutbox.dbg.json +1 -1
  69. package/build/contracts/src/bridge/Bridge.sol/Bridge.dbg.json +1 -1
  70. package/build/contracts/src/bridge/Bridge.sol/Bridge.json +2 -2
  71. package/build/contracts/src/bridge/DelayBuffer.sol/DelayBuffer.dbg.json +1 -1
  72. package/build/contracts/src/bridge/ERC20Bridge.sol/ERC20Bridge.dbg.json +1 -1
  73. package/build/contracts/src/bridge/ERC20Bridge.sol/ERC20Bridge.json +2 -2
  74. package/build/contracts/src/bridge/ERC20Inbox.sol/ERC20Inbox.dbg.json +1 -1
  75. package/build/contracts/src/bridge/ERC20Outbox.sol/ERC20Outbox.dbg.json +1 -1
  76. package/build/contracts/src/bridge/GasRefunder.sol/GasRefunder.dbg.json +1 -1
  77. package/build/contracts/src/bridge/IBridge.sol/IBridge.dbg.json +1 -1
  78. package/build/contracts/src/bridge/IDelayedMessageProvider.sol/IDelayedMessageProvider.dbg.json +1 -1
  79. package/build/contracts/src/bridge/IERC20Bridge.sol/IERC20Bridge.dbg.json +1 -1
  80. package/build/contracts/src/bridge/IERC20Inbox.sol/IERC20Inbox.dbg.json +1 -1
  81. package/build/contracts/src/bridge/IEthBridge.sol/IEthBridge.dbg.json +1 -1
  82. package/build/contracts/src/bridge/IInbox.sol/IInbox.dbg.json +1 -1
  83. package/build/contracts/src/bridge/IInboxBase.sol/IInboxBase.dbg.json +1 -1
  84. package/build/contracts/src/bridge/IOutbox.sol/IOutbox.dbg.json +1 -1
  85. package/build/contracts/src/bridge/IOwnable.sol/IOwnable.dbg.json +1 -1
  86. package/build/contracts/src/bridge/ISequencerInbox.sol/ISequencerInbox.dbg.json +1 -1
  87. package/build/contracts/src/bridge/Inbox.sol/Inbox.dbg.json +1 -1
  88. package/build/contracts/src/bridge/Messages.sol/Messages.dbg.json +1 -1
  89. package/build/contracts/src/bridge/Outbox.sol/Outbox.dbg.json +1 -1
  90. package/build/contracts/src/bridge/SequencerInbox.sol/SequencerInbox.dbg.json +1 -1
  91. package/build/contracts/src/chain/CacheManager.sol/CacheManager.dbg.json +1 -1
  92. package/build/contracts/src/challengeV2/IAssertionChain.sol/IAssertionChain.dbg.json +1 -1
  93. package/build/contracts/src/challengeV2/IEdgeChallengeManager.sol/IEdgeChallengeManager.dbg.json +1 -1
  94. package/build/contracts/src/challengeV2/libraries/ArrayUtilsLib.sol/ArrayUtilsLib.dbg.json +1 -1
  95. package/build/contracts/src/challengeV2/libraries/ChallengeEdgeLib.sol/ChallengeEdgeLib.dbg.json +1 -1
  96. package/build/contracts/src/challengeV2/libraries/EdgeChallengeManagerLib.sol/EdgeChallengeManagerLib.dbg.json +1 -1
  97. package/build/contracts/src/challengeV2/libraries/MerkleTreeAccumulatorLib.sol/MerkleTreeAccumulatorLib.dbg.json +1 -1
  98. package/build/contracts/src/challengeV2/libraries/UintUtilsLib.sol/UintUtilsLib.dbg.json +1 -1
  99. package/build/contracts/src/express-lane-auction/Balance.sol/BalanceLib.dbg.json +4 -0
  100. package/build/contracts/src/express-lane-auction/Balance.sol/BalanceLib.json +10 -0
  101. package/build/contracts/src/express-lane-auction/Burner.sol/Burner.dbg.json +4 -0
  102. package/build/contracts/src/express-lane-auction/Burner.sol/Burner.json +47 -0
  103. package/build/contracts/src/express-lane-auction/ELCRound.sol/LatestELCRoundsLib.dbg.json +4 -0
  104. package/build/contracts/src/express-lane-auction/ELCRound.sol/LatestELCRoundsLib.json +10 -0
  105. package/build/contracts/src/express-lane-auction/ExpressLaneAuction.sol/ExpressLaneAuction.dbg.json +4 -0
  106. package/build/contracts/src/express-lane-auction/ExpressLaneAuction.sol/ExpressLaneAuction.json +1601 -0
  107. package/build/contracts/src/express-lane-auction/IExpressLaneAuction.sol/IExpressLaneAuction.dbg.json +4 -0
  108. package/build/contracts/src/express-lane-auction/IExpressLaneAuction.sol/IExpressLaneAuction.json +1296 -0
  109. package/build/contracts/src/express-lane-auction/RoundTimingInfo.sol/RoundTimingInfoLib.dbg.json +4 -0
  110. package/build/contracts/src/express-lane-auction/RoundTimingInfo.sol/RoundTimingInfoLib.json +10 -0
  111. package/build/contracts/src/libraries/AddressAliasHelper.sol/AddressAliasHelper.dbg.json +1 -1
  112. package/build/contracts/src/libraries/AdminFallbackProxy.sol/AdminFallbackProxy.dbg.json +1 -1
  113. package/build/contracts/src/libraries/AdminFallbackProxy.sol/DoubleLogicERC1967Upgrade.dbg.json +1 -1
  114. package/build/contracts/src/libraries/ArbitrumChecker.sol/ArbitrumChecker.dbg.json +1 -1
  115. package/build/contracts/src/libraries/CallerChecker.sol/CallerChecker.dbg.json +1 -1
  116. package/build/contracts/src/libraries/CryptographyPrimitives.sol/CryptographyPrimitives.dbg.json +1 -1
  117. package/build/contracts/src/libraries/DecimalsConverterHelper.sol/DecimalsConverterHelper.dbg.json +1 -1
  118. package/build/contracts/src/libraries/DelegateCallAware.sol/DelegateCallAware.dbg.json +1 -1
  119. package/build/contracts/src/libraries/DoubleLogicUUPSUpgradeable.sol/DoubleLogicUUPSUpgradeable.dbg.json +1 -1
  120. package/build/contracts/src/libraries/GasRefundEnabled.sol/GasRefundEnabled.dbg.json +1 -1
  121. package/build/contracts/src/libraries/IGasRefunder.sol/IGasRefunder.dbg.json +1 -1
  122. package/build/contracts/src/libraries/IReader4844.sol/IReader4844.dbg.json +1 -1
  123. package/build/contracts/src/libraries/MerkleLib.sol/MerkleLib.dbg.json +1 -1
  124. package/build/contracts/src/libraries/UUPSNotUpgradeable.sol/UUPSNotUpgradeable.dbg.json +1 -1
  125. package/build/contracts/src/mocks/Benchmarks.sol/Benchmarks.dbg.json +1 -1
  126. package/build/contracts/src/mocks/BridgeStub.sol/BridgeStub.dbg.json +1 -1
  127. package/build/contracts/src/mocks/BridgeUnproxied.sol/BridgeUnproxied.dbg.json +1 -1
  128. package/build/contracts/src/mocks/BridgeUnproxied.sol/BridgeUnproxied.json +2 -2
  129. package/build/contracts/src/mocks/CreateTest.sol/CreateTest.dbg.json +1 -1
  130. package/build/contracts/src/mocks/InboxStub.sol/InboxStub.dbg.json +1 -1
  131. package/build/contracts/src/mocks/MerkleTreeAccess.sol/MerkleTreeAccess.dbg.json +1 -1
  132. package/build/contracts/src/mocks/MockRollupEventInbox.sol/MockRollupEventInbox.dbg.json +1 -1
  133. package/build/contracts/src/mocks/MultiCallTest.sol/MultiCallTest.dbg.json +1 -1
  134. package/build/contracts/src/mocks/PendingBlkTimeAndNrAdvanceCheck.sol/PendingBlkTimeAndNrAdvanceCheck.dbg.json +1 -1
  135. package/build/contracts/src/mocks/Program.sol/ProgramTest.dbg.json +1 -1
  136. package/build/contracts/src/mocks/ProxyAdminForBinding.sol/ProxyAdminForBinding.dbg.json +1 -1
  137. package/build/contracts/src/mocks/SdkStorage.sol/SdkStorage.dbg.json +1 -1
  138. package/build/contracts/src/mocks/SequencerInboxBlobMock.sol/SequencerInboxBlobMock.dbg.json +1 -1
  139. package/build/contracts/src/mocks/SequencerInboxStub.sol/SequencerInboxStub.dbg.json +1 -1
  140. package/build/contracts/src/mocks/Simple.sol/Simple.dbg.json +1 -1
  141. package/build/contracts/src/mocks/SimpleCacheManager.sol/SimpleCacheManager.dbg.json +1 -1
  142. package/build/contracts/src/mocks/SimpleOneStepProofEntry.sol/SimpleOneStepProofEntry.dbg.json +1 -1
  143. package/build/contracts/src/mocks/SimpleProxy.sol/SimpleProxy.dbg.json +1 -1
  144. package/build/contracts/src/mocks/TestWETH9.sol/IWETH9.dbg.json +1 -1
  145. package/build/contracts/src/mocks/TestWETH9.sol/TestWETH9.dbg.json +1 -1
  146. package/build/contracts/src/mocks/UpgradeExecutorMock.sol/UpgradeExecutorMock.dbg.json +1 -1
  147. package/build/contracts/src/node-interface/NodeInterface.sol/NodeInterface.dbg.json +1 -1
  148. package/build/contracts/src/node-interface/NodeInterfaceDebug.sol/NodeInterfaceDebug.dbg.json +1 -1
  149. package/build/contracts/src/osp/HashProofHelper.sol/HashProofHelper.dbg.json +1 -1
  150. package/build/contracts/src/osp/IOneStepProofEntry.sol/IOneStepProofEntry.dbg.json +1 -1
  151. package/build/contracts/src/osp/IOneStepProofEntry.sol/OneStepProofEntryLib.dbg.json +1 -1
  152. package/build/contracts/src/osp/IOneStepProver.sol/IOneStepProver.dbg.json +1 -1
  153. package/build/contracts/src/osp/OneStepProofEntry.sol/OneStepProofEntry.dbg.json +1 -1
  154. package/build/contracts/src/osp/OneStepProver0.sol/OneStepProver0.dbg.json +1 -1
  155. package/build/contracts/src/osp/OneStepProverHostIo.sol/OneStepProverHostIo.dbg.json +1 -1
  156. package/build/contracts/src/osp/OneStepProverMath.sol/OneStepProverMath.dbg.json +1 -1
  157. package/build/contracts/src/osp/OneStepProverMemory.sol/OneStepProverMemory.dbg.json +1 -1
  158. package/build/contracts/src/precompiles/ArbAddressTable.sol/ArbAddressTable.dbg.json +1 -1
  159. package/build/contracts/src/precompiles/ArbAggregator.sol/ArbAggregator.dbg.json +1 -1
  160. package/build/contracts/src/precompiles/ArbBLS.sol/ArbBLS.dbg.json +1 -1
  161. package/build/contracts/src/precompiles/ArbDebug.sol/ArbDebug.dbg.json +1 -1
  162. package/build/contracts/src/precompiles/ArbFunctionTable.sol/ArbFunctionTable.dbg.json +1 -1
  163. package/build/contracts/src/precompiles/ArbGasInfo.sol/ArbGasInfo.dbg.json +1 -1
  164. package/build/contracts/src/precompiles/ArbInfo.sol/ArbInfo.dbg.json +1 -1
  165. package/build/contracts/src/precompiles/ArbOwner.sol/ArbOwner.dbg.json +1 -1
  166. package/build/contracts/src/precompiles/ArbOwnerPublic.sol/ArbOwnerPublic.dbg.json +1 -1
  167. package/build/contracts/src/precompiles/ArbRetryableTx.sol/ArbRetryableTx.dbg.json +1 -1
  168. package/build/contracts/src/precompiles/ArbStatistics.sol/ArbStatistics.dbg.json +1 -1
  169. package/build/contracts/src/precompiles/ArbSys.sol/ArbSys.dbg.json +1 -1
  170. package/build/contracts/src/precompiles/ArbWasm.sol/ArbWasm.dbg.json +1 -1
  171. package/build/contracts/src/precompiles/ArbWasmCache.sol/ArbWasmCache.dbg.json +1 -1
  172. package/build/contracts/src/precompiles/ArbosActs.sol/ArbosActs.dbg.json +1 -1
  173. package/build/contracts/src/precompiles/ArbosTest.sol/ArbosTest.dbg.json +1 -1
  174. package/build/contracts/src/rollup/AbsRollupEventInbox.sol/AbsRollupEventInbox.dbg.json +1 -1
  175. package/build/contracts/src/rollup/Assertion.sol/AssertionNodeLib.dbg.json +1 -1
  176. package/build/contracts/src/rollup/AssertionState.sol/AssertionStateLib.dbg.json +1 -1
  177. package/build/contracts/src/rollup/BOLDUpgradeAction.sol/BOLDUpgradeAction.dbg.json +1 -1
  178. package/build/contracts/src/rollup/BOLDUpgradeAction.sol/BOLDUpgradeAction.json +84 -32
  179. package/build/contracts/src/rollup/BOLDUpgradeAction.sol/ConstantArrayStorage.dbg.json +1 -1
  180. package/build/contracts/src/rollup/BOLDUpgradeAction.sol/ConstantArrayStorage.json +2 -2
  181. package/build/contracts/src/rollup/BOLDUpgradeAction.sol/IOldRollup.dbg.json +1 -1
  182. package/build/contracts/src/rollup/BOLDUpgradeAction.sol/IOldRollup.json +45 -0
  183. package/build/contracts/src/rollup/BOLDUpgradeAction.sol/IOldRollupAdmin.dbg.json +1 -1
  184. package/build/contracts/src/rollup/BOLDUpgradeAction.sol/ISeqInboxPostUpgradeInit.dbg.json +1 -1
  185. package/build/contracts/src/rollup/BOLDUpgradeAction.sol/StateHashPreImageLookup.dbg.json +1 -1
  186. package/build/contracts/src/rollup/BOLDUpgradeAction.sol/StateHashPreImageLookup.json +2 -2
  187. package/build/contracts/src/rollup/BridgeCreator.sol/BridgeCreator.dbg.json +1 -1
  188. package/build/contracts/src/rollup/BridgeCreator.sol/BridgeCreator.json +2 -2
  189. package/build/contracts/src/rollup/DeployHelper.sol/DeployHelper.dbg.json +1 -1
  190. package/build/contracts/src/rollup/ERC20RollupEventInbox.sol/ERC20RollupEventInbox.dbg.json +1 -1
  191. package/build/contracts/src/rollup/FactoryDeployerHelper.sol/FactoryDeployerHelper.dbg.json +1 -1
  192. package/build/contracts/src/rollup/FactoryDeployerHelper.sol/IDeployHelper.dbg.json +1 -1
  193. package/build/contracts/src/rollup/FactoryDeployerHelper.sol/IERC20.dbg.json +1 -1
  194. package/build/contracts/src/rollup/FactoryDeployerHelper.sol/IERC20Bridge.dbg.json +1 -1
  195. package/build/contracts/src/rollup/FactoryDeployerHelper.sol/IInboxBase.dbg.json +1 -1
  196. package/build/contracts/src/rollup/IRollupAdmin.sol/IRollupAdmin.dbg.json +1 -1
  197. package/build/contracts/src/rollup/IRollupAdmin.sol/IRollupAdmin.json +10 -0
  198. package/build/contracts/src/rollup/IRollupCore.sol/IRollupCore.dbg.json +1 -1
  199. package/build/contracts/src/rollup/IRollupEventInbox.sol/IRollupEventInbox.dbg.json +1 -1
  200. package/build/contracts/src/rollup/IRollupLogic.sol/IRollupUser.dbg.json +1 -1
  201. package/build/contracts/src/rollup/RollupAdminLogic.sol/RollupAdminLogic.dbg.json +1 -1
  202. package/build/contracts/src/rollup/RollupAdminLogic.sol/RollupAdminLogic.json +12 -2
  203. package/build/contracts/src/rollup/RollupCore.sol/RollupCore.dbg.json +1 -1
  204. package/build/contracts/src/rollup/RollupCreator.sol/RollupCreator.dbg.json +1 -1
  205. package/build/contracts/src/rollup/RollupCreator.sol/RollupCreator.json +12 -2
  206. package/build/contracts/src/rollup/RollupEventInbox.sol/RollupEventInbox.dbg.json +1 -1
  207. package/build/contracts/src/rollup/RollupLib.sol/RollupLib.dbg.json +1 -1
  208. package/build/contracts/src/rollup/RollupProxy.sol/RollupProxy.dbg.json +1 -1
  209. package/build/contracts/src/rollup/RollupProxy.sol/RollupProxy.json +12 -2
  210. package/build/contracts/src/rollup/ValidatorWallet.sol/ValidatorWallet.dbg.json +1 -1
  211. package/build/contracts/src/rollup/ValidatorWalletCreator.sol/ValidatorWalletCreator.dbg.json +1 -1
  212. package/build/contracts/src/state/Deserialize.sol/Deserialize.dbg.json +1 -1
  213. package/build/contracts/src/state/GlobalState.sol/GlobalStateLib.dbg.json +1 -1
  214. package/build/contracts/src/state/Instructions.sol/Instructions.dbg.json +1 -1
  215. package/build/contracts/src/state/Machine.sol/MachineLib.dbg.json +1 -1
  216. package/build/contracts/src/state/MerkleProof.sol/MerkleProofLib.dbg.json +1 -1
  217. package/build/contracts/src/state/Module.sol/ModuleLib.dbg.json +1 -1
  218. package/build/contracts/src/state/ModuleMemory.sol/ModuleMemoryLib.dbg.json +1 -1
  219. package/build/contracts/src/state/ModuleMemoryCompact.sol/ModuleMemoryCompactLib.dbg.json +1 -1
  220. package/build/contracts/src/state/MultiStack.sol/MultiStackLib.dbg.json +1 -1
  221. package/build/contracts/src/state/PcArray.sol/PcArrayLib.dbg.json +1 -1
  222. package/build/contracts/src/state/StackFrame.sol/StackFrameLib.dbg.json +1 -1
  223. package/build/contracts/src/state/Value.sol/ValueLib.dbg.json +1 -1
  224. package/build/contracts/src/state/ValueArray.sol/ValueArrayLib.dbg.json +1 -1
  225. package/build/contracts/src/state/ValueStack.sol/ValueStackLib.dbg.json +1 -1
  226. package/build/contracts/src/test-helpers/BridgeTester.sol/BridgeTester.dbg.json +1 -1
  227. package/build/contracts/src/test-helpers/CryptographyPrimitivesTester.sol/CryptographyPrimitivesTester.dbg.json +1 -1
  228. package/build/contracts/src/test-helpers/EthVault.sol/EthVault.dbg.json +1 -1
  229. package/build/contracts/src/test-helpers/MessageTester.sol/MessageTester.dbg.json +1 -1
  230. package/build/contracts/src/test-helpers/OutboxWithoutOptTester.sol/OutboxWithoutOptTester.dbg.json +1 -1
  231. package/build/contracts/src/test-helpers/RollupMock.sol/RollupMock.dbg.json +1 -1
  232. package/build/contracts/src/test-helpers/TestToken.sol/TestToken.dbg.json +1 -1
  233. package/build/contracts/src/test-helpers/ValueArrayTester.sol/ValueArrayTester.dbg.json +1 -1
  234. package/package.json +2 -3
  235. package/src/bridge/AbsBridge.sol +2 -2
  236. package/src/bridge/ERC20Bridge.sol +6 -2
  237. package/src/express-lane-auction/Balance.sol +137 -0
  238. package/src/express-lane-auction/Burner.sol +26 -0
  239. package/src/express-lane-auction/ELCRound.sol +70 -0
  240. package/src/express-lane-auction/Errors.sol +31 -0
  241. package/src/express-lane-auction/ExpressLaneAuction.sol +567 -0
  242. package/src/express-lane-auction/IExpressLaneAuction.sol +441 -0
  243. package/src/express-lane-auction/RoundTimingInfo.sol +118 -0
  244. package/src/rollup/BOLDUpgradeAction.sol +53 -104
  245. package/src/rollup/BridgeCreator.sol +23 -5
  246. package/src/rollup/Config.sol +2 -0
  247. package/src/rollup/RollupAdminLogic.sol +4 -4
  248. package/build/contracts/src/rollup/BOLDUpgradeAction.sol/RollupReader.dbg.json +0 -4
  249. package/build/contracts/src/rollup/BOLDUpgradeAction.sol/RollupReader.json +0 -385
@@ -1,4 +1,4 @@
1
1
  {
2
2
  "_format": "hh-sol-dbg-1",
3
- "buildInfo": "../../../build-info/a354aaf7cb79bc63f750c0ca36db8cc9.json"
3
+ "buildInfo": "../../../build-info/333933d304b0c599711e6e34df65b848.json"
4
4
  }
@@ -1,4 +1,4 @@
1
1
  {
2
2
  "_format": "hh-sol-dbg-1",
3
- "buildInfo": "../../../build-info/a354aaf7cb79bc63f750c0ca36db8cc9.json"
3
+ "buildInfo": "../../../build-info/333933d304b0c599711e6e34df65b848.json"
4
4
  }
@@ -1,4 +1,4 @@
1
1
  {
2
2
  "_format": "hh-sol-dbg-1",
3
- "buildInfo": "../../../build-info/a354aaf7cb79bc63f750c0ca36db8cc9.json"
3
+ "buildInfo": "../../../build-info/333933d304b0c599711e6e34df65b848.json"
4
4
  }
@@ -1,4 +1,4 @@
1
1
  {
2
2
  "_format": "hh-sol-dbg-1",
3
- "buildInfo": "../../../build-info/a354aaf7cb79bc63f750c0ca36db8cc9.json"
3
+ "buildInfo": "../../../build-info/333933d304b0c599711e6e34df65b848.json"
4
4
  }
@@ -1,4 +1,4 @@
1
1
  {
2
2
  "_format": "hh-sol-dbg-1",
3
- "buildInfo": "../../../build-info/a354aaf7cb79bc63f750c0ca36db8cc9.json"
3
+ "buildInfo": "../../../build-info/333933d304b0c599711e6e34df65b848.json"
4
4
  }
@@ -1,4 +1,4 @@
1
1
  {
2
2
  "_format": "hh-sol-dbg-1",
3
- "buildInfo": "../../../build-info/a354aaf7cb79bc63f750c0ca36db8cc9.json"
3
+ "buildInfo": "../../../build-info/333933d304b0c599711e6e34df65b848.json"
4
4
  }
@@ -1,4 +1,4 @@
1
1
  {
2
2
  "_format": "hh-sol-dbg-1",
3
- "buildInfo": "../../../build-info/a354aaf7cb79bc63f750c0ca36db8cc9.json"
3
+ "buildInfo": "../../../build-info/333933d304b0c599711e6e34df65b848.json"
4
4
  }
@@ -1,4 +1,4 @@
1
1
  {
2
2
  "_format": "hh-sol-dbg-1",
3
- "buildInfo": "../../../build-info/a354aaf7cb79bc63f750c0ca36db8cc9.json"
3
+ "buildInfo": "../../../build-info/333933d304b0c599711e6e34df65b848.json"
4
4
  }
@@ -1,4 +1,4 @@
1
1
  {
2
2
  "_format": "hh-sol-dbg-1",
3
- "buildInfo": "../../../build-info/a354aaf7cb79bc63f750c0ca36db8cc9.json"
3
+ "buildInfo": "../../../build-info/333933d304b0c599711e6e34df65b848.json"
4
4
  }
@@ -1,4 +1,4 @@
1
1
  {
2
2
  "_format": "hh-sol-dbg-1",
3
- "buildInfo": "../../../build-info/a354aaf7cb79bc63f750c0ca36db8cc9.json"
3
+ "buildInfo": "../../../build-info/333933d304b0c599711e6e34df65b848.json"
4
4
  }
@@ -1,4 +1,4 @@
1
1
  {
2
2
  "_format": "hh-sol-dbg-1",
3
- "buildInfo": "../../../build-info/a354aaf7cb79bc63f750c0ca36db8cc9.json"
3
+ "buildInfo": "../../../build-info/333933d304b0c599711e6e34df65b848.json"
4
4
  }
@@ -1,4 +1,4 @@
1
1
  {
2
2
  "_format": "hh-sol-dbg-1",
3
- "buildInfo": "../../../build-info/a354aaf7cb79bc63f750c0ca36db8cc9.json"
3
+ "buildInfo": "../../../build-info/333933d304b0c599711e6e34df65b848.json"
4
4
  }
@@ -1,4 +1,4 @@
1
1
  {
2
2
  "_format": "hh-sol-dbg-1",
3
- "buildInfo": "../../../build-info/a354aaf7cb79bc63f750c0ca36db8cc9.json"
3
+ "buildInfo": "../../../build-info/333933d304b0c599711e6e34df65b848.json"
4
4
  }
@@ -1,4 +1,4 @@
1
1
  {
2
2
  "_format": "hh-sol-dbg-1",
3
- "buildInfo": "../../../build-info/a354aaf7cb79bc63f750c0ca36db8cc9.json"
3
+ "buildInfo": "../../../build-info/333933d304b0c599711e6e34df65b848.json"
4
4
  }
@@ -1,4 +1,4 @@
1
1
  {
2
2
  "_format": "hh-sol-dbg-1",
3
- "buildInfo": "../../../build-info/a354aaf7cb79bc63f750c0ca36db8cc9.json"
3
+ "buildInfo": "../../../build-info/333933d304b0c599711e6e34df65b848.json"
4
4
  }
@@ -1,4 +1,4 @@
1
1
  {
2
2
  "_format": "hh-sol-dbg-1",
3
- "buildInfo": "../../../build-info/a354aaf7cb79bc63f750c0ca36db8cc9.json"
3
+ "buildInfo": "../../../build-info/333933d304b0c599711e6e34df65b848.json"
4
4
  }
@@ -1,4 +1,4 @@
1
1
  {
2
2
  "_format": "hh-sol-dbg-1",
3
- "buildInfo": "../../../build-info/a354aaf7cb79bc63f750c0ca36db8cc9.json"
3
+ "buildInfo": "../../../build-info/333933d304b0c599711e6e34df65b848.json"
4
4
  }
@@ -1,4 +1,4 @@
1
1
  {
2
2
  "_format": "hh-sol-dbg-1",
3
- "buildInfo": "../../../build-info/a354aaf7cb79bc63f750c0ca36db8cc9.json"
3
+ "buildInfo": "../../../build-info/333933d304b0c599711e6e34df65b848.json"
4
4
  }
@@ -1,4 +1,4 @@
1
1
  {
2
2
  "_format": "hh-sol-dbg-1",
3
- "buildInfo": "../../../build-info/a354aaf7cb79bc63f750c0ca36db8cc9.json"
3
+ "buildInfo": "../../../build-info/333933d304b0c599711e6e34df65b848.json"
4
4
  }
@@ -1,4 +1,4 @@
1
1
  {
2
2
  "_format": "hh-sol-dbg-1",
3
- "buildInfo": "../../../build-info/a354aaf7cb79bc63f750c0ca36db8cc9.json"
3
+ "buildInfo": "../../../build-info/333933d304b0c599711e6e34df65b848.json"
4
4
  }
@@ -1,4 +1,4 @@
1
1
  {
2
2
  "_format": "hh-sol-dbg-1",
3
- "buildInfo": "../../../build-info/a354aaf7cb79bc63f750c0ca36db8cc9.json"
3
+ "buildInfo": "../../../build-info/333933d304b0c599711e6e34df65b848.json"
4
4
  }
@@ -1,4 +1,4 @@
1
1
  {
2
2
  "_format": "hh-sol-dbg-1",
3
- "buildInfo": "../../../build-info/a354aaf7cb79bc63f750c0ca36db8cc9.json"
3
+ "buildInfo": "../../../build-info/333933d304b0c599711e6e34df65b848.json"
4
4
  }
@@ -1,4 +1,4 @@
1
1
  {
2
2
  "_format": "hh-sol-dbg-1",
3
- "buildInfo": "../../../build-info/a354aaf7cb79bc63f750c0ca36db8cc9.json"
3
+ "buildInfo": "../../../build-info/333933d304b0c599711e6e34df65b848.json"
4
4
  }
@@ -1,4 +1,4 @@
1
1
  {
2
2
  "_format": "hh-sol-dbg-1",
3
- "buildInfo": "../../../build-info/a354aaf7cb79bc63f750c0ca36db8cc9.json"
3
+ "buildInfo": "../../../build-info/333933d304b0c599711e6e34df65b848.json"
4
4
  }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@arbitrum/nitro-contracts",
3
- "version": "3.0.0-alpha.2",
3
+ "version": "3.0.0-beta.0",
4
4
  "description": "Layer 2 precompiles and rollup for Arbitrum Nitro",
5
5
  "author": "Offchain Labs, Inc.",
6
6
  "license": "BUSL-1.1",
@@ -52,7 +52,7 @@
52
52
  "create-rollup-testnode": "hardhat run scripts/local-deployment/deployCreatorAndCreateRollup.ts",
53
53
  "script:bold-prepare": "hardhat run ./scripts/prepareBoldUpgrade.ts",
54
54
  "script:bold-populate-lookup": "hardhat run ./scripts/populateLookup.ts",
55
- "script:bold-local-execute": "hardhat run ./scripts/testLocalExecuteBoldUpgrade.ts",
55
+ "script:bold-local-execute": "hardhat run ./scripts/executeBoldUpgrade.ts",
56
56
  "deploy-cachemanager-testnode": "hardhat run scripts/local-deployment/deployCacheManager.ts"
57
57
  },
58
58
  "dependencies": {
@@ -64,7 +64,6 @@
64
64
  },
65
65
  "private": false,
66
66
  "devDependencies": {
67
- "@arbitrum/nitro-contracts-2.0.0": "npm:@arbitrum/nitro-contracts@2.0.0-beta.0",
68
67
  "@arbitrum/sdk": "^3.4.1",
69
68
  "@ethersproject/providers": "^5.7.2",
70
69
  "@nomicfoundation/hardhat-verify": "^2.0.9",
@@ -121,8 +121,8 @@ abstract contract AbsBridge is Initializable, DelegateCallAware, IBridge {
121
121
  }
122
122
  sequencerReportedSubMessageCount = newMessageCount;
123
123
  seqMessageIndex = sequencerInboxAccs.length;
124
- if (sequencerInboxAccs.length > 0) {
125
- beforeAcc = sequencerInboxAccs[sequencerInboxAccs.length - 1];
124
+ if (seqMessageIndex > 0) {
125
+ beforeAcc = sequencerInboxAccs[seqMessageIndex - 1];
126
126
  }
127
127
  if (afterDelayedMessagesRead > 0) {
128
128
  delayedAcc = delayedInboxAccs[afterDelayedMessagesRead - 1];
@@ -78,7 +78,9 @@ contract ERC20Bridge is AbsBridge, IERC20Bridge {
78
78
  uint256 amount
79
79
  ) internal override {
80
80
  // fetch native token from Inbox
81
- IERC20(nativeToken).safeTransferFrom(msg.sender, address(this), amount);
81
+ if (amount > 0) {
82
+ IERC20(nativeToken).safeTransferFrom(msg.sender, address(this), amount);
83
+ }
82
84
  }
83
85
 
84
86
  function _executeLowLevelCall(
@@ -95,7 +97,9 @@ contract ERC20Bridge is AbsBridge, IERC20Bridge {
95
97
  }
96
98
 
97
99
  // first release native token
98
- IERC20(_nativeToken).safeTransfer(to, value);
100
+ if (value > 0) {
101
+ IERC20(_nativeToken).safeTransfer(to, value);
102
+ }
99
103
  success = true;
100
104
 
101
105
  // if there's data do additional contract call. Make sure that call is not used to
@@ -0,0 +1,137 @@
1
+ // SPDX-License-Identifier: BUSL-1.1
2
+ pragma solidity ^0.8.0;
3
+
4
+ import "./Errors.sol";
5
+
6
+ /// @notice Account balance and the round at which it can be withdrawn
7
+ /// Balances are withdrawn as part of a two step process - initiation and finalization
8
+ /// This is so that a bidder can't withdraw their balance after making a bid
9
+ /// Instead, if they initiate their withdrawal in round r, they must wait until the beginning of
10
+ /// round r+2 before they can withdraw the balance. In the mean time their balance can be used to
11
+ /// resolve an auction if it is part of a valid bid, however the auctioneer may choose to
12
+ /// reject bids from accounts with an initiated balance withdrawal
13
+ struct Balance {
14
+ /// @notice The amount of balance in the account
15
+ uint256 balance;
16
+ /// @notice The round at which all of the balance can be withdrawn
17
+ /// Is set to uint64.max when no withdrawal has been intiated
18
+ uint64 withdrawalRound;
19
+ }
20
+
21
+ /// @notice Balance mutation and view functionality. This is in it's own library so that we can
22
+ // reason about and test how the different ways balance mutations interact with each other
23
+ library BalanceLib {
24
+ /// @notice The available balance at the supplied round. Returns 0 if a withdrawal has been initiated and has
25
+ /// past the withdrawal round.
26
+ /// @param bal The balance to query
27
+ /// @param round The round to check the balance in
28
+ function balanceAtRound(Balance storage bal, uint64 round) internal view returns (uint256) {
29
+ return bal.balance - withdrawableBalanceAtRound(bal, round);
30
+ }
31
+
32
+ /// @notice The withdrawable balance at the supplied round. If a withdrawal has been initiated, the
33
+ /// supplied round is past the withdrawal round and has yet to be finalized, then the balance
34
+ /// of this account is returned. Otherwise 0.
35
+ /// @param bal The balance to query
36
+ /// @param round The round to check the withdrawable balance in
37
+ function withdrawableBalanceAtRound(
38
+ Balance storage bal,
39
+ uint64 round
40
+ ) internal view returns (uint256) {
41
+ return round >= bal.withdrawalRound ? bal.balance : 0;
42
+ }
43
+
44
+ /// @notice Increase a balance by a specified amount
45
+ /// Will cancel a withdrawal if called after a withdrawal has been initiated
46
+ /// @param bal The balance info
47
+ /// @param amount The amount to increase the balance by
48
+ function increase(Balance storage bal, uint256 amount) internal {
49
+ // no point increasing if no amount is being supplied
50
+ if (amount == 0) {
51
+ revert ZeroAmount();
52
+ }
53
+
54
+ // if the balance have never been used before then balance and withdrawal round will be 0
55
+ // in this case we initialize the balance by setting the withdrawal round into the future
56
+ // if a withdrawal for the balance has been initialized (withdrawal round != 0 and != max)
57
+ // then we cancel that initiated withdrawal. We do this since if a increase is being made that
58
+ // means a user wishes to increase their balance, not withdraw it.
59
+ if (bal.withdrawalRound != type(uint64).max) {
60
+ bal.withdrawalRound = type(uint64).max;
61
+ }
62
+
63
+ bal.balance += amount;
64
+ }
65
+
66
+ /// @notice Reduce a balance immediately. The balance must already be greater than the amount
67
+ /// and a withdrawal has been initiated for this balance it must be occuring in
68
+ /// a round after the supplied round. Withdrawals earlier than that will block this reduce.
69
+ /// @param bal The balance to reduce
70
+ /// @param amount The amount to reduce by
71
+ /// @param round The round to check withdrawals against. A withdrawal after this round will be ignored
72
+ /// and the balance reduced anyway, withdrawals before or on this round will be respected
73
+ /// and the reduce will revert
74
+ function reduce(Balance storage bal, uint256 amount, uint64 round) internal {
75
+ uint256 balRnd = balanceAtRound(bal, round);
76
+ // we add a zero check since it's possible for the amount to be zero
77
+ // but even in that case the user must have some balance
78
+ // to enforce that parties that havent done the deposit step cannot take part in the auction
79
+ if (balRnd == 0 || balRnd < amount) {
80
+ revert InsufficientBalance(amount, balRnd);
81
+ }
82
+
83
+ bal.balance -= amount;
84
+ }
85
+
86
+ /// @notice Initiate a withdrawal. A withdrawal is a reduction of the full amount.
87
+ /// Withdrawal is a two step process initialization and finalization. Finalization is only
88
+ /// after the supplied round parameter. The expected usage is to specify a round that is 2
89
+ /// in the future to ensure that the balance cannot be reduced unexpectedly without notice.
90
+ // An external observer can see that a withdrawal has been initiated, and will therefore
91
+ /// be able to take it into account and not rely on the balance being there.
92
+ /// In the case of the auction contract this allows the bidders to withdraw their
93
+ /// balance, but an auctioneer will know not to accept there bids in the mean time
94
+ /// @param bal The balance to iniate a reduction on
95
+ /// @param round The round that the withdrawal will be available in. Cannot be specified as the max round
96
+ function initiateWithdrawal(Balance storage bal, uint64 round) internal {
97
+ if (bal.balance == 0) {
98
+ revert ZeroAmount();
99
+ }
100
+
101
+ if (round == type(uint64).max) {
102
+ // we use max round to specify that a withdrawal is not taking place
103
+ // so we dont allow it as a withdrawal round. In practice max round should never
104
+ // be reached so this isnt an issue, we just put this here as an additional
105
+ // safety check
106
+ revert WithdrawalMaxRound();
107
+ }
108
+
109
+ if (bal.withdrawalRound != type(uint64).max) {
110
+ revert WithdrawalInProgress();
111
+ }
112
+
113
+ bal.withdrawalRound = round;
114
+ }
115
+
116
+ /// @notice Finalize an already initialized withdrawal. Reduces the balance to 0.
117
+ /// Can only be called two round after the withdrawal was initiated.
118
+ /// @param bal The balance to finalize
119
+ /// @param round The round to check whether withdrawal is valid in. Usually the current round. Cannot be max round.
120
+ function finalizeWithdrawal(Balance storage bal, uint64 round) internal returns (uint256) {
121
+ if (round == type(uint64).max) {
122
+ // we use max round to specify that a withdrawal is not taking place
123
+ // so we dont allow it as a withdrawal round. In practice max round should never
124
+ // be reached so this isnt an issue, we just put this here as an additional
125
+ // safety check
126
+ revert WithdrawalMaxRound();
127
+ }
128
+
129
+ uint256 withdrawableBalance = withdrawableBalanceAtRound(bal, round);
130
+ if (withdrawableBalance == 0) {
131
+ revert NothingToWithdraw();
132
+ }
133
+
134
+ bal.balance = 0;
135
+ return withdrawableBalance;
136
+ }
137
+ }
@@ -0,0 +1,26 @@
1
+ // SPDX-License-Identifier: BUSL-1.1
2
+ pragma solidity ^0.8.0;
3
+
4
+ import {ERC20BurnableUpgradeable} from
5
+ "@openzeppelin/contracts-upgradeable/token/ERC20/extensions/ERC20BurnableUpgradeable.sol";
6
+ import "./Errors.sol";
7
+
8
+ /// @notice A simple contract that can burn any tokens that are transferred to it
9
+ /// Token must support the ERC20BurnableUpgradeable.burn(uint256) interface
10
+ contract Burner {
11
+ ERC20BurnableUpgradeable public immutable token;
12
+
13
+ constructor(
14
+ address _token
15
+ ) {
16
+ if (_token == address(0)) {
17
+ revert ZeroAddress();
18
+ }
19
+ token = ERC20BurnableUpgradeable(_token);
20
+ }
21
+
22
+ /// @notice Can be called at any time by anyone to burn any tokens held by this burner
23
+ function burn() external {
24
+ token.burn(token.balanceOf(address(this)));
25
+ }
26
+ }
@@ -0,0 +1,70 @@
1
+ // SPDX-License-Identifier: BUSL-1.1
2
+ pragma solidity ^0.8.0;
3
+
4
+ import "./Errors.sol";
5
+
6
+ /// @notice When an auction round is resolved a new express lane controller is chosen for that round
7
+ /// An elc round stores that selected express lane controller against the round number
8
+ struct ELCRound {
9
+ /// @notice The express lane controller for this round
10
+ address expressLaneController;
11
+ /// @notice The round number
12
+ uint64 round;
13
+ }
14
+
15
+ /// @notice Latest resolved express lane controller auction rounds
16
+ // Only the two latest resolved rounds are stored
17
+ library LatestELCRoundsLib {
18
+ /// @notice The last resolved express lane controller round, and its index in the array
19
+ /// @param rounds The stored resolved rounds
20
+ /// @return The last resolved elc round
21
+ /// @return The index of that last resolved round within the supplied array
22
+ function latestELCRound(
23
+ ELCRound[2] storage rounds
24
+ ) internal view returns (ELCRound storage, uint8) {
25
+ ELCRound storage latestRound = rounds[0];
26
+ uint8 index = 0;
27
+ if (latestRound.round < rounds[1].round) {
28
+ latestRound = rounds[1];
29
+ index = 1;
30
+ }
31
+ return (latestRound, index);
32
+ }
33
+
34
+ /// @notice Finds the elc round that matches the supplied round. Reverts if no matching round found.
35
+ /// @param latestResolvedRounds The resolved elc rounds
36
+ /// @param round The round number to find a resolved round for
37
+ function resolvedRound(
38
+ ELCRound[2] storage latestResolvedRounds,
39
+ uint64 round
40
+ ) internal view returns (ELCRound storage) {
41
+ if (latestResolvedRounds[0].round == round) {
42
+ return latestResolvedRounds[0];
43
+ } else if (latestResolvedRounds[1].round == round) {
44
+ return latestResolvedRounds[1];
45
+ } else {
46
+ // not resolved or too old
47
+ revert RoundNotResolved(round);
48
+ }
49
+ }
50
+
51
+ /// @notice Set a resolved round into the array, overwriting the oldest resolved round
52
+ /// in the array.
53
+ /// @param latestResolvedRounds The resolved rounds aray
54
+ /// @param round The round to resolve
55
+ /// @param expressLaneController The new express lane controller for that round
56
+ function setResolvedRound(
57
+ ELCRound[2] storage latestResolvedRounds,
58
+ uint64 round,
59
+ address expressLaneController
60
+ ) internal {
61
+ (ELCRound storage lastRoundResolved, uint8 index) = latestELCRound(latestResolvedRounds);
62
+ if (lastRoundResolved.round >= round) {
63
+ revert RoundAlreadyResolved(round);
64
+ }
65
+
66
+ // dont replace the newest round, use the oldest slot
67
+ uint8 oldestRoundIndex = index ^ 1;
68
+ latestResolvedRounds[oldestRoundIndex] = ELCRound(expressLaneController, round);
69
+ }
70
+ }
@@ -0,0 +1,31 @@
1
+ // SPDX-License-Identifier: BUSL-1.1
2
+ pragma solidity ^0.8.0;
3
+
4
+ error InsufficientBalance(uint256 amountRequested, uint256 balance);
5
+ error InsufficientBalanceAcc(address account, uint256 amountRequested, uint256 balance);
6
+ error RoundDurationTooShort();
7
+ error NothingToWithdraw();
8
+ error ZeroAmount();
9
+ error ZeroBiddingToken();
10
+ error WithdrawalInProgress();
11
+ error WithdrawalMaxRound();
12
+ error RoundAlreadyResolved(uint64 round);
13
+ error SameBidder();
14
+ error BidsWrongOrder();
15
+ error TieBidsWrongOrder();
16
+ error AuctionNotClosed();
17
+ error ReservePriceTooLow(uint256 reservePrice, uint256 minReservePrice);
18
+ error ReservePriceNotMet(uint256 bidAmount, uint256 reservePrice);
19
+ error ReserveBlackout();
20
+ error RoundTooOld(uint64 round, uint64 currentRound);
21
+ error RoundNotResolved(uint64 round);
22
+ error NotExpressLaneController(uint64 round, address controller, address sender);
23
+ error FixedTransferor(uint64 fixedUntilRound);
24
+ error NotTransferor(uint64 round, address expectedTransferor, address msgSender);
25
+ error InvalidNewRound(uint64 currentRound, uint64 newRound);
26
+ error InvalidNewStart(uint64 currentStart, uint64 newStart);
27
+ error RoundTooLong(uint64 roundDurationSeconds);
28
+ error ZeroAuctionClosingSeconds();
29
+ error NegativeOffset();
30
+ error NegativeRoundStart(int64 roundStart);
31
+ error ZeroAddress();