@artblocks/contracts 1.0.2 → 1.0.3

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 (194) hide show
  1. package/README.md +30 -2
  2. package/artifacts/contracts/AdminACLV0.sol/AdminACLV0.json +2 -2
  3. package/artifacts/contracts/AdminACLV1.sol/AdminACLV1.json +2 -2
  4. package/artifacts/contracts/DependencyRegistryV0.sol/DependencyRegistryV0.json +22 -4
  5. package/artifacts/contracts/GenArt721CoreV3.sol/GenArt721CoreV3.json +42 -5
  6. package/artifacts/contracts/archive/minter-suite/Minters/MinterDAExp/MinterDAExpV2.sol/MinterDAExpV2.json +2 -2
  7. package/artifacts/contracts/archive/minter-suite/Minters/MinterDAExp/MinterDAExpV3.sol/MinterDAExpV3.json +2 -2
  8. package/artifacts/contracts/archive/minter-suite/Minters/MinterDAExpSettlement/MinterDAExpSettlementV0.sol/MinterDAExpSettlementV0.json +2 -2
  9. package/artifacts/contracts/archive/minter-suite/Minters/MinterDAExpSettlement/MinterDAExpSettlementV1.sol/MinterDAExpSettlementV1.json +2 -2
  10. package/artifacts/contracts/archive/minter-suite/Minters/MinterDALin/MinterDALinV2.sol/MinterDALinV2.json +2 -2
  11. package/artifacts/contracts/archive/minter-suite/Minters/MinterDALin/MinterDALinV3.sol/MinterDALinV3.json +2 -2
  12. package/artifacts/contracts/archive/minter-suite/Minters/MinterHolder/MinterHolderV1.sol/MinterHolderV1.json +2 -2
  13. package/artifacts/contracts/archive/minter-suite/Minters/MinterHolder/MinterHolderV2.sol/MinterHolderV2.json +2 -2
  14. package/artifacts/contracts/archive/minter-suite/Minters/MinterHolder/MinterHolderV3.sol/MinterHolderV3.json +2 -2
  15. package/artifacts/contracts/archive/minter-suite/Minters/MinterMerkle/MinterMerkleV1.sol/MinterMerkleV1.json +2 -2
  16. package/artifacts/contracts/archive/minter-suite/Minters/MinterMerkle/MinterMerkleV2.sol/MinterMerkleV2.json +2 -2
  17. package/artifacts/contracts/archive/minter-suite/Minters/MinterMerkle/MinterMerkleV3.sol/MinterMerkleV3.json +2 -2
  18. package/artifacts/contracts/archive/minter-suite/Minters/MinterMerkle/MinterMerkleV4.sol/MinterMerkleV4.json +2 -2
  19. package/artifacts/contracts/archive/minter-suite/Minters/MinterSetPrice/MinterSetPriceV2.sol/MinterSetPriceV2.json +2 -2
  20. package/artifacts/contracts/archive/minter-suite/Minters/MinterSetPrice/MinterSetPriceV3.sol/MinterSetPriceV3.json +2 -2
  21. package/artifacts/contracts/archive/minter-suite/Minters/MinterSetPriceERC20/MinterSetPriceERC20V2.sol/MinterSetPriceERC20V2.json +2 -2
  22. package/artifacts/contracts/archive/minter-suite/Minters/MinterSetPriceERC20/MinterSetPriceERC20V3.sol/MinterSetPriceERC20V3.json +2 -2
  23. package/artifacts/contracts/engine/{GenArt721CoreV2_ENGINE_FLEX.sol → V2/GenArt721CoreV2_ENGINE_FLEX.sol}/GenArt721CoreV2_ENGINE_FLEX.json +3 -3
  24. package/artifacts/contracts/engine/{GenArt721CoreV2_PBAB.sol → V2/GenArt721CoreV2_PBAB.sol}/GenArt721CoreV2_PBAB.json +3 -3
  25. package/artifacts/contracts/engine/{GenArt721CoreV2_PRTNR.sol → V2/GenArt721CoreV2_PRTNR.sol}/GenArt721CoreV2_PRTNR.json +3 -3
  26. package/artifacts/contracts/engine/{GenArt721MinterBurner_PBAB.sol → V2/GenArt721MinterBurner_PBAB.sol}/GenArt721MinterBurner_PBAB.json +3 -3
  27. package/artifacts/contracts/engine/{GenArt721MinterDAExp_PBAB.sol → V2/GenArt721MinterDAExp_PBAB.sol}/GenArt721MinterDAExp_PBAB.json +3 -3
  28. package/artifacts/contracts/engine/{GenArt721Minter_PBAB.sol → V2/GenArt721Minter_PBAB.sol}/GenArt721Minter_PBAB.json +3 -3
  29. package/artifacts/contracts/engine/V3/GenArt721CoreV3_Engine.sol/GenArt721CoreV3_Engine.json +1960 -0
  30. package/artifacts/contracts/engine/V3/GenArt721CoreV3_Engine_Flex.sol/GenArt721CoreV3_Engine_Flex.json +2247 -0
  31. package/artifacts/contracts/engine/V3/forks/GenArt721CoreV3_Engine_Flex_PROOF.sol/GenArt721CoreV3_Engine_Flex_PROOF.json +2247 -0
  32. package/artifacts/contracts/engine/V3/forks/PROHIBITION/AdminACLV0_PROHIBITION.sol/AdminACLV0_PROHIBITION.json +401 -0
  33. package/artifacts/contracts/engine/V3/forks/PROHIBITION/GenArt721CoreV3_Engine_Flex_PROHIBITION.sol/GenArt721CoreV3_Engine_Flex_PROHIBITION.json +2281 -0
  34. package/artifacts/contracts/engine/V3/forks/PROHIBITION/interfaces/IAdminACLV0_PROHIBITION.sol/IAdminACLV0_PROHIBITION.json +359 -0
  35. package/artifacts/contracts/engine/V3/forks/PROHIBITION/interfaces/IGenArt721CoreContractV3_Engine_Flex_PROHIBITION.sol/IGenArt721CoreContractV3_Engine_Flex_PROHIBITION.json +1094 -0
  36. package/artifacts/contracts/engine-registry/CoreRegistryV1.sol/CoreRegistryV1.json +242 -0
  37. package/artifacts/contracts/engine-registry/EngineRegistryV0.sol/EngineRegistryV0.json +2 -2
  38. package/artifacts/contracts/explorations/GenArt721CoreV3_Explorations.sol/GenArt721CoreV3_Explorations.json +41 -4
  39. package/artifacts/contracts/interfaces/0.8.x/IBytecodeStorageReader.sol/IBytecodeStorageReader.json +111 -0
  40. package/artifacts/contracts/interfaces/0.8.x/ICoreRegistryV1.sol/ICoreRegistryV1.json +172 -0
  41. package/artifacts/contracts/interfaces/0.8.x/IFilteredMinterSEAV0.sol/IFilteredMinterSEAV0.json +55 -53
  42. package/artifacts/contracts/interfaces/0.8.x/IGenArt721CoreContractExposesHashSeed.sol/IGenArt721CoreContractExposesHashSeed.json +30 -0
  43. package/artifacts/contracts/interfaces/0.8.x/IGenArt721CoreContractV3.sol/IGenArt721CoreContractV3.json +13 -0
  44. package/artifacts/contracts/interfaces/0.8.x/IGenArt721CoreContractV3_Base.sol/IGenArt721CoreContractV3_Base.json +13 -0
  45. package/artifacts/contracts/interfaces/0.8.x/IGenArt721CoreContractV3_Engine.sol/IGenArt721CoreContractV3_Engine.json +7 -13
  46. package/artifacts/contracts/interfaces/0.8.x/IGenArt721CoreContractV3_Engine_Flex.sol/IGenArt721CoreContractV3_Engine_Flex.json +7 -13
  47. package/artifacts/contracts/interfaces/0.8.x/IMinterFilterV1.sol/IMinterFilterV1.json +429 -0
  48. package/artifacts/contracts/interfaces/0.8.x/IPseudorandomAtomic.sol/IPseudorandomAtomic.json +30 -0
  49. package/artifacts/contracts/interfaces/0.8.x/IRandomizer_V3CoreBase.sol/IRandomizer_V3CoreBase.json +24 -0
  50. package/artifacts/contracts/interfaces/0.8.x/ISharedRandomizerV0.sol/ISharedRandomizerV0.json +207 -0
  51. package/artifacts/contracts/libs/0.8.x/{BytecodeStorage.sol → BytecodeStorageV0.sol}/BytecodeStorage.json +3 -3
  52. package/artifacts/contracts/libs/0.8.x/BytecodeStorageV1.sol/BytecodeStorageReader.json +163 -0
  53. package/artifacts/contracts/libs/0.8.x/BytecodeStorageV1.sol/BytecodeStorageWriter.json +10 -0
  54. package/artifacts/contracts/libs/0.8.x/Bytes32Strings.sol/Bytes32Strings.json +2 -2
  55. package/artifacts/contracts/libs/0.8.x/ERC721_PackedHashSeed.sol/ERC721_PackedHashSeed.json +2 -2
  56. package/artifacts/contracts/libs/0.8.x/SSTORE2.sol/SSTORE2.json +10 -0
  57. package/artifacts/contracts/libs/integration-refs/delegation-registry/DelegationRegistry.sol/DelegationRegistry.json +2 -2
  58. package/artifacts/contracts/libs/integration-refs/gnosis-safe/GnosisSafeMock.sol/GnosisSafeMock.json +2 -2
  59. package/artifacts/contracts/libs/integration-refs/gnosis-safe/GnosisSafeProxyFactoryMock.sol/GnosisSafeProxyFactoryMock.json +2 -2
  60. package/artifacts/contracts/libs/integration-refs/gnosis-safe/MultiSendMock.sol/MultiSendMock.json +2 -2
  61. package/artifacts/contracts/libs/integration-refs/weth9/weth9.sol/WETH9_.json +2 -2
  62. package/artifacts/contracts/minter-suite/MinterFilter/MinterFilterV1.sol/MinterFilterV1.json +2 -2
  63. package/artifacts/contracts/minter-suite/MinterFilter/MinterFilterV2.sol/MinterFilterV2.json +692 -0
  64. package/artifacts/contracts/minter-suite/Minters/MinterDAExpSettlementV2.sol/MinterDAExpSettlementV2.json +2 -2
  65. package/artifacts/contracts/minter-suite/Minters/MinterDAExpV4.sol/MinterDAExpV4.json +2 -2
  66. package/artifacts/contracts/minter-suite/Minters/MinterDALinV4.sol/MinterDALinV4.json +2 -2
  67. package/artifacts/contracts/minter-suite/Minters/MinterHolderV4.sol/MinterHolderV4.json +2 -2
  68. package/artifacts/contracts/minter-suite/Minters/MinterMerkleV5.sol/MinterMerkleV5.json +2 -2
  69. package/artifacts/contracts/minter-suite/Minters/MinterPolyptychV0.sol/IGenArt721CoreContractV3WithRandomizer.json +10 -160
  70. package/artifacts/contracts/minter-suite/Minters/MinterPolyptychV0.sol/MinterPolyptychV0.json +2 -2
  71. package/artifacts/contracts/minter-suite/Minters/MinterSEAV0.sol/MinterSEAV0.json +59 -80
  72. package/artifacts/contracts/minter-suite/Minters/MinterSetPriceERC20V4.sol/MinterSetPriceERC20V4.json +2 -2
  73. package/artifacts/contracts/minter-suite/Minters/MinterSetPriceV4.sol/MinterSetPriceV4.json +2 -2
  74. package/artifacts/contracts/mock/{BytecodeTextCR_DMock.sol/BytecodeTextCR_DMock.json → BytecodeV0TextCR_DMock.sol/BytecodeV0TextCR_DMock.json} +4 -4
  75. package/artifacts/contracts/mock/BytecodeV1LibCallsMock.sol/BytecodeV1LibCallsMock.json +135 -0
  76. package/artifacts/contracts/mock/BytecodeV1TextCR_DMock.sol/BytecodeV1TextCR_DMock.json +301 -0
  77. package/artifacts/contracts/mock/DeadReceiverBidderMock.sol/DeadReceiverBidderMock.json +2 -2
  78. package/artifacts/contracts/mock/DeadReceiverMock.sol/DeadReceiverMock.json +2 -2
  79. package/artifacts/contracts/mock/DummySharedMinter.sol/DummySharedMinter.json +114 -0
  80. package/artifacts/contracts/mock/ERC20Mock.sol/ERC20Mock.json +2 -2
  81. package/artifacts/contracts/mock/GasLimitReceiverBidderMock.sol/GasLimitReceiverBidderMock.json +2 -2
  82. package/artifacts/contracts/mock/GasLimitReceiverMock.sol/GasLimitReceiverMock.json +2 -2
  83. package/artifacts/contracts/mock/GenArt721CoreV3_Engine_IncorrectCoreType.sol/GenArt721CoreV3_Engine_IncorrectCoreType.json +22 -4
  84. package/artifacts/contracts/mock/MockAdminACLV0.sol/MockAdminACLV0Events.json +2 -2
  85. package/artifacts/contracts/mock/MockAdminACLV0_PROHIBITION.sol/MockAdminACLV0Events_PROHIBITION.json +440 -0
  86. package/artifacts/contracts/mock/OriginRegisterMock.sol/OriginRegisterMock.json +39 -0
  87. package/artifacts/contracts/mock/RandomizerV2_NoAssignMock.sol/RandomizerV2_NoAssignMock.json +2 -2
  88. package/artifacts/contracts/mock/ReentrancyHolderMock.sol/ReentrancyHolderMock.json +2 -2
  89. package/artifacts/contracts/mock/ReentrancyMerkleMock.sol/ReentrancyMerkleMock.json +2 -2
  90. package/artifacts/contracts/mock/ReentrancyMock.sol/ReentrancyMock.json +2 -2
  91. package/artifacts/contracts/mock/ReentrancySEAMock.sol/ReentrancySEAAutoBidderMock.json +2 -2
  92. package/artifacts/contracts/mock/SSTORE2Mock.sol/SSTORE2Mock.json +118 -0
  93. package/artifacts/contracts/randomizer/{BasicRandomizer.sol → deprecated/BasicRandomizer.sol}/BasicRandomizer.json +3 -3
  94. package/artifacts/contracts/randomizer/{BasicRandomizerBase_v0_0_0.sol → deprecated/BasicRandomizerBase_v0_0_0.sol}/RandomizerBase.json +1 -1
  95. package/artifacts/contracts/randomizer/{PolyptychRandomizerV0.sol → deprecated/PolyptychRandomizerV0.sol}/BasicPolyptychRandomizerV0.json +3 -3
  96. package/artifacts/contracts/randomizer/{RandomizerV2.sol → deprecated/RandomizerV2.sol}/BasicRandomizerV2.json +3 -3
  97. package/artifacts/contracts/randomizer/primitive/PseudorandomAtomicBasic.sol/PseudorandomAtomic.json +30 -0
  98. package/artifacts/contracts/randomizer/shared/SharedRandomizerV0.sol/SharedRandomizerV0.json +231 -0
  99. package/artifacts/contracts/royalty-registry/GenArt721RoyaltyOverride.sol/GenArt721RoyaltyOverride.json +2 -2
  100. package/contracts/AdminACLV0.sol +1 -1
  101. package/contracts/AdminACLV1.sol +1 -1
  102. package/contracts/DependencyRegistryV0.sol +15 -28
  103. package/contracts/GenArt721CoreV3.sol +37 -34
  104. package/contracts/archive/minter-suite/Minters/MinterDAExp/MinterDAExpV2.sol +1 -1
  105. package/contracts/archive/minter-suite/Minters/MinterDAExp/MinterDAExpV3.sol +1 -1
  106. package/contracts/archive/minter-suite/Minters/MinterDAExpSettlement/MinterDAExpSettlementV0.sol +1 -1
  107. package/contracts/archive/minter-suite/Minters/MinterDAExpSettlement/MinterDAExpSettlementV1.sol +1 -1
  108. package/contracts/archive/minter-suite/Minters/MinterDALin/MinterDALinV2.sol +1 -1
  109. package/contracts/archive/minter-suite/Minters/MinterDALin/MinterDALinV3.sol +1 -1
  110. package/contracts/archive/minter-suite/Minters/MinterHolder/MinterHolderV1.sol +1 -1
  111. package/contracts/archive/minter-suite/Minters/MinterHolder/MinterHolderV2.sol +1 -1
  112. package/contracts/archive/minter-suite/Minters/MinterHolder/MinterHolderV3.sol +1 -1
  113. package/contracts/archive/minter-suite/Minters/MinterMerkle/MinterMerkleV1.sol +1 -1
  114. package/contracts/archive/minter-suite/Minters/MinterMerkle/MinterMerkleV2.sol +1 -1
  115. package/contracts/archive/minter-suite/Minters/MinterMerkle/MinterMerkleV3.sol +1 -1
  116. package/contracts/archive/minter-suite/Minters/MinterMerkle/MinterMerkleV4.sol +1 -1
  117. package/contracts/archive/minter-suite/Minters/MinterSetPrice/MinterSetPriceV2.sol +1 -1
  118. package/contracts/archive/minter-suite/Minters/MinterSetPrice/MinterSetPriceV3.sol +1 -1
  119. package/contracts/archive/minter-suite/Minters/MinterSetPriceERC20/MinterSetPriceERC20V2.sol +1 -1
  120. package/contracts/archive/minter-suite/Minters/MinterSetPriceERC20/MinterSetPriceERC20V3.sol +1 -1
  121. package/contracts/engine/{GenArt721CoreV2_ENGINE_FLEX.sol → V2/GenArt721CoreV2_ENGINE_FLEX.sol} +2 -2
  122. package/contracts/engine/{GenArt721CoreV2_PBAB.sol → V2/GenArt721CoreV2_PBAB.sol} +2 -2
  123. package/contracts/engine/{GenArt721CoreV2_PRTNR.sol → V2/GenArt721CoreV2_PRTNR.sol} +3 -3
  124. package/contracts/engine/{GenArt721MinterBurner_PBAB.sol → V2/GenArt721MinterBurner_PBAB.sol} +2 -2
  125. package/contracts/engine/{GenArt721MinterDAExp_PBAB.sol → V2/GenArt721MinterDAExp_PBAB.sol} +2 -2
  126. package/contracts/engine/{GenArt721Minter_PBAB.sol → V2/GenArt721Minter_PBAB.sol} +2 -2
  127. package/contracts/{GenArt721CoreV3_Engine.sol → engine/V3/GenArt721CoreV3_Engine.sol} +29 -20
  128. package/contracts/{GenArt721CoreV3_Engine_Flex.sol → engine/V3/GenArt721CoreV3_Engine_Flex.sol} +30 -21
  129. package/contracts/engine/V3/forks/GenArt721CoreV3_Engine_Flex_PROOF.sol +2293 -0
  130. package/contracts/engine/V3/forks/PROHIBITION/AdminACLV0_PROHIBITION.sol +281 -0
  131. package/contracts/engine/V3/forks/PROHIBITION/GenArt721CoreV3_Engine_Flex_PROHIBITION.sol +2354 -0
  132. package/contracts/engine/V3/forks/PROHIBITION/interfaces/IAdminACLV0_PROHIBITION.sol +123 -0
  133. package/contracts/engine/V3/forks/PROHIBITION/interfaces/IGenArt721CoreContractV3_Engine_Flex_PROHIBITION.sol +29 -0
  134. package/contracts/engine-registry/CoreRegistryV1.sol +254 -0
  135. package/contracts/engine-registry/EngineRegistryV0.sol +1 -1
  136. package/contracts/explorations/GenArt721CoreV3_Explorations.sol +34 -31
  137. package/contracts/interfaces/0.8.x/IBytecodeStorageReader.sol +62 -0
  138. package/contracts/interfaces/0.8.x/ICoreRegistryV1.sol +27 -0
  139. package/contracts/interfaces/0.8.x/IDelegationRegistry.sol +1 -1
  140. package/contracts/interfaces/0.8.x/IDependencyRegistryCompatibleV0.sol +1 -1
  141. package/contracts/interfaces/0.8.x/IDependencyRegistryV0.sol +1 -1
  142. package/contracts/interfaces/0.8.x/IEngineRegistryV0.sol +1 -1
  143. package/contracts/interfaces/0.8.x/IFilteredMinterSEAV0.sol +34 -15
  144. package/contracts/interfaces/0.8.x/IGenArt721CoreContractExposesHashSeed.sol +11 -0
  145. package/contracts/interfaces/0.8.x/IGenArt721CoreContractV3_Base.sol +3 -0
  146. package/contracts/interfaces/0.8.x/IGenArt721CoreContractV3_Engine.sol +0 -5
  147. package/contracts/interfaces/0.8.x/IMinterFilterV1.sol +158 -0
  148. package/contracts/interfaces/0.8.x/IPseudorandomAtomic.sol +16 -0
  149. package/contracts/interfaces/0.8.x/IRandomizerPolyptychV0.sol +1 -1
  150. package/contracts/interfaces/0.8.x/IRandomizerV2.sol +2 -5
  151. package/contracts/interfaces/0.8.x/IRandomizer_V3CoreBase.sol +10 -0
  152. package/contracts/interfaces/0.8.x/ISharedRandomizerV0.sol +105 -0
  153. package/contracts/libs/0.8.x/BytecodeStorageV1.sol +399 -0
  154. package/contracts/libs/0.8.x/SSTORE2.sol +109 -0
  155. package/contracts/libs/integration-refs/delegation-registry/DelegationRegistry.sol +1 -1
  156. package/contracts/libs/integration-refs/weth9/weth9.sol +2 -0
  157. package/contracts/minter-suite/MinterFilter/MinterFilterV1.sol +1 -1
  158. package/contracts/minter-suite/MinterFilter/MinterFilterV2.sol +756 -0
  159. package/contracts/minter-suite/Minters/MinterDAExpSettlementV2.sol +1 -1
  160. package/contracts/minter-suite/Minters/MinterDAExpV4.sol +1 -1
  161. package/contracts/minter-suite/Minters/MinterDALinV4.sol +1 -1
  162. package/contracts/minter-suite/Minters/MinterHolderV4.sol +1 -1
  163. package/contracts/minter-suite/Minters/MinterMerkleV5.sol +1 -1
  164. package/contracts/minter-suite/Minters/MinterPolyptychV0.sol +14 -13
  165. package/contracts/minter-suite/Minters/MinterSEAV0.sol +232 -183
  166. package/contracts/minter-suite/Minters/MinterSetPriceERC20V4.sol +1 -1
  167. package/contracts/minter-suite/Minters/MinterSetPriceV4.sol +1 -1
  168. package/contracts/mock/{BytecodeTextCR_DMock.sol → BytecodeV0TextCR_DMock.sol} +5 -5
  169. package/contracts/mock/BytecodeV1LibCallsMock.sol +114 -0
  170. package/contracts/mock/BytecodeV1TextCR_DMock.sol +233 -0
  171. package/contracts/mock/DeadReceiverBidderMock.sol +1 -1
  172. package/contracts/mock/DeadReceiverMock.sol +1 -1
  173. package/contracts/mock/DummySharedMinter.sol +75 -0
  174. package/contracts/mock/GasLimitReceiverBidderMock.sol +1 -1
  175. package/contracts/mock/GasLimitReceiverMock.sol +1 -1
  176. package/contracts/mock/GenArt721CoreV3_Engine_IncorrectCoreType.sol +14 -27
  177. package/contracts/mock/MockAdminACLV0.sol +1 -1
  178. package/contracts/mock/MockAdminACLV0_PROHIBITION.sol +207 -0
  179. package/contracts/mock/OriginRegisterMock.sol +27 -0
  180. package/contracts/mock/RandomizerV2_NoAssignMock.sol +2 -2
  181. package/contracts/mock/SSTORE2Mock.sol +93 -0
  182. package/contracts/randomizer/{BasicRandomizer.sol → deprecated/BasicRandomizer.sol} +1 -1
  183. package/contracts/randomizer/{BasicRandomizerBase_v0_0_0.sol → deprecated/BasicRandomizerBase_v0_0_0.sol} +1 -1
  184. package/contracts/randomizer/{PolyptychRandomizerV0.sol → deprecated/PolyptychRandomizerV0.sol} +3 -3
  185. package/contracts/randomizer/{RandomizerV2.sol → deprecated/RandomizerV2.sol} +3 -3
  186. package/contracts/randomizer/primitive/PseudorandomAtomicBasic.sol +30 -0
  187. package/contracts/randomizer/shared/SharedRandomizerV0.sol +245 -0
  188. package/package.json +23 -30
  189. package/.env.example +0 -17
  190. package/artifacts/contracts/GenArt721CoreV3_Engine.sol/GenArt721CoreV3_Engine.json +0 -1942
  191. package/artifacts/contracts/GenArt721CoreV3_Engine_Flex.sol/GenArt721CoreV3_Engine_Flex.json +0 -2229
  192. package/artifacts/contracts/engine-registry/future/EngineRegistryV1.sol/EngineRegistryV1.json +0 -109
  193. package/contracts/engine-registry/future/EngineRegistryV1.sol +0 -86
  194. /package/contracts/libs/0.8.x/{BytecodeStorage.sol → BytecodeStorageV0.sol} +0 -0
