@artblocks/contracts 1.0.2 → 1.0.4

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 (387) hide show
  1. package/README.md +56 -21
  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 +141 -15
  5. package/artifacts/contracts/GenArt721CoreV3.sol/GenArt721CoreV3.json +42 -5
  6. package/artifacts/contracts/archive/minter-suite/Minters/MinterDAExp/MinterDAExpV0.sol/MinterDAExpV0.json +2 -2
  7. package/artifacts/contracts/archive/minter-suite/Minters/MinterDAExp/MinterDAExpV1.sol/MinterDAExpV1.json +2 -2
  8. package/artifacts/contracts/archive/minter-suite/Minters/MinterDAExp/MinterDAExpV2.sol/MinterDAExpV2.json +2 -2
  9. package/artifacts/contracts/archive/minter-suite/Minters/MinterDAExp/MinterDAExpV3.sol/MinterDAExpV3.json +2 -2
  10. package/artifacts/contracts/archive/minter-suite/Minters/MinterDAExpSettlement/MinterDAExpSettlementV0.sol/MinterDAExpSettlementV0.json +2 -2
  11. package/artifacts/contracts/archive/minter-suite/Minters/MinterDAExpSettlement/MinterDAExpSettlementV1.sol/MinterDAExpSettlementV1.json +2 -2
  12. package/artifacts/contracts/archive/minter-suite/Minters/MinterDALin/MinterDALinV0.sol/MinterDALinV0.json +2 -2
  13. package/artifacts/contracts/archive/minter-suite/Minters/MinterDALin/MinterDALinV1.sol/MinterDALinV1.json +2 -2
  14. package/artifacts/contracts/archive/minter-suite/Minters/MinterDALin/MinterDALinV2.sol/MinterDALinV2.json +2 -2
  15. package/artifacts/contracts/archive/minter-suite/Minters/MinterDALin/MinterDALinV3.sol/MinterDALinV3.json +2 -2
  16. package/artifacts/contracts/archive/minter-suite/Minters/MinterHolder/MinterHolderV0.sol/MinterHolderV0.json +2 -2
  17. package/artifacts/contracts/archive/minter-suite/Minters/MinterHolder/MinterHolderV1.sol/MinterHolderV1.json +2 -2
  18. package/artifacts/contracts/archive/minter-suite/Minters/MinterHolder/MinterHolderV2.sol/MinterHolderV2.json +2 -2
  19. package/artifacts/contracts/archive/minter-suite/Minters/MinterHolder/MinterHolderV3.sol/MinterHolderV3.json +2 -2
  20. package/artifacts/contracts/archive/minter-suite/Minters/MinterMerkle/MinterMerkleV0.sol/MinterMerkleV0.json +2 -2
  21. package/artifacts/contracts/archive/minter-suite/Minters/MinterMerkle/MinterMerkleV1.sol/MinterMerkleV1.json +2 -2
  22. package/artifacts/contracts/archive/minter-suite/Minters/MinterMerkle/MinterMerkleV2.sol/MinterMerkleV2.json +2 -2
  23. package/artifacts/contracts/archive/minter-suite/Minters/MinterMerkle/MinterMerkleV3.sol/MinterMerkleV3.json +2 -2
  24. package/artifacts/contracts/archive/minter-suite/Minters/MinterMerkle/MinterMerkleV4.sol/MinterMerkleV4.json +2 -2
  25. package/artifacts/contracts/archive/minter-suite/Minters/MinterSetPrice/MinterSetPriceV0.sol/MinterSetPriceV0.json +2 -2
  26. package/artifacts/contracts/archive/minter-suite/Minters/MinterSetPrice/MinterSetPriceV1.sol/MinterSetPriceV1.json +2 -2
  27. package/artifacts/contracts/archive/minter-suite/Minters/MinterSetPrice/MinterSetPriceV2.sol/MinterSetPriceV2.json +2 -2
  28. package/artifacts/contracts/archive/minter-suite/Minters/MinterSetPrice/MinterSetPriceV3.sol/MinterSetPriceV3.json +2 -2
  29. package/artifacts/contracts/archive/minter-suite/Minters/MinterSetPriceERC20/MinterSetPriceERC20V0.sol/MinterSetPriceERC20V0.json +2 -2
  30. package/artifacts/contracts/archive/minter-suite/Minters/MinterSetPriceERC20/MinterSetPriceERC20V1.sol/MinterSetPriceERC20V1.json +2 -2
  31. package/artifacts/contracts/archive/minter-suite/Minters/MinterSetPriceERC20/MinterSetPriceERC20V2.sol/MinterSetPriceERC20V2.json +2 -2
  32. package/artifacts/contracts/archive/minter-suite/Minters/MinterSetPriceERC20/MinterSetPriceERC20V3.sol/MinterSetPriceERC20V3.json +2 -2
  33. package/artifacts/contracts/engine/{GenArt721CoreV2_ENGINE_FLEX.sol → V2/GenArt721CoreV2_ENGINE_FLEX.sol}/GenArt721CoreV2_ENGINE_FLEX.json +3 -3
  34. package/artifacts/contracts/engine/{GenArt721CoreV2_PBAB.sol → V2/GenArt721CoreV2_PBAB.sol}/GenArt721CoreV2_PBAB.json +3 -3
  35. package/artifacts/contracts/engine/{GenArt721CoreV2_PRTNR.sol → V2/GenArt721CoreV2_PRTNR.sol}/GenArt721CoreV2_PRTNR.json +3 -3
  36. package/artifacts/contracts/engine/{GenArt721MinterBurner_PBAB.sol → V2/GenArt721MinterBurner_PBAB.sol}/GenArt721MinterBurner_PBAB.json +3 -3
  37. package/artifacts/contracts/engine/{GenArt721MinterDAExp_PBAB.sol → V2/GenArt721MinterDAExp_PBAB.sol}/GenArt721MinterDAExp_PBAB.json +3 -3
  38. package/artifacts/contracts/engine/{GenArt721Minter_PBAB.sol → V2/GenArt721Minter_PBAB.sol}/GenArt721Minter_PBAB.json +3 -3
  39. package/artifacts/contracts/engine/V3/GenArt721CoreV3_Engine.sol/GenArt721CoreV3_Engine.json +1960 -0
  40. package/artifacts/contracts/engine/V3/GenArt721CoreV3_Engine_Flex.sol/GenArt721CoreV3_Engine_Flex.json +2247 -0
  41. package/artifacts/contracts/engine/V3/forks/GenArt721CoreV3_Engine_Flex_PROOF.sol/GenArt721CoreV3_Engine_Flex_PROOF.json +2247 -0
  42. package/artifacts/contracts/engine/V3/forks/PROHIBITION/AdminACLV0_PROHIBITION.sol/AdminACLV0_PROHIBITION.json +401 -0
  43. package/artifacts/contracts/engine/V3/forks/PROHIBITION/GenArt721CoreV3_Engine_Flex_PROHIBITION.sol/GenArt721CoreV3_Engine_Flex_PROHIBITION.json +2281 -0
  44. package/artifacts/contracts/engine/V3/forks/PROHIBITION/interfaces/IAdminACLV0_PROHIBITION.sol/IAdminACLV0_PROHIBITION.json +359 -0
  45. package/artifacts/contracts/engine/V3/forks/PROHIBITION/interfaces/IGenArt721CoreContractV3_Engine_Flex_PROHIBITION.sol/IGenArt721CoreContractV3_Engine_Flex_PROHIBITION.json +1094 -0
  46. package/artifacts/contracts/engine-registry/CoreRegistryV1.sol/CoreRegistryV1.json +242 -0
  47. package/artifacts/contracts/engine-registry/EngineRegistryV0.sol/EngineRegistryV0.json +2 -2
  48. package/artifacts/contracts/explorations/GenArt721CoreV3_Explorations.sol/GenArt721CoreV3_Explorations.json +41 -4
  49. package/artifacts/contracts/interfaces/{0.5.x → v0.5.x}/IBonusContract.sol/IBonusContract.json +1 -1
  50. package/artifacts/contracts/interfaces/{0.5.x → v0.5.x}/IGenArt721CoreContractV1.sol/IGenArt721CoreContractV1.json +1 -1
  51. package/artifacts/contracts/interfaces/{0.5.x → v0.5.x}/IGenArt721CoreV2_PBAB.sol/IGenArt721CoreV2_PBAB.json +1 -1
  52. package/artifacts/contracts/interfaces/{0.5.x → v0.5.x}/IRandomizer.sol/IRandomizer.json +1 -1
  53. package/artifacts/contracts/interfaces/{0.8.x → v0.8.x}/IAdminACLV0.sol/IAdminACLV0.json +1 -1
  54. package/artifacts/contracts/interfaces/{0.8.x → v0.8.x}/IArtblocksRoyaltyOverride.sol/IArtblocksRoyaltyOverride.json +1 -1
  55. package/artifacts/contracts/interfaces/{0.8.x → v0.8.x}/IBonusContract.sol/IBonusContract.json +1 -1
  56. package/artifacts/contracts/interfaces/v0.8.x/IBytecodeStorageReader.sol/IBytecodeStorageReader.json +111 -0
  57. package/artifacts/contracts/interfaces/v0.8.x/ICoreRegistryV1.sol/ICoreRegistryV1.json +172 -0
  58. package/artifacts/contracts/interfaces/{0.8.x → v0.8.x}/IDelegationRegistry.sol/IDelegationRegistry.json +1 -1
  59. package/artifacts/contracts/interfaces/{0.8.x → v0.8.x}/IDependencyRegistryCompatibleV0.sol/IDependencyRegistryCompatibleV0.json +1 -1
  60. package/artifacts/contracts/interfaces/{0.8.x → v0.8.x}/IDependencyRegistryV0.sol/IDependencyRegistryV0.json +3 -3
  61. package/artifacts/contracts/interfaces/{0.8.x → v0.8.x}/IEngineRegistryV0.sol/IEngineRegistryV0.json +1 -1
  62. package/artifacts/contracts/interfaces/{0.8.x → v0.8.x}/IFilteredMinterDAExpSettlementV0.sol/IFilteredMinterDAExpSettlementV0.json +1 -1
  63. package/artifacts/contracts/interfaces/{0.8.x → v0.8.x}/IFilteredMinterDAExpSettlementV1.sol/IFilteredMinterDAExpSettlementV1.json +1 -1
  64. package/artifacts/contracts/interfaces/{0.8.x → v0.8.x}/IFilteredMinterDAExpSettlement_Mixin.sol/IFilteredMinterDAExpSettlement_Mixin.json +1 -1
  65. package/artifacts/contracts/interfaces/{0.8.x → v0.8.x}/IFilteredMinterDAExpV0.sol/IFilteredMinterDAExpV0.json +1 -1
  66. package/artifacts/contracts/interfaces/{0.8.x → v0.8.x}/IFilteredMinterDAExpV1.sol/IFilteredMinterDAExpV1.json +1 -1
  67. package/artifacts/contracts/interfaces/{0.8.x → v0.8.x}/IFilteredMinterDALinV0.sol/IFilteredMinterDALinV0.json +1 -1
  68. package/artifacts/contracts/interfaces/{0.8.x → v0.8.x}/IFilteredMinterDALinV1.sol/IFilteredMinterDALinV1.json +1 -1
  69. package/artifacts/contracts/interfaces/{0.8.x → v0.8.x}/IFilteredMinterHolderV0.sol/IFilteredMinterHolderV0.json +1 -1
  70. package/artifacts/contracts/interfaces/{0.8.x → v0.8.x}/IFilteredMinterHolderV1.sol/IFilteredMinterHolderV1.json +1 -1
  71. package/artifacts/contracts/interfaces/{0.8.x → v0.8.x}/IFilteredMinterHolderV2.sol/IFilteredMinterHolderV2.json +1 -1
  72. package/artifacts/contracts/interfaces/{0.8.x → v0.8.x}/IFilteredMinterMerkleV0.sol/IFilteredMinterMerkleV0.json +1 -1
  73. package/artifacts/contracts/interfaces/{0.8.x → v0.8.x}/IFilteredMinterMerkleV1.sol/IFilteredMinterMerkleV1.json +1 -1
  74. package/artifacts/contracts/interfaces/{0.8.x → v0.8.x}/IFilteredMinterMerkleV2.sol/IFilteredMinterMerkleV2.json +1 -1
  75. package/artifacts/contracts/interfaces/{0.8.x → v0.8.x}/IFilteredMinterSEAV0.sol/IFilteredMinterSEAV0.json +56 -54
  76. package/artifacts/contracts/interfaces/{0.8.x → v0.8.x}/IFilteredMinterV0.sol/IFilteredMinterV0.json +1 -1
  77. package/artifacts/contracts/interfaces/{0.8.x → v0.8.x}/IFilteredMinterV1.sol/IFilteredMinterV1.json +1 -1
  78. package/artifacts/contracts/interfaces/{0.8.x → v0.8.x}/IFilteredMinterV2.sol/IFilteredMinterV2.json +1 -1
  79. package/artifacts/contracts/interfaces/v0.8.x/IGenArt721CoreContractExposesHashSeed.sol/IGenArt721CoreContractExposesHashSeed.json +30 -0
  80. package/artifacts/contracts/interfaces/{0.8.x → v0.8.x}/IGenArt721CoreContractV1.sol/IGenArt721CoreContractV1.json +1 -1
  81. package/artifacts/contracts/interfaces/{0.8.x → v0.8.x}/IGenArt721CoreContractV3.sol/IGenArt721CoreContractV3.json +14 -1
  82. package/artifacts/contracts/interfaces/v0.8.x/IGenArt721CoreContractV3WithSharedRandomizer.sol/IGenArt721CoreContractV3WithSharedRandomizer.json +24 -0
  83. package/artifacts/contracts/interfaces/{0.8.x → v0.8.x}/IGenArt721CoreContractV3_Base.sol/IGenArt721CoreContractV3_Base.json +14 -1
  84. package/artifacts/contracts/interfaces/{0.8.x → v0.8.x}/IGenArt721CoreContractV3_Engine.sol/IGenArt721CoreContractV3_Engine.json +8 -14
  85. package/artifacts/contracts/interfaces/{0.8.x → v0.8.x}/IGenArt721CoreContractV3_Engine_Flex.sol/IGenArt721CoreContractV3_Engine_Flex.json +8 -14
  86. package/artifacts/contracts/interfaces/{0.8.x → v0.8.x}/IGenArt721CoreV2_PBAB.sol/IGenArt721CoreV2_PBAB.json +1 -1
  87. package/artifacts/contracts/interfaces/{0.8.x → v0.8.x}/IManifold.sol/IManifold.json +1 -1
  88. package/artifacts/contracts/interfaces/{0.8.x → v0.8.x}/IMinterBaseV0.sol/IMinterBaseV0.json +1 -1
  89. package/artifacts/contracts/interfaces/{0.8.x → v0.8.x}/IMinterFilterV0.sol/IMinterFilterV0.json +1 -1
  90. package/artifacts/contracts/interfaces/v0.8.x/IMinterFilterV1.sol/IMinterFilterV1.json +514 -0
  91. package/artifacts/contracts/interfaces/{0.8.x → v0.8.x}/IMintingAPICoreV0.sol/IMintingAPICoreV0.json +1 -1
  92. package/artifacts/contracts/interfaces/{0.8.x → v0.8.x}/IMintingAPIMinterV0.sol/IMintingAPIMinterV0.json +1 -1
  93. package/artifacts/contracts/interfaces/v0.8.x/IPseudorandomAtomic.sol/IPseudorandomAtomic.json +30 -0
  94. package/artifacts/contracts/interfaces/{0.8.x → v0.8.x}/IRandomizer.sol/IRandomizer.json +1 -1
  95. package/artifacts/contracts/interfaces/{0.8.x → v0.8.x}/IRandomizerPolyptychV0.sol/IRandomizerPolyptychV0.json +1 -1
  96. package/artifacts/contracts/interfaces/{0.8.x → v0.8.x}/IRandomizerV2.sol/IRandomizerV2.json +1 -1
  97. package/artifacts/contracts/interfaces/v0.8.x/IRandomizer_V3CoreBase.sol/IRandomizer_V3CoreBase.json +24 -0
  98. package/artifacts/contracts/interfaces/v0.8.x/ISharedMinterDAExpSettlementV0.sol/ISharedMinterDAExpSettlementV0.json +207 -0
  99. package/artifacts/contracts/interfaces/v0.8.x/ISharedMinterDAExpV0.sol/ISharedMinterDAExpV0.json +93 -0
  100. package/artifacts/contracts/interfaces/v0.8.x/ISharedMinterDALinV0.sol/ISharedMinterDALinV0.json +93 -0
  101. package/artifacts/contracts/interfaces/v0.8.x/ISharedMinterDAV0.sol/ISharedMinterDAV0.json +69 -0
  102. package/artifacts/contracts/interfaces/v0.8.x/ISharedMinterHolderV0.sol/ISharedMinterHolderV0.json +203 -0
  103. package/artifacts/contracts/interfaces/v0.8.x/ISharedMinterMerkleV0.sol/ISharedMinterMerkleV0.json +123 -0
  104. package/artifacts/contracts/interfaces/v0.8.x/ISharedMinterSEAV0.sol/ISharedMinterSEAV0.json +261 -0
  105. package/artifacts/contracts/interfaces/v0.8.x/ISharedMinterSimplePurchaseV0.sol/ISharedMinterSimplePurchaseV0.json +64 -0
  106. package/artifacts/contracts/interfaces/v0.8.x/ISharedMinterV0.sol/ISharedMinterV0.json +533 -0
  107. package/artifacts/contracts/interfaces/v0.8.x/ISharedRandomizerV0.sol/ISharedRandomizerV0.json +223 -0
  108. package/artifacts/contracts/interfaces/{0.8.x → v0.8.x}/IWETH.sol/IWETH.json +1 -1
  109. package/artifacts/contracts/legacy/GenArt721CoreV1.sol/Address.json +2 -2
  110. package/artifacts/contracts/legacy/GenArt721CoreV1.sol/Counters.json +2 -2
  111. package/artifacts/contracts/legacy/GenArt721CoreV1.sol/CustomERC721Metadata.json +2 -2
  112. package/artifacts/contracts/legacy/GenArt721CoreV1.sol/ERC721.json +2 -2
  113. package/artifacts/contracts/legacy/GenArt721CoreV1.sol/ERC721Enumerable.json +2 -2
  114. package/artifacts/contracts/legacy/GenArt721CoreV1.sol/GenArt721CoreV1.json +2 -2
  115. package/artifacts/contracts/legacy/GenArt721CoreV1.sol/SafeMath.json +2 -2
  116. package/artifacts/contracts/legacy/GenArt721CoreV1.sol/Strings.json +2 -2
  117. package/artifacts/contracts/legacy/GenArt721LegacyMinter.sol/GenArt721LegacyMinter.json +2 -2
  118. package/artifacts/contracts/libs/integration-refs/delegation-registry/DelegationRegistry.sol/DelegationRegistry.json +2 -2
  119. package/artifacts/contracts/libs/integration-refs/gnosis-safe/GnosisSafeMock.sol/GnosisSafeMock.json +2 -2
  120. package/artifacts/contracts/libs/integration-refs/gnosis-safe/GnosisSafeProxyFactoryMock.sol/GnosisSafeProxyFactoryMock.json +2 -2
  121. package/artifacts/contracts/libs/integration-refs/gnosis-safe/MultiSendMock.sol/MultiSendMock.json +2 -2
  122. package/artifacts/contracts/libs/integration-refs/weth9/weth9.sol/WETH9_.json +2 -2
  123. package/artifacts/contracts/libs/{0.5.x → v0.5.x}/CustomERC721Metadata.sol/CustomERC721Metadata.json +3 -3
  124. package/artifacts/contracts/libs/{0.5.x → v0.5.x}/IERC20.sol/IERC20.json +1 -1
  125. package/artifacts/contracts/libs/{0.5.x → v0.5.x}/SafeMath.sol/SafeMath.json +3 -3
  126. package/artifacts/contracts/libs/{0.5.x → v0.5.x}/Strings.sol/Strings.json +3 -3
  127. package/artifacts/contracts/libs/v0.8.x/ABHelpers.sol/ABHelpers.json +10 -0
  128. package/artifacts/contracts/libs/v0.8.x/AuthLib.sol/AuthLib.json +10 -0
  129. package/artifacts/contracts/libs/{0.8.x/BytecodeStorage.sol → v0.8.x/BytecodeStorageV0.sol}/BytecodeStorage.json +3 -3
  130. package/artifacts/contracts/libs/v0.8.x/BytecodeStorageV1.sol/BytecodeStorageReader.json +163 -0
  131. package/artifacts/contracts/libs/v0.8.x/BytecodeStorageV1.sol/BytecodeStorageWriter.json +10 -0
  132. package/artifacts/contracts/libs/{0.8.x → v0.8.x}/Bytes32Strings.sol/Bytes32Strings.json +3 -3
  133. package/artifacts/contracts/libs/{0.8.x → v0.8.x}/ERC721_PackedHashSeed.sol/ERC721_PackedHashSeed.json +3 -3
  134. package/artifacts/contracts/libs/v0.8.x/SSTORE2.sol/SSTORE2.json +10 -0
  135. package/artifacts/contracts/libs/v0.8.x/minter-libs/DAExpLib.sol/DAExpLib.json +10 -0
  136. package/artifacts/contracts/libs/v0.8.x/minter-libs/DALinLib.sol/DALinLib.json +10 -0
  137. package/artifacts/contracts/libs/v0.8.x/minter-libs/MaxInvocationsLib.sol/MaxInvocationsLib.json +10 -0
  138. package/artifacts/contracts/libs/v0.8.x/minter-libs/MerkleLib.sol/MerkleLib.json +10 -0
  139. package/artifacts/contracts/libs/v0.8.x/minter-libs/PolyptychLib.sol/PolyptychLib.json +10 -0
  140. package/artifacts/contracts/libs/v0.8.x/minter-libs/SEALib.sol/SEALib.json +10 -0
  141. package/artifacts/contracts/libs/v0.8.x/minter-libs/SetPriceLib.sol/SetPriceLib.json +10 -0
  142. package/artifacts/contracts/libs/v0.8.x/minter-libs/SettlementExpLib.sol/SettlementExpLib.json +10 -0
  143. package/artifacts/contracts/libs/v0.8.x/minter-libs/SplitFundsLib.sol/SplitFundsLib.json +10 -0
  144. package/artifacts/contracts/libs/v0.8.x/minter-libs/TokenHolderLib.sol/TokenHolderLib.json +10 -0
  145. package/artifacts/contracts/minter-suite/MinterFilter/MinterFilterV0.sol/MinterFilterV0.json +2 -2
  146. package/artifacts/contracts/minter-suite/MinterFilter/MinterFilterV1.sol/MinterFilterV1.json +2 -2
  147. package/artifacts/contracts/minter-suite/MinterFilter/MinterFilterV2.sol/MinterFilterV2.json +748 -0
  148. package/artifacts/contracts/minter-suite/Minters/MinterDAExpHolderV5.sol/MinterDAExpHolderV5.json +1228 -0
  149. package/artifacts/contracts/minter-suite/Minters/MinterDAExpSettlementV2.sol/MinterDAExpSettlementV2.json +2 -2
  150. package/artifacts/contracts/minter-suite/Minters/MinterDAExpSettlementV3.sol/MinterDAExpSettlementV3.json +1146 -0
  151. package/artifacts/contracts/minter-suite/Minters/MinterDAExpV4.sol/MinterDAExpV4.json +2 -2
  152. package/artifacts/contracts/minter-suite/Minters/MinterDAExpV5.sol/MinterDAExpV5.json +909 -0
  153. package/artifacts/contracts/minter-suite/Minters/MinterDALinHolderV5.sol/MinterDALinHolderV5.json +1228 -0
  154. package/artifacts/contracts/minter-suite/Minters/MinterDALinV4.sol/MinterDALinV4.json +2 -2
  155. package/artifacts/contracts/minter-suite/Minters/MinterDALinV5.sol/MinterDALinV5.json +909 -0
  156. package/artifacts/contracts/minter-suite/Minters/MinterHolderV4.sol/MinterHolderV4.json +2 -2
  157. package/artifacts/contracts/minter-suite/Minters/MinterMerkleV5.sol/MinterMerkleV5.json +2 -2
  158. package/artifacts/contracts/minter-suite/Minters/MinterPolyptychV0.sol/IGenArt721CoreContractV3WithRandomizer.json +10 -160
  159. package/artifacts/contracts/minter-suite/Minters/MinterPolyptychV0.sol/MinterPolyptychV0.json +2 -2
  160. package/artifacts/contracts/minter-suite/Minters/MinterSEAV0.sol/MinterSEAV0.json +59 -80
  161. package/artifacts/contracts/minter-suite/Minters/MinterSEAV1.sol/MinterSEAV1.json +1325 -0
  162. package/artifacts/contracts/minter-suite/Minters/MinterSetPriceERC20V4.sol/MinterSetPriceERC20V4.json +2 -2
  163. package/artifacts/contracts/minter-suite/Minters/MinterSetPriceERC20V5.sol/MinterSetPriceERC20V5.json +848 -0
  164. package/artifacts/contracts/minter-suite/Minters/MinterSetPriceHolderV5.sol/MinterSetPriceHolderV5.json +1091 -0
  165. package/artifacts/contracts/minter-suite/Minters/MinterSetPriceMerkleV5.sol/MinterSetPriceMerkleV5.json +1075 -0
  166. package/artifacts/contracts/minter-suite/Minters/MinterSetPricePolyptychERC20V5.sol/MinterSetPricePolyptychERC20V5.json +1243 -0
  167. package/artifacts/contracts/minter-suite/Minters/MinterSetPricePolyptychV5.sol/MinterSetPricePolyptychV5.json +1167 -0
  168. package/artifacts/contracts/minter-suite/Minters/MinterSetPriceV4.sol/MinterSetPriceV4.json +2 -2
  169. package/artifacts/contracts/minter-suite/Minters/MinterSetPriceV5.sol/MinterSetPriceV5.json +772 -0
  170. package/artifacts/contracts/mock/{BytecodeTextCR_DMock.sol/BytecodeTextCR_DMock.json → BytecodeV0TextCR_DMock.sol/BytecodeV0TextCR_DMock.json} +4 -4
  171. package/artifacts/contracts/mock/BytecodeV1LibCallsMock.sol/BytecodeV1LibCallsMock.json +135 -0
  172. package/artifacts/contracts/mock/BytecodeV1TextCR_DMock.sol/BytecodeV1TextCR_DMock.json +301 -0
  173. package/artifacts/contracts/mock/DeadReceiverBidderMock.sol/DeadReceiverBidderMock.json +25 -2
  174. package/artifacts/contracts/mock/DeadReceiverMock.sol/DeadReceiverMock.json +2 -2
  175. package/artifacts/contracts/mock/DummySharedMinter.sol/DummySharedMinter.json +114 -0
  176. package/artifacts/contracts/mock/ERC20Mock.sol/ERC20Mock.json +28 -2
  177. package/artifacts/contracts/mock/GasLimitReceiverBidderMock.sol/GasLimitReceiverBidderMock.json +2 -2
  178. package/artifacts/contracts/mock/GasLimitReceiverMock.sol/GasLimitReceiverMock.json +2 -2
  179. package/artifacts/contracts/mock/GenArt721CoreV3_Engine_IncorrectCoreType.sol/GenArt721CoreV3_Engine_IncorrectCoreType.json +22 -4
  180. package/artifacts/contracts/mock/MockAdminACLV0.sol/MockAdminACLV0Events.json +2 -2
  181. package/artifacts/contracts/mock/MockAdminACLV0_PROHIBITION.sol/MockAdminACLV0Events_PROHIBITION.json +440 -0
  182. package/artifacts/contracts/mock/OriginRegisterMock.sol/OriginRegisterMock.json +39 -0
  183. package/artifacts/contracts/mock/RandomizerV2_NoAssignMock.sol/RandomizerV2_NoAssignMock.json +2 -2
  184. package/artifacts/contracts/mock/ReentrancyHolderMock.sol/ReentrancyHolderMock.json +2 -2
  185. package/artifacts/contracts/mock/ReentrancyMerkleMock.sol/ReentrancyMerkleMock.json +2 -2
  186. package/artifacts/contracts/mock/ReentrancyMock.sol/ReentrancyMock.json +2 -2
  187. package/artifacts/contracts/mock/ReentrancySEAMock.sol/ReentrancySEAAutoBidderMock.json +2 -2
  188. package/artifacts/contracts/mock/SSTORE2Mock.sol/SSTORE2Mock.json +118 -0
  189. package/artifacts/contracts/randomizer/{BasicRandomizer.sol → deprecated/BasicRandomizer.sol}/BasicRandomizer.json +3 -3
  190. package/artifacts/contracts/randomizer/{BasicRandomizerBase_v0_0_0.sol → deprecated/BasicRandomizerBase_v0_0_0.sol}/RandomizerBase.json +1 -1
  191. package/artifacts/contracts/randomizer/{PolyptychRandomizerV0.sol → deprecated/PolyptychRandomizerV0.sol}/BasicPolyptychRandomizerV0.json +3 -3
  192. package/artifacts/contracts/randomizer/{RandomizerV2.sol → deprecated/RandomizerV2.sol}/BasicRandomizerV2.json +3 -3
  193. package/artifacts/contracts/randomizer/primitive/PseudorandomAtomicBasic.sol/PseudorandomAtomic.json +30 -0
  194. package/artifacts/contracts/randomizer/shared/SharedRandomizerV0.sol/SharedRandomizerV0.json +247 -0
  195. package/artifacts/contracts/royalty-registry/GenArt721RoyaltyOverride.sol/GenArt721RoyaltyOverride.json +2 -2
  196. package/artifacts/contracts/royalty-registry/GenArt721RoyaltyOverride_PBAB.sol/GenArt721RoyaltyOverride_PBAB.json +2 -2
  197. package/contracts/AdminACLV0.sol +2 -2
  198. package/contracts/AdminACLV1.sol +2 -2
  199. package/contracts/DependencyRegistryV0.sol +219 -123
  200. package/contracts/GenArt721CoreV3.sol +60 -42
  201. package/contracts/archive/minter-suite/Minters/MinterDAExp/MinterDAExpV0.sol +3 -3
  202. package/contracts/archive/minter-suite/Minters/MinterDAExp/MinterDAExpV1.sol +3 -3
  203. package/contracts/archive/minter-suite/Minters/MinterDAExp/MinterDAExpV2.sol +4 -4
  204. package/contracts/archive/minter-suite/Minters/MinterDAExp/MinterDAExpV3.sol +4 -4
  205. package/contracts/archive/minter-suite/Minters/MinterDAExpSettlement/MinterDAExpSettlementV0.sol +4 -4
  206. package/contracts/archive/minter-suite/Minters/MinterDAExpSettlement/MinterDAExpSettlementV1.sol +4 -4
  207. package/contracts/archive/minter-suite/Minters/MinterDALin/MinterDALinV0.sol +3 -3
  208. package/contracts/archive/minter-suite/Minters/MinterDALin/MinterDALinV1.sol +3 -3
  209. package/contracts/archive/minter-suite/Minters/MinterDALin/MinterDALinV2.sol +4 -4
  210. package/contracts/archive/minter-suite/Minters/MinterDALin/MinterDALinV3.sol +4 -4
  211. package/contracts/archive/minter-suite/Minters/MinterHolder/MinterHolderV0.sol +3 -3
  212. package/contracts/archive/minter-suite/Minters/MinterHolder/MinterHolderV1.sol +4 -4
  213. package/contracts/archive/minter-suite/Minters/MinterHolder/MinterHolderV2.sol +5 -5
  214. package/contracts/archive/minter-suite/Minters/MinterHolder/MinterHolderV3.sol +5 -5
  215. package/contracts/archive/minter-suite/Minters/MinterMerkle/MinterMerkleV0.sol +3 -3
  216. package/contracts/archive/minter-suite/Minters/MinterMerkle/MinterMerkleV1.sol +4 -4
  217. package/contracts/archive/minter-suite/Minters/MinterMerkle/MinterMerkleV2.sol +5 -5
  218. package/contracts/archive/minter-suite/Minters/MinterMerkle/MinterMerkleV3.sol +5 -5
  219. package/contracts/archive/minter-suite/Minters/MinterMerkle/MinterMerkleV4.sol +5 -5
  220. package/contracts/archive/minter-suite/Minters/MinterSetPrice/MinterSetPriceV0.sol +3 -3
  221. package/contracts/archive/minter-suite/Minters/MinterSetPrice/MinterSetPriceV1.sol +3 -3
  222. package/contracts/archive/minter-suite/Minters/MinterSetPrice/MinterSetPriceV2.sol +4 -4
  223. package/contracts/archive/minter-suite/Minters/MinterSetPrice/MinterSetPriceV3.sol +4 -4
  224. package/contracts/archive/minter-suite/Minters/MinterSetPriceERC20/MinterSetPriceERC20V0.sol +3 -3
  225. package/contracts/archive/minter-suite/Minters/MinterSetPriceERC20/MinterSetPriceERC20V1.sol +3 -3
  226. package/contracts/archive/minter-suite/Minters/MinterSetPriceERC20/MinterSetPriceERC20V2.sol +4 -4
  227. package/contracts/archive/minter-suite/Minters/MinterSetPriceERC20/MinterSetPriceERC20V3.sol +4 -4
  228. package/contracts/engine/{GenArt721CoreV2_ENGINE_FLEX.sol → V2/GenArt721CoreV2_ENGINE_FLEX.sol} +2 -2
  229. package/contracts/engine/{GenArt721CoreV2_PBAB.sol → V2/GenArt721CoreV2_PBAB.sol} +2 -2
  230. package/contracts/engine/{GenArt721CoreV2_PRTNR.sol → V2/GenArt721CoreV2_PRTNR.sol} +3 -3
  231. package/contracts/engine/{GenArt721MinterBurner_PBAB.sol → V2/GenArt721MinterBurner_PBAB.sol} +2 -2
  232. package/contracts/engine/{GenArt721MinterDAExp_PBAB.sol → V2/GenArt721MinterDAExp_PBAB.sol} +2 -2
  233. package/contracts/engine/{GenArt721Minter_PBAB.sol → V2/GenArt721Minter_PBAB.sol} +2 -2
  234. package/contracts/{GenArt721CoreV3_Engine.sol → engine/V3/GenArt721CoreV3_Engine.sol} +48 -24
  235. package/contracts/engine/V3/GenArt721CoreV3_Engine_Flex.sol +2298 -0
  236. package/contracts/{GenArt721CoreV3_Engine_Flex.sol → engine/V3/forks/GenArt721CoreV3_Engine_Flex_PROOF.sol} +50 -31
  237. package/contracts/engine/V3/forks/PROHIBITION/AdminACLV0_PROHIBITION.sol +281 -0
  238. package/contracts/engine/V3/forks/PROHIBITION/GenArt721CoreV3_Engine_Flex_PROHIBITION.sol +2359 -0
  239. package/contracts/engine/V3/forks/PROHIBITION/interfaces/IAdminACLV0_PROHIBITION.sol +123 -0
  240. package/contracts/engine/V3/forks/PROHIBITION/interfaces/IGenArt721CoreContractV3_Engine_Flex_PROHIBITION.sol +29 -0
  241. package/contracts/engine-registry/CoreRegistryV1.sol +254 -0
  242. package/contracts/engine-registry/EngineRegistryV0.sol +2 -2
  243. package/contracts/explorations/GenArt721CoreV3_Explorations.sol +58 -40
  244. package/contracts/interfaces/v0.8.x/IBytecodeStorageReader.sol +62 -0
  245. package/contracts/interfaces/v0.8.x/ICoreRegistryV1.sol +27 -0
  246. package/contracts/interfaces/{0.8.x → v0.8.x}/IDelegationRegistry.sol +1 -1
  247. package/contracts/interfaces/{0.8.x → v0.8.x}/IDependencyRegistryCompatibleV0.sol +1 -1
  248. package/contracts/interfaces/{0.8.x → v0.8.x}/IDependencyRegistryV0.sol +3 -3
  249. package/contracts/interfaces/{0.8.x → v0.8.x}/IEngineRegistryV0.sol +1 -1
  250. package/contracts/interfaces/{0.8.x → v0.8.x}/IFilteredMinterSEAV0.sol +34 -15
  251. package/contracts/interfaces/v0.8.x/IGenArt721CoreContractExposesHashSeed.sol +11 -0
  252. package/contracts/interfaces/v0.8.x/IGenArt721CoreContractV3WithSharedRandomizer.sol +23 -0
  253. package/contracts/interfaces/{0.8.x → v0.8.x}/IGenArt721CoreContractV3_Base.sol +3 -0
  254. package/contracts/interfaces/{0.8.x → v0.8.x}/IGenArt721CoreContractV3_Engine.sol +0 -5
  255. package/contracts/interfaces/v0.8.x/IMinterFilterV1.sol +184 -0
  256. package/contracts/interfaces/v0.8.x/IPseudorandomAtomic.sol +16 -0
  257. package/contracts/interfaces/{0.8.x → v0.8.x}/IRandomizerPolyptychV0.sol +1 -1
  258. package/contracts/interfaces/{0.8.x → v0.8.x}/IRandomizerV2.sol +2 -5
  259. package/contracts/interfaces/v0.8.x/IRandomizer_V3CoreBase.sol +23 -0
  260. package/contracts/interfaces/v0.8.x/ISharedMinterDAExpSettlementV0.sol +37 -0
  261. package/contracts/interfaces/v0.8.x/ISharedMinterDAExpV0.sol +25 -0
  262. package/contracts/interfaces/v0.8.x/ISharedMinterDALinV0.sol +26 -0
  263. package/contracts/interfaces/v0.8.x/ISharedMinterDAV0.sol +19 -0
  264. package/contracts/interfaces/v0.8.x/ISharedMinterHolderV0.sol +69 -0
  265. package/contracts/interfaces/v0.8.x/ISharedMinterMerkleV0.sol +44 -0
  266. package/contracts/interfaces/v0.8.x/ISharedMinterSEAV0.sol +78 -0
  267. package/contracts/interfaces/v0.8.x/ISharedMinterSimplePurchaseV0.sol +28 -0
  268. package/contracts/interfaces/v0.8.x/ISharedMinterV0.sol +191 -0
  269. package/contracts/interfaces/v0.8.x/ISharedRandomizerV0.sol +123 -0
  270. package/contracts/legacy/GenArt721CoreV1.sol +2 -2
  271. package/contracts/legacy/GenArt721LegacyMinter.sol +5 -5
  272. package/contracts/libs/integration-refs/delegation-registry/DelegationRegistry.sol +2 -2
  273. package/contracts/libs/integration-refs/weth9/weth9.sol +2 -0
  274. package/contracts/libs/v0.8.x/ABHelpers.sol +55 -0
  275. package/contracts/libs/v0.8.x/AuthLib.sol +197 -0
  276. package/contracts/libs/v0.8.x/BytecodeStorageV1.sol +399 -0
  277. package/contracts/libs/v0.8.x/SSTORE2.sol +109 -0
  278. package/contracts/libs/v0.8.x/minter-libs/DAExpLib.sol +125 -0
  279. package/contracts/libs/v0.8.x/minter-libs/DALinLib.sol +109 -0
  280. package/contracts/libs/v0.8.x/minter-libs/MaxInvocationsLib.sol +348 -0
  281. package/contracts/libs/v0.8.x/minter-libs/MerkleLib.sol +175 -0
  282. package/contracts/libs/v0.8.x/minter-libs/PolyptychLib.sol +160 -0
  283. package/contracts/libs/v0.8.x/minter-libs/SEALib.sol +320 -0
  284. package/contracts/libs/v0.8.x/minter-libs/SetPriceLib.sol +44 -0
  285. package/contracts/libs/v0.8.x/minter-libs/SettlementExpLib.sol +390 -0
  286. package/contracts/libs/v0.8.x/minter-libs/SplitFundsLib.sol +583 -0
  287. package/contracts/libs/v0.8.x/minter-libs/TokenHolderLib.sol +153 -0
  288. package/contracts/minter-suite/MinterFilter/MinterFilterV0.sol +3 -3
  289. package/contracts/minter-suite/MinterFilter/MinterFilterV1.sol +6 -6
  290. package/contracts/minter-suite/MinterFilter/MinterFilterV2.sol +830 -0
  291. package/contracts/minter-suite/Minters/MinterBase_v0_1_1.sol +4 -4
  292. package/contracts/minter-suite/Minters/MinterDAExpHolderV5.sol +966 -0
  293. package/contracts/minter-suite/Minters/MinterDAExpSettlementV2.sol +4 -4
  294. package/contracts/minter-suite/Minters/MinterDAExpSettlementV3.sol +1126 -0
  295. package/contracts/minter-suite/Minters/MinterDAExpV4.sol +4 -4
  296. package/contracts/minter-suite/Minters/MinterDAExpV5.sol +606 -0
  297. package/contracts/minter-suite/Minters/MinterDALinHolderV5.sol +952 -0
  298. package/contracts/minter-suite/Minters/MinterDALinV4.sol +4 -4
  299. package/contracts/minter-suite/Minters/MinterDALinV5.sol +591 -0
  300. package/contracts/minter-suite/Minters/MinterHolderV4.sol +5 -5
  301. package/contracts/minter-suite/Minters/MinterMerkleV5.sol +5 -5
  302. package/contracts/minter-suite/Minters/MinterPolyptychV0.sol +18 -17
  303. package/contracts/minter-suite/Minters/MinterSEAV0.sol +235 -186
  304. package/contracts/minter-suite/Minters/MinterSEAV1.sol +1190 -0
  305. package/contracts/minter-suite/Minters/MinterSetPriceERC20V4.sol +6 -6
  306. package/contracts/minter-suite/Minters/MinterSetPriceERC20V5.sol +570 -0
  307. package/contracts/minter-suite/Minters/MinterSetPriceHolderV5.sol +821 -0
  308. package/contracts/minter-suite/Minters/MinterSetPriceMerkleV5.sol +802 -0
  309. package/contracts/minter-suite/Minters/MinterSetPricePolyptychERC20V5.sol +1096 -0
  310. package/contracts/minter-suite/Minters/MinterSetPricePolyptychV5.sol +992 -0
  311. package/contracts/minter-suite/Minters/MinterSetPriceV4.sol +4 -4
  312. package/contracts/minter-suite/Minters/MinterSetPriceV5.sol +461 -0
  313. package/contracts/mock/{BytecodeTextCR_DMock.sol → BytecodeV0TextCR_DMock.sol} +5 -5
  314. package/contracts/mock/BytecodeV1LibCallsMock.sol +114 -0
  315. package/contracts/mock/BytecodeV1TextCR_DMock.sol +233 -0
  316. package/contracts/mock/DeadReceiverBidderMock.sol +16 -1
  317. package/contracts/mock/DeadReceiverMock.sol +1 -1
  318. package/contracts/mock/DummySharedMinter.sol +75 -0
  319. package/contracts/mock/ERC20Mock.sol +16 -0
  320. package/contracts/mock/GasLimitReceiverBidderMock.sol +1 -1
  321. package/contracts/mock/GasLimitReceiverMock.sol +1 -1
  322. package/contracts/mock/GenArt721CoreV3_Engine_IncorrectCoreType.sol +22 -35
  323. package/contracts/mock/MockAdminACLV0.sol +2 -2
  324. package/contracts/mock/MockAdminACLV0_PROHIBITION.sol +207 -0
  325. package/contracts/mock/OriginRegisterMock.sol +27 -0
  326. package/contracts/mock/RandomizerV2_NoAssignMock.sol +2 -2
  327. package/contracts/mock/ReentrancyHolderMock.sol +1 -1
  328. package/contracts/mock/ReentrancyMerkleMock.sol +1 -1
  329. package/contracts/mock/ReentrancyMock.sol +1 -1
  330. package/contracts/mock/ReentrancySEAMock.sol +1 -1
  331. package/contracts/mock/SSTORE2Mock.sol +93 -0
  332. package/contracts/randomizer/{BasicRandomizer.sol → deprecated/BasicRandomizer.sol} +1 -1
  333. package/contracts/randomizer/{BasicRandomizerBase_v0_0_0.sol → deprecated/BasicRandomizerBase_v0_0_0.sol} +1 -1
  334. package/contracts/randomizer/{PolyptychRandomizerV0.sol → deprecated/PolyptychRandomizerV0.sol} +3 -3
  335. package/contracts/randomizer/{RandomizerV2.sol → deprecated/RandomizerV2.sol} +3 -3
  336. package/contracts/randomizer/primitive/PseudorandomAtomicBasic.sol +30 -0
  337. package/contracts/randomizer/shared/SharedRandomizerV0.sol +260 -0
  338. package/contracts/royalty-registry/GenArt721RoyaltyOverride.sol +2 -2
  339. package/contracts/royalty-registry/GenArt721RoyaltyOverride_PBAB.sol +2 -2
  340. package/package.json +51 -43
  341. package/.env.example +0 -17
  342. package/LICENSE +0 -165
  343. package/artifacts/contracts/GenArt721CoreV3_Engine.sol/GenArt721CoreV3_Engine.json +0 -1942
  344. package/artifacts/contracts/GenArt721CoreV3_Engine_Flex.sol/GenArt721CoreV3_Engine_Flex.json +0 -2229
  345. package/artifacts/contracts/engine-registry/future/EngineRegistryV1.sol/EngineRegistryV1.json +0 -109
  346. package/contracts/engine-registry/future/EngineRegistryV1.sol +0 -86
  347. /package/contracts/interfaces/{0.5.x → v0.5.x}/IBonusContract.sol +0 -0
  348. /package/contracts/interfaces/{0.5.x → v0.5.x}/IGenArt721CoreContractV1.sol +0 -0
  349. /package/contracts/interfaces/{0.5.x → v0.5.x}/IGenArt721CoreV2_PBAB.sol +0 -0
  350. /package/contracts/interfaces/{0.5.x → v0.5.x}/IRandomizer.sol +0 -0
  351. /package/contracts/interfaces/{0.8.x → v0.8.x}/IAdminACLV0.sol +0 -0
  352. /package/contracts/interfaces/{0.8.x → v0.8.x}/IArtblocksRoyaltyOverride.sol +0 -0
  353. /package/contracts/interfaces/{0.8.x → v0.8.x}/IBonusContract.sol +0 -0
  354. /package/contracts/interfaces/{0.8.x → v0.8.x}/IFilteredMinterDAExpSettlementV0.sol +0 -0
  355. /package/contracts/interfaces/{0.8.x → v0.8.x}/IFilteredMinterDAExpSettlementV1.sol +0 -0
  356. /package/contracts/interfaces/{0.8.x → v0.8.x}/IFilteredMinterDAExpSettlement_Mixin.sol +0 -0
  357. /package/contracts/interfaces/{0.8.x → v0.8.x}/IFilteredMinterDAExpV0.sol +0 -0
  358. /package/contracts/interfaces/{0.8.x → v0.8.x}/IFilteredMinterDAExpV1.sol +0 -0
  359. /package/contracts/interfaces/{0.8.x → v0.8.x}/IFilteredMinterDALinV0.sol +0 -0
  360. /package/contracts/interfaces/{0.8.x → v0.8.x}/IFilteredMinterDALinV1.sol +0 -0
  361. /package/contracts/interfaces/{0.8.x → v0.8.x}/IFilteredMinterHolderV0.sol +0 -0
  362. /package/contracts/interfaces/{0.8.x → v0.8.x}/IFilteredMinterHolderV1.sol +0 -0
  363. /package/contracts/interfaces/{0.8.x → v0.8.x}/IFilteredMinterHolderV2.sol +0 -0
  364. /package/contracts/interfaces/{0.8.x → v0.8.x}/IFilteredMinterMerkleV0.sol +0 -0
  365. /package/contracts/interfaces/{0.8.x → v0.8.x}/IFilteredMinterMerkleV1.sol +0 -0
  366. /package/contracts/interfaces/{0.8.x → v0.8.x}/IFilteredMinterMerkleV2.sol +0 -0
  367. /package/contracts/interfaces/{0.8.x → v0.8.x}/IFilteredMinterV0.sol +0 -0
  368. /package/contracts/interfaces/{0.8.x → v0.8.x}/IFilteredMinterV1.sol +0 -0
  369. /package/contracts/interfaces/{0.8.x → v0.8.x}/IFilteredMinterV2.sol +0 -0
  370. /package/contracts/interfaces/{0.8.x → v0.8.x}/IGenArt721CoreContractV1.sol +0 -0
  371. /package/contracts/interfaces/{0.8.x → v0.8.x}/IGenArt721CoreContractV3.sol +0 -0
  372. /package/contracts/interfaces/{0.8.x → v0.8.x}/IGenArt721CoreContractV3_Engine_Flex.sol +0 -0
  373. /package/contracts/interfaces/{0.8.x → v0.8.x}/IGenArt721CoreV2_PBAB.sol +0 -0
  374. /package/contracts/interfaces/{0.8.x → v0.8.x}/IManifold.sol +0 -0
  375. /package/contracts/interfaces/{0.8.x → v0.8.x}/IMinterBaseV0.sol +0 -0
  376. /package/contracts/interfaces/{0.8.x → v0.8.x}/IMinterFilterV0.sol +0 -0
  377. /package/contracts/interfaces/{0.8.x → v0.8.x}/IMintingAPICoreV0.sol +0 -0
  378. /package/contracts/interfaces/{0.8.x → v0.8.x}/IMintingAPIMinterV0.sol +0 -0
  379. /package/contracts/interfaces/{0.8.x → v0.8.x}/IRandomizer.sol +0 -0
  380. /package/contracts/interfaces/{0.8.x → v0.8.x}/IWETH.sol +0 -0
  381. /package/contracts/libs/{0.5.x → v0.5.x}/CustomERC721Metadata.sol +0 -0
  382. /package/contracts/libs/{0.5.x → v0.5.x}/IERC20.sol +0 -0
  383. /package/contracts/libs/{0.5.x → v0.5.x}/SafeMath.sol +0 -0
  384. /package/contracts/libs/{0.5.x → v0.5.x}/Strings.sol +0 -0
  385. /package/contracts/libs/{0.8.x/BytecodeStorage.sol → v0.8.x/BytecodeStorageV0.sol} +0 -0
  386. /package/contracts/libs/{0.8.x → v0.8.x}/Bytes32Strings.sol +0 -0
  387. /package/contracts/libs/{0.8.x → v0.8.x}/ERC721_PackedHashSeed.sol +0 -0
