@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
@@ -0,0 +1,123 @@
1
+ // SPDX-License-Identifier: LGPL-3.0-only
2
+ // Created By: Art Blocks Inc.
3
+
4
+ pragma solidity ^0.8.0;
5
+
6
+ import "../../../../../interfaces/0.8.x/IAdminACLV0.sol";
7
+
8
+ interface IAdminACLV0_PROHIBITION is IAdminACLV0 {
9
+ /**
10
+ * @notice Emitted when function caller is updated.
11
+ * @param contractAddress Contract that the selector caller is being set for.
12
+ * @param selector Selector of the function we're giving the privilege to call.
13
+ * @param caller Caller address that is allowed to call the function.
14
+ * @param approved Boolean value indicating if the caller is approved or not.
15
+ */
16
+ event ContractSelectorApprovalUpdated(
17
+ address indexed contractAddress,
18
+ bytes4 indexed selector,
19
+ address indexed caller,
20
+ bool approved
21
+ );
22
+
23
+ /**
24
+ * @notice Emitted when verified artist is updated.
25
+ * @param contractAddress Contract that the selector caller is being set for.
26
+ * @param caller Address of the artist.
27
+ * @param approved Boolean value indicating if the caller is approved or not.
28
+ */
29
+ event ContractArtistApprovalUpdated(
30
+ address indexed contractAddress,
31
+ address indexed caller,
32
+ bool approved
33
+ );
34
+
35
+ /**
36
+ * @notice Retrieve whether of the caller is allowed to call a contract's function
37
+ * @param _contract The contract address.
38
+ * @param _selector The function selector.
39
+ * @param _caller The caller address.
40
+ * @return isApproved The approval status.
41
+ */
42
+ function getContractSelectorApproval(
43
+ address _contract,
44
+ bytes4 _selector,
45
+ address _caller
46
+ ) external view returns (bool);
47
+
48
+ /**
49
+ * @notice Retrieve whether of the caller is allowed to call a functions for a project
50
+ * @param _contract The contract address.
51
+ * @param _caller The caller address.
52
+ * @return isApproved The approval status.
53
+ */
54
+ function getContractArtistApproval(
55
+ address _contract,
56
+ address _caller
57
+ ) external view returns (bool);
58
+
59
+ /**
60
+ * @notice Allowed caller can to set a contract function caller.
61
+ * @param _contract The contract address.
62
+ * @param _selector The function selector.
63
+ * @param _caller The caller address.
64
+ * @dev this function is gated to only superAdmin address or allowed caller.
65
+ */
66
+ function toggleContractSelectorApproval(
67
+ address _contract,
68
+ bytes4 _selector,
69
+ address _caller
70
+ ) external;
71
+
72
+ /**
73
+ * @notice Toggles verification for artists to call functions relating to their projects on a contract
74
+ * @param _contract The contract address.
75
+ * @param _caller The caller address.
76
+ * @dev this function is gated to only allwed addressed.
77
+ */
78
+ function toggleContractArtistApproval(
79
+ address _contract,
80
+ address _caller
81
+ ) external;
82
+
83
+ /**
84
+ * @notice Checks if sender `_sender` is allowed to call function (or functions for projects) with
85
+ * method `_selector` on `_contract`. Returns true if sender is superAdmin.
86
+ * @param _sender The sender address.
87
+ * @param _contract The contract address.
88
+ * @param _selector The function selector.
89
+ * @param _projectId The project ID.
90
+ * @return isApproved The approval status.
91
+ * @dev this function is public insteaad of internal so that the right to toggle approvals can also be delegated
92
+ */
93
+ function allowed(
94
+ address _sender,
95
+ address _contract,
96
+ bytes4 _selector,
97
+ uint256 _projectId
98
+ ) external returns (bool);
99
+
100
+ /**
101
+ * @notice Hash the contract address, selector, and caller address.
102
+ * @param _contract The contract address.
103
+ * @param _selector The function selector.
104
+ * @param _caller The caller address.
105
+ * @return hash The hash.
106
+ */
107
+ function hashSelectorApprovalKey(
108
+ address _contract,
109
+ bytes4 _selector,
110
+ address _caller
111
+ ) external pure returns (bytes32);
112
+
113
+ /**
114
+ * @notice Hash the contract address and artist address.
115
+ * @param _contract The contract address.
116
+ * @param _caller The artist address.
117
+ * @return hash The hash.
118
+ */
119
+ function hashArtistApprovalKey(
120
+ address _contract,
121
+ address _caller
122
+ ) external pure returns (bytes32);
123
+ }
@@ -0,0 +1,29 @@
1
+ // SPDX-License-Identifier: LGPL-3.0-only
2
+ // Created By: Art Blocks Inc.
3
+
4
+ pragma solidity ^0.8.0;
5
+
6
+ import "./IAdminACLV0_PROHIBITION.sol";
7
+ import "../../../../../interfaces/0.8.x/IGenArt721CoreContractV3_Engine_Flex.sol";
8
+
9
+ /**
10
+ * @title This interface is intended to house interface items that are common
11
+ * across all GenArt721CoreContractV3 Engine Flex and derivative implementations.
12
+ * @author Art Blocks Inc.
13
+ */
14
+ interface IGenArt721CoreContractV3_Engine_Flex_PROHIBITION is
15
+ IGenArt721CoreContractV3_Engine_Flex
16
+ {
17
+ /**
18
+ * Function determining if _sender is allowed to call function with
19
+ * selector _selector on contract `_contract` for project `_projectId`.
20
+ * Intended to be used with peripheral contracts such as minters, as well
21
+ * as internally by the core contract itself.
22
+ */
23
+ function adminACLAllowed(
24
+ address _sender,
25
+ address _contract,
26
+ bytes4 _selector,
27
+ uint256 _projectId
28
+ ) external returns (bool);
29
+ }
@@ -0,0 +1,254 @@
1
+ // SPDX-License-Identifier: MIT
2
+
3
+ pragma solidity 0.8.19;
4
+
5
+ import "../interfaces/0.8.x/ICoreRegistryV1.sol";
6
+ import "@openzeppelin-4.7/contracts/access/Ownable.sol";
7
+ import "@openzeppelin-4.7/contracts/utils/structs/EnumerableSet.sol";
8
+
9
+ /**
10
+ * @title Art Blocks Core Contract Registry, V1.
11
+ * @author Art Blocks Inc.
12
+ * @notice Privileged Roles and Ownership:
13
+ * This contract has a single owner, and is intended to be deployed with a
14
+ * permissioned owner that has elevated privileges on this contract.
15
+ * If in the future multiple deployer addresses are needed to interact with
16
+ * this registry, a new registry version with more complex logic should be
17
+ * implemented and deployed to replace this.
18
+ *
19
+ * This contract builds on the EngineRegistryV0 contract, but encompases more
20
+ * than just Engine contracts. It is updated to be named CoreRegistry, and is
21
+ * V1 because it is the next iteration of the V0 Engine Registry.
22
+ *
23
+ * This contract is intended to be able to act as a registry of all core
24
+ * contracts that are allowed to interact with a specific MinterFilter V2.
25
+ * This includes, but is not limited to:
26
+ * - Flagship contracts
27
+ * - Collaboration contracts
28
+ * - Engine contracts
29
+ * - Engine Flex contracts
30
+ *
31
+ * Note that not all contracts will be registered in this registry, as some
32
+ * contracts may not need to interact with a MinterFilterV2 contract. For
33
+ * example, the original Art Blocks V0 contract does not need to interact with
34
+ * a MinterFilterV2 contract, as it uses a different minting mechanism.
35
+ *
36
+ * A view function is provided to determine if a contract is registered.
37
+ *
38
+ * This contract is designed to be managed by an owner with privileged roles
39
+ * and abilities.
40
+ * ----------------------------------------------------------------------------
41
+ * The following function is restricted to the engine registry owner sending,
42
+ * or the core contract being registered during a transaction originating from
43
+ * the engine registry owner:
44
+ * - registerContract
45
+ * ----------------------------------------------------------------------------
46
+ * The following functions are restricted to the engine registry owner sending:
47
+ * - unregisterContract
48
+ * - registerContracts
49
+ * - unregisterContracts
50
+ * - Ownable: transferOwnership
51
+ * - Ownable: renounceOwnership
52
+ * ----------------------------------------------------------------------------
53
+ * Additional privileged roles may be described on minters, registries, and
54
+ * other contracts that may interact with this contract.
55
+ */
56
+ contract CoreRegistryV1 is Ownable, ICoreRegistryV1 {
57
+ using EnumerableSet for EnumerableSet.AddressSet;
58
+
59
+ /// private enumerable set of registered contracts
60
+ EnumerableSet.AddressSet private registeredContracts;
61
+
62
+ /// private mapping of registered contract addresses to
63
+ EnumerableSet.AddressSet
64
+ private registeredMinterFilterV2CompatibleContracts;
65
+
66
+ /**
67
+ * @notice Reverts if `tx.origin` is not the owner.
68
+ * @dev Warning that this check is only against tx.origin, which may be
69
+ * misleading when used for security.
70
+ */
71
+ function _onlyOwnerOrigin() internal view {
72
+ require(tx.origin == owner(), "Only tx origin of owner");
73
+ }
74
+
75
+ constructor() Ownable() {}
76
+
77
+ /**
78
+ * @notice Register a contract and emit a `ContractRegistered` event with
79
+ * the provided information. Only callable by the owner or the contract
80
+ * being registered, and only if tx.origin == owner.
81
+ * Reverts if authorization fails, or if the contract is already
82
+ * registered.
83
+ */
84
+ function registerContract(
85
+ address _contractAddress,
86
+ bytes32 _coreVersion,
87
+ bytes32 _coreType
88
+ ) external {
89
+ // CHECKS
90
+ // Validate against `tx.origin` rather than `msg.sender` as it is
91
+ // intended that this registration be performed in an automated
92
+ // fashion at the time of contract deployment of `_contractAddress`.
93
+ // @dev Security implications of using `tx.origin` are acknowledged
94
+ _onlyOwnerOrigin();
95
+ // only allow registration of a contract registering itself, or allow
96
+ // the owner to register any contract.
97
+ require(
98
+ msg.sender == _contractAddress || msg.sender == owner(),
99
+ "Only owner or registrant"
100
+ );
101
+ // EFFECTS
102
+ _registerContract(_contractAddress, _coreVersion, _coreType);
103
+ }
104
+
105
+ /**
106
+ * @notice Unregister a contract and emit a `ContractUnregistered` event.
107
+ * Only callable by the owner of this registry contract.
108
+ * Reverts if authorization fails, or if the contract is not already
109
+ * registered.
110
+ */
111
+ function unregisterContract(address _contractAddress) external {
112
+ // CHECKS
113
+ // revert if not called by owner
114
+ Ownable._checkOwner();
115
+ // EFFECTS
116
+ _unregisterContract(_contractAddress);
117
+ }
118
+
119
+ /**
120
+ * @notice Register multiple contracts at once.
121
+ * Only callable by the owner.
122
+ * Reverts if any contract is already registered.
123
+ * @dev This should primarily be used for backfilling the registry with
124
+ * existing contracts shortly after deployment.
125
+ * @param _contractAddresses Array of contract addresses to register.
126
+ * @param _coreVersions Array of core versions for each contract (aligned).
127
+ * @param _coreTypes Array of core types for each contract (aligned).
128
+ */
129
+ function registerContracts(
130
+ address[] calldata _contractAddresses,
131
+ bytes32[] calldata _coreVersions,
132
+ bytes32[] calldata _coreTypes
133
+ ) external {
134
+ // CHECKS
135
+ // revert if not called by owner
136
+ Ownable._checkOwner();
137
+ // validate same length arrays
138
+ uint256 numContracts = _contractAddresses.length;
139
+ require(
140
+ numContracts == _coreVersions.length &&
141
+ numContracts == _coreTypes.length,
142
+ "Mismatched array lengths"
143
+ );
144
+ // EFFECTS
145
+ for (uint256 i = 0; i < numContracts; ) {
146
+ _registerContract(
147
+ _contractAddresses[i],
148
+ _coreVersions[i],
149
+ _coreTypes[i]
150
+ );
151
+ unchecked {
152
+ ++i;
153
+ }
154
+ }
155
+ }
156
+
157
+ /**
158
+ * @notice Unregister multiple contracts at once.
159
+ * Only callable by the owner.
160
+ * Reverts if any contract is not already registered.
161
+ * @param _contractAddresses Array of contract addresses to unregister.
162
+ */
163
+ function unregisterContracts(
164
+ address[] calldata _contractAddresses
165
+ ) external {
166
+ // CHECKS
167
+ // revert if not called by owner
168
+ Ownable._checkOwner();
169
+ // EFFECTS
170
+ uint256 numContracts = _contractAddresses.length;
171
+ for (uint256 i = 0; i < numContracts; ) {
172
+ _unregisterContract(_contractAddresses[i]);
173
+ unchecked {
174
+ ++i;
175
+ }
176
+ }
177
+ }
178
+
179
+ /**
180
+ * @notice Get the number of registered contracts.
181
+ * @return The number of registered contracts.
182
+ */
183
+ function getNumRegisteredContracts() external view returns (uint256) {
184
+ return registeredContracts.length();
185
+ }
186
+
187
+ /**
188
+ * @notice Get the address of a registered contract by index.
189
+ * @param _index The index of the contract to get.
190
+ * @return The address of the contract at the given index.
191
+ */
192
+ function getRegisteredContractAt(
193
+ uint256 _index
194
+ ) external view returns (address) {
195
+ return registeredContracts.at(_index);
196
+ }
197
+
198
+ /**
199
+ * @notice Gets an array of all registered contract addresses.
200
+ * Warning: Unbounded gas limit. This function is gas intensive and should
201
+ * only be used for off-chain analysis. Please use
202
+ * `getNumRegisteredContracts` and `getRegisteredContractAt` for bounded
203
+ * gas usage.
204
+ */
205
+ function getAllRegisteredContracts()
206
+ external
207
+ view
208
+ returns (address[] memory)
209
+ {
210
+ return registeredContracts.values();
211
+ }
212
+
213
+ /**
214
+ * @notice Returns boolean representing if contract is registered on this
215
+ * registry.
216
+ * @param _contractAddress The address of the contract to check.
217
+ * @return isRegistered True if the contract is registered.
218
+ */
219
+ function isRegisteredContract(
220
+ address _contractAddress
221
+ ) external view returns (bool isRegistered) {
222
+ return registeredContracts.contains(_contractAddress);
223
+ }
224
+
225
+ /**
226
+ * @notice Internal function to register a contract.
227
+ * Reverts if the contract is already registered.
228
+ */
229
+ function _registerContract(
230
+ address _contractAddress,
231
+ bytes32 _coreVersion,
232
+ bytes32 _coreType
233
+ ) internal {
234
+ // @dev add returns true only if not already registered
235
+ require(
236
+ registeredContracts.add(_contractAddress),
237
+ "Contract already registered"
238
+ );
239
+ emit ContractRegistered(_contractAddress, _coreVersion, _coreType);
240
+ }
241
+
242
+ /**
243
+ * @notice Internal function to unregister a contract.
244
+ * Reverts if the contract is not already registered.
245
+ */
246
+ function _unregisterContract(address _contractAddress) internal {
247
+ // @dev remove returns true only if already in set
248
+ require(
249
+ registeredContracts.remove(_contractAddress),
250
+ "Only registered contracts"
251
+ );
252
+ emit ContractUnregistered(_contractAddress);
253
+ }
254
+ }
@@ -1,6 +1,6 @@
1
1
  // SPDX-License-Identifier: MIT
2
2
 
3
- pragma solidity 0.8.17;
3
+ pragma solidity 0.8.19;
4
4
 
5
5
  import "../interfaces/0.8.x/IEngineRegistryV0.sol";
6
6
  import "@openzeppelin-4.7/contracts/utils/introspection/ERC165.sol";