@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,30 @@
1
+ // SPDX-License-Identifier: LGPL-3.0-only
2
+ // Creatd By: Art Blocks Inc.
3
+
4
+ pragma solidity 0.8.19;
5
+
6
+ import "../../interfaces/0.8.x/IPseudorandomAtomic.sol";
7
+
8
+ /**
9
+ * @title PseudorandomAtomic
10
+ * @author Art Blocks Inc.
11
+ * @notice This contract atomically returns a pseudorandom value.
12
+ */
13
+ contract PseudorandomAtomic {
14
+ // base class that returns
15
+ function getPseudorandomAtomic(
16
+ bytes32 _entropy
17
+ ) external view returns (bytes32) {
18
+ uint256 time = block.timestamp;
19
+ return
20
+ keccak256(
21
+ abi.encodePacked(
22
+ _entropy,
23
+ block.number,
24
+ blockhash(block.number - 1),
25
+ time,
26
+ (time % 200) + 1
27
+ )
28
+ );
29
+ }
30
+ }
@@ -0,0 +1,245 @@
1
+ // SPDX-License-Identifier: LGPL-3.0-only
2
+ // Creatd By: Art Blocks Inc.
3
+
4
+ pragma solidity 0.8.19;
5
+
6
+ import "../../interfaces/0.8.x/IGenArt721CoreContractV3_Base.sol";
7
+ import "../../interfaces/0.8.x/ISharedRandomizerV0.sol";
8
+ import "../../interfaces/0.8.x/IPseudorandomAtomic.sol";
9
+
10
+ /**
11
+ * @title A shared randomizer contract that enables support of many Art Blocks
12
+ * and Art Blocks Engine core contracts with a single randomizer.
13
+ * @notice This randomizer is designed to be used with many core contracts that
14
+ * implement the `IGenArt721CoreContractV3_Base` interface. It exclusively uses
15
+ * atomic callbacks, and will assign a token's hash before returning from the
16
+ * `assignTokenHash` function, as long as the call does not revert.
17
+ *
18
+ * The randomizer generates a token's hash seed in one of two ways:
19
+ * 1. If the project of the token is specified as a polyptych, the randomizer
20
+ * will assign the token the hash seed as previously set by the project's hash
21
+ * seed setter contract. If no hash seed has been set, the randomizer will
22
+ * revert.
23
+ * 2. If the project of the token is not specified as a polyptych, the
24
+ * randomizer will generate a new hash seed using the `IPseudorandomAtomic`
25
+ * contract, which is immutable and set during deployment.
26
+ *
27
+ * When using this randomizer for ployptych minting, several requirements may
28
+ * be required by the hash seed setter contract, including the possibility
29
+ * that a token's hash seed must be available in a public getter function on
30
+ * the core contract. Please inspect the hash seed setter contract to ensure
31
+ * that all requirements are met.
32
+ *
33
+ * @notice Privileged Roles and Ownership:
34
+ * Privileged roles and abilities are controlled by each core contract's admin
35
+ * ACL contract and artists. Both of these roles hold extensive power and can
36
+ * influence the behavior of this randomizer.
37
+ * Care must be taken to ensure that the admin ACL contract and artist
38
+ * addresses are secure behind a multi-sig or other access control mechanism.
39
+ * ----------------------------------------------------------------------------
40
+ * The following function is restricted to each core's Admin ACL contract:
41
+ * - setHashSeedSetterContract
42
+ * ----------------------------------------------------------------------------
43
+ * The following functions are restricted to only the Artist address:
44
+ * - toggleProjectIsPolyptych
45
+ * ----------------------------------------------------------------------------
46
+ * The following function is restricted to only the hash seed setter contract
47
+ * of a given core contract:
48
+ * - setPolyptychHashSeed
49
+ * ----------------------------------------------------------------------------
50
+ * Additional admin and artist privileged roles may be described on minters,
51
+ * registries, and other contracts that may interact with this randomizer.
52
+ */
53
+ contract SharedRandomizerV0 is ISharedRandomizerV0 {
54
+ IPseudorandomAtomic public immutable pseudorandomAtomicContract;
55
+
56
+ // constant used to obtain the project ID from the token ID
57
+ uint256 internal constant ONE_MILLION = 1_000_000;
58
+
59
+ // mapping of core contract => token ID => hash seed
60
+ mapping(address => mapping(uint256 => bytes12)) private _polyptychHashSeed;
61
+
62
+ // mapping of core contract => project ID => is polyptych
63
+ mapping(address => mapping(uint256 => bool)) private _projectIsPolyptych;
64
+
65
+ // mapping of core contract => hash seed setter contract
66
+ mapping(address => address) private _hashSeedSetterContracts;
67
+
68
+ // modifier to restrict access to only AdminACL allowed calls
69
+ // @dev defers to ACL contract being used to the core contract
70
+ function _onlyCoreAdminACL(
71
+ address _coreContract,
72
+ bytes4 _selector
73
+ ) internal {
74
+ require(
75
+ IGenArt721CoreContractV3_Base(_coreContract).adminACLAllowed(
76
+ msg.sender,
77
+ address(this),
78
+ _selector
79
+ ),
80
+ "Only Core AdminACL allowed"
81
+ );
82
+ }
83
+
84
+ // modifier to restrict access to only Artist allowed calls
85
+ function _onlyArtist(
86
+ address _coreContract,
87
+ uint256 _projectId
88
+ ) internal view {
89
+ require(
90
+ msg.sender ==
91
+ IGenArt721CoreContractV3_Base(_coreContract)
92
+ .projectIdToArtistAddress(_projectId),
93
+ "Only Artist"
94
+ );
95
+ }
96
+
97
+ // modifier to restrict access to only calls by the hash seed setter
98
+ // contract of a given core contract
99
+ function _onlyHashSeedSetterContract(address _coreContract) internal view {
100
+ require(
101
+ msg.sender == _hashSeedSetterContracts[_coreContract],
102
+ "Only Hash Seed Setter Contract"
103
+ );
104
+ }
105
+
106
+ /**
107
+ *
108
+ * @param _pseudorandomAtomicContract Address of the pseudorandom atomic
109
+ * contract to use for atomically generating random values. This contract
110
+ * does not have an owner, and therefore the pseudorandom atomic contract
111
+ * address cannot be changed after deployment.
112
+ */
113
+ constructor(address _pseudorandomAtomicContract) {
114
+ pseudorandomAtomicContract = IPseudorandomAtomic(
115
+ _pseudorandomAtomicContract
116
+ );
117
+ emit PseudorandomAtomicContractUpdated({
118
+ pseudorandomAtomicContract: _pseudorandomAtomicContract
119
+ });
120
+ }
121
+
122
+ /**
123
+ * @inheritdoc ISharedRandomizerV0
124
+ */
125
+ function setHashSeedSetterContract(
126
+ address _coreContract,
127
+ address _hashSeedSetterContract
128
+ ) external {
129
+ _onlyCoreAdminACL(
130
+ _coreContract,
131
+ this.setHashSeedSetterContract.selector
132
+ );
133
+ _hashSeedSetterContracts[_coreContract] = _hashSeedSetterContract;
134
+ emit HashSeedSetterForCoreUpdated({
135
+ coreContract: _coreContract,
136
+ hashSeedSetterContract: _hashSeedSetterContract
137
+ });
138
+ }
139
+
140
+ /**
141
+ * @inheritdoc ISharedRandomizerV0
142
+ */
143
+ function toggleProjectIsPolyptych(
144
+ address _coreContract,
145
+ uint256 _projectId
146
+ ) external {
147
+ _onlyArtist(_coreContract, _projectId);
148
+ _projectIsPolyptych[_coreContract][_projectId] = !_projectIsPolyptych[
149
+ _coreContract
150
+ ][_projectId];
151
+ emit ProjectIsPolyptychUpdated({
152
+ coreContract: _coreContract,
153
+ projectId: _projectId,
154
+ isPolyptych: _projectIsPolyptych[_coreContract][_projectId]
155
+ });
156
+ }
157
+
158
+ /**
159
+ * @inheritdoc ISharedRandomizerV0
160
+ */
161
+ function setPolyptychHashSeed(
162
+ address _coreContract,
163
+ uint256 _tokenId,
164
+ bytes12 _hashSeed
165
+ ) external {
166
+ _onlyHashSeedSetterContract(_coreContract);
167
+ _polyptychHashSeed[_coreContract][_tokenId] = _hashSeed;
168
+ // @dev event indicating token hash seed assigned is not required for
169
+ // subgraph indexing because token hash seeds are still assigned
170
+ // atomically in `assignTokenHash` function. If token hash seeds were
171
+ // assigned async, event emission may be required to support subgraph
172
+ // indexing.
173
+ }
174
+
175
+ /**
176
+ * @inheritdoc IRandomizer_V3CoreBase
177
+ */
178
+ function assignTokenHash(uint256 _tokenId) external {
179
+ // @dev this function is callable by any core contract, and does not
180
+ // does not require any gating.
181
+ // @dev naming variables for readability
182
+ address coreContract = msg.sender;
183
+ uint256 projectId = _tokenId / ONE_MILLION;
184
+ bytes32 hashSeed;
185
+ if (_projectIsPolyptych[coreContract][projectId]) {
186
+ hashSeed = _polyptychHashSeed[coreContract][_tokenId];
187
+ } else {
188
+ hashSeed = _getPseudorandomAtomic(coreContract, _tokenId);
189
+ }
190
+ // verify that the hash seed is non-zero
191
+ require(hashSeed != 0, "Only non-zero hash seed");
192
+ // assign the token hash seed on the core contract
193
+ IGenArt721CoreContractV3_Base(coreContract).setTokenHash_8PT(
194
+ _tokenId,
195
+ hashSeed
196
+ );
197
+ }
198
+
199
+ /**
200
+ * @inheritdoc ISharedRandomizerV0
201
+ */
202
+ function projectIsPolyptych(
203
+ address _coreContract,
204
+ uint256 _projectId
205
+ ) external view returns (bool _isPolyptych) {
206
+ return _projectIsPolyptych[_coreContract][_projectId];
207
+ }
208
+
209
+ /**
210
+ * @inheritdoc ISharedRandomizerV0
211
+ */
212
+ function hashSeedSetterContracts(
213
+ address _coreContract
214
+ ) external view returns (address _hashSeedSetterContract) {
215
+ return _hashSeedSetterContracts[_coreContract];
216
+ }
217
+
218
+ /**
219
+ * @inheritdoc ISharedRandomizerV0
220
+ */
221
+ function polyptychHashSeed(
222
+ address _coreContract,
223
+ uint256 _tokenId
224
+ ) external view returns (bytes12 _hashSeed) {
225
+ return _polyptychHashSeed[_coreContract][_tokenId];
226
+ }
227
+
228
+ /**
229
+ * @notice Internal function to atomically obtain a pseudorandom number
230
+ * from the configured pseudorandom contract.
231
+ * @param _coreContract - The core contract that is requesting an atomic
232
+ * pseudorandom number.
233
+ * @param _tokenId - The token ID on `_coreContract` that is associated
234
+ * with the pseudorandom number request.
235
+ */
236
+ function _getPseudorandomAtomic(
237
+ address _coreContract,
238
+ uint256 _tokenId
239
+ ) internal view returns (bytes32) {
240
+ return
241
+ pseudorandomAtomicContract.getPseudorandomAtomic(
242
+ keccak256(abi.encodePacked(_coreContract, _tokenId))
243
+ );
244
+ }
245
+ }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@artblocks/contracts",
3
- "version": "1.0.1",
3
+ "version": "1.0.3",
4
4
  "description": "Smart contracts used by Art Blocks",