@@ -1,5 +1,5 @@
1
1
  // SPDX-License-Identifier: LGPL-3.0-only
2
- pragma solidity 0.8.17;
2
+ pragma solidity 0.8.19;
3
3
 
4
4
  // Created By: Art Blocks Inc.
5
5
 
@@ -13,7 +13,7 @@ import "@openzeppelin-4.8/contracts-upgradeable/access/OwnableUpgradeable.sol";
13
13
  import "@openzeppelin-4.8/contracts-upgradeable/proxy/utils/Initializable.sol";
14
14
  import "@openzeppelin-4.5/contracts/utils/math/SafeCast.sol";
15
15
 
16
- import "./libs/0.8.x/BytecodeStorage.sol";
16
+ import "./libs/0.8.x/BytecodeStorageV1.sol";
17
17
  import "./libs/0.8.x/Bytes32Strings.sol";
18
18
 
19
19
  /**
@@ -33,8 +33,7 @@ contract DependencyRegistryV0 is
33
33
  OwnableUpgradeable,
34
34
  IDependencyRegistryV0
35
35
  {
36
- using BytecodeStorage for string;
37
- using BytecodeStorage for address;
36
+ using BytecodeStorageWriter for string;
38
37
  using Bytes32Strings for bytes32;
39
38
  using Strings for uint256;
40
39
  using EnumerableSet for EnumerableSet.Bytes32Set;
@@ -211,16 +210,6 @@ contract DependencyRegistryV0 is
211
210
  _scriptId < dependencyType.scriptCount,
212
211
  "scriptId out of range"
213
212
  );
214
- // purge old contract bytecode contract from the blockchain state
215
- // note: Although this does reduce usage of Ethereum state, it does not
216
- // reduce the gas costs of removal transactions. We believe this is the
217
- // best behavior at the time of writing, and do not expect this to
218
- // result in any breaking changes in the future. All current proposals
219
- // to change the self-destruct opcode are backwards compatible, but may
220
- // result in not removing the bytecode from the blockchain state. This
221
- // implementation is compatible with that architecture, as it does not
222
- // rely on the bytecode being removed from the blockchain state.
223
- dependencyType.scriptBytecodeAddresses[_scriptId].purgeBytecode();
224
213
  // store script in contract bytecode, replacing reference address from
225
214
  // the contract that no longer exists with the newly created one
226
215
  dependencyType.scriptBytecodeAddresses[_scriptId] = _script
@@ -238,19 +227,7 @@ contract DependencyRegistryV0 is
238
227
  _onlyExistingDependencyType(_dependencyType);
239
228
  Dependency storage dependency = dependencyDetails[_dependencyType];
240
229
  require(dependency.scriptCount > 0, "there are no scripts to remove");
241
- // purge old contract bytecode contract from the blockchain state
242
- // note: Although this does reduce usage of Ethereum state, it does not
243
- // reduce the gas costs of removal transactions. We believe this is the
244
- // best behavior at the time of writing, and do not expect this to
245
- // result in any breaking changes in the future. All current proposals
246
- // to change the self-destruct opcode are backwards compatible, but may
247
- // result in not removing the bytecode from the blockchain state. This
248
- // implementation is compatible with that architecture, as it does not
249
- // rely on the bytecode being removed from the blockchain state.
250
- dependency
251
- .scriptBytecodeAddresses[dependency.scriptCount - 1]
252
- .purgeBytecode();
253
- // delete reference to contract address that no longer exists
230
+ // delete reference to old storage contract address
254
231
  delete dependency.scriptBytecodeAddresses[dependency.scriptCount - 1];
255
232
  unchecked {
256
233
  dependency.scriptCount = dependency.scriptCount - 1;
@@ -757,7 +734,7 @@ contract DependencyRegistryV0 is
757
734
  return "";
758
735
  }
759
736
 
760
- return dependency.scriptBytecodeAddresses[_index].readFromBytecode();
737
+ return _readFromBytecode(dependency.scriptBytecodeAddresses[_index]);
761
738
  }
762
739
 
763
740
  /**
@@ -851,4 +828,14 @@ contract DependencyRegistryV0 is
851
828
  OwnableUpgradeable._transferOwnership(newOwner);
852
829
  adminACLContract = IAdminACLV0(newOwner);
853
830
  }
831
+
832
+ /**
833
+ * Helper for calling `BytecodeStorageReader` external library reader method,
834
+ * added for bytecode size reduction purposes.
835
+ */
836
+ function _readFromBytecode(
837
+ address _address
838
+ ) internal view returns (string memory) {
839
+ return BytecodeStorageReader.readFromBytecode(_address);
840
+ }
854
841
  }