@@ -0,0 +1,123 @@
1
+ // SPDX-License-Identifier: LGPL-3.0-only
2
+ // Created By: Art Blocks Inc.
3
+
4
+ pragma solidity ^0.8.0;
5
+
6
+ import "../../../../../interfaces/v0.8.x/IAdminACLV0.sol";
7
+
8
+ interface IAdminACLV0_PROHIBITION is IAdminACLV0 {
9
+ /**
10
+ * @notice Emitted when function caller is updated.
11
+ * @param contractAddress Contract that the selector caller is being set for.
12
+ * @param selector Selector of the function we're giving the privilege to call.
13
+ * @param caller Caller address that is allowed to call the function.
14
+ * @param approved Boolean value indicating if the caller is approved or not.
15
+ */
16
+ event ContractSelectorApprovalUpdated(
17
+ address indexed contractAddress,
18
+ bytes4 indexed selector,
19
+ address indexed caller,
20
+ bool approved
21
+ );
22
+
23
+ /**
24
+ * @notice Emitted when verified artist is updated.
25
+ * @param contractAddress Contract that the selector caller is being set for.
26
+ * @param caller Address of the artist.
27
+ * @param approved Boolean value indicating if the caller is approved or not.
28
+ */
29
+ event ContractArtistApprovalUpdated(
30
+ address indexed contractAddress,
31
+ address indexed caller,
32
+ bool approved
33
+ );
34
+
35
+ /**
36
+ * @notice Retrieve whether of the caller is allowed to call a contract's function
37
+ * @param _contract The contract address.
38
+ * @param _selector The function selector.
39
+ * @param _caller The caller address.
40
+ * @return isApproved The approval status.
41
+ */
42
+ function getContractSelectorApproval(
43
+ address _contract,
44
+ bytes4 _selector,
45
+ address _caller
46
+ ) external view returns (bool);
47
+
48
+ /**
49
+ * @notice Retrieve whether of the caller is allowed to call a functions for a project
50
+ * @param _contract The contract address.
51
+ * @param _caller The caller address.
52
+ * @return isApproved The approval status.
53
+ */
54
+ function getContractArtistApproval(
55
+ address _contract,
56
+ address _caller
57
+ ) external view returns (bool);
58
+
59
+ /**
60
+ * @notice Allowed caller can to set a contract function caller.
61
+ * @param _contract The contract address.
62
+ * @param _selector The function selector.
63
+ * @param _caller The caller address.
64
+ * @dev this function is gated to only superAdmin address or allowed caller.
65
+ */
66
+ function toggleContractSelectorApproval(
67
+ address _contract,
68
+ bytes4 _selector,
69
+ address _caller
70
+ ) external;
71
+
72
+ /**
73
+ * @notice Toggles verification for artists to call functions relating to their projects on a contract
74
+ * @param _contract The contract address.
75
+ * @param _caller The caller address.
76
+ * @dev this function is gated to only allwed addressed.
77
+ */
78
+ function toggleContractArtistApproval(
79
+ address _contract,
80
+ address _caller
81
+ ) external;
82
+
83
+ /**
84
+ * @notice Checks if sender `_sender` is allowed to call function (or functions for projects) with
85
+ * method `_selector` on `_contract`. Returns true if sender is superAdmin.
86
+ * @param _sender The sender address.
87
+ * @param _contract The contract address.
88
+ * @param _selector The function selector.
89
+ * @param _projectId The project ID.
90
+ * @return isApproved The approval status.
91
+ * @dev this function is public insteaad of internal so that the right to toggle approvals can also be delegated
92
+ */
93
+ function allowed(
94
+ address _sender,
95
+ address _contract,
96
+ bytes4 _selector,
97
+ uint256 _projectId
98
+ ) external returns (bool);
99
+
100
+ /**
101
+ * @notice Hash the contract address, selector, and caller address.
102
+ * @param _contract The contract address.
103
+ * @param _selector The function selector.
104
+ * @param _caller The caller address.
105
+ * @return hash The hash.
106
+ */
107
+ function hashSelectorApprovalKey(
108
+ address _contract,
109
+ bytes4 _selector,
110
+ address _caller
111
+ ) external pure returns (bytes32);
112
+
113
+ /**
114
+ * @notice Hash the contract address and artist address.
115
+ * @param _contract The contract address.
116
+ * @param _caller The artist address.
117
+ * @return hash The hash.
118
+ */
119
+ function hashArtistApprovalKey(
120
+ address _contract,
121
+ address _caller
122
+ ) external pure returns (bytes32);
123
+ }
@@ -0,0 +1,29 @@
1
+ // SPDX-License-Identifier: LGPL-3.0-only
2
+ // Created By: Art Blocks Inc.
3
+
4
+ pragma solidity ^0.8.0;
5
+
6
+ import "./IAdminACLV0_PROHIBITION.sol";
7
+ import "../../../../../interfaces/v0.8.x/IGenArt721CoreContractV3_Engine_Flex.sol";
8
+
9
+ /**
10
+ * @title This interface is intended to house interface items that are common
11
+ * across all GenArt721CoreContractV3 Engine Flex and derivative implementations.
12
+ * @author Art Blocks Inc.
13
+ */
14
+ interface IGenArt721CoreContractV3_Engine_Flex_PROHIBITION is
15
+ IGenArt721CoreContractV3_Engine_Flex
16
+ {
17
+ /**
18
+ * Function determining if _sender is allowed to call function with
19
+ * selector _selector on contract `_contract` for project `_projectId`.
20
+ * Intended to be used with peripheral contracts such as minters, as well
21
+ * as internally by the core contract itself.
22
+ */
23
+ function adminACLAllowed(
24
+ address _sender,
25
+ address _contract,
26
+ bytes4 _selector,
27
+ uint256 _projectId
28
+ ) external returns (bool);
29
+ }
@@ -0,0 +1,254 @@
1
+ // SPDX-License-Identifier: MIT
2
+
3
+ pragma solidity 0.8.19;
4
+
5
+ import "../interfaces/v0.8.x/ICoreRegistryV1.sol";
6
+ import "@openzeppelin-4.7/contracts/access/Ownable.sol";
7
+ import "@openzeppelin-4.7/contracts/utils/structs/EnumerableSet.sol";
8
+
9
+ /**
10
+ * @title Art Blocks Core Contract Registry, V1.
11
+ * @author Art Blocks Inc.
12
+ * @notice Privileged Roles and Ownership:
13
+ * This contract has a single owner, and is intended to be deployed with a
14
+ * permissioned owner that has elevated privileges on this contract.
15
+ * If in the future multiple deployer addresses are needed to interact with
16
+ * this registry, a new registry version with more complex logic should be
17
+ * implemented and deployed to replace this.
18
+ *
19
+ * This contract builds on the EngineRegistryV0 contract, but encompases more
20
+ * than just Engine contracts. It is updated to be named CoreRegistry, and is
21
+ * V1 because it is the next iteration of the V0 Engine Registry.
22
+ *
23
+ * This contract is intended to be able to act as a registry of all core
24
+ * contracts that are allowed to interact with a specific MinterFilter V2.
25
+ * This includes, but is not limited to:
26
+ * - Flagship contracts
27
+ * - Collaboration contracts
28
+ * - Engine contracts
29
+ * - Engine Flex contracts
30
+ *
31
+ * Note that not all contracts will be registered in this registry, as some
32
+ * contracts may not need to interact with a MinterFilterV2 contract. For
33
+ * example, the original Art Blocks V0 contract does not need to interact with
34
+ * a MinterFilterV2 contract, as it uses a different minting mechanism.
35
+ *
36
+ * A view function is provided to determine if a contract is registered.
37
+ *
38
+ * This contract is designed to be managed by an owner with privileged roles
39
+ * and abilities.
40
+ * ----------------------------------------------------------------------------
41
+ * The following function is restricted to the engine registry owner sending,
42
+ * or the core contract being registered during a transaction originating from
43
+ * the engine registry owner:
44
+ * - registerContract
45
+ * ----------------------------------------------------------------------------
46
+ * The following functions are restricted to the engine registry owner sending:
47
+ * - unregisterContract
48
+ * - registerContracts
49
+ * - unregisterContracts
50
+ * - Ownable: transferOwnership
51
+ * - Ownable: renounceOwnership
52
+ * ----------------------------------------------------------------------------
53
+ * Additional privileged roles may be described on minters, registries, and
54
+ * other contracts that may interact with this contract.
55
+ */
56
+ contract CoreRegistryV1 is Ownable, ICoreRegistryV1 {
57
+ using EnumerableSet for EnumerableSet.AddressSet;
58
+
59
+ /// private enumerable set of registered contracts
60
+ EnumerableSet.AddressSet private registeredContracts;
61
+
62
+ /// private mapping of registered contract addresses to
63
+ EnumerableSet.AddressSet
64
+ private registeredMinterFilterV2CompatibleContracts;
65
+
66
+ /**
67
+ * @notice Reverts if `tx.origin` is not the owner.
68
+ * @dev Warning that this check is only against tx.origin, which may be
69
+ * misleading when used for security.
70
+ */
71
+ function _onlyOwnerOrigin() internal view {
72
+ require(tx.origin == owner(), "Only tx origin of owner");
73
+ }
74
+
75
+ constructor() Ownable() {}
76
+
77
+ /**
78
+ * @notice Register a contract and emit a `ContractRegistered` event with
79
+ * the provided information. Only callable by the owner or the contract
80
+ * being registered, and only if tx.origin == owner.
81
+ * Reverts if authorization fails, or if the contract is already
82
+ * registered.
83
+ */
84
+ function registerContract(
85
+ address _contractAddress,
86
+ bytes32 _coreVersion,
87
+ bytes32 _coreType
88
+ ) external {
89
+ // CHECKS
90
+ // Validate against `tx.origin` rather than `msg.sender` as it is
91
+ // intended that this registration be performed in an automated
92
+ // fashion at the time of contract deployment of `_contractAddress`.
93
+ // @dev Security implications of using `tx.origin` are acknowledged
94
+ _onlyOwnerOrigin();
95
+ // only allow registration of a contract registering itself, or allow
96
+ // the owner to register any contract.
97
+ require(
98
+ msg.sender == _contractAddress || msg.sender == owner(),
99
+ "Only owner or registrant"
100
+ );
101
+ // EFFECTS
102
+ _registerContract(_contractAddress, _coreVersion, _coreType);
103
+ }
104
+
105
+ /**
106
+ * @notice Unregister a contract and emit a `ContractUnregistered` event.
107
+ * Only callable by the owner of this registry contract.
108
+ * Reverts if authorization fails, or if the contract is not already
109
+ * registered.
110
+ */
111
+ function unregisterContract(address _contractAddress) external {
112
+ // CHECKS
113
+ // revert if not called by owner
114
+ Ownable._checkOwner();
115
+ // EFFECTS
116
+ _unregisterContract(_contractAddress);
117
+ }
118
+
119
+ /**
120
+ * @notice Register multiple contracts at once.
121
+ * Only callable by the owner.
122
+ * Reverts if any contract is already registered.
123
+ * @dev This should primarily be used for backfilling the registry with
124
+ * existing contracts shortly after deployment.
125
+ * @param _contractAddresses Array of contract addresses to register.
126
+ * @param _coreVersions Array of core versions for each contract (aligned).
127
+ * @param _coreTypes Array of core types for each contract (aligned).
128
+ */
129
+ function registerContracts(
130
+ address[] calldata _contractAddresses,
131
+ bytes32[] calldata _coreVersions,
132
+ bytes32[] calldata _coreTypes
133
+ ) external {
134
+ // CHECKS
135
+ // revert if not called by owner
136
+ Ownable._checkOwner();
137
+ // validate same length arrays
138
+ uint256 numContracts = _contractAddresses.length;
139
+ require(
140
+ numContracts == _coreVersions.length &&
141
+ numContracts == _coreTypes.length,
142
+ "Mismatched array lengths"
143
+ );
144
+ // EFFECTS
145
+ for (uint256 i = 0; i < numContracts; ) {
146
+ _registerContract(
147
+ _contractAddresses[i],
148
+ _coreVersions[i],
149
+ _coreTypes[i]
150
+ );
151
+ unchecked {
152
+ ++i;
153
+ }
154
+ }
155
+ }
156
+
157
+ /**
158
+ * @notice Unregister multiple contracts at once.
159
+ * Only callable by the owner.
160
+ * Reverts if any contract is not already registered.
161
+ * @param _contractAddresses Array of contract addresses to unregister.
162
+ */
163
+ function unregisterContracts(
164
+ address[] calldata _contractAddresses
165
+ ) external {
166
+ // CHECKS
167
+ // revert if not called by owner
168
+ Ownable._checkOwner();
169
+ // EFFECTS
170
+ uint256 numContracts = _contractAddresses.length;
171
+ for (uint256 i = 0; i < numContracts; ) {
172
+ _unregisterContract(_contractAddresses[i]);
173
+ unchecked {
174
+ ++i;
175
+ }
176
+ }
177
+ }
178
+
179
+ /**
180
+ * @notice Get the number of registered contracts.
181
+ * @return The number of registered contracts.
182
+ */
183
+ function getNumRegisteredContracts() external view returns (uint256) {
184
+ return registeredContracts.length();
185
+ }
186
+
187
+ /**
188
+ * @notice Get the address of a registered contract by index.
189
+ * @param _index The index of the contract to get.
190
+ * @return The address of the contract at the given index.
191
+ */
192
+ function getRegisteredContractAt(
193
+ uint256 _index
194
+ ) external view returns (address) {
195
+ return registeredContracts.at(_index);
196
+ }
197
+
198
+ /**
199
+ * @notice Gets an array of all registered contract addresses.
200
+ * Warning: Unbounded gas limit. This function is gas intensive and should
201
+ * only be used for off-chain analysis. Please use
202
+ * `getNumRegisteredContracts` and `getRegisteredContractAt` for bounded
203
+ * gas usage.
204
+ */
205
+ function getAllRegisteredContracts()
206
+ external
207
+ view
208
+ returns (address[] memory)
209
+ {
210
+ return registeredContracts.values();
211
+ }
212
+
213
+ /**
214
+ * @notice Returns boolean representing if contract is registered on this
215
+ * registry.
216
+ * @param _contractAddress The address of the contract to check.
217
+ * @return isRegistered True if the contract is registered.
218
+ */
219
+ function isRegisteredContract(
220
+ address _contractAddress
221
+ ) external view returns (bool isRegistered) {
222
+ return registeredContracts.contains(_contractAddress);
223
+ }
224
+
225
+ /**
226
+ * @notice Internal function to register a contract.
227
+ * Reverts if the contract is already registered.
228
+ */
229
+ function _registerContract(
230
+ address _contractAddress,
231
+ bytes32 _coreVersion,
232
+ bytes32 _coreType
233
+ ) internal {
234
+ // @dev add returns true only if not already registered
235
+ require(
236
+ registeredContracts.add(_contractAddress),
237
+ "Contract already registered"
238
+ );
239
+ emit ContractRegistered(_contractAddress, _coreVersion, _coreType);
240
+ }
241
+
242
+ /**
243
+ * @notice Internal function to unregister a contract.
244
+ * Reverts if the contract is not already registered.
245
+ */
246
+ function _unregisterContract(address _contractAddress) internal {
247
+ // @dev remove returns true only if already in set
248
+ require(
249
+ registeredContracts.remove(_contractAddress),
250
+ "Only registered contracts"
251
+ );
252
+ emit ContractUnregistered(_contractAddress);
253
+ }
254
+ }
@@ -1,8 +1,8 @@
1
1
  // SPDX-License-Identifier: MIT
