@artblocks/contracts 1.0.4 → 1.2.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (289) hide show
  1. package/README.md +75 -7
  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 +336 -131
  5. package/artifacts/contracts/archive/GenArt721CoreV3.sol/GenArt721CoreV3.json +2047 -0
  6. package/artifacts/contracts/archive/GenArt721CoreV3_Explorations.sol/GenArt721CoreV3_Explorations.json +2021 -0
  7. package/artifacts/contracts/{minter-suite → archive/minter-suite}/Minters/MinterBase_v0_1_1.sol/MinterBase.json +1 -1
  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/{minter-suite/Minters → archive/minter-suite/Minters/MinterDAExp}/MinterDAExpV4.sol/MinterDAExpV4.json +3 -3
  11. package/artifacts/contracts/archive/minter-suite/Minters/MinterDAExpSettlement/MinterDAExpSettlementV0.sol/MinterDAExpSettlementV0.json +2 -2
  12. package/artifacts/contracts/archive/minter-suite/Minters/MinterDAExpSettlement/MinterDAExpSettlementV1.sol/MinterDAExpSettlementV1.json +2 -2
  13. package/artifacts/contracts/archive/minter-suite/Minters/MinterDAExpSettlement/MinterDAExpSettlementV2.sol/MinterDAExpSettlementV2.json +1109 -0
  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/{minter-suite/Minters → archive/minter-suite/Minters/MinterDALin}/MinterDALinV4.sol/MinterDALinV4.json +3 -3
  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/{minter-suite/Minters → archive/minter-suite/Minters/MinterHolder}/MinterHolderV4.sol/MinterHolderV4.json +3 -3
  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/{minter-suite/Minters → archive/minter-suite/Minters/MinterMerkle}/MinterMerkleV5.sol/MinterMerkleV5.json +3 -3
  26. package/artifacts/contracts/{minter-suite/Minters → archive/minter-suite/Minters/MinterPolyptych}/MinterPolyptychV0.sol/IGenArt721CoreContractV3WithRandomizer.json +31 -63
  27. package/artifacts/contracts/{minter-suite/Minters → archive/minter-suite/Minters/MinterPolyptych}/MinterPolyptychV0.sol/MinterPolyptychV0.json +3 -3
  28. package/artifacts/contracts/{minter-suite/Minters → archive/minter-suite/Minters/MinterSEA}/MinterSEAV0.sol/MinterSEAV0.json +3 -3
  29. package/artifacts/contracts/archive/minter-suite/Minters/MinterSetPrice/MinterSetPriceV2.sol/MinterSetPriceV2.json +2 -2
  30. package/artifacts/contracts/archive/minter-suite/Minters/MinterSetPrice/MinterSetPriceV3.sol/MinterSetPriceV3.json +2 -2
  31. package/artifacts/contracts/{minter-suite/Minters → archive/minter-suite/Minters/MinterSetPrice}/MinterSetPriceV4.sol/MinterSetPriceV4.json +3 -3
  32. package/artifacts/contracts/archive/minter-suite/Minters/MinterSetPriceERC20/MinterSetPriceERC20V0.sol/MinterSetPriceERC20V0.json +65 -2
  33. package/artifacts/contracts/archive/minter-suite/Minters/MinterSetPriceERC20/MinterSetPriceERC20V1.sol/MinterSetPriceERC20V1.json +65 -2
  34. package/artifacts/contracts/archive/minter-suite/Minters/MinterSetPriceERC20/MinterSetPriceERC20V2.sol/MinterSetPriceERC20V2.json +2 -2
  35. package/artifacts/contracts/archive/minter-suite/Minters/MinterSetPriceERC20/MinterSetPriceERC20V3.sol/MinterSetPriceERC20V3.json +2 -2
  36. package/artifacts/contracts/archive/minter-suite/Minters/MinterSetPriceERC20/MinterSetPriceERC20V4.sol/MinterSetPriceERC20V4.json +807 -0
  37. package/artifacts/contracts/engine/V2/GenArt721MinterBurner_PBAB.sol/GenArt721MinterBurner_PBAB.json +65 -2
  38. package/artifacts/contracts/engine/V2/GenArt721Minter_PBAB.sol/GenArt721Minter_PBAB.json +65 -2
  39. package/artifacts/contracts/engine/V3/EngineFactoryV0.sol/EngineFactoryV0.json +606 -0
  40. package/artifacts/contracts/engine/V3/GenArt721CoreV3_Engine.sol/GenArt721CoreV3_Engine.json +565 -209
  41. package/artifacts/contracts/engine/V3/GenArt721CoreV3_Engine_Flex.sol/GenArt721CoreV3_Engine_Flex.json +785 -227
  42. package/artifacts/contracts/engine/V3/forks/GenArt721CoreV3_Engine_Flex_PROOF.sol/GenArt721CoreV3_Engine_Flex_PROOF.json +40 -15
  43. package/artifacts/contracts/engine/V3/forks/PROHIBITION/AdminACLV0_PROHIBITION.sol/AdminACLV0_PROHIBITION.json +2 -2
  44. package/artifacts/contracts/engine/V3/forks/PROHIBITION/GenArt721CoreV3_Engine_Flex_PROHIBITION.sol/GenArt721CoreV3_Engine_Flex_PROHIBITION.json +40 -15
  45. package/artifacts/contracts/engine/V3/forks/PROHIBITION/interfaces/IGenArt721CoreContractV3_Engine_Flex_PROHIBITION.sol/IGenArt721CoreContractV3_Engine_Flex_PROHIBITION.json +36 -68
  46. package/artifacts/contracts/engine-registry/CoreRegistryV1.sol/CoreRegistryV1.json +12 -12
  47. package/artifacts/contracts/interfaces/v0.8.x/IAdminACLV0_Extended.sol/IAdminACLV0_Extended.json +140 -0
  48. package/artifacts/contracts/interfaces/v0.8.x/IBytecodeStorageReaderV2.sol/IBytecodeStorageReaderV2.json +130 -0
  49. package/artifacts/contracts/interfaces/v0.8.x/ICoreRegistryV1.sol/ICoreRegistryV1.json +6 -6
  50. package/artifacts/contracts/interfaces/v0.8.x/IDependencyRegistryV0.sol/IDependencyRegistryV0.json +71 -39
  51. package/artifacts/contracts/interfaces/v0.8.x/IEngineFactoryV0.sol/IEngineFactoryV0.json +283 -0
  52. package/artifacts/contracts/interfaces/v0.8.x/IFilteredMinterDAExpSettlementV0.sol/IFilteredMinterDAExpSettlementV0.json +12 -12
  53. package/artifacts/contracts/interfaces/v0.8.x/IFilteredMinterDAExpSettlementV1.sol/IFilteredMinterDAExpSettlementV1.json +12 -12
  54. package/artifacts/contracts/interfaces/v0.8.x/IGenArt721CoreContractV3.sol/IGenArt721CoreContractV3.json +30 -62
  55. package/artifacts/contracts/interfaces/v0.8.x/IGenArt721CoreContractV3_Base.sol/IGenArt721CoreContractV3_Base.json +30 -62
  56. package/artifacts/contracts/interfaces/v0.8.x/IGenArt721CoreContractV3_Engine.sol/IGenArt721CoreContractV3_Engine.json +170 -104
  57. package/artifacts/contracts/interfaces/v0.8.x/IGenArt721CoreContractV3_Engine_Flex.sol/IGenArt721CoreContractV3_Engine_Flex.json +170 -104
  58. package/artifacts/contracts/interfaces/v0.8.x/IGenArt721CoreContractV3_Engine_Flex_PreV3p2.sol/IGenArt721CoreContractV3_Engine_Flex_PreV3p2.json +1028 -0
  59. package/artifacts/contracts/interfaces/v0.8.x/IGenArt721CoreContractV3_Engine_PreV3p2.sol/IGenArt721CoreContractV3_Engine_PreV3p2.json +741 -0
  60. package/artifacts/contracts/interfaces/v0.8.x/IGenArt721CoreContractV3_ProjectFinance.sol/IGenArt721CoreContractV3_ProjectFinance.json +87 -0
  61. package/artifacts/contracts/interfaces/v0.8.x/IGenArt721Minter_PBAB.sol/IGenArt721Minter_PBAB.json +279 -0
  62. package/artifacts/contracts/interfaces/v0.8.x/IMinterFilterV1.sol/IMinterFilterV1.json +22 -22
  63. package/artifacts/contracts/interfaces/v0.8.x/IPseudorandomAtomic.sol/IPseudorandomAtomic.json +1 -1
  64. package/artifacts/contracts/interfaces/v0.8.x/ISharedMinterDAExpSettlementV0.sol/ISharedMinterDAExpSettlementV0.json +26 -101
  65. package/artifacts/contracts/interfaces/v0.8.x/ISharedMinterDAExpV0.sol/ISharedMinterDAExpV0.json +1 -57
  66. package/artifacts/contracts/interfaces/v0.8.x/ISharedMinterDALinV0.sol/ISharedMinterDALinV0.json +1 -57
  67. package/artifacts/contracts/interfaces/v0.8.x/ISharedMinterDAV0.sol/ISharedMinterDAV0.json +2 -21
  68. package/artifacts/contracts/interfaces/v0.8.x/ISharedMinterHolderERC20V0.sol/ISharedMinterHolderERC20V0.json +158 -0
  69. package/artifacts/contracts/interfaces/v0.8.x/ISharedMinterHolderV0.sol/ISharedMinterHolderV0.json +15 -90
  70. package/artifacts/contracts/interfaces/v0.8.x/ISharedMinterMerkleV0.sol/ISharedMinterMerkleV0.json +10 -36
  71. package/artifacts/contracts/interfaces/v0.8.x/ISharedMinterRAMV0.sol/ISharedMinterRAMV0.json +62 -0
  72. package/artifacts/contracts/interfaces/v0.8.x/ISharedMinterRequired.sol/ISharedMinterRequired.json +37 -0
  73. package/artifacts/contracts/interfaces/v0.8.x/ISharedMinterSEAV0.sol/ISharedMinterSEAV0.json +4 -236
  74. package/artifacts/contracts/interfaces/v0.8.x/ISharedMinterSimplePurchaseV0.sol/ISharedMinterSimplePurchaseV0.json +5 -5
  75. package/artifacts/contracts/interfaces/v0.8.x/ISharedMinterV0.sol/ISharedMinterV0.json +7 -423
  76. package/artifacts/contracts/interfaces/v0.8.x/ISharedRandomizerV0.sol/ISharedRandomizerV0.json +17 -17
  77. package/artifacts/contracts/interfaces/v0.8.x/ISplitAtomicFactoryV0.sol/ISplitAtomicFactoryV0.json +170 -0
  78. package/artifacts/contracts/interfaces/v0.8.x/ISplitAtomicV0.sol/ISplitAtomicV0.json +126 -0
  79. package/artifacts/contracts/interfaces/v0.8.x/ISplitProviderV0.sol/ISplitProviderV0.json +98 -0
  80. package/artifacts/contracts/interfaces/v0.8.x/integration-refs/splits-0x-v2/ISplitFactoryV2.sol/ISplitFactoryV2.json +123 -0
  81. package/artifacts/contracts/libs/integration-refs/delegation-registry/DelegationRegistry.sol/DelegationRegistry.json +2 -2
  82. package/artifacts/contracts/libs/integration-refs/gnosis-safe/GnosisSafeMock.sol/GnosisSafeMock.json +2 -2
  83. package/artifacts/contracts/libs/integration-refs/gnosis-safe/GnosisSafeProxyFactoryMock.sol/GnosisSafeProxyFactoryMock.json +2 -2
  84. package/artifacts/contracts/libs/integration-refs/gnosis-safe/MultiSendMock.sol/MultiSendMock.json +2 -2
  85. package/artifacts/contracts/libs/integration-refs/weth9/weth9.sol/WETH9_.json +2 -2
  86. package/artifacts/contracts/libs/v0.8.x/ABHelpers.sol/ABHelpers.json +2 -2
  87. package/artifacts/contracts/libs/v0.8.x/AuthLib.sol/AuthLib.json +2 -2
  88. package/artifacts/contracts/libs/v0.8.x/BitMap.sol/BitMaps256.json +10 -0
  89. package/artifacts/contracts/libs/v0.8.x/BytecodeStorageV0.sol/BytecodeStorage.json +2 -2
  90. package/artifacts/contracts/libs/v0.8.x/BytecodeStorageV1.sol/BytecodeStorageReader.json +2 -2
  91. package/artifacts/contracts/libs/v0.8.x/BytecodeStorageV1.sol/BytecodeStorageWriter.json +2 -2
  92. package/artifacts/contracts/libs/v0.8.x/BytecodeStorageV2.sol/BytecodeStorageReader.json +214 -0
  93. package/artifacts/contracts/libs/v0.8.x/BytecodeStorageV2.sol/BytecodeStorageWriter.json +10 -0
  94. package/artifacts/contracts/libs/v0.8.x/Bytes32Strings.sol/Bytes32Strings.json +2 -2
  95. package/artifacts/contracts/libs/v0.8.x/DependencyRegistryStorageLib.sol/DependencyRegistryStorageLib.json +10 -0
  96. package/artifacts/contracts/libs/v0.8.x/ERC721_PackedHashSeed.sol/ERC721_PackedHashSeed.json +2 -2
  97. package/artifacts/contracts/libs/v0.8.x/ERC721_PackedHashSeedV1.sol/ERC721_PackedHashSeedV1.json +444 -0
  98. package/artifacts/contracts/libs/v0.8.x/PackedBools.sol/PackedBools.json +10 -0
  99. package/artifacts/contracts/libs/v0.8.x/SSTORE2.sol/SSTORE2.json +2 -2
  100. package/artifacts/contracts/libs/v0.8.x/V3FlexLib.sol/V3FlexLib.json +208 -0
  101. package/artifacts/contracts/libs/v0.8.x/minter-libs/DAExpLib.sol/DAExpLib.json +60 -3
  102. package/artifacts/contracts/libs/v0.8.x/minter-libs/DALib.sol/DALib.json +30 -0
  103. package/artifacts/contracts/libs/v0.8.x/minter-libs/DALinLib.sol/DALinLib.json +60 -3
  104. package/artifacts/contracts/libs/v0.8.x/minter-libs/GenericMinterEventsLib.sol/GenericMinterEventsLib.json +346 -0
  105. package/artifacts/contracts/libs/v0.8.x/minter-libs/MaxInvocationsLib.sol/MaxInvocationsLib.json +29 -3
  106. package/artifacts/contracts/libs/v0.8.x/minter-libs/MerkleLib.sol/MerkleLib.json +30 -3
  107. package/artifacts/contracts/libs/v0.8.x/minter-libs/PolyptychLib.sol/PolyptychLib.json +2 -2
  108. package/artifacts/contracts/libs/v0.8.x/minter-libs/RAMLib.sol/RAMLib.json +398 -0
  109. package/artifacts/contracts/libs/v0.8.x/minter-libs/SEALib.sol/SEALib.json +254 -3
  110. package/artifacts/contracts/libs/v0.8.x/minter-libs/SetPriceLib.sol/SetPriceLib.json +48 -3
  111. package/artifacts/contracts/libs/v0.8.x/minter-libs/SettlementExpLib.sol/SettlementExpLib.json +41 -3
  112. package/artifacts/contracts/libs/v0.8.x/minter-libs/SplitFundsLib.sol/SplitFundsLib.json +35 -3
  113. package/artifacts/contracts/libs/v0.8.x/minter-libs/TokenHolderLib.sol/TokenHolderLib.json +79 -3
  114. package/artifacts/contracts/minter-suite/MinterFilter/MinterFilterV1.sol/MinterFilterV1.json +2 -2
  115. package/artifacts/contracts/minter-suite/MinterFilter/MinterFilterV2.sol/MinterFilterV2.json +41 -41
  116. package/artifacts/contracts/minter-suite/Minters/MinterDAExpHolderV5.sol/MinterDAExpHolderV5.json +66 -632
  117. package/artifacts/contracts/minter-suite/Minters/MinterDAExpSettlementV3.sol/MinterDAExpSettlementV3.json +67 -594
  118. package/artifacts/contracts/minter-suite/Minters/MinterDAExpV5.sol/MinterDAExpV5.json +33 -524
  119. package/artifacts/contracts/minter-suite/Minters/MinterDALinHolderV5.sol/MinterDALinHolderV5.json +66 -632
  120. package/artifacts/contracts/minter-suite/Minters/MinterDALinV5.sol/MinterDALinV5.json +33 -524
  121. package/artifacts/contracts/minter-suite/Minters/MinterRAMV0.sol/MinterRAMV0.json +1374 -0
  122. package/artifacts/contracts/minter-suite/Minters/MinterSEAV1.sol/MinterSEAV1.json +56 -722
  123. package/artifacts/contracts/minter-suite/Minters/MinterSetPriceERC20V5.sol/MinterSetPriceERC20V5.json +58 -454
  124. package/artifacts/contracts/minter-suite/Minters/MinterSetPriceHolderV5.sol/MinterSetPriceHolderV5.json +61 -552
  125. package/artifacts/contracts/minter-suite/Minters/MinterSetPriceMerkleV5.sol/MinterSetPriceMerkleV5.json +55 -497
  126. package/artifacts/contracts/minter-suite/Minters/MinterSetPricePolyptychERC20V5.sol/MinterSetPricePolyptychERC20V5.json +110 -571
  127. package/artifacts/contracts/minter-suite/Minters/MinterSetPricePolyptychV5.sol/MinterSetPricePolyptychV5.json +69 -560
  128. package/artifacts/contracts/minter-suite/Minters/MinterSetPriceV5.sol/MinterSetPriceV5.json +28 -444
  129. package/artifacts/contracts/minter-suite/Minters/one-off/MinterSetPriceV5_SingleCore.sol/MinterSetPriceV5_SingleCore.json +417 -0
  130. package/artifacts/contracts/mock/BytecodeV2LibCallsMock.sol/BytecodeV2LibCallsMock.json +154 -0
  131. package/artifacts/contracts/mock/BytecodeV2TextCR_DMock.sol/BytecodeV2TextCR_DMock.json +428 -0
  132. package/artifacts/contracts/mock/DummySharedMinter.sol/DummySharedMinter.json +2 -2
  133. package/artifacts/contracts/mock/ERC20Mock.sol/ERC20Mock.json +2 -2
  134. package/artifacts/contracts/mock/ForceSendMock.sol/ForceSendMock.json +24 -0
  135. package/artifacts/contracts/mock/GenArt721CoreV3_Engine_IncorrectCoreType.sol/GenArt721CoreV3_Engine_IncorrectCoreType.json +4 -9
  136. package/artifacts/contracts/mock/Mock0xSplitsV2PullFactory.sol/Mock0xSplitsV2PullFactory.json +149 -0
  137. package/artifacts/contracts/mock/Mock0xSplitsV2Splitter.sol/Mock0xSplitsV2Splitter.json +99 -0
  138. package/artifacts/contracts/mock/MockAdminACLV0.sol/MockAdminACLV0Events.json +20 -2
  139. package/artifacts/contracts/mock/MockAdminACLV0_PROHIBITION.sol/MockAdminACLV0Events_PROHIBITION.json +20 -2
  140. package/artifacts/contracts/mock/OriginRegisterMock.sol/OriginRegisterMock.json +2 -2
  141. package/artifacts/contracts/mock/RandomizerV2_NoAssignMock.sol/RandomizerV2_NoAssignMock.json +2 -2
  142. package/artifacts/contracts/mock/ReentrancyGenArt721MinterMock.sol/ReentrancyGenArt721MinterMock.json +100 -0
  143. package/artifacts/contracts/mock/ReentrancyHolderMock.sol/ReentrancyHolderMock.json +2 -2
  144. package/artifacts/contracts/mock/ReentrancyHolderMockShared.sol/ReentrancyHolderMockShared.json +136 -0
  145. package/artifacts/contracts/mock/ReentrancyMerkleMock.sol/ReentrancyMerkleMock.json +2 -2
  146. package/artifacts/contracts/mock/ReentrancyMerkleMockShared.sol/ReentrancyMerkleMockShared.json +105 -0
  147. package/artifacts/contracts/mock/ReentrancyMock.sol/ReentrancyMock.json +2 -2
  148. package/artifacts/contracts/mock/ReentrancyMockShared.sol/ReentrancyMockShared.json +100 -0
  149. package/artifacts/contracts/mock/ReentrancySEAMock.sol/ReentrancySEAAutoBidderMock.json +2 -2
  150. package/artifacts/contracts/mock/ReentrancySEAMockShared.sol/ReentrancySEAAutoBidderMockShared.json +69 -0
  151. package/artifacts/contracts/mock/ReentrancySplitterMocks.sol/ReentrancySplitterDrainETHMock.json +54 -0
  152. package/artifacts/contracts/mock/ReentrancySplitterMocks.sol/ReentrancySplitterSendETHMock.json +54 -0
  153. package/artifacts/contracts/randomizer/deprecated/PolyptychRandomizerV0.sol/BasicPolyptychRandomizerV0.json +2 -2
  154. package/artifacts/contracts/randomizer/deprecated/RandomizerV2.sol/BasicRandomizerV2.json +2 -2
  155. package/artifacts/contracts/randomizer/primitive/PseudorandomAtomicBasic.sol/PseudorandomAtomic.json +2 -2
  156. package/artifacts/contracts/randomizer/shared/SharedRandomizerV0.sol/SharedRandomizerV0.json +19 -19
  157. package/artifacts/contracts/split/SplitAtomicFactoryV0.sol/SplitAtomicFactoryV0.json +203 -0
  158. package/artifacts/contracts/split/SplitAtomicV0.sol/SplitAtomicV0.json +168 -0
  159. package/artifacts/contracts/split/split-provider/SplitProviderV0.sol/SplitProviderV0.json +141 -0
  160. package/contracts/AdminACLV0.sol +6 -2
  161. package/contracts/AdminACLV1.sol +2 -2
  162. package/contracts/DependencyRegistryV0.sol +737 -390
  163. package/contracts/{GenArt721CoreV3.sol → archive/GenArt721CoreV3.sol} +56 -20
  164. package/contracts/{explorations → archive}/GenArt721CoreV3_Explorations.sol +49 -13
  165. package/contracts/{minter-suite → archive/minter-suite}/Minters/MinterBase_v0_1_1.sol +4 -4
  166. package/contracts/{minter-suite/Minters → archive/minter-suite/Minters/MinterDAExp}/MinterDAExpV4.sol +4 -4
  167. package/contracts/archive/minter-suite/Minters/MinterDAExpSettlement/MinterDAExpSettlementV0.sol +4 -4
  168. package/contracts/archive/minter-suite/Minters/MinterDAExpSettlement/MinterDAExpSettlementV1.sol +5 -5
  169. package/contracts/{minter-suite/Minters → archive/minter-suite/Minters/MinterDAExpSettlement}/MinterDAExpSettlementV2.sol +9 -62
  170. package/contracts/{minter-suite/Minters → archive/minter-suite/Minters/MinterDALin}/MinterDALinV4.sol +4 -4
  171. package/contracts/{minter-suite/Minters → archive/minter-suite/Minters/MinterHolder}/MinterHolderV4.sol +5 -5
  172. package/contracts/{minter-suite/Minters → archive/minter-suite/Minters/MinterMerkle}/MinterMerkleV5.sol +5 -5
  173. package/contracts/{minter-suite/Minters → archive/minter-suite/Minters/MinterPolyptych}/MinterPolyptychV0.sol +7 -7
  174. package/contracts/{minter-suite/Minters → archive/minter-suite/Minters/MinterSEA}/MinterSEAV0.sol +13 -13
  175. package/contracts/{minter-suite/Minters → archive/minter-suite/Minters/MinterSetPrice}/MinterSetPriceV4.sol +4 -4
  176. package/contracts/archive/minter-suite/Minters/MinterSetPriceERC20/MinterSetPriceERC20V0.sol +82 -10
  177. package/contracts/archive/minter-suite/Minters/MinterSetPriceERC20/MinterSetPriceERC20V1.sol +82 -10
  178. package/contracts/{minter-suite/Minters → archive/minter-suite/Minters/MinterSetPriceERC20}/MinterSetPriceERC20V4.sol +88 -21
  179. package/contracts/engine/V2/GenArt721MinterBurner_PBAB.sol +81 -22
  180. package/contracts/engine/V2/GenArt721Minter_PBAB.sol +80 -22
  181. package/contracts/engine/V3/EngineFactoryV0.sol +419 -0
  182. package/contracts/engine/V3/GenArt721CoreV3_Engine.sol +893 -493
  183. package/contracts/engine/V3/GenArt721CoreV3_Engine_Flex.sol +1053 -655
  184. package/contracts/engine/V3/forks/GenArt721CoreV3_Engine_Flex_PROOF.sol +7 -13
  185. package/contracts/engine/V3/forks/PROHIBITION/GenArt721CoreV3_Engine_Flex_PROHIBITION.sol +5 -11
  186. package/contracts/engine/V3/forks/PROHIBITION/interfaces/IGenArt721CoreContractV3_Engine_Flex_PROHIBITION.sol +2 -2
  187. package/contracts/engine-registry/CoreRegistryV1.sol +58 -65
  188. package/contracts/interfaces/v0.8.x/IAdminACLV0_Extended.sol +20 -0
  189. package/contracts/interfaces/v0.8.x/IBytecodeStorageReaderV2.sol +23 -0
  190. package/contracts/interfaces/v0.8.x/ICoreRegistryV1.sol +6 -8
  191. package/contracts/interfaces/v0.8.x/IDependencyRegistryV0.sol +48 -43
  192. package/contracts/interfaces/v0.8.x/IEngineFactoryV0.sol +124 -0
  193. package/contracts/interfaces/v0.8.x/IFilteredMinterDAExpSettlementV0.sol +1 -3
  194. package/contracts/interfaces/v0.8.x/IFilteredMinterDAExpSettlementV1.sol +1 -3
  195. package/contracts/interfaces/v0.8.x/IFilteredMinterDAExpV1.sol +1 -3
  196. package/contracts/interfaces/v0.8.x/IFilteredMinterDALinV1.sol +1 -3
  197. package/contracts/interfaces/v0.8.x/IFilteredMinterHolderV2.sol +1 -3
  198. package/contracts/interfaces/v0.8.x/IFilteredMinterMerkleV2.sol +1 -3
  199. package/contracts/interfaces/v0.8.x/IGenArt721CoreContractV3_Base.sol +115 -11
  200. package/contracts/interfaces/v0.8.x/IGenArt721CoreContractV3_Engine.sol +84 -8
  201. package/contracts/interfaces/v0.8.x/IGenArt721CoreContractV3_Engine_Flex.sol +26 -8
  202. package/contracts/interfaces/v0.8.x/IGenArt721CoreContractV3_Engine_Flex_PreV3p2.sol +141 -0
  203. package/contracts/interfaces/v0.8.x/IGenArt721CoreContractV3_Engine_PreV3p2.sol +78 -0
  204. package/contracts/interfaces/v0.8.x/IGenArt721CoreContractV3_ProjectFinance.sol +47 -0
  205. package/contracts/interfaces/v0.8.x/IGenArt721Minter_PBAB.sol +91 -0
  206. package/contracts/interfaces/v0.8.x/IMinterFilterV1.sol +25 -25
  207. package/contracts/interfaces/v0.8.x/IPseudorandomAtomic.sol +1 -3
  208. package/contracts/interfaces/v0.8.x/ISharedMinterDAExpSettlementV0.sol +30 -20
  209. package/contracts/interfaces/v0.8.x/ISharedMinterDAExpV0.sol +1 -14
  210. package/contracts/interfaces/v0.8.x/ISharedMinterDALinV0.sol +1 -15
  211. package/contracts/interfaces/v0.8.x/ISharedMinterDAV0.sol +2 -8
  212. package/contracts/interfaces/v0.8.x/ISharedMinterHolderERC20V0.sol +47 -0
  213. package/contracts/interfaces/v0.8.x/ISharedMinterHolderV0.sol +15 -43
  214. package/contracts/interfaces/v0.8.x/ISharedMinterMerkleV0.sol +10 -20
  215. package/contracts/interfaces/v0.8.x/ISharedMinterRAMV0.sol +23 -0
  216. package/contracts/interfaces/v0.8.x/ISharedMinterRequired.sol +20 -0
  217. package/contracts/interfaces/v0.8.x/ISharedMinterSEAV0.sol +1 -67
  218. package/contracts/interfaces/v0.8.x/ISharedMinterSimplePurchaseV0.sol +5 -5
  219. package/contracts/interfaces/v0.8.x/ISharedMinterV0.sol +18 -160
  220. package/contracts/interfaces/v0.8.x/ISharedRandomizerV0.sol +37 -37
  221. package/contracts/interfaces/v0.8.x/ISplitAtomicFactoryV0.sol +81 -0
  222. package/contracts/interfaces/v0.8.x/ISplitAtomicV0.sol +72 -0
  223. package/contracts/interfaces/v0.8.x/ISplitProviderV0.sol +49 -0
  224. package/contracts/interfaces/v0.8.x/integration-refs/splits-0x-v2/ISplitFactoryV2.sol +62 -0
  225. package/contracts/libs/v0.8.x/ABHelpers.sol +31 -17
  226. package/contracts/libs/v0.8.x/AuthLib.sol +101 -102
  227. package/contracts/libs/v0.8.x/BitMap.sol +112 -0
  228. package/contracts/libs/v0.8.x/BytecodeStorageV2.sol +593 -0
  229. package/contracts/libs/v0.8.x/Bytes32Strings.sol +5 -5
  230. package/contracts/libs/v0.8.x/DependencyRegistryStorageLib.sol +90 -0
  231. package/contracts/libs/v0.8.x/ERC721_PackedHashSeedV1.sol +591 -0
  232. package/contracts/libs/v0.8.x/PackedBools.sol +42 -0
  233. package/contracts/libs/v0.8.x/V3FlexLib.sol +591 -0
  234. package/contracts/libs/v0.8.x/minter-libs/DAExpLib.sol +162 -39
  235. package/contracts/libs/v0.8.x/minter-libs/DALib.sol +26 -0
  236. package/contracts/libs/v0.8.x/minter-libs/DALinLib.sol +139 -37
  237. package/contracts/libs/v0.8.x/minter-libs/GenericMinterEventsLib.sol +171 -0
  238. package/contracts/libs/v0.8.x/minter-libs/MaxInvocationsLib.sol +299 -158
  239. package/contracts/libs/v0.8.x/minter-libs/MerkleLib.sol +268 -55
  240. package/contracts/libs/v0.8.x/minter-libs/PolyptychLib.sol +138 -58
  241. package/contracts/libs/v0.8.x/minter-libs/RAMLib.sol +2927 -0
  242. package/contracts/libs/v0.8.x/minter-libs/SEALib.sol +796 -123
  243. package/contracts/libs/v0.8.x/minter-libs/SetPriceLib.sol +131 -13
  244. package/contracts/libs/v0.8.x/minter-libs/SettlementExpLib.sol +607 -224
  245. package/contracts/libs/v0.8.x/minter-libs/SplitFundsLib.sol +494 -330
  246. package/contracts/libs/v0.8.x/minter-libs/TokenHolderLib.sol +217 -78
  247. package/contracts/minter-suite/MinterFilter/MinterFilterV2.sol +358 -309
  248. package/contracts/minter-suite/Minters/MinterDAExpHolderV5.sol +391 -491
  249. package/contracts/minter-suite/Minters/MinterDAExpSettlementV3.sol +396 -632
  250. package/contracts/minter-suite/Minters/MinterDAExpV5.sol +212 -273
  251. package/contracts/minter-suite/Minters/MinterDALinHolderV5.sol +393 -488
  252. package/contracts/minter-suite/Minters/MinterDALinV5.sol +220 -277
  253. package/contracts/minter-suite/Minters/MinterRAMV0.sol +1205 -0
  254. package/contracts/minter-suite/Minters/MinterSEAV1.sol +329 -677
  255. package/contracts/minter-suite/Minters/MinterSetPriceERC20V5.sol +287 -303
  256. package/contracts/minter-suite/Minters/MinterSetPriceHolderV5.sol +355 -446
  257. package/contracts/minter-suite/Minters/MinterSetPriceMerkleV5.sol +328 -416
  258. package/contracts/minter-suite/Minters/MinterSetPricePolyptychERC20V5.sol +552 -622
  259. package/contracts/minter-suite/Minters/MinterSetPricePolyptychV5.sol +429 -553
  260. package/contracts/minter-suite/Minters/MinterSetPriceV5.sol +180 -227
  261. package/contracts/minter-suite/Minters/one-off/MinterSetPriceV5_SingleCore.sol +446 -0
  262. package/contracts/mock/BytecodeV2LibCallsMock.sol +128 -0
  263. package/contracts/mock/BytecodeV2TextCR_DMock.sol +316 -0
  264. package/contracts/mock/ForceSendMock.sol +22 -0
  265. package/contracts/mock/GenArt721CoreV3_Engine_IncorrectCoreType.sol +3 -10
  266. package/contracts/mock/Mock0xSplitsV2PullFactory.sol +75 -0
  267. package/contracts/mock/Mock0xSplitsV2Splitter.sol +47 -0
  268. package/contracts/mock/MockAdminACLV0.sol +21 -0
  269. package/contracts/mock/MockAdminACLV0_PROHIBITION.sol +21 -0
  270. package/contracts/mock/ReentrancyGenArt721MinterMock.sol +47 -0
  271. package/contracts/mock/ReentrancyHolderMockShared.sol +59 -0
  272. package/contracts/mock/ReentrancyMerkleMockShared.sol +58 -0
  273. package/contracts/mock/ReentrancyMockShared.sol +48 -0
  274. package/contracts/mock/ReentrancySEAMockShared.sol +40 -0
  275. package/contracts/mock/ReentrancySplitterMocks.sol +67 -0
  276. package/contracts/randomizer/primitive/PseudorandomAtomicBasic.sol +1 -1
  277. package/contracts/randomizer/shared/SharedRandomizerV0.sol +79 -71
  278. package/contracts/split/SplitAtomicFactoryV0.sol +121 -0
  279. package/contracts/split/SplitAtomicV0.sol +265 -0
  280. package/contracts/split/split-provider/SplitProviderV0.sol +201 -0
  281. package/package.json +79 -45
  282. package/artifacts/contracts/GenArt721CoreV3.sol/GenArt721CoreV3.json +0 -1965
  283. package/artifacts/contracts/explorations/GenArt721CoreV3_Explorations.sol/GenArt721CoreV3_Explorations.json +0 -1939
  284. package/artifacts/contracts/minter-suite/Minters/MinterDAExpSettlementV2.sol/MinterDAExpSettlementV2.json +0 -1127
  285. package/artifacts/contracts/minter-suite/Minters/MinterSetPriceERC20V4.sol/MinterSetPriceERC20V4.json +0 -768
  286. package/artifacts/contracts/royalty-registry/GenArt721RoyaltyOverride.sol/GenArt721RoyaltyOverride.json +0 -208
  287. package/artifacts/contracts/royalty-registry/GenArt721RoyaltyOverride_PBAB.sol/GenArt721RoyaltyOverride_PBAB.json +0 -301
  288. package/contracts/royalty-registry/GenArt721RoyaltyOverride.sol +0 -168
  289. package/contracts/royalty-registry/GenArt721RoyaltyOverride_PBAB.sol +0 -221