@@ -1,17 +1,18 @@
1
1
  // SPDX-License-Identifier: LGPL-3.0-only
2
- pragma solidity 0.8.17;
2
+ pragma solidity 0.8.19;
3
3
 
4
4
  // Created By: Art Blocks Inc.
5
5
 
6
- import "./interfaces/0.8.x/IRandomizerV2.sol";
6
+ import "./interfaces/0.8.x/IRandomizer_V3CoreBase.sol";
7
7
  import "./interfaces/0.8.x/IAdminACLV0.sol";
8
8
  import "./interfaces/0.8.x/IGenArt721CoreContractV3.sol";
9
+ import "./interfaces/0.8.x/IGenArt721CoreContractExposesHashSeed.sol";
9
10
  import "./interfaces/0.8.x/IManifold.sol";
10
11
 
11
12
  import "@openzeppelin-4.7/contracts/utils/Strings.sol";
12
13
  import "@openzeppelin-4.7/contracts/access/Ownable.sol";
13
14
  import "./libs/0.8.x/ERC721_PackedHashSeed.sol";
14
- import "./libs/0.8.x/BytecodeStorage.sol";
15
+ import "./libs/0.8.x/BytecodeStorageV1.sol";
15
16
  import "./libs/0.8.x/Bytes32Strings.sol";