2
2
 
3
- pragma solidity 0.8.17;
3
+ pragma solidity 0.8.19;
4
4
 
5
- import "../interfaces/0.8.x/IEngineRegistryV0.sol";
5
+ import "../interfaces/v0.8.x/IEngineRegistryV0.sol";
6
6
  import "@openzeppelin-4.7/contracts/utils/introspection/ERC165.sol";
7
7
 
8
8
  /**
@@ -1,18 +1,19 @@
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/IGenArt721CoreContractV3.sol";
9
- import "../interfaces/0.8.x/IManifold.sol";
6
+ import "../interfaces/v0.8.x/IRandomizerV2.sol";
7
+ import "../interfaces/v0.8.x/IAdminACLV0.sol";
8
+ import "../interfaces/v0.8.x/IGenArt721CoreContractV3.sol";
9
+ import "../interfaces/v0.8.x/IGenArt721CoreContractExposesHashSeed.sol";
10
+ import "../interfaces/v0.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
- import "../libs/0.8.x/ERC721_PackedHashSeed.sol";
14
- import "../libs/0.8.x/BytecodeStorage.sol";
15
- import "../libs/0.8.x/Bytes32Strings.sol";
14
+ import "../libs/v0.8.x/ERC721_PackedHashSeed.sol";
15
+ import "../libs/v0.8.x/BytecodeStorageV1.sol";
16
+ import "../libs/v0.8.x/Bytes32Strings.sol";
16
17
 
17
18
  /**
18
19
  * @title Art Blocks ERC-721 core contract, V3_Explorations.
@@ -88,10 +89,10 @@ import "../libs/0.8.x/Bytes32Strings.sol";
88
89
  contract GenArt721CoreV3_Explorations is
89
90
  ERC721_PackedHashSeed,
90
91
  Ownable,
91
- IGenArt721CoreContractV3
92
+ IGenArt721CoreContractV3,
93
+ IGenArt721CoreContractExposesHashSeed
92
94
  {
93
- using BytecodeStorage for string;
94
- using BytecodeStorage for address;
95
+ using BytecodeStorageWriter for string;
95
96
  using Bytes32Strings for bytes32;
96
97
  using Strings for uint256;
97
98
  using Strings for address;
@@ -180,7 +181,7 @@ contract GenArt721CoreV3_Explorations is
180
181
  bool paused;
181
182
  string name;
182
183
  string artist;
183
- string description;
184
+ address descriptionAddress;
184
185
  string website;
185
186
  string license;
186
187
  string projectBaseURI;
@@ -237,7 +238,7 @@ contract GenArt721CoreV3_Explorations is
237
238
  /// version & type of this core contract
238
239
  /// coreVersion is updated from Flagship V3 core due to minor changes
239
240
  /// implemented in the Explorations version of the contract.
240
- string public constant coreVersion = "v3.0.3";
241
+ string public constant coreVersion = "v3.2.3";
241
242
  /// coreType remains consistent with flagship V3 core because external &
242
243
  /// public functions used for indexing are unchanged.
243
244
  string public constant coreType = "GenArt721CoreV3";
@@ -949,6 +950,13 @@ contract GenArt721CoreV3_Explorations is
949
950
  /**
950
951
  * @notice Updates description of project `_projectId`.
951
952
  * Only artist may call when unlocked, only admin may call when locked.
953
+ * Note: The BytecodeStorage library is used to store the description to
954
+ * reduce initial upload cost, however, even minor edits will require an
955
+ * expensive, entirely new bytecode storage contract to be deployed instead
956
+ * of relatively cheap updates to already-warm storage slots. This results
957
+ * in an increased gas cost for minor edits to the description after the
958
+ * initial upload, but an overall decrease in gas cost for projects with
959
+ * less than ~3-5 edits (depending on the length of the description).
952
960
  * @param _projectId Project ID.
953
961
  * @param _projectDescription New project description.
954
962
  */