@@ -1,19 +1,19 @@
1
1
  // SPDX-License-Identifier: LGPL-3.0-only
2
- pragma solidity 0.8.19;
2
+ pragma solidity 0.8.22;
3
3
 
4
4
  // Created By: Art Blocks Inc.
5
5
 
6
- import "./interfaces/v0.8.x/IRandomizer_V3CoreBase.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";
6
+ import "../interfaces/v0.8.x/IRandomizer_V3CoreBase.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";
11
11
 
12
12
  import "@openzeppelin-4.7/contracts/utils/Strings.sol";
13
13
  import "@openzeppelin-4.7/contracts/access/Ownable.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";
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";
17
17
 
18
18
  /**
19
19
  * @title Art Blocks ERC-721 core contract, V3.
@@ -103,7 +103,7 @@ contract GenArt721CoreV3 is
103
103
  uint8 constant AT_CHARACTER_CODE = uint8(bytes1("@")); // 0x40
104
104
 
105
105
  // numeric constants
106
- uint256 constant ART_BLOCKS_MAX_PRIMARY_SALES_PERCENTAGE = 25; // 25%
106
+ // max art blocks primary sales percentage is 100%
107
107
  uint256 constant ART_BLOCKS_MAX_SECONDARY_SALES_BPS = 10000; // 10_000 BPS = 100%
108
108
  uint256 constant ARTIST_MAX_SECONDARY_ROYALTY_PERCENTAGE = 95; // 95%
109
109
 
@@ -125,10 +125,13 @@ contract GenArt721CoreV3 is
125
125
  bytes32 constant FIELD_ARTBLOCKS_SECONDARY_SALES_ADDRESS =
126
126
  "artblocksSecondarySalesAddress";
127
127
  bytes32 constant FIELD_RANDOMIZER_ADDRESS = "randomizerAddress";
128
+ bytes32 constant FIELD_NEXT_CORE_CONTRACT = "nextCoreContract";
128
129
  bytes32 constant FIELD_ARTBLOCKS_CURATION_REGISTRY_ADDRESS =
129
130
  "curationRegistryAddress";
130
131
  bytes32 constant FIELD_ARTBLOCKS_DEPENDENCY_REGISTRY_ADDRESS =
131
132
  "dependencyRegistryAddress";
133
+ bytes32 constant FIELD_ARTBLOCKS_ON_CHAIN_GENERATOR_ADDRESS =
134
+ "onChainGeneratorAddress";
132
135
  bytes32 constant FIELD_ARTBLOCKS_PRIMARY_SALES_PERCENTAGE =
133
136
  "artblocksPrimaryPercentage";
134
137
  bytes32 constant FIELD_ARTBLOCKS_SECONDARY_SALES_BPS =
@@ -160,11 +163,15 @@ contract GenArt721CoreV3 is
160
163
  /// Art Blocks Project ID range: [3-373]
161
164
  address public constant ART_BLOCKS_ERC721TOKEN_ADDRESS_V1 =
162
165
  0xa7d8d9ef8D8Ce8992Df33D8b8CF4Aebabd5bD270;
166
+ /// pointer to next core contract associated with this contract
167
+ address public nextCoreContract;
163
168
 
164
169
  /// Curation registry managed by Art Blocks
165
170
  address public artblocksCurationRegistryAddress;
166
171
  /// Dependency registry managed by Art Blocks
167
172
  address public artblocksDependencyRegistryAddress;
173
+ /// On chain generator managed by Art Blocks
174
+ address public artblocksOnChainGeneratorAddress;
168
175
 
169
176
  /// current randomizer contract
170
177
  IRandomizer_V3CoreBase public randomizerContract;
@@ -484,6 +491,16 @@ contract GenArt721CoreV3 is
484
491
  Ownable.renounceOwnership();
485
492
  }
486
493
 
494
+ /**
495
+ * @notice Updates reference to next core contract, associated with this contract.
496
+ * @param _nextCoreContract Address of the next core contract
497
+ */
498
+ function updateNextCoreContract(address _nextCoreContract) external {
499
+ _onlyAdminACL(this.updateNextCoreContract.selector);
500
+ nextCoreContract = _nextCoreContract;
501
+ emit PlatformUpdated(FIELD_NEXT_CORE_CONTRACT);
502
+ }
503
+
487
504
  /**
488
505
  * @notice Updates reference to Art Blocks Curation Registry contract.
489
506
  * @param _artblocksCurationRegistryAddress Address of new Curation
@@ -512,6 +529,19 @@ contract GenArt721CoreV3 is
512
529
  emit PlatformUpdated(FIELD_ARTBLOCKS_DEPENDENCY_REGISTRY_ADDRESS);
513
530
  }
514
531
 
532
+ /**
533
+ * @notice Updates reference to Art Blocks On Chain Generator contract.
534
+ * @param _artblocksOnChainGeneratorAddress Address of new on chain generator.
535
+ */
536
+ function updateArtblocksOnChainGeneratorAddress(
537
+ address _artblocksOnChainGeneratorAddress
538
+ ) external {
539
+ _onlyAdminACL(this.updateArtblocksOnChainGeneratorAddress.selector);
540
+ _onlyNonZeroAddress(_artblocksOnChainGeneratorAddress);
541
+ artblocksOnChainGeneratorAddress = _artblocksOnChainGeneratorAddress;
542
+ emit PlatformUpdated(FIELD_ARTBLOCKS_ON_CHAIN_GENERATOR_ADDRESS);
543
+ }
544
+
515
545
  /**
516
546
  * @notice Updates artblocksPrimarySalesAddress to
517
547
  * `_artblocksPrimarySalesAddress`.
@@ -550,11 +580,8 @@ contract GenArt721CoreV3 is
550
580
  uint256 artblocksPrimarySalesPercentage_
551
581
  ) external {
552
582
  _onlyAdminACL(this.updateArtblocksPrimarySalesPercentage.selector);
553
- require(
554
- artblocksPrimarySalesPercentage_ <=
555
- ART_BLOCKS_MAX_PRIMARY_SALES_PERCENTAGE,
556
- "Max of ART_BLOCKS_MAX_PRIMARY_SALES_PERCENTAGE percent"
557
- );
583
+ // anything above 100 percent is illogical
584
+ require(artblocksPrimarySalesPercentage_ <= 100, "Max of 100 percent");
558
585
  _artblocksPrimarySalesPercentage = uint8(
559
586
  artblocksPrimarySalesPercentage_
560
587
  );
@@ -896,6 +923,8 @@ contract GenArt721CoreV3 is
896
923
  /**
897
924
  * @notice Updates artist name for project `_projectId` to be
898
925
  * `_projectArtistName`.
926
+ * @dev allows admin to update after project is locked, due to our
927
+ * experiences of artist name changes being requested post-lock.
899
928
  * @param _projectId Project ID.
900
929
  * @param _projectArtistName New artist name.
901
930
  */
