@artblocks/contracts 1.0.1 → 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 (199) hide show
  1. package/README.md +67 -154
  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 +1034 -0
  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 +162 -0
  44. package/artifacts/contracts/interfaces/0.8.x/IGenArt721CoreContractV3_Base.sol/IGenArt721CoreContractV3_Base.json +162 -0
  45. package/artifacts/contracts/interfaces/0.8.x/IGenArt721CoreContractV3_Engine.sol/IGenArt721CoreContractV3_Engine.json +137 -13
  46. package/artifacts/contracts/interfaces/0.8.x/IGenArt721CoreContractV3_Engine_Flex.sol/IGenArt721CoreContractV3_Engine_Flex.json +1060 -0
  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/interfaces/0.8.x/IWETH.sol/IWETH.json +55 -0
  52. package/artifacts/contracts/libs/0.8.x/{BytecodeStorage.sol → BytecodeStorageV0.sol}/BytecodeStorage.json +3 -3
  53. package/artifacts/contracts/libs/0.8.x/BytecodeStorageV1.sol/BytecodeStorageReader.json +163 -0
  54. package/artifacts/contracts/libs/0.8.x/BytecodeStorageV1.sol/BytecodeStorageWriter.json +10 -0
  55. package/artifacts/contracts/libs/0.8.x/Bytes32Strings.sol/Bytes32Strings.json +2 -2
  56. package/artifacts/contracts/libs/0.8.x/ERC721_PackedHashSeed.sol/ERC721_PackedHashSeed.json +2 -2
  57. package/artifacts/contracts/libs/0.8.x/SSTORE2.sol/SSTORE2.json +10 -0
  58. package/artifacts/contracts/libs/integration-refs/delegation-registry/DelegationRegistry.sol/DelegationRegistry.json +2 -2
  59. package/artifacts/contracts/libs/integration-refs/gnosis-safe/GnosisSafeMock.sol/GnosisSafeMock.json +2 -2
  60. package/artifacts/contracts/libs/integration-refs/gnosis-safe/GnosisSafeProxyFactoryMock.sol/GnosisSafeProxyFactoryMock.json +2 -2
  61. package/artifacts/contracts/libs/integration-refs/gnosis-safe/MultiSendMock.sol/MultiSendMock.json +2 -2
  62. package/artifacts/contracts/libs/integration-refs/weth9/weth9.sol/WETH9_.json +295 -0
  63. package/artifacts/contracts/minter-suite/MinterFilter/MinterFilterV1.sol/MinterFilterV1.json +2 -2
  64. package/artifacts/contracts/minter-suite/MinterFilter/MinterFilterV2.sol/MinterFilterV2.json +692 -0
  65. package/artifacts/contracts/minter-suite/Minters/MinterDAExpSettlementV2.sol/MinterDAExpSettlementV2.json +2 -2
  66. package/artifacts/contracts/minter-suite/Minters/MinterDAExpV4.sol/MinterDAExpV4.json +2 -2
  67. package/artifacts/contracts/minter-suite/Minters/MinterDALinV4.sol/MinterDALinV4.json +2 -2
  68. package/artifacts/contracts/minter-suite/Minters/MinterHolderV4.sol/MinterHolderV4.json +2 -2
  69. package/artifacts/contracts/minter-suite/Minters/MinterMerkleV5.sol/MinterMerkleV5.json +2 -2
  70. package/artifacts/contracts/minter-suite/Minters/MinterPolyptychV0.sol/IGenArt721CoreContractV3WithRandomizer.json +104 -124
  71. package/artifacts/contracts/minter-suite/Minters/MinterPolyptychV0.sol/MinterPolyptychV0.json +2 -2
  72. package/artifacts/contracts/minter-suite/Minters/MinterSEAV0.sol/MinterSEAV0.json +1289 -0
  73. package/artifacts/contracts/minter-suite/Minters/MinterSetPriceERC20V4.sol/MinterSetPriceERC20V4.json +2 -2
  74. package/artifacts/contracts/minter-suite/Minters/MinterSetPriceV4.sol/MinterSetPriceV4.json +2 -2
  75. package/artifacts/contracts/mock/{BytecodeTextCR_DMock.sol/BytecodeTextCR_DMock.json → BytecodeV0TextCR_DMock.sol/BytecodeV0TextCR_DMock.json} +4 -4
  76. package/artifacts/contracts/mock/BytecodeV1LibCallsMock.sol/BytecodeV1LibCallsMock.json +135 -0
  77. package/artifacts/contracts/mock/BytecodeV1TextCR_DMock.sol/BytecodeV1TextCR_DMock.json +301 -0
  78. package/artifacts/contracts/mock/DeadReceiverBidderMock.sol/DeadReceiverBidderMock.json +33 -0
  79. package/artifacts/contracts/mock/DeadReceiverMock.sol/DeadReceiverMock.json +2 -2
  80. package/artifacts/contracts/mock/DummySharedMinter.sol/DummySharedMinter.json +114 -0
  81. package/artifacts/contracts/mock/ERC20Mock.sol/ERC20Mock.json +2 -2
  82. package/artifacts/contracts/mock/GasLimitReceiverBidderMock.sol/GasLimitReceiverBidderMock.json +46 -0
  83. package/artifacts/contracts/mock/GasLimitReceiverMock.sol/GasLimitReceiverMock.json +28 -0
  84. package/artifacts/contracts/mock/GenArt721CoreV3_Engine_IncorrectCoreType.sol/GenArt721CoreV3_Engine_IncorrectCoreType.json +22 -4
  85. package/artifacts/contracts/mock/MockAdminACLV0.sol/MockAdminACLV0Events.json +2 -2
  86. package/artifacts/contracts/mock/MockAdminACLV0_PROHIBITION.sol/MockAdminACLV0Events_PROHIBITION.json +440 -0
  87. package/artifacts/contracts/mock/OriginRegisterMock.sol/OriginRegisterMock.json +39 -0
  88. package/artifacts/contracts/mock/RandomizerV2_NoAssignMock.sol/RandomizerV2_NoAssignMock.json +2 -2
  89. package/artifacts/contracts/mock/ReentrancyHolderMock.sol/ReentrancyHolderMock.json +2 -2
  90. package/artifacts/contracts/mock/ReentrancyMerkleMock.sol/ReentrancyMerkleMock.json +2 -2
  91. package/artifacts/contracts/mock/ReentrancyMock.sol/ReentrancyMock.json +2 -2
  92. package/artifacts/contracts/mock/ReentrancySEAMock.sol/ReentrancySEAAutoBidderMock.json +51 -0
  93. package/artifacts/contracts/mock/SSTORE2Mock.sol/SSTORE2Mock.json +118 -0
  94. package/artifacts/contracts/{BasicRandomizer.sol → randomizer/deprecated/BasicRandomizer.sol}/BasicRandomizer.json +3 -3
  95. package/artifacts/contracts/randomizer/deprecated/BasicRandomizerBase_v0_0_0.sol/RandomizerBase.json +10 -0
  96. package/artifacts/contracts/randomizer/deprecated/PolyptychRandomizerV0.sol/BasicPolyptychRandomizerV0.json +229 -0
  97. package/artifacts/contracts/randomizer/deprecated/RandomizerV2.sol/BasicRandomizerV2.json +102 -0
  98. package/artifacts/contracts/randomizer/primitive/PseudorandomAtomicBasic.sol/PseudorandomAtomic.json +30 -0
  99. package/artifacts/contracts/randomizer/shared/SharedRandomizerV0.sol/SharedRandomizerV0.json +231 -0
  100. package/artifacts/contracts/royalty-registry/GenArt721RoyaltyOverride.sol/GenArt721RoyaltyOverride.json +2 -2
  101. package/contracts/AdminACLV0.sol +1 -1
  102. package/contracts/AdminACLV1.sol +1 -1
  103. package/contracts/DependencyRegistryV0.sol +89 -141
  104. package/contracts/GenArt721CoreV3.sol +160 -204
  105. package/contracts/archive/minter-suite/Minters/MinterDAExp/MinterDAExpV2.sol +1 -1
  106. package/contracts/archive/minter-suite/Minters/MinterDAExp/MinterDAExpV3.sol +1 -1
  107. package/contracts/archive/minter-suite/Minters/MinterDAExpSettlement/MinterDAExpSettlementV0.sol +1 -1
  108. package/contracts/archive/minter-suite/Minters/MinterDAExpSettlement/MinterDAExpSettlementV1.sol +1 -1
  109. package/contracts/archive/minter-suite/Minters/MinterDALin/MinterDALinV2.sol +1 -1
  110. package/contracts/archive/minter-suite/Minters/MinterDALin/MinterDALinV3.sol +1 -1
  111. package/contracts/archive/minter-suite/Minters/MinterHolder/MinterHolderV1.sol +1 -1
  112. package/contracts/archive/minter-suite/Minters/MinterHolder/MinterHolderV2.sol +1 -1
  113. package/contracts/archive/minter-suite/Minters/MinterHolder/MinterHolderV3.sol +1 -1
  114. package/contracts/archive/minter-suite/Minters/MinterMerkle/MinterMerkleV1.sol +1 -1
  115. package/contracts/archive/minter-suite/Minters/MinterMerkle/MinterMerkleV2.sol +1 -1
  116. package/contracts/archive/minter-suite/Minters/MinterMerkle/MinterMerkleV3.sol +1 -1
  117. package/contracts/archive/minter-suite/Minters/MinterMerkle/MinterMerkleV4.sol +1 -1
  118. package/contracts/archive/minter-suite/Minters/MinterSetPrice/MinterSetPriceV2.sol +1 -1
  119. package/contracts/archive/minter-suite/Minters/MinterSetPrice/MinterSetPriceV3.sol +1 -1
  120. package/contracts/archive/minter-suite/Minters/MinterSetPriceERC20/MinterSetPriceERC20V2.sol +1 -1
  121. package/contracts/archive/minter-suite/Minters/MinterSetPriceERC20/MinterSetPriceERC20V3.sol +1 -1
  122. package/contracts/engine/{GenArt721CoreV2_ENGINE_FLEX.sol → V2/GenArt721CoreV2_ENGINE_FLEX.sol} +2 -2
  123. package/contracts/engine/{GenArt721CoreV2_PBAB.sol → V2/GenArt721CoreV2_PBAB.sol} +2 -2
  124. package/contracts/engine/{GenArt721CoreV2_PRTNR.sol → V2/GenArt721CoreV2_PRTNR.sol} +3 -3
  125. package/contracts/engine/{GenArt721MinterBurner_PBAB.sol → V2/GenArt721MinterBurner_PBAB.sol} +2 -2
  126. package/contracts/engine/{GenArt721MinterDAExp_PBAB.sol → V2/GenArt721MinterDAExp_PBAB.sol} +2 -2
  127. package/contracts/engine/{GenArt721Minter_PBAB.sol → V2/GenArt721Minter_PBAB.sol} +2 -2
  128. package/contracts/{GenArt721CoreV3_Engine.sol → engine/V3/GenArt721CoreV3_Engine.sol} +163 -216
  129. package/contracts/engine/V3/GenArt721CoreV3_Engine_Flex.sol +2283 -0
  130. package/contracts/engine/V3/forks/GenArt721CoreV3_Engine_Flex_PROOF.sol +2293 -0
  131. package/contracts/engine/V3/forks/PROHIBITION/AdminACLV0_PROHIBITION.sol +281 -0
  132. package/contracts/engine/V3/forks/PROHIBITION/GenArt721CoreV3_Engine_Flex_PROHIBITION.sol +2354 -0
  133. package/contracts/engine/V3/forks/PROHIBITION/interfaces/IAdminACLV0_PROHIBITION.sol +123 -0
  134. package/contracts/engine/V3/forks/PROHIBITION/interfaces/IGenArt721CoreContractV3_Engine_Flex_PROHIBITION.sol +29 -0
  135. package/contracts/engine-registry/CoreRegistryV1.sol +254 -0
  136. package/contracts/engine-registry/EngineRegistryV0.sol +1 -1
  137. package/contracts/explorations/GenArt721CoreV3_Explorations.sol +164 -190
  138. package/contracts/interfaces/0.8.x/IBytecodeStorageReader.sol +62 -0
  139. package/contracts/interfaces/0.8.x/ICoreRegistryV1.sol +27 -0
  140. package/contracts/interfaces/0.8.x/IDelegationRegistry.sol +1 -1
  141. package/contracts/interfaces/0.8.x/IDependencyRegistryCompatibleV0.sol +1 -1
  142. package/contracts/interfaces/0.8.x/IDependencyRegistryV0.sol +1 -1
  143. package/contracts/interfaces/0.8.x/IEngineRegistryV0.sol +1 -1
  144. package/contracts/interfaces/0.8.x/IFilteredMinterSEAV0.sol +164 -0
  145. package/contracts/interfaces/0.8.x/IGenArt721CoreContractExposesHashSeed.sol +11 -0
  146. package/contracts/interfaces/0.8.x/IGenArt721CoreContractV3_Base.sol +42 -0
  147. package/contracts/interfaces/0.8.x/IGenArt721CoreContractV3_Engine.sol +0 -8
  148. package/contracts/interfaces/0.8.x/IGenArt721CoreContractV3_Engine_Flex.sol +132 -0
  149. package/contracts/interfaces/0.8.x/IMinterFilterV1.sol +158 -0
  150. package/contracts/interfaces/0.8.x/IPseudorandomAtomic.sol +16 -0
  151. package/contracts/interfaces/0.8.x/IRandomizerPolyptychV0.sol +1 -1
  152. package/contracts/interfaces/0.8.x/IRandomizerV2.sol +2 -5
  153. package/contracts/interfaces/0.8.x/IRandomizer_V3CoreBase.sol +10 -0
  154. package/contracts/interfaces/0.8.x/ISharedRandomizerV0.sol +105 -0
  155. package/contracts/interfaces/0.8.x/IWETH.sol +11 -0
  156. package/contracts/libs/0.8.x/BytecodeStorageV1.sol +399 -0
  157. package/contracts/libs/0.8.x/SSTORE2.sol +109 -0
  158. package/contracts/libs/integration-refs/delegation-registry/DelegationRegistry.sol +1 -1
  159. package/contracts/libs/integration-refs/weth9/weth9.sol +765 -0
  160. package/contracts/minter-suite/MinterFilter/MinterFilterV1.sol +36 -48
  161. package/contracts/minter-suite/MinterFilter/MinterFilterV2.sol +756 -0
  162. package/contracts/minter-suite/Minters/MinterDAExpSettlementV2.sol +27 -35
  163. package/contracts/minter-suite/Minters/MinterDAExpV4.sol +17 -22
  164. package/contracts/minter-suite/Minters/MinterDALinV4.sol +16 -18
  165. package/contracts/minter-suite/Minters/MinterHolderV4.sol +20 -20
  166. package/contracts/minter-suite/Minters/MinterMerkleV5.sol +14 -16
  167. package/contracts/minter-suite/Minters/MinterPolyptychV0.sol +37 -36
  168. package/contracts/minter-suite/Minters/MinterSEAV0.sol +1273 -0
  169. package/contracts/minter-suite/Minters/MinterSetPriceERC20V4.sol +12 -12
  170. package/contracts/minter-suite/Minters/MinterSetPriceV4.sol +10 -11
  171. package/contracts/mock/{BytecodeTextCR_DMock.sol → BytecodeV0TextCR_DMock.sol} +5 -5
  172. package/contracts/mock/BytecodeV1LibCallsMock.sol +114 -0
  173. package/contracts/mock/BytecodeV1TextCR_DMock.sol +233 -0
  174. package/contracts/mock/DeadReceiverBidderMock.sol +23 -0
  175. package/contracts/mock/DeadReceiverMock.sol +1 -1
  176. package/contracts/mock/DummySharedMinter.sol +75 -0
  177. package/contracts/mock/GasLimitReceiverBidderMock.sol +23 -0
  178. package/contracts/mock/GasLimitReceiverMock.sol +19 -0
  179. package/contracts/mock/GenArt721CoreV3_Engine_IncorrectCoreType.sol +14 -27
  180. package/contracts/mock/MockAdminACLV0.sol +1 -1
  181. package/contracts/mock/MockAdminACLV0_PROHIBITION.sol +207 -0
  182. package/contracts/mock/OriginRegisterMock.sol +27 -0
  183. package/contracts/mock/RandomizerV2_NoAssignMock.sol +3 -12
  184. package/contracts/mock/ReentrancySEAMock.sol +36 -0
  185. package/contracts/mock/SSTORE2Mock.sol +93 -0
  186. package/contracts/{BasicRandomizer.sol → randomizer/deprecated/BasicRandomizer.sol} +1 -1
  187. package/contracts/randomizer/deprecated/BasicRandomizerBase_v0_0_0.sol +23 -0
  188. package/contracts/{BasicPolyptychRandomizerV0.sol → randomizer/deprecated/PolyptychRandomizerV0.sol} +20 -29
  189. package/contracts/{BasicRandomizerV2.sol → randomizer/deprecated/RandomizerV2.sol} +6 -14
  190. package/contracts/randomizer/primitive/PseudorandomAtomicBasic.sol +30 -0
  191. package/contracts/randomizer/shared/SharedRandomizerV0.sol +245 -0
  192. package/package.json +36 -30
  193. package/.env.example +0 -10
  194. package/artifacts/contracts/BasicPolyptychRandomizerV0.sol/BasicPolyptychRandomizerV0.json +0 -229
  195. package/artifacts/contracts/BasicRandomizerV2.sol/BasicRandomizerV2.json +0 -102
  196. package/artifacts/contracts/GenArt721CoreV3_Engine.sol/GenArt721CoreV3_Engine.json +0 -1942
  197. package/artifacts/contracts/engine-registry/future/EngineRegistryV1.sol/EngineRegistryV1.json +0 -109
  198. package/contracts/engine-registry/future/EngineRegistryV1.sol +0 -86
  199. /package/contracts/libs/0.8.x/{BytecodeStorage.sol → BytecodeStorageV0.sol} +0 -0