@@ -968,7 +976,10 @@ contract GenArt721CoreV3_Explorations is
968
976
  "Only artist when unlocked, owner when locked"
969
977
  );
970
978
  // effects
971
- projects[_projectId].description = _projectDescription;
979
+ // store description in contract bytecode, replacing reference address from
980
+ // the old storage description with the newly created one
981
+ projects[_projectId].descriptionAddress = _projectDescription
982
+ .writeToBytecode();
972
983
  emit ProjectUpdated(_projectId, FIELD_PROJECT_DESCRIPTION);
973
984
  }
974
985
 
@@ -1076,18 +1087,8 @@ contract GenArt721CoreV3_Explorations is
1076
1087
  _onlyNonEmptyString(_script);
1077
1088
  Project storage project = projects[_projectId];
1078
1089
  require(_scriptId < project.scriptCount, "scriptId out of range");
1079
- // purge old contract bytecode contract from the blockchain state
1080
- // note: Although this does reduce usage of Ethereum state, it does not
1081
- // reduce the gas costs of removal transactions. We believe this is the
1082
- // best behavior at the time of writing, and do not expect this to
1083
- // result in any breaking changes in the future. All current proposals
1084
- // to change the self-destruct opcode are backwards compatible, but may
1085
- // result in not removing the bytecode from the blockchain state. This
1086
- // implementation is compatible with that architecture, as it does not
1087
- // rely on the bytecode being removed from the blockchain state.
1088
- project.scriptBytecodeAddresses[_scriptId].purgeBytecode();
1089
1090
  // store script in contract bytecode, replacing reference address from