@@ -903,10 +932,17 @@ contract GenArt721CoreV3 is
903
932
  uint256 _projectId,
904
933
  string memory _projectArtistName
905
934
  ) external {
906
- _onlyUnlocked(_projectId);
907
- _onlyArtistOrAdminACL(
908
- _projectId,
909
- this.updateProjectArtistName.selector
935
+ // checks
936
+ // if unlocked, only artist may update, if locked, only admin may update
937
+ require(
938
+ _projectUnlocked(_projectId)
939
+ ? msg.sender == projectIdToFinancials[_projectId].artistAddress
940
+ : adminACLAllowed(
941
+ msg.sender,
942
+ address(this),
943
+ this.updateProjectArtistName.selector
944
+ ),
945
+ "Only artist, owner when locked"
910
946
  );
911
947
  _onlyNonEmptyString(_projectArtistName);
912
948
  projects[_projectId].artist = _projectArtistName;
@@ -967,7 +1003,7 @@ contract GenArt721CoreV3 is
967
1003
  address(this),
968
1004
  this.updateProjectDescription.selector
969
1005
  ),
970
- "Only artist when unlocked, owner when locked"
1006
+ "Only artist, owner when locked"
971
1007
  );
972
1008
  // effects
973
1009
  // store description in contract bytecode, replacing reference address from