5
5
  "files": [
6
6
  "/contracts/**/*.sol",
@@ -9,74 +9,77 @@
9
9
  "scripts": {
10
10
  "clean": "hardhat clean",
11
11
  "compile": "hardhat compile",
12
- "gh-action-compile": "hardhat --config gh-action.config.ts compile",
12
+ "build": "hardhat --config build-package.config.ts compile",
13
13
  "docgen": "hardhat docgen",
14
14
  "generate:typechain": "typechain --target ethers-v5 --outDir ./scripts/contracts './artifacts/contracts/**/!(*.dbg)*.json'",
15
15
  "test": "hardhat test",
16
+ "size": "hardhat size-contracts",
16
17
  "test:parallel": "hardhat test --parallel",
17
18
  "coverage": "hardhat coverage",
18
19
  "format": "prettier --write 'contracts/**/*.sol' && prettier --write 'scripts/**/*.ts' && prettier --write 'test/**/*.ts'",
19
20
  "lint": "prettier --check 'contracts/**/*.sol' && prettier --check 'scripts/**/*.ts' && prettier --check 'test/**/*.ts' && npx eslint 'test/**/*.ts'",
20
21
  "remix": "remixd -s ./ --remix-ide https://remix.ethereum.org",
21
- "deploy:goerli:v3-engine": "yarn hardhat run --network goerli scripts/engine/V3/generic-engine-deployer.ts",
22
- "deploy:mainnet:v3-engine": "yarn hardhat run --network mainnet scripts/engine/V3/generic-engine-deployer.ts",
23
- "deploy:goerli:minter": "yarn hardhat run --network goerli scripts/minter-deployments/generic-minter-deployer-v3core.ts",
24
- "deploy:mainnet:minter": "yarn hardhat run --network mainnet scripts/minter-deployments/generic-minter-deployer-v3core.ts"
25
- },
26
- "husky": {
27
- "hooks": {
28
- "pre-commit": "yarn lint",
29
- "pre-push": "yarn test"
30
- }
22
+ "codegen": "yarn --cwd=\"../..\" codegen:project contracts",
23
+ "deploy:dev:v3-engine": "yarn codegen && NODE_ENV=dev yarn hardhat run --network goerli scripts/engine/V3/generic-engine-deployer.ts",
24
+ "deploy:dev-arbitrum:v3-engine": "yarn codegen && NODE_ENV=arbitrum-dev yarn hardhat run --network arbitrum-goerli scripts/engine/V3/generic-engine-deployer.ts",
25
+ "deploy:staging-arbitrum:v3-engine": "yarn codegen && NODE_ENV=arbitrum-staging yarn hardhat run --network arbitrum-goerli scripts/engine/V3/generic-engine-deployer.ts",
26
+ "deploy:staging:v3-engine": "yarn codegen && NODE_ENV=staging yarn hardhat run --network goerli scripts/engine/V3/generic-engine-deployer.ts",
27
+ "deploy:mainnet:v3-engine": "yarn codegen && NODE_ENV=mainnet yarn hardhat run --network mainnet scripts/engine/V3/generic-engine-deployer.ts",
28
+ "deploy:goerli:minter": "yarn hardhat run --network goerli scripts/minter-deployments/V3/generic-minter-deployer-v3core.ts",
29
+ "deploy:mainnet:minter": "yarn hardhat run --network mainnet scripts/minter-deployments/V3/generic-minter-deployer-v3core.ts",
30
+ "pre-commit": "yarn lint"
31
31
  },
32
32
  "devDependencies": {
33
- "@aws-sdk/client-s3": "^3.245.0",
34
- "@aws-sdk/credential-providers": "^3.245.0",
33
+ "@aws-sdk/client-s3": "^3.338.0",
34
+ "@aws-sdk/credential-providers": "^3.338.0",
35
35
  "@defi-wonderland/smock": "^2.3.4",
36
36
  "@gnosis.pm/safe-contracts": "^1.3.0",
37
37
  "@gnosis.pm/safe-core-sdk": "^2.1.0",
38
38
  "@gnosis.pm/safe-core-sdk-types": "^1.7.0",
39
39
  "@gnosis.pm/safe-ethers-lib": "1.1.0",
40
40
  "@gnosis.pm/safe-service-client": "^1.4.0",
41
+ "@nomicfoundation/hardhat-network-helpers": "^1.0.8",
41
42
  "@nomiclabs/hardhat-ethers": "^2.2.1",
42
43
  "@nomiclabs/hardhat-etherscan": "^3.1.4",
43
- "@nomiclabs/hardhat-solhint": "^2.0.0",
44
+ "@nomiclabs/hardhat-solhint": "^3.0.0",
44
45
  "@nomiclabs/hardhat-truffle5": "^2.0.7",
45
46
  "@nomiclabs/hardhat-waffle": "^2.0.3",
46
47
  "@nomiclabs/hardhat-web3": "^2.0.0",
47
- "@openzeppelin/hardhat-upgrades": "^1.22.0",
48
+ "@openzeppelin/hardhat-upgrades": "^1.26.0",
48
49
  "@openzeppelin/test-helpers": "^0.5.16",
49
- "@remix-project/remixd": "^0.5.6",
50
+ "@remix-project/remixd": "^0.6.14",
50
51
  "@typechain/ethers-v5": "^6.0.5",
51
- "@types/jest": "^27.0.3",
52
- "@types/mocha": "^9.1.1",
52
+ "@types/jest": "^29.4.0",
53
+ "@types/mocha": "^10.0.1",
53
54
  "@types/prompt": "^1.1.5",
54
- "@typescript-eslint/eslint-plugin": "^5.48.0",
55
- "@typescript-eslint/parser": "^5.48.0",
56
- "aws-sdk-client-mock": "^0.6.2",
55
+ "@typescript-eslint/eslint-plugin": "^5.59.7",
56
+ "@typescript-eslint/parser": "^5.59.7",
57
+ "aws-sdk-client-mock": "^2.1.1",
57
58
  "chai": "^4.3.7",
58
59
  "coveralls": "^3.1.1",
59
- "dotenv": "^8.2.0",
60
- "eslint": "^8.31.0",
60
+ "dotenv": "^16.0.3",
61
+ "eslint": "^8.41.0",
61
62
  "eslint-plugin-mocha": "^10.1.0",
62
- "ethereum-waffle": "^3.4.4",
63
+ "eslint-config-custom": "*",
64
+ "ethereum-waffle": "^4.0.10",
63
65
  "ethers": "^5.7.2",
64
66
  "hardhat": "^2.12.5",
65
- "hardhat-contract-sizer": "^2.6.1",
67
+ "hardhat-contract-sizer": "^2.9.0",
66
68
  "hardhat-docgen": "^1.3.0",
67
69
  "hardhat-gas-reporter": "^1.0.9",
68
- "husky": "^7.0.4",
70
+ "husky": "^8.0.3",
69
71
  "istanbul-combine": "^0.3.0",
70
72
  "keccak256": "^1.0.6",
71
- "merkletreejs": "^0.2.31",
73
+ "merkletreejs": "^0.3.9",
72
74
  "prettier": "^2.8.1",
73
75
  "prettier-plugin-solidity": "^1.1.1",
74
76
  "prompt": "^1.3.0",
75
77
  "prompt-sync": "^4.2.0",
76
78
  "solidity-coverage": "^0.8.0",
77
79
  "ts-node": "^9.1.1",
80
+ "tsconfig": "*",
78
81
  "typechain": "^4.0.3",
79
- "typescript": "^4.9.4"
82
+ "typescript": "^5.0.2"
80
83
  },
81
84
  "author": "Art Blocks, Inc",
82
85
  "license": "LGPL-3.0-only",
@@ -84,6 +87,9 @@
84
87
  "@openzeppelin-0.5/contracts": "npm:@openzeppelin/contracts@2.5.1",
85
88
  "@openzeppelin-4.5/contracts": "npm:@openzeppelin/contracts@4.5.0",
86
89
  "@openzeppelin-4.7/contracts": "npm:@openzeppelin/contracts@4.7.1",
87
- "@openzeppelin-4.8/contracts-upgradeable": "npm:@openzeppelin/contracts-upgradeable@4.8.0"
90
+ "@openzeppelin-4.8/contracts-upgradeable": "npm:@openzeppelin/contracts-upgradeable@4.8.0",
91
+ "@urql/exchange-retry": "^1.0.0",
92
+ "graphql": "^16.6.0",
93
+ "urql": "^4.0.0"
88
94
  }