1090
- // the contract that no longer exists with the newly created one
1091
+ // the old storage contract with the newly created one
1091
1092
  project.scriptBytecodeAddresses[_scriptId] = _script.writeToBytecode();
1092
1093
  emit ProjectUpdated(_projectId, FIELD_PROJECT_SCRIPT);
1093
1094
  }
@@ -1104,19 +1105,7 @@ contract GenArt721CoreV3_Explorations is
1104
1105
  );
1105
1106
  Project storage project = projects[_projectId];
1106
1107
  require(project.scriptCount > 0, "there are no scripts to remove");
1107
- // purge old contract bytecode contract from the blockchain state
1108
- // note: Although this does reduce usage of Ethereum state, it does not
1109
- // reduce the gas costs of removal transactions. We believe this is the
1110
- // best behavior at the time of writing, and do not expect this to
1111
- // result in any breaking changes in the future. All current proposals
1112
- // to change the self-destruct opcode are backwards compatible, but may
1113
- // result in not removing the bytecode from the blockchain state. This
1114
- // implementation is compatible with that architecture, as it does not
1115
- // rely on the bytecode being removed from the blockchain state.
1116
- project
1117
- .scriptBytecodeAddresses[project.scriptCount - 1]
1118
- .purgeBytecode();
1119
- // delete reference to contract address that no longer exists
1108
+ // delete reference to old storage contract address
1120
1109
  delete project.scriptBytecodeAddresses[project.scriptCount - 1];