@@ -43,7 +43,7 @@ import "../libs/v0.8.x/Bytes32Strings.sol";
43
43
  * - forbidNewProjects (forever forbidding new projects)
44
44
  * - updateDefaultBaseURI (used to initialize new project base URIs)
45
45
  * ----------------------------------------------------------------------------
46
- * The following functions are restricted to either the the Artist address or
46
+ * The following functions are restricted to either the Artist address or
47
47
  * the Admin ACL contract, only when the project is not locked:
48
48
  * - updateProjectName
49
49
  * - updateProjectArtistName
@@ -103,7 +103,7 @@ contract GenArt721CoreV3_Explorations is
103
103
  uint8 constant AT_CHARACTER_CODE = uint8(bytes1("@")); // 0x40
104
104
 
105
105
  // numeric constants
106
- uint256 constant ART_BLOCKS_MAX_PRIMARY_SALES_PERCENTAGE = 100; // 100%
106
+ // max art blocks primary sales percentage is 100%
107
107
  uint256 constant ART_BLOCKS_MAX_SECONDARY_SALES_BPS = 10000; // 10_000 BPS = 100%
108
108
  uint256 constant ARTIST_MAX_SECONDARY_ROYALTY_PERCENTAGE = 95; // 95%
109
109
 
@@ -125,11 +125,14 @@ contract GenArt721CoreV3_Explorations is
125
125
  bytes32 constant FIELD_ARTBLOCKS_SECONDARY_SALES_ADDRESS =