16
17
 
17
18
  /**
@@ -89,10 +90,10 @@ import "./libs/0.8.x/Bytes32Strings.sol";
89
90
  contract GenArt721CoreV3 is
90
91
  ERC721_PackedHashSeed,
91
92
  Ownable,
92
- IGenArt721CoreContractV3
93
+ IGenArt721CoreContractV3,
94
+ IGenArt721CoreContractExposesHashSeed
93
95
  {
94
- using BytecodeStorage for string;
95
- using BytecodeStorage for address;
96
+ using BytecodeStorageWriter for string;
96
97
  using Bytes32Strings for bytes32;
97
98
  using Strings for uint256;
98
99
  uint256 constant ONE_HUNDRED = 100;
@@ -166,7 +167,7 @@ contract GenArt721CoreV3 is
166
167
  address public artblocksDependencyRegistryAddress;
167
168
 
168
169
  /// current randomizer contract
169
- IRandomizerV2 public randomizerContract;
170
+ IRandomizer_V3CoreBase public randomizerContract;
170
171
 
171
172
  /// append-only array of all randomizer contract addresses ever used by
172
173
  /// this contract
@@ -240,7 +241,7 @@ contract GenArt721CoreV3 is
240
241
  bool public newProjectsForbidden;
241
242
 
242
243
  /// version & type of this core contract
243
- string public constant coreVersion = "v3.0.2";
244
+ string public constant coreVersion = "v3.2.0";
244
245
  string public constant coreType = "GenArt721CoreV3";
245
246
 
246
247
  /// default base URI to initialize all new project projectBaseURI values to
@@ -1070,18 +1071,8 @@ contract GenArt721CoreV3 is
1070
1071
  _onlyNonEmptyString(_script);
1071
1072
  Project storage project = projects[_projectId];
1072
1073
  require(_scriptId < project.scriptCount, "scriptId out of range");
1073
- // purge old contract bytecode contract from the blockchain state
1074
- // note: Although this does reduce usage of Ethereum state, it does not
1075
- // reduce the gas costs of removal transactions. We believe this is the
1076
- // best behavior at the time of writing, and do not expect this to
1077
- // result in any breaking changes in the future. All current proposals
1078
- // to change the self-destruct opcode are backwards compatible, but may
1079
- // result in not removing the bytecode from the blockchain state. This
1080
- // implementation is compatible with that architecture, as it does not
1081
- // rely on the bytecode being removed from the blockchain state.
1082
- project.scriptBytecodeAddresses[_scriptId].purgeBytecode();
1083
1074
  // store script in contract bytecode, replacing reference address from
1084
- // the contract that no longer exists with the newly created one
1075
+ // the old storage contract with the newly created one
1085
1076
  project.scriptBytecodeAddresses[_scriptId] = _script.writeToBytecode();
1086
1077
  emit ProjectUpdated(_projectId, FIELD_PROJECT_SCRIPT);
1087
1078
  }
@@ -1098,19 +1089,7 @@ contract GenArt721CoreV3 is
1098
1089
  );
1099
1090
  Project storage project = projects[_projectId];
1100
1091
  require(project.scriptCount > 0, "there are no scripts to remove");
1101
- // purge old contract bytecode contract from the blockchain state
1102
- // note: Although this does reduce usage of Ethereum state, it does not
1103
- // reduce the gas costs of removal transactions. We believe this is the
1104
- // best behavior at the time of writing, and do not expect this to
1105
- // result in any breaking changes in the future. All current proposals
1106
- // to change the self-destruct opcode are backwards compatible, but may
1107
- // result in not removing the bytecode from the blockchain state. This
1108
- // implementation is compatible with that architecture, as it does not
1109
- // rely on the bytecode being removed from the blockchain state.
1110
- project
1111
- .scriptBytecodeAddresses[project.scriptCount - 1]
1112
- .purgeBytecode();
1113
- // delete reference to contract address that no longer exists
1092
+ // delete reference to old storage contract address
1114
1093
  delete project.scriptBytecodeAddresses[project.scriptCount - 1];
1115
1094
  unchecked {
1116
1095
  project.scriptCount = project.scriptCount - 1;
@@ -1247,6 +1226,20 @@ contract GenArt721CoreV3 is
1247
1226
  return keccak256(abi.encode(_hashSeed));
1248
1227
  }
1249
1228
 
1229
+ /**
1230
+ * @notice Returns token hash **seed** for token ID `_tokenId`. Returns
1231
+ * null if hash seed has not been set. The hash seed id the bytes12 value
1232
+ * which is hashed to produce the token hash.
1233
+ * @param _tokenId Token ID to be queried.
1234
+ * @return bytes12 Token hash seed.
1235
+ * @dev token hash seed is keccak256 hashed to give the token hash
1236
+ */
1237
+ function tokenIdToHashSeed(
1238
+ uint256 _tokenId
1239
+ ) external view returns (bytes12) {
1240
+ return _ownersAndHashSeeds[_tokenId].hashSeed;
1241
+ }
1242
+
1250
1243
  /**
1251
1244
  * @notice View function returning Art Blocks portion of primary sales, in
1252
1245
  * percent.
@@ -1499,7 +1492,7 @@ contract GenArt721CoreV3 is
1499
1492
  if (_index >= project.scriptCount) {
1500
1493
  return "";
1501
1494
  }
1502
- return project.scriptBytecodeAddresses[_index].readFromBytecode();
1495
+ return _readFromBytecode(project.scriptBytecodeAddresses[_index]);
1503
1496
  }
1504
1497
 
1505
1498
  /**
@@ -1903,7 +1896,7 @@ contract GenArt721CoreV3 is
1903
1896
  * perform input validation where applicable.
1904
1897
  */