89
95
  }
package/.env.example DELETED
@@ -1,10 +0,0 @@
1
- MAINNET_JSON_RPC_PROVIDER_URL=
2
- GOERLI_JSON_RPC_PROVIDER_URL=
3
- PALM_MAINNET_JSON_RPC_PROVIDER_URL=
4
- PALM_TESTNET_JSON_RPC_PROVIDER_URL=
5
- MAINNET_PRIVATE_KEY=
6
- TESTNET_PRIVATE_KEY=
7
- ETHERSCAN_API_KEY=
8
- AWS_ACCESS_KEY_ID=
9
- AWS_SECRET_ACCESS_KEY=
10
- COINMARKETCAP_API_KEY=
@@ -1,229 +0,0 @@
1
- {
2
- "_format": "hh-sol-artifact-1",
3
- "contractName": "BasicPolyptychRandomizerV0",
4
- "sourceName": "contracts/BasicPolyptychRandomizerV0.sol",
5
- "abi": [
6
- {
7
- "anonymous": false,
8
- "inputs": [
9
- {
10
- "indexed": true,
11
- "internalType": "address",
12
- "name": "_contractAddress",
13
- "type": "address"
14
- }
15
- ],
16
- "name": "HashSeedSetterUpdated",
17
- "type": "event"
18
- },
19
- {
20
- "anonymous": false,
21
- "inputs": [
22
- {
23
- "indexed": true,
24
- "internalType": "address",
25
- "name": "previousOwner",
26
- "type": "address"
27
- },
28
- {
29
- "indexed": true,
30
- "internalType": "address",
31
- "name": "newOwner",
32
- "type": "address"
33
- }
34
- ],
35
- "name": "OwnershipTransferred",
36
- "type": "event"
37
- },
38
- {
39
- "anonymous": false,
40
- "inputs": [
41
- {
42
- "indexed": false,
43
- "internalType": "uint256",
44
- "name": "_projectId",
45
- "type": "uint256"
46
- },
47
- {
48
- "indexed": false,
49
- "internalType": "bool",
50
- "name": "_isPolyptych",
51
- "type": "bool"
52
- }
53
- ],
54
- "name": "ProjectIsPolyptychUpdated",
55
- "type": "event"
56
- },
57
- {
58
- "inputs": [
59
- {
60
- "internalType": "address",
61
- "name": "_genArt721Core",
62
- "type": "address"
63
- }
64
- ],
65
- "name": "assignCoreAndRenounce",
66
- "outputs": [],
67
- "stateMutability": "nonpayable",
68
- "type": "function"
69
- },
70
- {
71
- "inputs": [
72
- {
73
- "internalType": "uint256",
74
- "name": "_tokenId",
75
- "type": "uint256"
76
- }
77
- ],
78
- "name": "assignTokenHash",
79
- "outputs": [],
80
- "stateMutability": "nonpayable",
81
- "type": "function"
82
- },
83
- {
84
- "inputs": [],
85
- "name": "genArt721Core",
86
- "outputs": [
87
- {
88
- "internalType": "contract IGenArt721CoreContractV3_Base",
89
- "name": "",
90
- "type": "address"
91
- }
92
- ],
93
- "stateMutability": "view",
94
- "type": "function"
95
- },
96
- {
97
- "inputs": [],
98
- "name": "hashSeedSetterContract",
99
- "outputs": [
100
- {
101
- "internalType": "address",
102
- "name": "",
103
- "type": "address"
104
- }
105
- ],
106
- "stateMutability": "view",
107
- "type": "function"
108
- },
109
- {
110
- "inputs": [],
111
- "name": "owner",
112
- "outputs": [
113
- {
114
- "internalType": "address",
115
- "name": "",
116
- "type": "address"
117
- }
118
- ],
119
- "stateMutability": "view",
120
- "type": "function"
121
- },
122
- {
123
- "inputs": [
124
- {
125
- "internalType": "uint256",
126
- "name": "",
127
- "type": "uint256"
128
- }
129
- ],
130
- "name": "polyptychHashSeeds",
131
- "outputs": [
132
- {
133
- "internalType": "bytes12",
134
- "name": "",
135
- "type": "bytes12"
136
- }
137
- ],
138
- "stateMutability": "view",
139
- "type": "function"
140
- },
141
- {
142
- "inputs": [
143
- {
144
- "internalType": "uint256",
145
- "name": "",
146
- "type": "uint256"
147
- }
148
- ],
149
- "name": "projectIsPolyptych",
150
- "outputs": [
151
- {
152
- "internalType": "bool",
153
- "name": "",
154
- "type": "bool"
155
- }
156
- ],
157
- "stateMutability": "view",
158
- "type": "function"
159
- },
160
- {
161
- "inputs": [],
162
- "name": "renounceOwnership",
163
- "outputs": [],
164
- "stateMutability": "nonpayable",
165
- "type": "function"
166
- },
167
- {
168
- "inputs": [
169
- {
170
- "internalType": "address",
171
- "name": "_contractAddress",
172
- "type": "address"
173
- }
174
- ],
175
- "name": "setHashSeedSetterContract",
176
- "outputs": [],
177
- "stateMutability": "nonpayable",
178
- "type": "function"
179
- },
180
- {
181
- "inputs": [
182
- {
183
- "internalType": "uint256",
184
- "name": "_tokenId",
185
- "type": "uint256"
186
- },
187
- {
188
- "internalType": "bytes12",
189
- "name": "_hashSeed",
190
- "type": "bytes12"
191
- }
192
- ],
193
- "name": "setPolyptychHashSeed",
194
- "outputs": [],
195
- "stateMutability": "nonpayable",
196
- "type": "function"
197
- },
198
- {
199
- "inputs": [
200
- {
201
- "internalType": "uint256",
202
- "name": "_projectId",
203
- "type": "uint256"
204
- }
205
- ],
206
- "name": "toggleProjectIsPolyptych",
207
- "outputs": [],
208
- "stateMutability": "nonpayable",
209
- "type": "function"
210
- },
211
- {
212
- "inputs": [
213
- {
214
- "internalType": "address",
215
- "name": "newOwner",
216
- "type": "address"
217
- }
218
- ],
219
- "name": "transferOwnership",
220
- "outputs": [],
221
- "stateMutability": "nonpayable",
222
- "type": "function"
223
- }
224
- ],
225
- "bytecode": "0x608060405234801561001057600080fd5b5061001a3361001f565b61006f565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b6109b28061007e6000396000f3fe608060405234801561001057600080fd5b50600436106100a45760003560e01c806308aacdf1146100a95780633897bb42146100e1578063447aa1c51461011d57806359e4a2ad1461013257806366b92a0e14610145578063715018a6146101705780638da5cb5b14610178578063b628171a14610180578063e19133e214610193578063eaa76157146101a6578063eb037309146101b9578063f2fde38b146101cc575b600080fd5b6100cc6100b736600461082e565b60036020526000908152604090205460ff1681565b60405190151581526020015b60405180910390f35b6101046100ef36600461082e565b60026020526000908152604090205460a01b81565b6040516001600160a01b031990911681526020016100d8565b61013061012b36600461085c565b6101df565b005b610130610140366004610880565b6102fa565b600454610158906001600160a01b031681565b6040516001600160a01b0390911681526020016100d8565b61013061037b565b61015861038f565b61013061018e36600461082e565b61039e565b600154610158906001600160a01b031681565b6101306101b436600461085c565b6105b8565b6101306101c736600461082e565b6105ea565b6101306101da36600461085c565b610709565b60015460405163230448b160e01b815233600482015230602482015263447aa1c560e01b60448201819052916001600160a01b03169063230448b1906064016020604051808303816000875af115801561023d573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061026191906108bd565b6102af5760405162461bcd60e51b815260206004820152601a60248201527913db9b1e4810dbdc994810591b5a5b9050d308185b1b1bddd95960321b60448201526064015b60405180910390fd5b600480546001600160a01b0319166001600160a01b0384169081179091556040517f8efe01ac3eede6840252c9e2462d05448dc65a012877da2bcf1e32c06a161a3d90600090a25050565b6004546001600160a01b031633146103525760405162461bcd60e51b815260206004820152601b60248201527a13db9b1e481a185cda14d9595914d95d1d195c90dbdb9d1c9858dd602a1b60448201526064016102a6565b60009182526002602052604090912080546001600160601b03191660a09290921c919091179055565b61038361077f565b61038d60006107de565b565b6000546001600160a01b031690565b6001546001600160a01b031633146103ed5760405162461bcd60e51b815260206004820152601260248201527113db9b1e4818dbdc99481b585e4818d85b1b60721b60448201526064016102a6565b600360006103fe620f42408461090b565b815260208101919091526040016000205460ff16156104eb5760008181526002602052604081205460a01b906001600160a01b03198216900361047d5760405162461bcd60e51b815260206004820152601760248201527613db9b1e481b9bdb8b5e995c9bc81a185cda081cd95959604a1b60448201526064016102a6565b60015460405161078f60e21b8152600481018490526001600160a01b0319831660248201526001600160a01b0390911690611e3c90604401600060405180830381600087803b1580156104cf57600080fd5b505af11580156104e3573d6000803e3d6000fd5b505050505050565b42600082436104fb60018261091f565b408461050860c882610938565b61051390600161094c565b6040805160208101969096528501939093526060840191909152608083015260a082015260c00160408051808303601f1901815290829052805160209091012060015461078f60e21b835260048301869052602483018290529092506001600160a01b031690611e3c90604401600060405180830381600087803b15801561059a57600080fd5b505af11580156105ae573d6000803e3d6000fd5b5050505050505b50565b6105c061077f565b6105c861037b565b600180546001600160a01b0319166001600160a01b0392909216919091179055565b60015460405163a47d29cb60e01b81526004810183905282916001600160a01b03169063a47d29cb90602401602060405180830381865afa158015610633573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610657919061095f565b6001600160a01b0316336001600160a01b0316146106a55760405162461bcd60e51b815260206004820152600b60248201526a13db9b1e48105c9d1a5cdd60aa1b60448201526064016102a6565b600082815260036020908152604091829020805460ff8082161560ff199092168217909255835186815291161515918101919091527fede330a7b41e8a7cd3e273fa4093f4fb1ab8d9b0dd270a9931dc4e5035cf1d28910160405180910390a15050565b61071161077f565b6001600160a01b0381166107765760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b60648201526084016102a6565b6105b5816107de565b3361078861038f565b6001600160a01b03161461038d5760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064016102a6565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b60006020828403121561084057600080fd5b5035919050565b6001600160a01b03811681146105b557600080fd5b60006020828403121561086e57600080fd5b813561087981610847565b9392505050565b6000806040838503121561089357600080fd5b8235915060208301356001600160a01b0319811681146108b257600080fd5b809150509250929050565b6000602082840312156108cf57600080fd5b8151801515811461087957600080fd5b634e487b7160e01b600052601260045260246000fd5b634e487b7160e01b600052601160045260246000fd5b60008261091a5761091a6108df565b500490565b81810381811115610932576109326108f5565b92915050565b600082610947576109476108df565b500690565b80820180821115610932576109326108f5565b60006020828403121561097157600080fd5b81516108798161084756fea264697066735822122042f74c8c5443eff8cbaafb45aba4fd81f9f937f7c46c81ffba753cb327e99ce164736f6c63430008110033",
226
- "deployedBytecode": "0x608060405234801561001057600080fd5b50600436106100a45760003560e01c806308aacdf1146100a95780633897bb42146100e1578063447aa1c51461011d57806359e4a2ad1461013257806366b92a0e14610145578063715018a6146101705780638da5cb5b14610178578063b628171a14610180578063e19133e214610193578063eaa76157146101a6578063eb037309146101b9578063f2fde38b146101cc575b600080fd5b6100cc6100b736600461082e565b60036020526000908152604090205460ff1681565b60405190151581526020015b60405180910390f35b6101046100ef36600461082e565b60026020526000908152604090205460a01b81565b6040516001600160a01b031990911681526020016100d8565b61013061012b36600461085c565b6101df565b005b610130610140366004610880565b6102fa565b600454610158906001600160a01b031681565b6040516001600160a01b0390911681526020016100d8565b61013061037b565b61015861038f565b61013061018e36600461082e565b61039e565b600154610158906001600160a01b031681565b6101306101b436600461085c565b6105b8565b6101306101c736600461082e565b6105ea565b6101306101da36600461085c565b610709565b60015460405163230448b160e01b815233600482015230602482015263447aa1c560e01b60448201819052916001600160a01b03169063230448b1906064016020604051808303816000875af115801561023d573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061026191906108bd565b6102af5760405162461bcd60e51b815260206004820152601a60248201527913db9b1e4810dbdc994810591b5a5b9050d308185b1b1bddd95960321b60448201526064015b60405180910390fd5b600480546001600160a01b0319166001600160a01b0384169081179091556040517f8efe01ac3eede6840252c9e2462d05448dc65a012877da2bcf1e32c06a161a3d90600090a25050565b6004546001600160a01b031633146103525760405162461bcd60e51b815260206004820152601b60248201527a13db9b1e481a185cda14d9595914d95d1d195c90dbdb9d1c9858dd602a1b60448201526064016102a6565b60009182526002602052604090912080546001600160601b03191660a09290921c919091179055565b61038361077f565b61038d60006107de565b565b6000546001600160a01b031690565b6001546001600160a01b031633146103ed5760405162461bcd60e51b815260206004820152601260248201527113db9b1e4818dbdc99481b585e4818d85b1b60721b60448201526064016102a6565b600360006103fe620f42408461090b565b815260208101919091526040016000205460ff16156104eb5760008181526002602052604081205460a01b906001600160a01b03198216900361047d5760405162461bcd60e51b815260206004820152601760248201527613db9b1e481b9bdb8b5e995c9bc81a185cda081cd95959604a1b60448201526064016102a6565b60015460405161078f60e21b8152600481018490526001600160a01b0319831660248201526001600160a01b0390911690611e3c90604401600060405180830381600087803b1580156104cf57600080fd5b505af11580156104e3573d6000803e3d6000fd5b505050505050565b42600082436104fb60018261091f565b408461050860c882610938565b61051390600161094c565b6040805160208101969096528501939093526060840191909152608083015260a082015260c00160408051808303601f1901815290829052805160209091012060015461078f60e21b835260048301869052602483018290529092506001600160a01b031690611e3c90604401600060405180830381600087803b15801561059a57600080fd5b505af11580156105ae573d6000803e3d6000fd5b5050505050505b50565b6105c061077f565b6105c861037b565b600180546001600160a01b0319166001600160a01b0392909216919091179055565b60015460405163a47d29cb60e01b81526004810183905282916001600160a01b03169063a47d29cb90602401602060405180830381865afa158015610633573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610657919061095f565b6001600160a01b0316336001600160a01b0316146106a55760405162461bcd60e51b815260206004820152600b60248201526a13db9b1e48105c9d1a5cdd60aa1b60448201526064016102a6565b600082815260036020908152604091829020805460ff8082161560ff199092168217909255835186815291161515918101919091527fede330a7b41e8a7cd3e273fa4093f4fb1ab8d9b0dd270a9931dc4e5035cf1d28910160405180910390a15050565b61071161077f565b6001600160a01b0381166107765760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b60648201526084016102a6565b6105b5816107de565b3361078861038f565b6001600160a01b03161461038d5760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064016102a6565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b60006020828403121561084057600080fd5b5035919050565b6001600160a01b03811681146105b557600080fd5b60006020828403121561086e57600080fd5b813561087981610847565b9392505050565b6000806040838503121561089357600080fd5b8235915060208301356001600160a01b0319811681146108b257600080fd5b809150509250929050565b6000602082840312156108cf57600080fd5b8151801515811461087957600080fd5b634e487b7160e01b600052601260045260246000fd5b634e487b7160e01b600052601160045260246000fd5b60008261091a5761091a6108df565b500490565b81810381811115610932576109326108f5565b92915050565b600082610947576109476108df565b500690565b80820180821115610932576109326108f5565b60006020828403121561097157600080fd5b81516108798161084756fea264697066735822122042f74c8c5443eff8cbaafb45aba4fd81f9f937f7c46c81ffba753cb327e99ce164736f6c63430008110033",
227
- "linkReferences": {},
228
- "deployedLinkReferences": {}
229
- }