126
126
  "artblocksSecondarySalesAddress";
127
127
  bytes32 constant FIELD_RANDOMIZER_ADDRESS = "randomizerAddress";
128
+ bytes32 constant FIELD_NEXT_CORE_CONTRACT = "nextCoreContract";
128
129
  // note: Curation registry address will never be updated on V3 Explorations
129
130
  bytes32 constant FIELD_ARTBLOCKS_CURATION_REGISTRY_ADDRESS =
130
131
  "curationRegistryAddress";
131
132
  bytes32 constant FIELD_ARTBLOCKS_DEPENDENCY_REGISTRY_ADDRESS =
132
133
  "dependencyRegistryAddress";
134
+ bytes32 constant FIELD_ARTBLOCKS_ON_CHAIN_GENERATOR_ADDRESS =
135
+ "onChainGeneratorAddress";
133
136
  bytes32 constant FIELD_ARTBLOCKS_PRIMARY_SALES_PERCENTAGE =
134
137
  "artblocksPrimaryPercentage";
135
138
  bytes32 constant FIELD_ARTBLOCKS_SECONDARY_SALES_BPS =
@@ -154,12 +157,17 @@ contract GenArt721CoreV3_Explorations is
154
157
  bytes32 constant FIELD_PROJECT_ASPECT_RATIO = "aspectRatio";