1905
1898
  function _updateRandomizerAddress(address _randomizerAddress) internal {
1906
- randomizerContract = IRandomizerV2(_randomizerAddress);
1899
+ randomizerContract = IRandomizer_V3CoreBase(_randomizerAddress);
1907
1900
  // populate historical randomizer array
1908
1901
  _historicalRandomizerAddresses.push(_randomizerAddress);
1909
1902
  emit PlatformUpdated(FIELD_RANDOMIZER_ADDRESS);
@@ -1951,4 +1944,14 @@ contract GenArt721CoreV3 is
1951
1944
  (block.timestamp - projectCompletedTimestamp <
1952
1945
  FOUR_WEEKS_IN_SECONDS);
1953
1946
  }
1947
+
1948
+ /**
1949
+ * Helper for calling `BytecodeStorageReader` external library reader method,
1950
+ * added for bytecode size reduction purposes.
1951
+ */
1952
+ function _readFromBytecode(
1953
+ address _address
1954
+ ) internal view returns (string memory) {
1955
+ return BytecodeStorageReader.readFromBytecode(_address);
1956
+ }
1954
1957
  }
@@ -8,7 +8,7 @@ import "../../../../interfaces/0.8.x/IFilteredMinterDAExpV0.sol";
8
8
  import "@openzeppelin-4.5/contracts/security/ReentrancyGuard.sol";