@@ -9,7 +9,7 @@ import "./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.
@@ -144,8 +144,11 @@ contract MinterDAExpSettlementV2 is
144
144
  /// user address => project ID => receipt
145
145
  mapping(address => mapping(uint256 => Receipt)) receipts;
146
146
 
147
- // modifier to restrict access to only AdminACL or the artist
148
- modifier onlyCoreAdminACLOrArtist(uint256 _projectId, bytes4 _selector) {
147
+ // function to restrict access to only AdminACL or the artist
148
+ function _onlyCoreAdminACLOrArtist(
149
+ uint256 _projectId,
150
+ bytes4 _selector
151
+ ) internal {
149
152
  require(
150
153
  (msg.sender ==
151
154
  genArtCoreContract_Base.projectIdToArtistAddress(_projectId)) ||
@@ -158,12 +161,11 @@ contract MinterDAExpSettlementV2 is
158
161
  ),
159
162
  "Only Artist or Admin ACL"
160
163
  );
161
- _;
162
164
  }
163
165
 
164
- // modifier to restrict access to only AdminACL allowed calls
166
+ // function to restrict access to only AdminACL allowed calls
165
167
  // @dev defers which ACL contract is used to the core contract
166
- modifier onlyCoreAdminACL(bytes4 _selector) {
168
+ function _onlyCoreAdminACL(bytes4 _selector) internal {
167
169
  require(
168
170
  genArtCoreContract_Base.adminACLAllowed(
169
171
  msg.sender,
@@ -172,16 +174,14 @@ contract MinterDAExpSettlementV2 is
172
174
  ),
173
175
  "Only Core AdminACL allowed"
174
176
  );
175
- _;
176
177
  }
177
178
 
178
- modifier onlyArtist(uint256 _projectId) {
179
+ function _onlyArtist(uint256 _projectId) internal view {
179
180
  require(
180
181
  (msg.sender ==
181
182
  genArtCoreContract_Base.projectIdToArtistAddress(_projectId)),
182
183
  "Only Artist"
183
184
  );
184
- _;
185
185
  }
186
186
 
187
187
  /**
@@ -220,9 +220,8 @@ contract MinterDAExpSettlementV2 is
220
220
  * @param _projectId Project ID to set the maximum invocations for.
221
221
  * @dev This function is included for interface conformance purposes only.
222
222
  */
223
- function setProjectMaxInvocations(
224
- uint256 _projectId
225
- ) external view onlyArtist(_projectId) {
223
+ function setProjectMaxInvocations(uint256 _projectId) external view {
224
+ _onlyArtist(_projectId);
226
225
  revert("Not implemented");
227
226
  }
228
227
 
@@ -240,7 +239,8 @@ contract MinterDAExpSettlementV2 is
240
239
  function manuallyLimitProjectMaxInvocations(
241
240
  uint256 _projectId,
242
241
  uint256 _maxInvocations
243
- ) external onlyArtist(_projectId) {
242
+ ) external {
243
+ _onlyArtist(_projectId);
244
244
  // CHECKS
245
245
  // require that new maxInvocations is greater than 0 to prevent
246
246
  // accidental premature closure of a project when artist is
@@ -288,9 +288,8 @@ contract MinterDAExpSettlementV2 is
288
288
  * @notice Warning: Disabling purchaseTo is not supported on this minter.
289
289
  * This method exists purely for interface-conformance purposes.
290
290
  */
291
- function togglePurchaseToDisabled(
292
- uint256 _projectId
293
- ) external view onlyArtist(_projectId) {
291
+ function togglePurchaseToDisabled(uint256 _projectId) external view {
292
+ _onlyArtist(_projectId);
294
293
  revert("Action not supported");
295
294
  }
296
295
 
@@ -355,12 +354,10 @@ contract MinterDAExpSettlementV2 is
355
354
  function setAllowablePriceDecayHalfLifeRangeSeconds(
356
355
  uint256 _minimumPriceDecayHalfLifeSeconds,
357
356
  uint256 _maximumPriceDecayHalfLifeSeconds
358
- )
359
- external
360
- onlyCoreAdminACL(
357
+ ) external {
358
+ _onlyCoreAdminACL(
361
359
  this.setAllowablePriceDecayHalfLifeRangeSeconds.selector
362
- )
363
- {
360
+ );
364
361
  require(
365
362
  _maximumPriceDecayHalfLifeSeconds >
366
363
  _minimumPriceDecayHalfLifeSeconds,
@@ -410,7 +407,8 @@ contract MinterDAExpSettlementV2 is
410
407
  uint256 _priceDecayHalfLifeSeconds,
411
408
  uint256 _startPrice,
412
409
  uint256 _basePrice
413
- ) external onlyArtist(_projectId) {
410
+ ) external {
411
+ _onlyArtist(_projectId);
414
412
  // CHECKS
415
413
  ProjectConfig storage _projectConfig = projectConfig[_projectId];
416
414
  require(
@@ -485,9 +483,8 @@ contract MinterDAExpSettlementV2 is
485
483
  * surpass (payments - excess_settlement_funds) for a given project.
486
484
  * @param _projectId Project ID to set auction details for.
487
485
  */
488
- function resetAuctionDetails(
489
- uint256 _projectId
490
- ) external onlyCoreAdminACL(this.resetAuctionDetails.selector) {
486
+ function resetAuctionDetails(uint256 _projectId) external {
487
+ _onlyCoreAdminACL(this.resetAuctionDetails.selector);
491
488
  // CHECKS
492
489
  ProjectConfig storage _projectConfig = projectConfig[_projectId];
493
490
  require(_projectConfig.startPrice != 0, "Auction must be configured");
@@ -527,10 +524,8 @@ contract MinterDAExpSettlementV2 is
527
524
  function adminEmergencyReduceSelloutPrice(
528
525
  uint256 _projectId,
529
526
  uint256 _newSelloutPrice
530
- )
531
- external
532
- onlyCoreAdminACL(this.adminEmergencyReduceSelloutPrice.selector)
533
- {
527
+ ) external {
528
+ _onlyCoreAdminACL(this.adminEmergencyReduceSelloutPrice.selector);
534
529
  ProjectConfig storage _projectConfig = projectConfig[_projectId];
535
530
  require(
536
531
  !_projectConfig.auctionRevenuesCollected,
@@ -576,14 +571,11 @@ contract MinterDAExpSettlementV2 is
576
571
  */
577
572
  function withdrawArtistAndAdminRevenues(
578
573
  uint256 _projectId
579
- )
580
- external
581
- nonReentrant
582
- onlyCoreAdminACLOrArtist(
574
+ ) external nonReentrant {
575
+ _onlyCoreAdminACLOrArtist(
583
576
  _projectId,
584
577
  this.withdrawArtistAndAdminRevenues.selector
585
- )
586
- {
578
+ );
587
579
  ProjectConfig storage _projectConfig = projectConfig[_projectId];
588
580
  // CHECKS
589
581
  // require revenues to not have already been collected
@@ -9,7 +9,7 @@ import "./MinterBase_v0_1_1.sol";
9
9
  import "@openzeppelin-4.5/contracts/security/ReentrancyGuard.sol";
10
10
  import "@openzeppelin-4.5/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.
@@ -91,9 +91,9 @@ contract MinterDAExpV4 is ReentrancyGuard, MinterBase, IFilteredMinterDAExpV1 {
91
91
  /// more than this amount (may cut in half at no more than every N seconds).
92
92
  uint256 public maximumPriceDecayHalfLifeSeconds = 3600; // 60 minutes
93
93
 
94
- // modifier to restrict access to only AdminACL allowed calls
94
+ // function to restrict access to only AdminACL allowed calls
95
95
  // @dev defers which ACL contract is used to the core contract
96
- modifier onlyCoreAdminACL(bytes4 _selector) {
96
+ function _onlyCoreAdminACL(bytes4 _selector) internal {
97
97
  require(
98
98
  genArtCoreContract_Base.adminACLAllowed(
99
99
  msg.sender,
@@ -102,16 +102,14 @@ contract MinterDAExpV4 is ReentrancyGuard, MinterBase, IFilteredMinterDAExpV1 {
102
102
  ),
103
103
  "Only Core AdminACL allowed"
104
104
  );
105
- _;
106
105
  }
107
106
 
108
- modifier onlyArtist(uint256 _projectId) {
107
+ function _onlyArtist(uint256 _projectId) internal view {
109
108
  require(
110
109
  (msg.sender ==
111
110
  genArtCoreContract_Base.projectIdToArtistAddress(_projectId)),
112
111
  "Only Artist"
113
112
  );
114
- _;
115
113
  }
116
114
 
117
115
  /**
@@ -148,9 +146,8 @@ contract MinterDAExpV4 is ReentrancyGuard, MinterBase, IFilteredMinterDAExpV1 {
148
146
  * @dev this enables gas reduction after maxInvocations have been reached -
149
147
  * core contracts shall still enforce a maxInvocation check during mint.
150
148
  */
151
- function setProjectMaxInvocations(
152
- uint256 _projectId
153
- ) public onlyArtist(_projectId) {
149
+ function setProjectMaxInvocations(uint256 _projectId) public {
150
+ _onlyArtist(_projectId);
154
151
  uint256 maxInvocations;
155
152
  uint256 invocations;
156
153
  (invocations, maxInvocations, , , , ) = genArtCoreContract_Base
@@ -183,7 +180,8 @@ contract MinterDAExpV4 is ReentrancyGuard, MinterBase, IFilteredMinterDAExpV1 {
183
180
  function manuallyLimitProjectMaxInvocations(
184
181
  uint256 _projectId,
185
182
  uint256 _maxInvocations
186
- ) external onlyArtist(_projectId) {
183
+ ) external {
184
+ _onlyArtist(_projectId);
187
185
  // CHECKS
188
186
  // ensure that the manually set maxInvocations is not greater than what is set on the core contract
189
187
  uint256 maxInvocations;
@@ -213,9 +211,8 @@ contract MinterDAExpV4 is ReentrancyGuard, MinterBase, IFilteredMinterDAExpV1 {
213
211
  * @notice Warning: Disabling purchaseTo is not supported on this minter.
214
212
  * This method exists purely for interface-conformance purposes.
215
213
  */
216
- function togglePurchaseToDisabled(
217
- uint256 _projectId
218
- ) external view onlyArtist(_projectId) {
214
+ function togglePurchaseToDisabled(uint256 _projectId) external view {
215
+ _onlyArtist(_projectId);
219
216
  revert("Action not supported");
220
217
  }
221
218
 
@@ -298,12 +295,10 @@ contract MinterDAExpV4 is ReentrancyGuard, MinterBase, IFilteredMinterDAExpV1 {
298
295
  function setAllowablePriceDecayHalfLifeRangeSeconds(
299
296
  uint256 _minimumPriceDecayHalfLifeSeconds,
300
297
  uint256 _maximumPriceDecayHalfLifeSeconds
301
- )
302
- external
303
- onlyCoreAdminACL(
298
+ ) external {
299
+ _onlyCoreAdminACL(
304
300
  this.setAllowablePriceDecayHalfLifeRangeSeconds.selector
305
- )
306
- {
301
+ );
307
302
  require(
308
303
  _maximumPriceDecayHalfLifeSeconds >
309
304
  _minimumPriceDecayHalfLifeSeconds,
@@ -339,7 +334,8 @@ contract MinterDAExpV4 is ReentrancyGuard, MinterBase, IFilteredMinterDAExpV1 {
339
334
  uint256 _priceDecayHalfLifeSeconds,
340
335
  uint256 _startPrice,
341
336
  uint256 _basePrice
342
- ) external onlyArtist(_projectId) {
337
+ ) external {
338
+ _onlyArtist(_projectId);
343
339
  // CHECKS
344
340
  ProjectConfig storage _projectConfig = projectConfig[_projectId];
345
341
  require(
@@ -393,9 +389,8 @@ contract MinterDAExpV4 is ReentrancyGuard, MinterBase, IFilteredMinterDAExpV1 {
393
389
  * operation, but rather only in case of the need to halt an auction.
394
390
  * @param _projectId Project ID to set auction details for.
395
391
  */
396
- function resetAuctionDetails(
397
- uint256 _projectId
398
- ) external onlyCoreAdminACL(this.resetAuctionDetails.selector) {
392
+ function resetAuctionDetails(uint256 _projectId) external {
393
+ _onlyCoreAdminACL(this.resetAuctionDetails.selector);
399
394
  ProjectConfig storage _projectConfig = projectConfig[_projectId];
400
395
  // reset to initial values
401
396
  _projectConfig.timestampStart = 0;
@@ -9,7 +9,7 @@ import "./MinterBase_v0_1_1.sol";
9
9
  import "@openzeppelin-4.5/contracts/security/ReentrancyGuard.sol";
10
10
  import "@openzeppelin-4.5/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.
@@ -87,9 +87,9 @@ contract MinterDALinV4 is ReentrancyGuard, MinterBase, IFilteredMinterDALinV1 {
87
87
  /// Minimum auction length in seconds
88
88
  uint256 public minimumAuctionLengthSeconds = 3600;
89
89
 
90
- // modifier to restrict access to only AdminACL allowed calls
90
+ // function to restrict access to only AdminACL allowed calls
91
91
  // @dev defers which ACL contract is used to the core contract
92
- modifier onlyCoreAdminACL(bytes4 _selector) {
92
+ function _onlyCoreAdminACL(bytes4 _selector) internal {
93
93
  require(
94
94
  genArtCoreContract_Base.adminACLAllowed(
95
95
  msg.sender,
@@ -98,16 +98,14 @@ contract MinterDALinV4 is ReentrancyGuard, MinterBase, IFilteredMinterDALinV1 {
98
98
  ),
99
99
  "Only Core AdminACL allowed"
100
100
  );
101
- _;
102
101
  }
103
102
 
104
- modifier onlyArtist(uint256 _projectId) {
103
+ function _onlyArtist(uint256 _projectId) internal view {
105
104
  require(
106
105
  (msg.sender ==
107
106
  genArtCoreContract_Base.projectIdToArtistAddress(_projectId)),
108
107
  "Only Artist"
109
108
  );
110
- _;
111
109
  }
112
110
 
113
111
  /**
@@ -144,9 +142,8 @@ contract MinterDALinV4 is ReentrancyGuard, MinterBase, IFilteredMinterDALinV1 {
144
142
  * @dev this enables gas reduction after maxInvocations have been reached -
145
143
  * core contracts shall still enforce a maxInvocation check during mint.
146
144
  */
147
- function setProjectMaxInvocations(
148
- uint256 _projectId
149
- ) public onlyArtist(_projectId) {
145
+ function setProjectMaxInvocations(uint256 _projectId) public {
146
+ _onlyArtist(_projectId);
150
147
  uint256 maxInvocations;
151
148
  uint256 invocations;
152
149
  (invocations, maxInvocations, , , , ) = genArtCoreContract_Base
@@ -178,7 +175,8 @@ contract MinterDALinV4 is ReentrancyGuard, MinterBase, IFilteredMinterDALinV1 {
178
175
  function manuallyLimitProjectMaxInvocations(
179
176
  uint256 _projectId,
180
177
  uint256 _maxInvocations
181
- ) external onlyArtist(_projectId) {
178
+ ) external {
179
+ _onlyArtist(_projectId);
182
180
  // CHECKS
183
181
  // ensure that the manually set maxInvocations is not greater than what is set on the core contract
184
182
  uint256 maxInvocations;
@@ -207,9 +205,8 @@ contract MinterDALinV4 is ReentrancyGuard, MinterBase, IFilteredMinterDALinV1 {
207
205
  * @notice Warning: Disabling purchaseTo is not supported on this minter.
208
206
  * This method exists purely for interface-conformance purposes.
209
207
  */
210
- function togglePurchaseToDisabled(
211
- uint256 _projectId
212
- ) external view onlyArtist(_projectId) {
208
+ function togglePurchaseToDisabled(uint256 _projectId) external view {
209
+ _onlyArtist(_projectId);
213
210
  revert("Action not supported");
214
211
  }
215
212
 
@@ -287,7 +284,8 @@ contract MinterDALinV4 is ReentrancyGuard, MinterBase, IFilteredMinterDALinV1 {
287
284
  */
288
285
  function setMinimumAuctionLengthSeconds(
289
286
  uint256 _minimumAuctionLengthSeconds
290
- ) external onlyCoreAdminACL(this.setMinimumAuctionLengthSeconds.selector) {
287
+ ) external {
288
+ _onlyCoreAdminACL(this.setMinimumAuctionLengthSeconds.selector);
291
289
  minimumAuctionLengthSeconds = _minimumAuctionLengthSeconds;
292
290
  emit MinimumAuctionLengthSecondsUpdated(_minimumAuctionLengthSeconds);
293
291
  }
@@ -309,7 +307,8 @@ contract MinterDALinV4 is ReentrancyGuard, MinterBase, IFilteredMinterDALinV1 {
309
307
  uint256 _auctionTimestampEnd,
310
308
  uint256 _startPrice,
311
309
  uint256 _basePrice
312
- ) external onlyArtist(_projectId) {
310
+ ) external {
311
+ _onlyArtist(_projectId);
313
312
  // CHECKS
314
313
  ProjectConfig storage _projectConfig = projectConfig[_projectId];
315
314
  require(
@@ -364,9 +363,8 @@ contract MinterDALinV4 is ReentrancyGuard, MinterBase, IFilteredMinterDALinV1 {
364
363
  * operation, but rather only in case of the need to halt an auction.
365
364
  * @param _projectId Project ID to set auction details for.
366
365
  */
367
- function resetAuctionDetails(
368
- uint256 _projectId
369
- ) external onlyCoreAdminACL(this.resetAuctionDetails.selector) {
366
+ function resetAuctionDetails(uint256 _projectId) external {
367
+ _onlyCoreAdminACL(this.resetAuctionDetails.selector);
370
368
  ProjectConfig storage _projectConfig = projectConfig[_projectId];
371
369
  // reset to initial values
372
370
  _projectConfig.timestampStart = 0;
@@ -11,7 +11,7 @@ import "@openzeppelin-4.5/contracts/token/ERC721/IERC721.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
@@ -113,9 +113,9 @@ contract MinterHolderV4 is
113
113
  mapping(uint256 => mapping(address => mapping(uint256 => bool)))
114
114
  public allowedProjectHolders;
115
115
 
116
- // modifier to restrict access to only AdminACL allowed calls
116
+ // function to restrict access to only AdminACL allowed calls
117
117
  // @dev defers which ACL contract is used to the core contract
118
- modifier onlyCoreAdminACL(bytes4 _selector) {
118
+ function _onlyCoreAdminACL(bytes4 _selector) internal {
119
119
  require(
120
120
  genArtCoreContract_Base.adminACLAllowed(
121
121
  msg.sender,
@@ -124,16 +124,14 @@ contract MinterHolderV4 is
124
124
  ),
125
125
  "Only Core AdminACL allowed"
126
126
  );
127
- _;
128
127
  }
129
128
 
130
- modifier onlyArtist(uint256 _projectId) {
129
+ function _onlyArtist(uint256 _projectId) internal view {
131
130
  require(
132
131
  msg.sender ==
133
132
  genArtCoreContract_Base.projectIdToArtistAddress(_projectId),
134
133
  "Only Artist"
135
134
  );
136
- _;
137
135
  }
138
136
 
139
137
  /**
@@ -177,9 +175,8 @@ contract MinterHolderV4 is
177
175
  * `projectId = tokenId / 1_000_000`
178
176
  * @param _NFTAddress NFT core address to be registered.
179
177
  */
180
- function registerNFTAddress(
181
- address _NFTAddress
182
- ) external onlyCoreAdminACL(this.registerNFTAddress.selector) {
178
+ function registerNFTAddress(address _NFTAddress) external {
179
+ _onlyCoreAdminACL(this.registerNFTAddress.selector);
183
180
  _registeredNFTAddresses.add(_NFTAddress);
184
181
  emit RegisteredNFTAddress(_NFTAddress);
185
182
  }
@@ -190,9 +187,8 @@ contract MinterHolderV4 is
190
187
  * considered for adding to future allowlists.
191
188
  * @param _NFTAddress NFT core address to be unregistered.
192
189
  */
193
- function unregisterNFTAddress(
194
- address _NFTAddress
195
- ) external onlyCoreAdminACL(this.unregisterNFTAddress.selector) {
190
+ function unregisterNFTAddress(address _NFTAddress) external {
191
+ _onlyCoreAdminACL(this.unregisterNFTAddress.selector);
196
192
  _registeredNFTAddresses.remove(_NFTAddress);
197
193
  emit UnregisteredNFTAddress(_NFTAddress);
198
194
  }
@@ -214,7 +210,8 @@ contract MinterHolderV4 is
214
210
  uint256 _projectId,
215
211
  address[] memory _ownedNFTAddresses,
216
212
  uint256[] memory _ownedNFTProjectIds
217
- ) public onlyArtist(_projectId) {
213
+ ) public {
214
+ _onlyArtist(_projectId);
218
215
  // require same length arrays
219
216
  require(
220
217
  _ownedNFTAddresses.length == _ownedNFTProjectIds.length,
@@ -259,7 +256,8 @@ contract MinterHolderV4 is
259
256
  uint256 _projectId,
260
257
  address[] memory _ownedNFTAddresses,
261
258
  uint256[] memory _ownedNFTProjectIds
262
- ) public onlyArtist(_projectId) {
259
+ ) public {
260
+ _onlyArtist(_projectId);
263
261
  // require same length arrays
264
262
  require(
265
263
  _ownedNFTAddresses.length == _ownedNFTProjectIds.length,
@@ -314,7 +312,8 @@ contract MinterHolderV4 is
314
312
  uint256[] memory _ownedNFTProjectIdsAdd,
315
313
  address[] memory _ownedNFTAddressesRemove,
316
314
  uint256[] memory _ownedNFTProjectIdsRemove
317
- ) external onlyArtist(_projectId) {
315
+ ) external {
316
+ _onlyArtist(_projectId);
318
317
  allowHoldersOfProjects(
319
318
  _projectId,
320
319
  _ownedNFTAddressesAdd,
@@ -387,7 +386,8 @@ contract MinterHolderV4 is
387
386
  function manuallyLimitProjectMaxInvocations(
388
387
  uint256 _projectId,
389
388
  uint256 _maxInvocations
390
- ) external onlyArtist(_projectId) {
389
+ ) external {
390
+ _onlyArtist(_projectId);
391
391
  // CHECKS
392
392
  // ensure that the manually set maxInvocations is not greater than what is set on the core contract
393
393
  uint256 maxInvocations;
@@ -418,9 +418,8 @@ contract MinterHolderV4 is
418
418
  * @notice Warning: Disabling purchaseTo is not supported on this minter.
419
419
  * This method exists purely for interface-conformance purposes.
420
420
  */
421
- function togglePurchaseToDisabled(
422
- uint256 _projectId
423
- ) external view onlyArtist(_projectId) {
421
+ function togglePurchaseToDisabled(uint256 _projectId) external view {
422
+ _onlyArtist(_projectId);
424
423
  revert("Action not supported");
425
424
  }
426
425
 
@@ -477,7 +476,8 @@ contract MinterHolderV4 is
477
476
  function updatePricePerTokenInWei(
478
477
  uint256 _projectId,
479
478
  uint256 _pricePerTokenInWei
480
- ) external onlyArtist(_projectId) {
479
+ ) external {
480
+ _onlyArtist(_projectId);
481
481
  ProjectConfig storage _projectConfig = projectConfig[_projectId];
482
482
  _projectConfig.pricePerTokenInWei = _pricePerTokenInWei;
483
483
  _projectConfig.priceIsConfigured = true;
@@ -11,7 +11,7 @@ import "@openzeppelin-4.7/contracts/utils/cryptography/MerkleProof.sol";
11
11
  import "@openzeppelin-4.7/contracts/token/ERC20/IERC20.sol";
12
12
  import "@openzeppelin-4.7/contracts/security/ReentrancyGuard.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
@@ -115,13 +115,12 @@ contract MinterMerkleV5 is
115
115
  mapping(uint256 => mapping(address => uint256))
116
116
  public projectUserMintInvocations;
117
117
 
118
- modifier onlyArtist(uint256 _projectId) {
118
+ function _onlyArtist(uint256 _projectId) internal view {
119
119
  require(
120
120
  msg.sender ==
121
121
  genArtCoreContract_Base.projectIdToArtistAddress(_projectId),
122
122
  "Only Artist"
123
123
  );
124
- _;
125
124
  }
126
125
 
127
126
  /**
@@ -169,10 +168,8 @@ contract MinterMerkleV5 is
169
168
  * @param _root root of Merkle tree defining addresses allowed to mint
170
169
  * on project `_projectId`.
171
170
  */
172
- function updateMerkleRoot(
173
- uint256 _projectId,
174
- bytes32 _root
175
- ) external onlyArtist(_projectId) {
171
+ function updateMerkleRoot(uint256 _projectId, bytes32 _root) external {
172
+ _onlyArtist(_projectId);
176
173
  require(_root != bytes32(0), "Root must be provided");
177
174
  projectMerkleRoot[_projectId] = _root;
178
175
  emit ConfigValueSet(_projectId, CONFIG_MERKLE_ROOT, _root);
@@ -224,7 +221,8 @@ contract MinterMerkleV5 is
224
221
  function setProjectInvocationsPerAddress(
225
222
  uint256 _projectId,
226
223
  uint24 _maxInvocationsPerAddress
227
- ) external onlyArtist(_projectId) {
224
+ ) external {
225
+ _onlyArtist(_projectId);
228
226
  ProjectConfig storage _projectConfig = projectConfig[_projectId];
229
227
  // use override value instead of the contract's default
230
228
  // @dev this never changes from true to false; default value is only
@@ -253,9 +251,8 @@ contract MinterMerkleV5 is
253
251
  * @dev this enables gas reduction after maxInvocations have been reached -
254
252
  * core contracts shall still enforce a maxInvocation check during mint.
255
253
  */
256
- function setProjectMaxInvocations(
257
- uint256 _projectId
258
- ) public onlyArtist(_projectId) {
254
+ function setProjectMaxInvocations(uint256 _projectId) public {
255
+ _onlyArtist(_projectId);
259
256
  uint256 maxInvocations;
260
257
  uint256 invocations;
261
258
  (invocations, maxInvocations, , , , ) = genArtCoreContract_Base
@@ -287,7 +284,8 @@ contract MinterMerkleV5 is
287
284
  function manuallyLimitProjectMaxInvocations(
288
285
  uint256 _projectId,
289
286
  uint256 _maxInvocations
290
- ) external onlyArtist(_projectId) {
287
+ ) external {
288
+ _onlyArtist(_projectId);
291
289
  // CHECKS
292
290
  // ensure that the manually set maxInvocations is not greater than what is set on the core contract
293
291
  uint256 maxInvocations;
@@ -318,9 +316,8 @@ contract MinterMerkleV5 is
318
316
  * @notice Warning: Disabling purchaseTo is not supported on this minter.
319
317
  * This method exists purely for interface-conformance purposes.
320
318
  */
321
- function togglePurchaseToDisabled(
322
- uint256 _projectId
323
- ) external view onlyArtist(_projectId) {
319
+ function togglePurchaseToDisabled(uint256 _projectId) external view {
320
+ _onlyArtist(_projectId);
324
321
  revert("Action not supported");
325
322
  }
326
323
 
@@ -377,7 +374,8 @@ contract MinterMerkleV5 is
377
374
  function updatePricePerTokenInWei(
378
375
  uint256 _projectId,
379
376
  uint256 _pricePerTokenInWei
380
- ) external onlyArtist(_projectId) {
377
+ ) external {
378
+ _onlyArtist(_projectId);
381
379
  ProjectConfig storage _projectConfig = projectConfig[_projectId];
382
380
  _projectConfig.pricePerTokenInWei = _pricePerTokenInWei;
383
381
  _projectConfig.priceIsConfigured = true;