155
158
  bytes32 constant FIELD_PROJECT_BASE_URI = "baseURI";
156
159
 
160
+ /// pointer to next core contract associated with this contract
161
+ address public nextCoreContract;
162
+
157
163
  /// Curation registry is not relevant for Art Blocks Explorations, and will
158
164
  /// remain null for interface-conformance purposes only, specifically for
159
165
  /// indexing layers.
160
166
  address public artblocksCurationRegistryAddress;
161
167
  /// Dependency registry managed by Art Blocks
162
168
  address public artblocksDependencyRegistryAddress;
169
+ /// On chain generator managed by Art Blocks
170
+ address public artblocksOnChainGeneratorAddress;
163
171
 
164
172
  /// current randomizer contract
165
173
  IRandomizerV2 public randomizerContract;
@@ -408,7 +416,7 @@ contract GenArt721CoreV3_Explorations is
408
416
  unchecked {
409
417
  // invocationsBefore is uint24 << max uint256. In production use,
410
418
  // _projectId * ONE_MILLION must be << max uint256, otherwise
411
- // tokenIdToProjectId function become invalid.
419
+ // tokenIdToProjectId function becomes invalid.
412
420
  // Therefore, no risk of overflow
413
421
  thisTokenId = (_projectId * ONE_MILLION) + invocationsBefore;
414
422
  }
@@ -489,6 +497,16 @@ contract GenArt721CoreV3_Explorations is
489
497
  Ownable.renounceOwnership();
490
498
  }
491
499
 
500
+ /**
501
+ * @notice Updates reference to next core contract, associated with this contract.
502
+ * @param _nextCoreContract Address of the next core contract
503
+ */
504
+ function updateNextCoreContract(address _nextCoreContract) external {
505
+ _onlyAdminACL(this.updateNextCoreContract.selector);
506
+ nextCoreContract = _nextCoreContract;
507
+ emit PlatformUpdated(FIELD_NEXT_CORE_CONTRACT);
508
+ }
509
+
492
510
  /**
493
511
  * @notice Warning: Configuring Curation Registry contract is not supported
494
512
  * on V3 Explorations version of this contract.
@@ -518,6 +536,19 @@ contract GenArt721CoreV3_Explorations is
518
536
  emit PlatformUpdated(FIELD_ARTBLOCKS_DEPENDENCY_REGISTRY_ADDRESS);
519
537
  }
520
538
 
539
+ /**
540
+ * @notice Updates reference to Art Blocks On Chain Generator contract.
541
+ * @param _artblocksOnChainGeneratorAddress Address of new on chain generator.
542
+ */
543
+ function updateArtblocksOnChainGeneratorAddress(
544
+ address _artblocksOnChainGeneratorAddress
545
+ ) external {
546
+ _onlyAdminACL(this.updateArtblocksOnChainGeneratorAddress.selector);
547
+ _onlyNonZeroAddress(_artblocksOnChainGeneratorAddress);
548
+ artblocksOnChainGeneratorAddress = _artblocksOnChainGeneratorAddress;
549
+ emit PlatformUpdated(FIELD_ARTBLOCKS_ON_CHAIN_GENERATOR_ADDRESS);
550
+ }
551
+
521
552
  /**
522
553
  * @notice Updates artblocksPrimarySalesAddress to
523
554
  * `_artblocksPrimarySalesAddress`.
@@ -556,11 +587,8 @@ contract GenArt721CoreV3_Explorations is
556
587
  uint256 artblocksPrimarySalesPercentage_
557
588
  ) external {
558
589
  _onlyAdminACL(this.updateArtblocksPrimarySalesPercentage.selector);
559
- require(
560
- artblocksPrimarySalesPercentage_ <=
561
- ART_BLOCKS_MAX_PRIMARY_SALES_PERCENTAGE,
562
- "Max of ART_BLOCKS_MAX_PRIMARY_SALES_PERCENTAGE percent"
563
- );
590
+ // anything above 100 percent is illogical
591
+ require(artblocksPrimarySalesPercentage_ <= 100, "Max of 100 percent");
564
592
  _artblocksPrimarySalesPercentage = uint8(
565
593
  artblocksPrimarySalesPercentage_
566
594
  );
@@ -902,6 +930,8 @@ contract GenArt721CoreV3_Explorations is
902
930
  /**
903
931
  * @notice Updates artist name for project `_projectId` to be
904
932
  * `_projectArtistName`.
933
+ * @dev allows admin to update after project is locked, due to our
934
+ * experiences of artist name changes being requested post-lock.
905
935
  * @param _projectId Project ID.
906
936
  * @param _projectArtistName New artist name.
907
937
  */
@@ -909,10 +939,16 @@ contract GenArt721CoreV3_Explorations is
909
939
  uint256 _projectId,
910
940
  string memory _projectArtistName
911
941
  ) external {
912
- _onlyUnlocked(_projectId);
913
- _onlyArtistOrAdminACL(
914
- _projectId,
915
- this.updateProjectArtistName.selector
942
+ // if unlocked, only artist may update, if locked, only admin may update
943
+ require(
944
+ _projectUnlocked(_projectId)
945
+ ? msg.sender == projectIdToFinancials[_projectId].artistAddress
946
+ : adminACLAllowed(
947
+ msg.sender,
948
+ address(this),
949
+ this.updateProjectArtistName.selector
950
+ ),
951
+ "Only artist, owner when locked"
916
952
  );
917
953
  _onlyNonEmptyString(_projectArtistName);
918
954
  projects[_projectId].artist = _projectArtistName;
@@ -973,7 +1009,7 @@ contract GenArt721CoreV3_Explorations is
973
1009
  address(this),
974
1010
  this.updateProjectDescription.selector
975
1011
  ),
976
- "Only artist when unlocked, owner when locked"
1012
+ "Only artist, owner when locked"
977
1013
  );
978
1014
  // effects
979
1015
  // store description in contract bytecode, replacing reference address from
@@ -1,10 +1,10 @@
1
1
  // SPDX-License-Identifier: LGPL-3.0-only
2
2
  // Created By: Art Blocks Inc.
3
3
 
4
- import "../../interfaces/v0.8.x/IMinterBaseV0.sol";
5
- import "../../interfaces/v0.8.x/IGenArt721CoreContractV3_Base.sol";
6
- import "../../interfaces/v0.8.x/IGenArt721CoreContractV3.sol";
7
- import "../../interfaces/v0.8.x/IGenArt721CoreContractV3_Engine.sol";
4
+ import "../../../interfaces/v0.8.x/IMinterBaseV0.sol";
5
+ import "../../../interfaces/v0.8.x/IGenArt721CoreContractV3_Base.sol";
6
+ import "../../../interfaces/v0.8.x/IGenArt721CoreContractV3.sol";
7
+ import "../../../interfaces/v0.8.x/IGenArt721CoreContractV3_Engine.sol";
8
8
 