9
9
  import "@openzeppelin-4.5/contracts/utils/math/SafeCast.sol";
10
10
 
11
- pragma solidity 0.8.17;
11
+ pragma solidity 0.8.19;
12
12
 
13
13
  /**
14
14
  * @title Filtered Minter contract that allows tokens to be minted with ETH.
@@ -8,7 +8,7 @@ import "../../../../interfaces/0.8.x/IFilteredMinterDAExpV1.sol";
8
8
  import "@openzeppelin-4.5/contracts/security/ReentrancyGuard.sol";
9
9
  import "@openzeppelin-4.5/contracts/utils/math/SafeCast.sol";
10
10
 
11
- pragma solidity 0.8.17;
11
+ pragma solidity 0.8.19;
12
12
 
13
13
  /**
14
14
  * @title Filtered Minter contract that allows tokens to be minted with ETH.
@@ -8,7 +8,7 @@ import "../../../../interfaces/0.8.x/IFilteredMinterDAExpSettlementV0.sol";
8
8
  import "@openzeppelin-4.7/contracts/security/ReentrancyGuard.sol";
9
9
  import "@openzeppelin-4.7/contracts/utils/math/SafeCast.sol";
10
10
 
11
- pragma solidity 0.8.17;
11
+ pragma solidity 0.8.19;
12
12
 
13
13
  /**
14
14
  * @title Filtered Minter contract that allows tokens to be minted with ETH.
@@ -9,7 +9,7 @@ import "../../../../minter-suite/Minters/MinterBase_v0_1_1.sol";
9
9
  import "@openzeppelin-4.7/contracts/security/ReentrancyGuard.sol";
10
10
  import "@openzeppelin-4.7/contracts/utils/math/SafeCast.sol";
11
11
 
12
- pragma solidity 0.8.17;
12
+ pragma solidity 0.8.19;
13
13
 
14
14
  /**
15
15
  * @title Filtered Minter contract that allows tokens to be minted with ETH.
@@ -8,7 +8,7 @@ import "../../../../interfaces/0.8.x/IFilteredMinterDALinV0.sol";
8
8
  import "@openzeppelin-4.5/contracts/security/ReentrancyGuard.sol";
9
9
  import "@openzeppelin-4.5/contracts/utils/math/SafeCast.sol";
10
10
 
11
- pragma solidity 0.8.17;
11
+ pragma solidity 0.8.19;
12
12
 
13
13
  /**
14
14
  * @title Filtered Minter contract that allows tokens to be minted with ETH.
@@ -8,7 +8,7 @@ import "../../../../interfaces/0.8.x/IFilteredMinterDALinV1.sol";
8
8
  import "@openzeppelin-4.5/contracts/security/ReentrancyGuard.sol";
9
9
  import "@openzeppelin-4.5/contracts/utils/math/SafeCast.sol";
10
10
 
11
- pragma solidity 0.8.17;
11
+ pragma solidity 0.8.19;
12
12
 
13
13
  /**
14
14
  * @title Filtered Minter contract that allows tokens to be minted with ETH.
@@ -11,7 +11,7 @@ import "@openzeppelin-4.5/contracts/security/ReentrancyGuard.sol";
11
11
  import "@openzeppelin-4.5/contracts/utils/structs/EnumerableSet.sol";
12
12
  import "@openzeppelin-4.5/contracts/utils/structs/EnumerableMap.sol";
13
13
 
14
- pragma solidity 0.8.17;
14
+ pragma solidity 0.8.19;
15
15
 
16
16
  /**
17
17
  * @title Filtered Minter contract that allows tokens to be minted with ETH
@@ -11,7 +11,7 @@ import "@openzeppelin-4.5/contracts/token/ERC20/IERC20.sol";
11
11
  import "@openzeppelin-4.5/contracts/security/ReentrancyGuard.sol";
12
12
  import "@openzeppelin-4.5/contracts/utils/structs/EnumerableSet.sol";
13
13
 
14
- pragma solidity 0.8.17;
14
+ pragma solidity 0.8.19;
15
15
 
16
16
  /**
17
17
  * @title Filtered Minter contract that allows tokens to be minted with ETH
@@ -11,7 +11,7 @@ import "@openzeppelin-4.5/contracts/token/ERC20/IERC20.sol";
11
11
  import "@openzeppelin-4.5/contracts/security/ReentrancyGuard.sol";
12
12
  import "@openzeppelin-4.5/contracts/utils/structs/EnumerableSet.sol";
13
13
 
14
- pragma solidity 0.8.17;
14
+ pragma solidity 0.8.19;
15
15
 
16
16
  /**
17
17
  * @title Filtered Minter contract that allows tokens to be minted with ETH
@@ -9,7 +9,7 @@ import "@openzeppelin-4.7/contracts/utils/cryptography/MerkleProof.sol";
9
9
  import "@openzeppelin-4.7/contracts/token/ERC20/IERC20.sol";
10
10
  import "@openzeppelin-4.7/contracts/security/ReentrancyGuard.sol";
11
11
 
12
- pragma solidity 0.8.17;
12
+ pragma solidity 0.8.19;
13
13
 
14
14
  /**
15
15
  * @title Filtered Minter contract that allows tokens to be minted with ETH
@@ -10,7 +10,7 @@ import "@openzeppelin-4.7/contracts/utils/cryptography/MerkleProof.sol";
10
10
  import "@openzeppelin-4.7/contracts/token/ERC20/IERC20.sol";
11
11
  import "@openzeppelin-4.7/contracts/security/ReentrancyGuard.sol";
12
12
 
13
- pragma solidity 0.8.17;
13
+ pragma solidity 0.8.19;
14
14
 
15
15
  /**
16
16
  * @title Filtered Minter contract that allows tokens to be minted with ETH
@@ -10,7 +10,7 @@ import "@openzeppelin-4.7/contracts/utils/cryptography/MerkleProof.sol";
10
10
  import "@openzeppelin-4.7/contracts/token/ERC20/IERC20.sol";
11
11
  import "@openzeppelin-4.7/contracts/security/ReentrancyGuard.sol";
12
12
 
13
- pragma solidity 0.8.17;
13
+ pragma solidity 0.8.19;
14
14
 
15
15
  /**
16
16
  * @title Filtered Minter contract that allows tokens to be minted with ETH
@@ -10,7 +10,7 @@ import "@openzeppelin-4.7/contracts/utils/cryptography/MerkleProof.sol";
10
10
  import "@openzeppelin-4.7/contracts/token/ERC20/IERC20.sol";
11
11
  import "@openzeppelin-4.7/contracts/security/ReentrancyGuard.sol";
12
12
 
13
- pragma solidity 0.8.17;
13
+ pragma solidity 0.8.19;
14
14
 
15
15
  /**
16
16
  * @title Filtered Minter contract that allows tokens to be minted with ETH
@@ -7,7 +7,7 @@ import "../../../../interfaces/0.8.x/IFilteredMinterV0.sol";
7
7
 
8
8
  import "@openzeppelin-4.5/contracts/security/ReentrancyGuard.sol";
9
9
 
10
- pragma solidity 0.8.17;
10
+ pragma solidity 0.8.19;
11
11
 
12
12
  /**
13
13
  * @title Filtered Minter contract that allows tokens to be minted with ETH.
@@ -7,7 +7,7 @@ import "../../../../interfaces/0.8.x/IFilteredMinterV2.sol";
7
7
 
8
8
  import "@openzeppelin-4.5/contracts/security/ReentrancyGuard.sol";
9
9
 
10
- pragma solidity 0.8.17;
10
+ pragma solidity 0.8.19;
11
11
 
12
12
  /**
13
13
  * @title Filtered Minter contract that allows tokens to be minted with ETH.
@@ -8,7 +8,7 @@ import "../../../../interfaces/0.8.x/IFilteredMinterV0.sol";
8
8
  import "@openzeppelin-4.5/contracts/token/ERC20/IERC20.sol";
9
9
  import "@openzeppelin-4.5/contracts/security/ReentrancyGuard.sol";
10
10
 
11
- pragma solidity 0.8.17;
11
+ pragma solidity 0.8.19;
12
12
 
13
13
  /**
14
14
  * @title Filtered Minter contract that allows tokens to be minted with ETH
@@ -8,7 +8,7 @@ import "../../../../interfaces/0.8.x/IFilteredMinterV2.sol";
8
8
  import "@openzeppelin-4.5/contracts/token/ERC20/IERC20.sol";
9
9
  import "@openzeppelin-4.5/contracts/security/ReentrancyGuard.sol";
10
10
 
11
- pragma solidity 0.8.17;
11
+ pragma solidity 0.8.19;
12
12
 
13
13
  /**
14
14
  * @title Filtered Minter contract that allows tokens to be minted with ETH
@@ -1,8 +1,8 @@
1
1
  // SPDX-License-Identifier: LGPL-3.0-only
2
2
  // Created By: Art Blocks Inc.
3
3
 
4
- import "../interfaces/0.8.x/IRandomizer.sol";
5
- import "../interfaces/0.8.x/IGenArt721CoreV2_PBAB.sol";
4
+ import "../../interfaces/0.8.x/IRandomizer.sol";
5
+ import "../../interfaces/0.8.x/IGenArt721CoreV2_PBAB.sol";
6
6
  import "@openzeppelin-4.5/contracts/utils/Strings.sol";
7
7
  import "@openzeppelin-4.5/contracts/token/ERC721/ERC721.sol";
8
8
 
@@ -1,8 +1,8 @@
1
1
  // SPDX-License-Identifier: LGPL-3.0-only
2
2
  // Created By: Art Blocks Inc.
3
3
 
4
- import "../interfaces/0.8.x/IRandomizer.sol";
5
- import "../interfaces/0.8.x/IGenArt721CoreV2_PBAB.sol";
4
+ import "../../interfaces/0.8.x/IRandomizer.sol";
5
+ import "../../interfaces/0.8.x/IGenArt721CoreV2_PBAB.sol";
6
6
 
7
7
  import "@openzeppelin-4.5/contracts/utils/Strings.sol";
8
8
 
@@ -1,9 +1,9 @@
1
1
  // SPDX-License-Identifier: LGPL-3.0-only
2
2
  // Created By: Art Blocks Inc.
3
3
 
4
- import "../interfaces/0.8.x/IRandomizer.sol";
5
- import "../interfaces/0.8.x/IGenArt721CoreV2_PBAB.sol";
6
- import "../interfaces/0.8.x/IGenArt721CoreContractV1.sol";
4
+ import "../../interfaces/0.8.x/IRandomizer.sol";
5
+ import "../../interfaces/0.8.x/IGenArt721CoreV2_PBAB.sol";
6
+ import "../../interfaces/0.8.x/IGenArt721CoreContractV1.sol";
7
7
 
8
8
  import "@openzeppelin-4.5/contracts/utils/Strings.sol";
9
9
 
@@ -1,8 +1,8 @@
1
1
  // SPDX-License-Identifier: LGPL-3.0-only
2
2
  // Created By: Art Blocks Inc.
3
3
 
4
- import "../interfaces/0.8.x/IGenArt721CoreV2_PBAB.sol";
5
- import "../interfaces/0.8.x/IBonusContract.sol";
4
+ import "../../interfaces/0.8.x/IGenArt721CoreV2_PBAB.sol";
5
+ import "../../interfaces/0.8.x/IBonusContract.sol";
6
6
 
7
7
  import "@openzeppelin-4.5/contracts/security/ReentrancyGuard.sol";
8
8
  import "@openzeppelin-4.5/contracts/utils/Strings.sol";
@@ -1,12 +1,12 @@
1
1
  // SPDX-License-Identifier: LGPL-3.0-only
2
2
  // Created By: Art Blocks Inc.
3
3
 
4
- import "../interfaces/0.8.x/IGenArt721CoreV2_PBAB.sol";
4
+ import "../../interfaces/0.8.x/IGenArt721CoreV2_PBAB.sol";
5
5
 
6
6
  import "@openzeppelin-4.5/contracts/security/ReentrancyGuard.sol";
7
7
  import "@openzeppelin-4.5/contracts/utils/math/SafeCast.sol";
8
8
 
9
- pragma solidity 0.8.17;
9
+ pragma solidity 0.8.19;
10
10
 
11
11
  /**
12
12
  * @title A minter contract that allows tokens to be minted with ETH.
@@ -1,8 +1,8 @@
1
1
  // SPDX-License-Identifier: LGPL-3.0-only
2
2
  // Created By: Art Blocks Inc.
3
3
 
4
- import "../interfaces/0.8.x/IGenArt721CoreV2_PBAB.sol";
5
- import "../interfaces/0.8.x/IBonusContract.sol";
4
+ import "../../interfaces/0.8.x/IGenArt721CoreV2_PBAB.sol";
5
+ import "../../interfaces/0.8.x/IBonusContract.sol";
6
6
 
7
7
  import "@openzeppelin-4.5/contracts/security/ReentrancyGuard.sol";
8
8
  import "@openzeppelin-4.5/contracts/utils/Strings.sol";
@@ -1,20 +1,21 @@
1
1
  // SPDX-License-Identifier: LGPL-3.0-only
2
- pragma solidity 0.8.17;
2
+ pragma solidity 0.8.19;
3
3
 
4
4
  // Created By: Art Blocks Inc.
5
5
 
6
- import "./interfaces/0.8.x/IRandomizerV2.sol";
7
- import "./interfaces/0.8.x/IAdminACLV0.sol";
8
- import "./interfaces/0.8.x/IEngineRegistryV0.sol";
9
- import "./interfaces/0.8.x/IGenArt721CoreContractV3_Engine.sol";
10
- import "./interfaces/0.8.x/IDependencyRegistryCompatibleV0.sol";
11
- import "./interfaces/0.8.x/IManifold.sol";
6
+ import "../../interfaces/0.8.x/IRandomizer_V3CoreBase.sol";
7
+ import "../../interfaces/0.8.x/IAdminACLV0.sol";
8
+ import "../../interfaces/0.8.x/IEngineRegistryV0.sol";
9
+ import "../../interfaces/0.8.x/IGenArt721CoreContractV3_Engine.sol";
10
+ import "../../interfaces/0.8.x/IGenArt721CoreContractExposesHashSeed.sol";
11
+ import "../../interfaces/0.8.x/IDependencyRegistryCompatibleV0.sol";
12
+ import "../../interfaces/0.8.x/IManifold.sol";
12
13
 
13
14
  import "@openzeppelin-4.7/contracts/utils/Strings.sol";
14
15
  import "@openzeppelin-4.7/contracts/access/Ownable.sol";
15
- import "./libs/0.8.x/ERC721_PackedHashSeed.sol";
16
- import "./libs/0.8.x/BytecodeStorage.sol";
17
- import "./libs/0.8.x/Bytes32Strings.sol";
16
+ import "../../libs/0.8.x/ERC721_PackedHashSeed.sol";
17
+ import "../../libs/0.8.x/BytecodeStorageV1.sol";
18
+ import "../../libs/0.8.x/Bytes32Strings.sol";
18
19
 
19
20
  /**
20
21
  * @title Art Blocks Engine ERC-721 core contract, V3.
@@ -96,10 +97,10 @@ contract GenArt721CoreV3_Engine is
96
97
  Ownable,
97
98
  IDependencyRegistryCompatibleV0,
98
99
  IManifold,
99
- IGenArt721CoreContractV3_Engine
100
+ IGenArt721CoreContractV3_Engine,
101
+ IGenArt721CoreContractExposesHashSeed
100
102
  {
101
- using BytecodeStorage for string;
102
- using BytecodeStorage for address;
103
+ using BytecodeStorageWriter for string;
103
104
  using Bytes32Strings for bytes32;
104
105
  using Strings for uint256;
105
106
  using Strings for address;
@@ -158,7 +159,7 @@ contract GenArt721CoreV3_Engine is
158
159
  address public artblocksDependencyRegistryAddress;
159
160
 
160
161
  /// current randomizer contract
161
- IRandomizerV2 public randomizerContract;
162
+ IRandomizer_V3CoreBase public randomizerContract;
162
163
 
163
164
  /// append-only array of all randomizer contract addresses ever used by
164
165
  /// this contract
@@ -1132,9 +1133,8 @@ contract GenArt721CoreV3_Engine is
1132
1133
  _onlyNonEmptyString(_script);
1133
1134
  Project storage project = projects[_projectId];
1134
1135
  require(_scriptId < project.scriptCount, "scriptId out of range");
1135
-
1136
1136
  // store script in contract bytecode, replacing reference address from
1137
- // the contract that no longer exists with the newly created one
1137
+ // the old storage contract with the newly created one
1138
1138
  project.scriptBytecodeAddresses[_scriptId] = _script.writeToBytecode();
1139
1139
  emit ProjectUpdated(_projectId, FIELD_PROJECT_SCRIPT);
1140
1140
  }
@@ -1151,8 +1151,7 @@ contract GenArt721CoreV3_Engine is
1151
1151
  );
1152
1152
  Project storage project = projects[_projectId];
1153
1153
  require(project.scriptCount > 0, "No scripts to remove");
1154
-
1155
- // delete reference to contract address that no longer exists
1154
+ // delete reference to old storage contract address
1156
1155
  delete project.scriptBytecodeAddresses[project.scriptCount - 1];
1157
1156
  unchecked {
1158
1157
  project.scriptCount = project.scriptCount - 1;
@@ -1577,7 +1576,7 @@ contract GenArt721CoreV3_Engine is
1577
1576
  if (_index >= project.scriptCount) {
1578
1577
  return "";
1579
1578
  }
1580
- return project.scriptBytecodeAddresses[_index].readFromBytecode();
1579
+ return _readFromBytecode(project.scriptBytecodeAddresses[_index]);
1581
1580
  }
1582
1581
 
1583
1582
  /**
@@ -1947,7 +1946,7 @@ contract GenArt721CoreV3_Engine is
1947
1946
  * perform input validation where applicable.
1948
1947
  */
1949
1948
  function _updateRandomizerAddress(address _randomizerAddress) internal {
1950
- randomizerContract = IRandomizerV2(_randomizerAddress);
1949
+ randomizerContract = IRandomizer_V3CoreBase(_randomizerAddress);
1951
1950
  // populate historical randomizer array
1952
1951
  _historicalRandomizerAddresses.push(_randomizerAddress);
1953
1952
  emit PlatformUpdated(FIELD_RANDOMIZER_ADDRESS);
@@ -1996,4 +1995,14 @@ contract GenArt721CoreV3_Engine is
1996
1995
  (block.timestamp - projectCompletedTimestamp <
1997
1996
  FOUR_WEEKS_IN_SECONDS);
1998
1997
  }
1998
+
1999
+ /**
2000
+ * Helper for calling `BytecodeStorageReader` external library reader method,
2001
+ * added for bytecode size reduction purposes.
2002
+ */
2003
+ function _readFromBytecode(
2004
+ address _address
2005
+ ) internal view returns (string memory) {
2006
+ return BytecodeStorageReader.readFromBytecode(_address);
2007
+ }
1999
2008
  }