1121
1110
  unchecked {
1122
1111
  project.scriptCount = project.scriptCount - 1;
@@ -1253,6 +1242,20 @@ contract GenArt721CoreV3_Explorations is
1253
1242
  return keccak256(abi.encode(_hashSeed));
1254
1243
  }
1255
1244
 
1245
+ /**
1246
+ * @notice Returns token hash **seed** for token ID `_tokenId`. Returns
1247
+ * null if hash seed has not been set. The hash seed id the bytes12 value
1248
+ * which is hashed to produce the token hash.
1249
+ * @param _tokenId Token ID to be queried.
1250
+ * @return bytes12 Token hash seed.
1251
+ * @dev token hash seed is keccak256 hashed to give the token hash
1252
+ */
1253
+ function tokenIdToHashSeed(
1254
+ uint256 _tokenId
1255
+ ) external view returns (bytes12) {
1256
+ return _ownersAndHashSeeds[_tokenId].hashSeed;
1257
+ }
1258
+
1256
1259
  /**
1257
1260
  * @notice View function returning Art Blocks portion of primary sales, in
1258
1261
  * percent.
@@ -1367,7 +1370,12 @@ contract GenArt721CoreV3_Explorations is
1367
1370
  Project storage project = projects[_projectId];
1368
1371
  projectName = project.name;
1369
1372
  artist = project.artist;
1370
- description = project.description;
1373
+ address projectDescriptionBytecodeAddress = project.descriptionAddress;
1374
+ if (projectDescriptionBytecodeAddress == address(0)) {
1375
+ description = "";
1376
+ } else {
1377
+ description = _readFromBytecode(projectDescriptionBytecodeAddress);
1378
+ }
1371
1379
  website = project.website;
1372
1380
  license = project.license;
1373
1381
  }
@@ -1505,7 +1513,7 @@ contract GenArt721CoreV3_Explorations is
1505
1513
  if (_index >= project.scriptCount) {
1506
1514
  return "";
1507
1515
  }
1508
- return project.scriptBytecodeAddresses[_index].readFromBytecode();
1516
+ return _readFromBytecode(project.scriptBytecodeAddresses[_index]);
1509
1517
  }
1510
1518
 
1511
1519
  /**
@@ -1957,4 +1965,14 @@ contract GenArt721CoreV3_Explorations is
1957
1965
  (block.timestamp - projectCompletedTimestamp <
1958
1966
  FOUR_WEEKS_IN_SECONDS);
1959
1967
  }
1968
+
1969
+ /**
1970
+ * Helper for calling `BytecodeStorageReader` external library reader method,
1971
+ * added for bytecode size reduction purposes.
1972
+ */
1973
+ function _readFromBytecode(
1974
+ address _address
1975
+ ) internal view returns (string memory) {
1976
+ return BytecodeStorageReader.readFromBytecode(_address);
1977
+ }
1960
1978
  }