9
9
  import "@openzeppelin-4.7/contracts/token/ERC20/IERC20.sol";
10
10
 
@@ -1,10 +1,10 @@
1
1
  // SPDX-License-Identifier: LGPL-3.0-only
2
2
  // Created By: Art Blocks Inc.
3
3
 
4
- import "../../interfaces/v0.8.x/IGenArt721CoreContractV3_Base.sol";
5
- import "../../interfaces/v0.8.x/IMinterFilterV0.sol";
6
- import "../../interfaces/v0.8.x/IFilteredMinterDAExpV1.sol";
7
- import "./MinterBase_v0_1_1.sol";
4
+ import "../../../../interfaces/v0.8.x/IGenArt721CoreContractV3_Base.sol";
5
+ import "../../../../interfaces/v0.8.x/IMinterFilterV0.sol";
6
+ import "../../../../interfaces/v0.8.x/IFilteredMinterDAExpV1.sol";
7
+ import "../MinterBase_v0_1_1.sol";
8
8
 
9
9
  import "@openzeppelin-4.5/contracts/security/ReentrancyGuard.sol";
10
10
  import "@openzeppelin-4.5/contracts/utils/math/SafeCast.sol";
@@ -678,7 +678,7 @@ contract MinterDAExpSettlementV0 is
678
678
 