@@ -0,0 +1,62 @@
1
+ // SPDX-License-Identifier: LGPL-3.0-only
2
+ // Creatd By: Art Blocks Inc.
3
+
4
+ pragma solidity ^0.8.0;
5
+
6
+ /**
7
+ * @title Art Blocks Script Storage Library (Reader)
8
+ * @notice This interface defines the expected read functions for the Art Blocks Script Storage Library (Reader).
9
+ */
10
+ interface IBytecodeStorageReader {
11
+ /**
12
+ * @notice Read a string from contract bytecode
13
+ * @param _address address of deployed contract with bytecode stored in the V0 or V1 format
14
+ * @return data string read from contract bytecode
15
+ * @dev This function performs input validation that the contract to read is in an expected format
16
+ */
17
+ function readFromBytecode(
18
+ address _address
19
+ ) external view returns (string memory data);
20
+
21
+ /**
22
+ * @notice Read the bytes from contract bytecode that was written to the EVM using SSTORE2
23
+ * @param _address address of deployed contract with bytecode stored in the SSTORE2 format
24
+ * @return data bytes read from contract bytecode
25
+ * @dev This function performs no input validation on the provided contract,
26
+ * other than that there is content to read (but not that its a "storage contract")
27
+ */
28
+ function readBytesFromSSTORE2Bytecode(
29
+ address _address
30
+ ) external view returns (bytes memory data);
31
+
32
+ /**
33
+ * @notice Read the bytes from contract bytecode, with an explicitly provided starting offset
34
+ * @param _address address of deployed contract with bytecode stored in the V0 or V1 format
35
+ * @param _offset offset to read from in contract bytecode, explicitly provided (not calculated)
36
+ * @return data bytes read from contract bytecode
37
+ * @dev This function performs no input validation on the provided contract,
38
+ * other than that there is content to read (but not that its a "storage contract")
39
+ */
40
+ function readBytesFromBytecode(
41
+ address _address,
42
+ uint256 _offset
43
+ ) external view returns (bytes memory data);
44
+
45
+ /**
46
+ * @notice Get address for deployer for given contract bytecode
47
+ * @param _address address of deployed contract with bytecode stored in the V0 or V1 format
48
+ * @return writerAddress address read from contract bytecode
49
+ */
50
+ function getWriterAddressForBytecode(
51
+ address _address
52
+ ) external view returns (address);
53
+
54
+ /**
55
+ * @notice Get version for given contract bytecode
56
+ * @param _address address of deployed contract with bytecode stored in the V0 or V1 format
57
+ * @return version version read from contract bytecode
58
+ */
59
+ function getLibraryVersionForBytecode(
60
+ address _address
61
+ ) external view returns (bytes32);
62
+ }