679
679
  /**
680
680
  * @notice Reclaims the sender's payment above current settled price for
681
- * project `_projectId`. The current settled price is the the price paid
681
+ * project `_projectId`. The current settled price is the price paid
682
682
  * for the most recently purchased token, or the base price if the artist
683
683
  * has withdrawn revenues after the auction reached base price.
684
684
  * This function is callable at any point, but is expected to typically be
@@ -694,7 +694,7 @@ contract MinterDAExpSettlementV0 is
694
694
 
695
695
  /**
696
696
  * @notice Reclaims the sender's payment above current settled price for
697
- * project `_projectId`. The current settled price is the the price paid
697
+ * project `_projectId`. The current settled price is the price paid
698
698
  * for the most recently purchased token, or the base price if the artist
699
699
  * has withdrawn revenues after the auction reached base price.
700
700
  * This function is callable at any point, but is expected to typically be
@@ -750,7 +750,7 @@ contract MinterDAExpSettlementV0 is
750
750
 
751
751
  /**
752
752
  * @notice Reclaims the sender's payment above current settled price for
753
- * projects in `_projectIds`. The current settled price is the the price
753
+ * projects in `_projectIds`. The current settled price is the price
754
754
  * paid for the most recently purchased token, or the base price if the
755
755
  * artist has withdrawn revenues after the auction reached base price.
756
756
  * This function is callable at any point, but is expected to typically be
@@ -774,7 +774,7 @@ contract MinterDAExpSettlementV0 is
774
774
 
775
775
  /**
776
776
  * @notice Reclaims the sender's payment above current settled price for
777
- * projects in `_projectIds`. The current settled price is the the price
777
+ * projects in `_projectIds`. The current settled price is the price
778
778
  * paid for the most recently purchased token, or the base price if the
779
779
  * artist has withdrawn revenues after the auction reached base price.
780
780
  * This function is callable at any point, but is expected to typically be
@@ -4,7 +4,7 @@
4
4
  import "../../../../interfaces/v0.8.x/IGenArt721CoreContractV3_Base.sol";
5
5
  import "../../../../interfaces/v0.8.x/IMinterFilterV0.sol";
6
6
  import "../../../../interfaces/v0.8.x/IFilteredMinterDAExpSettlementV0.sol";
7
- import "../../../../minter-suite/Minters/MinterBase_v0_1_1.sol";
7
+ import "../MinterBase_v0_1_1.sol";
8
8
 
9
9
  import "@openzeppelin-4.7/contracts/security/ReentrancyGuard.sol";
10
10
  import "@openzeppelin-4.7/contracts/utils/math/SafeCast.sol";
@@ -688,7 +688,7 @@ contract MinterDAExpSettlementV1 is
688
688
 
689
689
  /**
690
690
  * @notice Reclaims the sender's payment above current settled price for
691
- * project `_projectId`. The current settled price is the the price paid
691
+ * project `_projectId`. The current settled price is the price paid
692
692
  * for the most recently purchased token, or the base price if the artist
693
693
  * has withdrawn revenues after the auction reached base price.
694
694
  * This function is callable at any point, but is expected to typically be
@@ -704,7 +704,7 @@ contract MinterDAExpSettlementV1 is
704
704
 
705
705
  /**
706
706
  * @notice Reclaims the sender's payment above current settled price for
707
- * project `_projectId`. The current settled price is the the price paid
707
+ * project `_projectId`. The current settled price is the price paid
708
708
  * for the most recently purchased token, or the base price if the artist
709
709
  * has withdrawn revenues after the auction reached base price.
710
710
  * This function is callable at any point, but is expected to typically be
@@ -760,7 +760,7 @@ contract MinterDAExpSettlementV1 is
760
760
 
761
761
  /**
762
762
  * @notice Reclaims the sender's payment above current settled price for
763
- * projects in `_projectIds`. The current settled price is the the price
763
+ * projects in `_projectIds`. The current settled price is the price
764
764
  * paid for the most recently purchased token, or the base price if the
765
765
  * artist has withdrawn revenues after the auction reached base price.
766
766
  * This function is callable at any point, but is expected to typically be
@@ -784,7 +784,7 @@ contract MinterDAExpSettlementV1 is
784
784
 
785
785
  /**
786
786
  * @notice Reclaims the sender's payment above current settled price for
787
- * projects in `_projectIds`. The current settled price is the the price
787
+ * projects in `_projectIds`. The current settled price is the price
788
788
  * paid for the most recently purchased token, or the base price if the
789
789
  * artist has withdrawn revenues after the auction reached base price.
790
790
  * This function is callable at any point, but is expected to typically be
@@ -1,10 +1,10 @@
1
1
  // SPDX-License-Identifier: LGPL-3.0-only
2
2
  // Created By: Art Blocks Inc.
3
3
 
4
- import "../../interfaces/v0.8.x/IGenArt721CoreContractV3_Base.sol";
5
- import "../../interfaces/v0.8.x/IMinterFilterV0.sol";
6
- import "../../interfaces/v0.8.x/IFilteredMinterDAExpSettlementV1.sol";
7
- import "./MinterBase_v0_1_1.sol";
4
+ import "../../../../interfaces/v0.8.x/IGenArt721CoreContractV3_Base.sol";
5
+ import "../../../../interfaces/v0.8.x/IMinterFilterV0.sol";
6
+ import "../../../../interfaces/v0.8.x/IFilteredMinterDAExpSettlementV1.sol";
7
+ import "../MinterBase_v0_1_1.sol";
8
8
 
9
9
  import "@openzeppelin-4.7/contracts/security/ReentrancyGuard.sol";
10
10
  import "@openzeppelin-4.7/contracts/utils/math/SafeCast.sol";
@@ -40,7 +40,6 @@ pragma solidity 0.8.19;
40
40
  * enforced when creating new auctions)
41
41
  * - resetAuctionDetails (note: this will prevent minting until a new auction
42
42
  * is created)
43
- * - adminEmergencyReduceSelloutPrice
44
43
  * ----------------------------------------------------------------------------
45
44
  * The following functions are restricted to a project's artist or the core
46
45
  * contract's Admin ACL contract:
@@ -510,52 +509,6 @@ contract MinterDAExpSettlementV2 is
510
509
  );
511
510
  }
512
511
 
513
- /**
514
- * @notice This represents an admin stepping in and reducing the sellout
515
- * price of an auction. This is only callable by the core admin, only
516
- * after the auction is complete, but before project revenues are
517
- * withdrawn.
518
- * This is only intended to be used in the case where for some reason, the
519
- * sellout price was too high.
520
- * @param _projectId Project ID to reduce auction sellout price for.
521
- * @param _newSelloutPrice New sellout price to set for the auction. Must
522
- * be less than the current sellout price.
523
- */
524
- function adminEmergencyReduceSelloutPrice(
525
- uint256 _projectId,
526
- uint256 _newSelloutPrice
527
- ) external {
528
- _onlyCoreAdminACL(this.adminEmergencyReduceSelloutPrice.selector);
529
- ProjectConfig storage _projectConfig = projectConfig[_projectId];
530
- require(
531
- !_projectConfig.auctionRevenuesCollected,
532
- "Only before revenues collected"
533
- );
534
-
535
- // refresh max invocations, updating any local values that are
536
- // illogical with respect to the current core contract state, and
537
- // ensuring that local hasMaxBeenInvoked is accurate.
538
- _refreshMaxInvocations(_projectId);
539
-
540
- // require max invocations has been reached
541
- require(_projectConfig.maxHasBeenInvoked, "Auction must be complete");
542
- // @dev no need to check that auction max invocations has been reached,
543
- // because if it was, the sellout price will be zero, and the following
544
- // check will fail.
545
- require(
546
- _newSelloutPrice < _projectConfig.latestPurchasePrice,
547
- "May only reduce sellout price"
548
- );
549
- require(
550
- _newSelloutPrice >= _projectConfig.basePrice,
551
- "May only reduce sellout price to base price or greater"
552
- );
553
- // ensure _newSelloutPrice is non-zero
554
- require(_newSelloutPrice > 0, "Only sellout prices > 0");
555
- _projectConfig.latestPurchasePrice = _newSelloutPrice;
556
- emit SelloutPriceUpdated(_projectId, _newSelloutPrice);
557
- }
558
-
559
512
  /**
560
513
  * @notice This withdraws project revenues for the artist and admin.
561
514
  * This function is only callable by the artist or admin, and only after
@@ -774,7 +727,7 @@ contract MinterDAExpSettlementV2 is
774
727
 
775
728
  /**
776
729
  * @notice Reclaims the sender's payment above current settled price for
777
- * project `_projectId`. The current settled price is the the price paid
730
+ * project `_projectId`. The current settled price is the price paid
778
731
  * for the most recently purchased token, or the base price if the artist
779
732
  * has withdrawn revenues after the auction reached base price.
780
733
  * This function is callable at any point, but is expected to typically be
@@ -790,7 +743,7 @@ contract MinterDAExpSettlementV2 is
790
743
 
791
744
  /**
792
745
  * @notice Reclaims the sender's payment above current settled price for
793
- * project `_projectId`. The current settled price is the the price paid
746
+ * project `_projectId`. The current settled price is the price paid
794
747
  * for the most recently purchased token, or the base price if the artist
795
748
  * has withdrawn revenues after the auction reached base price.
796
749
  * This function is callable at any point, but is expected to typically be
@@ -846,7 +799,7 @@ contract MinterDAExpSettlementV2 is
846
799
 
847
800
  /**
848
801
  * @notice Reclaims the sender's payment above current settled price for
849
- * projects in `_projectIds`. The current settled price is the the price
802
+ * projects in `_projectIds`. The current settled price is the price
850
803
  * paid for the most recently purchased token, or the base price if the
851
804
  * artist has withdrawn revenues after the auction reached base price.
852
805
  * This function is callable at any point, but is expected to typically be
@@ -870,7 +823,7 @@ contract MinterDAExpSettlementV2 is
870
823
 
871
824
  /**
872
825
  * @notice Reclaims the sender's payment above current settled price for
873
- * projects in `_projectIds`. The current settled price is the the price
826
+ * projects in `_projectIds`. The current settled price is the price
874
827
  * paid for the most recently purchased token, or the base price if the
875
828
  * artist has withdrawn revenues after the auction reached base price.
876
829
  * This function is callable at any point, but is expected to typically be
@@ -1256,13 +1209,7 @@ contract MinterDAExpSettlementV2 is
1256
1209
  // ensure the local `maxHasBeenInvoked` state is accurate to
1257
1210
  // prevent any false negatives due to minting on other minters
1258
1211
  _projectConfig.maxHasBeenInvoked = true;
1259
- // emit event to ensure any indexers are aware of the change
1260
- // @dev this is not strictly necessary, but is included for
1261
- // convenience
1262
- emit ProjectMaxInvocationsLimitUpdated(
1263
- _projectId,
1264
- coreMaxInvocations
1265
- );
1212
+ // @dev no event needed since no change to max invocations
1266
1213
  }
1267
1214
  }
1268
1215
 
@@ -1,10 +1,10 @@
1
1
  // SPDX-License-Identifier: LGPL-3.0-only
2
2
  // Created By: Art Blocks Inc.
3
3
 
4
- import "../../interfaces/v0.8.x/IGenArt721CoreContractV3_Base.sol";
5
- import "../../interfaces/v0.8.x/IMinterFilterV0.sol";
6
- import "../../interfaces/v0.8.x/IFilteredMinterDALinV1.sol";
7
- import "./MinterBase_v0_1_1.sol";
4
+ import "../../../../interfaces/v0.8.x/IGenArt721CoreContractV3_Base.sol";
5
+ import "../../../../interfaces/v0.8.x/IMinterFilterV0.sol";
6
+ import "../../../../interfaces/v0.8.x/IFilteredMinterDALinV1.sol";
7
+ import "../MinterBase_v0_1_1.sol";
8
8
 
9
9
  import "@openzeppelin-4.5/contracts/security/ReentrancyGuard.sol";
10
10
  import "@openzeppelin-4.5/contracts/utils/math/SafeCast.sol";
@@ -1,11 +1,11 @@
1
1
  // SPDX-License-Identifier: LGPL-3.0-only
2
2
  // Created By: Art Blocks Inc.
3
3
 
4
- import "../../interfaces/v0.8.x/IGenArt721CoreContractV3_Base.sol";
5
- import "../../interfaces/v0.8.x/IMinterFilterV0.sol";
6
- import "../../interfaces/v0.8.x/IFilteredMinterHolderV2.sol";
7
- import "./MinterBase_v0_1_1.sol";
8
- import "../../interfaces/v0.8.x/IDelegationRegistry.sol";
4
+ import "../../../../interfaces/v0.8.x/IGenArt721CoreContractV3_Base.sol";
5
+ import "../../../../interfaces/v0.8.x/IMinterFilterV0.sol";
6
+ import "../../../../interfaces/v0.8.x/IFilteredMinterHolderV2.sol";
7
+ import "../MinterBase_v0_1_1.sol";
8
+ import "../../../../interfaces/v0.8.x/IDelegationRegistry.sol";
9
9
 
10
10
  import "@openzeppelin-4.5/contracts/token/ERC721/IERC721.sol";
11
11
  import "@openzeppelin-4.5/contracts/security/ReentrancyGuard.sol";
@@ -1,11 +1,11 @@
1
1
  // SPDX-License-Identifier: LGPL-3.0-only
2
2
  // Created By: Art Blocks Inc.
3
3
 
4
- import "../../interfaces/v0.8.x/IGenArt721CoreContractV3_Base.sol";
5
- import "../../interfaces/v0.8.x/IMinterFilterV0.sol";
6
- import "../../interfaces/v0.8.x/IFilteredMinterMerkleV2.sol";
7
- import "../../interfaces/v0.8.x/IDelegationRegistry.sol";
8
- import "./MinterBase_v0_1_1.sol";
4
+ import "../../../../interfaces/v0.8.x/IGenArt721CoreContractV3_Base.sol";
5
+ import "../../../../interfaces/v0.8.x/IMinterFilterV0.sol";
6
+ import "../../../../interfaces/v0.8.x/IFilteredMinterMerkleV2.sol";
7
+ import "../../../../interfaces/v0.8.x/IDelegationRegistry.sol";
8
+ import "../MinterBase_v0_1_1.sol";
9
9
 
10
10
  import "@openzeppelin-4.7/contracts/utils/cryptography/MerkleProof.sol";
11
11
  import "@openzeppelin-4.7/contracts/token/ERC20/IERC20.sol";
@@ -1,13 +1,13 @@
1
1
  // SPDX-License-Identifier: LGPL-3.0-only
2
2
  // Created By: Art Blocks Inc.
3
3
 
4
- import "../../interfaces/v0.8.x/IGenArt721CoreContractV3_Base.sol";
5
- import "../../interfaces/v0.8.x/IGenArt721CoreContractExposesHashSeed.sol";
6
- import "../../interfaces/v0.8.x/IMinterFilterV0.sol";
7
- import "../../interfaces/v0.8.x/IFilteredMinterHolderV2.sol";
8
- import "../../interfaces/v0.8.x/IRandomizerPolyptychV0.sol";
9
- import "../../interfaces/v0.8.x/IDelegationRegistry.sol";
10
- import "./MinterBase_v0_1_1.sol";
4
+ import "../../../../interfaces/v0.8.x/IGenArt721CoreContractV3_Base.sol";
5
+ import "../../../../interfaces/v0.8.x/IGenArt721CoreContractExposesHashSeed.sol";
6
+ import "../../../../interfaces/v0.8.x/IMinterFilterV0.sol";
7
+ import "../../../../interfaces/v0.8.x/IFilteredMinterHolderV2.sol";
8
+ import "../../../../interfaces/v0.8.x/IRandomizerPolyptychV0.sol";
9
+ import "../../../../interfaces/v0.8.x/IDelegationRegistry.sol";
10
+ import "../MinterBase_v0_1_1.sol";
11
11
 
12
12
  import "@openzeppelin-4.5/contracts/token/ERC721/IERC721.sol";
13
13
  import "@openzeppelin-4.5/contracts/security/ReentrancyGuard.sol";