@artblocks/contracts 0.0.1 → 1.0.1

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 (138) hide show
  1. package/README.md +30 -11
  2. package/artifacts/contracts/AdminACLV1.sol/AdminACLV1.json +2 -2
  3. package/artifacts/contracts/BasicPolyptychRandomizerV0.sol/BasicPolyptychRandomizerV0.json +229 -0
  4. package/artifacts/contracts/BasicRandomizerV2.sol/BasicRandomizerV2.json +3 -3
  5. package/artifacts/contracts/GenArt721CoreV3.sol/GenArt721CoreV3.json +2 -2
  6. package/artifacts/contracts/GenArt721CoreV3_Engine.sol/GenArt721CoreV3_Engine.json +2 -2
  7. package/artifacts/contracts/archive/GenArt721CoreV0.sol/Address.json +10 -0
  8. package/artifacts/contracts/archive/GenArt721CoreV0.sol/Counters.json +10 -0
  9. package/artifacts/contracts/archive/GenArt721CoreV0.sol/CustomERC721Metadata.json +425 -0
  10. package/artifacts/contracts/archive/GenArt721CoreV0.sol/ERC165.json +38 -0
  11. package/artifacts/contracts/archive/GenArt721CoreV0.sol/ERC721.json +322 -0
  12. package/artifacts/contracts/archive/GenArt721CoreV0.sol/ERC721Enumerable.json +384 -0
  13. package/artifacts/contracts/archive/GenArt721CoreV0.sol/ERC721ReceiverMock.json +101 -0
  14. package/artifacts/contracts/archive/GenArt721CoreV0.sol/GenArt721.json +1528 -0
  15. package/artifacts/contracts/archive/GenArt721CoreV0.sol/IERC165.json +32 -0
  16. package/artifacts/contracts/archive/GenArt721CoreV0.sol/IERC721.json +316 -0
  17. package/artifacts/contracts/archive/GenArt721CoreV0.sol/IERC721Enumerable.json +378 -0
  18. package/artifacts/contracts/archive/GenArt721CoreV0.sol/IERC721Receiver.json +47 -0
  19. package/artifacts/contracts/archive/GenArt721CoreV0.sol/SafeMath.json +10 -0
  20. package/artifacts/contracts/archive/GenArt721CoreV0.sol/Strings.json +10 -0
  21. package/artifacts/contracts/archive/GenArt721CoreV1.sol/Address.json +10 -0
  22. package/artifacts/contracts/archive/GenArt721CoreV1.sol/Counters.json +10 -0
  23. package/artifacts/contracts/archive/GenArt721CoreV1.sol/CustomERC721Metadata.json +425 -0
  24. package/artifacts/contracts/archive/GenArt721CoreV1.sol/ERC165.json +38 -0
  25. package/artifacts/contracts/archive/GenArt721CoreV1.sol/ERC721.json +322 -0
  26. package/artifacts/contracts/archive/GenArt721CoreV1.sol/ERC721Enumerable.json +384 -0
  27. package/artifacts/contracts/archive/GenArt721CoreV1.sol/GenArt721Core.json +1773 -0
  28. package/artifacts/contracts/archive/GenArt721CoreV1.sol/IERC165.json +32 -0
  29. package/artifacts/contracts/archive/GenArt721CoreV1.sol/IERC721.json +316 -0
  30. package/artifacts/contracts/archive/GenArt721CoreV1.sol/IERC721Enumerable.json +378 -0
  31. package/artifacts/contracts/archive/GenArt721CoreV1.sol/IERC721Receiver.json +47 -0
  32. package/artifacts/contracts/archive/GenArt721CoreV1.sol/Randomizer.json +26 -0
  33. package/artifacts/contracts/archive/GenArt721CoreV1.sol/SafeMath.json +10 -0
  34. package/artifacts/contracts/archive/GenArt721CoreV1.sol/Strings.json +10 -0
  35. package/artifacts/contracts/archive/minter-suite/Minters/MinterDAExp/MinterDAExpV0.sol/MinterDAExpV0.json +575 -0
  36. package/artifacts/contracts/archive/minter-suite/Minters/MinterDAExp/MinterDAExpV1.sol/MinterDAExpV1.json +463 -0
  37. package/artifacts/contracts/{minter-suite → archive/minter-suite}/Minters/MinterDAExp/MinterDAExpV2.sol/MinterDAExpV2.json +3 -3
  38. package/artifacts/contracts/{minter-suite → archive/minter-suite}/Minters/MinterDAExp/MinterDAExpV3.sol/MinterDAExpV3.json +3 -3
  39. package/artifacts/contracts/{minter-suite → archive/minter-suite}/Minters/MinterDAExpSettlement/MinterDAExpSettlementV0.sol/MinterDAExpSettlementV0.json +15 -15
  40. package/artifacts/contracts/archive/minter-suite/Minters/MinterDAExpSettlement/MinterDAExpSettlementV1.sol/MinterDAExpSettlementV1.json +1066 -0
  41. package/artifacts/contracts/archive/minter-suite/Minters/MinterDALin/MinterDALinV0.sol/MinterDALinV0.json +551 -0
  42. package/artifacts/contracts/archive/minter-suite/Minters/MinterDALin/MinterDALinV1.sol/MinterDALinV1.json +439 -0
  43. package/artifacts/contracts/{minter-suite → archive/minter-suite}/Minters/MinterDALin/MinterDALinV2.sol/MinterDALinV2.json +3 -3
  44. package/artifacts/contracts/{minter-suite → archive/minter-suite}/Minters/MinterDALin/MinterDALinV3.sol/MinterDALinV3.json +3 -3
  45. package/artifacts/contracts/archive/minter-suite/Minters/MinterHolder/MinterHolderV0.sol/MinterHolderV0.json +622 -0
  46. package/artifacts/contracts/archive/minter-suite/Minters/MinterHolder/MinterHolderV1.sol/MinterHolderV1.json +719 -0
  47. package/artifacts/contracts/archive/minter-suite/Minters/MinterHolder/MinterHolderV2.sol/MinterHolderV2.json +794 -0
  48. package/artifacts/contracts/{minter-suite → archive/minter-suite}/Minters/MinterHolder/MinterHolderV3.sol/MinterHolderV3.json +3 -3
  49. package/artifacts/contracts/archive/minter-suite/Minters/MinterMerkle/MinterMerkleV0.sol/MinterMerkleV0.json +873 -0
  50. package/artifacts/contracts/archive/minter-suite/Minters/MinterMerkle/MinterMerkleV1.sol/MinterMerkleV1.json +932 -0
  51. package/artifacts/contracts/archive/minter-suite/Minters/MinterMerkle/MinterMerkleV2.sol/MinterMerkleV2.json +984 -0
  52. package/artifacts/contracts/{minter-suite → archive/minter-suite}/Minters/MinterMerkle/MinterMerkleV3.sol/MinterMerkleV3.json +3 -3
  53. package/artifacts/contracts/{minter-suite → archive/minter-suite}/Minters/MinterMerkle/MinterMerkleV4.sol/MinterMerkleV4.json +3 -3
  54. package/artifacts/contracts/archive/minter-suite/Minters/MinterSetPrice/MinterSetPriceV0.sol/MinterSetPriceV0.json +400 -0
  55. package/artifacts/contracts/{minter-suite/Minters/MinterSetPrice/deprecated → archive/minter-suite/Minters/MinterSetPrice}/MinterSetPriceV1.sol/MinterSetPriceV1.json +3 -3
  56. package/artifacts/contracts/{minter-suite → archive/minter-suite}/Minters/MinterSetPrice/MinterSetPriceV2.sol/MinterSetPriceV2.json +3 -3
  57. package/artifacts/contracts/{minter-suite → archive/minter-suite}/Minters/MinterSetPrice/MinterSetPriceV3.sol/MinterSetPriceV3.json +3 -3
  58. package/artifacts/contracts/{minter-suite/Minters/MinterSetPriceERC20/deprecated → archive/minter-suite/Minters/MinterSetPriceERC20}/MinterSetPriceERC20V0.sol/MinterSetPriceERC20V0.json +3 -3
  59. package/artifacts/contracts/archive/minter-suite/Minters/MinterSetPriceERC20/MinterSetPriceERC20V1.sol/MinterSetPriceERC20V1.json +349 -0
  60. package/artifacts/contracts/{minter-suite → archive/minter-suite}/Minters/MinterSetPriceERC20/MinterSetPriceERC20V2.sol/MinterSetPriceERC20V2.json +3 -3
  61. package/artifacts/contracts/{minter-suite → archive/minter-suite}/Minters/MinterSetPriceERC20/MinterSetPriceERC20V3.sol/MinterSetPriceERC20V3.json +3 -3
  62. package/artifacts/contracts/explorations/GenArt721CoreV3_Explorations.sol/GenArt721CoreV3_Explorations.json +2 -2
  63. package/artifacts/contracts/interfaces/0.8.x/IFilteredMinterDAExpSettlementV0.sol/IFilteredMinterDAExpSettlementV0.json +12 -12
  64. package/artifacts/contracts/interfaces/0.8.x/IFilteredMinterDAExpSettlementV1.sol/IFilteredMinterDAExpSettlementV1.json +767 -0
  65. package/artifacts/contracts/interfaces/0.8.x/IFilteredMinterDAExpSettlement_Mixin.sol/IFilteredMinterDAExpSettlement_Mixin.json +161 -0
  66. package/artifacts/contracts/interfaces/0.8.x/IMinterBaseV0.sol/IMinterBaseV0.json +24 -0
  67. package/artifacts/contracts/interfaces/0.8.x/IMinterFilterV0.sol/IMinterFilterV0.json +6 -0
  68. package/artifacts/contracts/interfaces/0.8.x/IMintingAPICoreV0.sol/IMintingAPICoreV0.json +185 -0
  69. package/artifacts/contracts/interfaces/0.8.x/IMintingAPIMinterV0.sol/IMintingAPIMinterV0.json +88 -0
  70. package/artifacts/contracts/interfaces/0.8.x/IRandomizerPolyptychV0.sol/IRandomizerPolyptychV0.json +87 -0
  71. package/artifacts/contracts/interfaces/0.8.x/IRandomizerV2.sol/IRandomizerV2.json +1 -1
  72. package/artifacts/contracts/minter-suite/MinterFilter/MinterFilterV0.sol/MinterFilterV0.json +8 -2
  73. package/artifacts/contracts/minter-suite/MinterFilter/MinterFilterV1.sol/MinterFilterV1.json +34 -2
  74. package/artifacts/contracts/minter-suite/Minters/MinterBase_v0_1_1.sol/MinterBase.json +24 -0
  75. package/artifacts/contracts/minter-suite/Minters/MinterDAExpSettlementV2.sol/MinterDAExpSettlementV2.json +1127 -0
  76. package/artifacts/contracts/minter-suite/Minters/MinterDAExpV4.sol/MinterDAExpV4.json +882 -0
  77. package/artifacts/contracts/minter-suite/Minters/MinterDALinV4.sol/MinterDALinV4.json +858 -0
  78. package/artifacts/contracts/minter-suite/Minters/MinterHolderV4.sol/MinterHolderV4.json +1126 -0
  79. package/artifacts/contracts/minter-suite/Minters/MinterMerkleV5.sol/MinterMerkleV5.json +1065 -0
  80. package/artifacts/contracts/minter-suite/Minters/MinterPolyptychV0.sol/IGenArt721CoreContractV3WithRandomizer.json +662 -0
  81. package/artifacts/contracts/minter-suite/Minters/MinterPolyptychV0.sol/MinterPolyptychV0.json +1268 -0
  82. package/artifacts/contracts/minter-suite/Minters/MinterSetPriceERC20V4.sol/MinterSetPriceERC20V4.json +768 -0
  83. package/artifacts/contracts/minter-suite/Minters/MinterSetPriceV4.sol/MinterSetPriceV4.json +697 -0
  84. package/artifacts/contracts/mock/GenArt721CoreV3_Engine_IncorrectCoreType.sol/GenArt721CoreV3_Engine_IncorrectCoreType.json +1817 -0
  85. package/artifacts/contracts/mock/RandomizerV2_NoAssignMock.sol/RandomizerV2_NoAssignMock.json +3 -3
  86. package/contracts/BasicPolyptychRandomizerV0.sol +126 -0
  87. package/contracts/BasicRandomizerV2.sol +3 -3
  88. package/contracts/archive/GenArt721CoreV0.sol +1621 -0
  89. package/contracts/archive/GenArt721CoreV1.sol +1577 -0
  90. package/contracts/archive/minter-suite/Minters/MinterDAExp/MinterDAExpV0.sol +503 -0
  91. package/contracts/archive/minter-suite/Minters/MinterDAExp/MinterDAExpV1.sol +442 -0
  92. package/contracts/{minter-suite → archive/minter-suite}/Minters/MinterDAExp/MinterDAExpV2.sol +3 -3
  93. package/contracts/{minter-suite → archive/minter-suite}/Minters/MinterDAExp/MinterDAExpV3.sol +3 -3
  94. package/contracts/{minter-suite → archive/minter-suite}/Minters/MinterDAExpSettlement/MinterDAExpSettlementV0.sol +3 -3
  95. package/contracts/archive/minter-suite/Minters/MinterDAExpSettlement/MinterDAExpSettlementV1.sol +1026 -0
  96. package/contracts/archive/minter-suite/Minters/MinterDALin/MinterDALinV0.sol +450 -0
  97. package/contracts/archive/minter-suite/Minters/MinterDALin/MinterDALinV1.sol +406 -0
  98. package/contracts/{minter-suite → archive/minter-suite}/Minters/MinterDALin/MinterDALinV2.sol +3 -3
  99. package/contracts/{minter-suite → archive/minter-suite}/Minters/MinterDALin/MinterDALinV3.sol +3 -3
  100. package/contracts/archive/minter-suite/Minters/MinterHolder/MinterHolderV0.sol +540 -0
  101. package/contracts/archive/minter-suite/Minters/MinterHolder/MinterHolderV1.sol +648 -0
  102. package/contracts/{minter-suite → archive/minter-suite}/Minters/MinterHolder/MinterHolderV2.sol +6 -6
  103. package/contracts/{minter-suite → archive/minter-suite}/Minters/MinterHolder/MinterHolderV3.sol +4 -4
  104. package/contracts/archive/minter-suite/Minters/MinterMerkle/MinterMerkleV0.sol +523 -0
  105. package/contracts/archive/minter-suite/Minters/MinterMerkle/MinterMerkleV1.sol +602 -0
  106. package/contracts/archive/minter-suite/Minters/MinterMerkle/MinterMerkleV2.sol +679 -0
  107. package/contracts/{minter-suite → archive/minter-suite}/Minters/MinterMerkle/MinterMerkleV3.sol +4 -4
  108. package/contracts/{minter-suite → archive/minter-suite}/Minters/MinterMerkle/MinterMerkleV4.sol +4 -4
  109. package/contracts/archive/minter-suite/Minters/MinterSetPrice/MinterSetPriceV0.sol +333 -0
  110. package/contracts/{minter-suite/Minters/MinterSetPrice/deprecated → archive/minter-suite/Minters/MinterSetPrice}/MinterSetPriceV1.sol +0 -0
  111. package/contracts/{minter-suite → archive/minter-suite}/Minters/MinterSetPrice/MinterSetPriceV2.sol +3 -3
  112. package/contracts/{minter-suite → archive/minter-suite}/Minters/MinterSetPrice/MinterSetPriceV3.sol +3 -3
  113. package/contracts/{minter-suite/Minters/MinterSetPriceERC20/deprecated → archive/minter-suite/Minters/MinterSetPriceERC20}/MinterSetPriceERC20V0.sol +0 -0
  114. package/contracts/archive/minter-suite/Minters/MinterSetPriceERC20/MinterSetPriceERC20V1.sol +411 -0
  115. package/contracts/{minter-suite → archive/minter-suite}/Minters/MinterSetPriceERC20/MinterSetPriceERC20V2.sol +3 -3
  116. package/contracts/{minter-suite → archive/minter-suite}/Minters/MinterSetPriceERC20/MinterSetPriceERC20V3.sol +3 -3
  117. package/contracts/interfaces/0.8.x/IFilteredMinterDAExpSettlementV0.sol +4 -53
  118. package/contracts/interfaces/0.8.x/IFilteredMinterDAExpSettlementV1.sol +21 -0
  119. package/contracts/interfaces/0.8.x/IFilteredMinterDAExpSettlement_Mixin.sol +62 -0
  120. package/contracts/interfaces/0.8.x/IMinterBaseV0.sol +20 -0
  121. package/contracts/interfaces/0.8.x/IMinterFilterV0.sol +6 -0
  122. package/contracts/interfaces/0.8.x/IMintingAPICoreV0.sol +62 -0
  123. package/contracts/interfaces/0.8.x/IMintingAPIMinterV0.sol +31 -0
  124. package/contracts/interfaces/0.8.x/IRandomizerPolyptychV0.sol +31 -0
  125. package/contracts/interfaces/0.8.x/IRandomizerV2.sol +5 -2
  126. package/contracts/minter-suite/MinterFilter/MinterFilterV1.sol +18 -0
  127. package/contracts/minter-suite/Minters/MinterBase_v0_1_1.sol +293 -0
  128. package/contracts/minter-suite/Minters/MinterDAExpSettlementV2.sol +1312 -0
  129. package/contracts/minter-suite/Minters/MinterDAExpV4.sol +600 -0
  130. package/contracts/minter-suite/Minters/MinterDALinV4.sol +552 -0
  131. package/contracts/minter-suite/Minters/MinterHolderV4.sol +781 -0
  132. package/contracts/minter-suite/Minters/MinterMerkleV5.sol +717 -0
  133. package/contracts/minter-suite/Minters/MinterPolyptychV0.sol +998 -0
  134. package/contracts/minter-suite/Minters/MinterSetPriceERC20V4.sol +480 -0
  135. package/contracts/minter-suite/Minters/MinterSetPriceV4.sol +380 -0
  136. package/contracts/mock/GenArt721CoreV3_Engine_IncorrectCoreType.sol +1979 -0
  137. package/package.json +8 -2
  138. package/artifacts/contracts/minter-suite/Minters/MinterHolder/MinterHolderV2.sol/MinterHolderV2.json +0 -794
@@ -79,7 +79,7 @@
79
79
  "name": "genArt721Core",
80
80
  "outputs": [
81
81
  {
82
- "internalType": "contract IGenArt721CoreContractV3",
82
+ "internalType": "contract IGenArt721CoreContractV3_Base",
83
83
  "name": "",
84
84
  "type": "address"
85
85
  }
@@ -121,8 +121,8 @@
121
121
  "type": "function"
122
122
  }
123
123
  ],
124
- "bytecode": "0x608060405234801561001057600080fd5b5061001a3361001f565b61006f565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b6104af8061007e6000396000f3fe608060405234801561001057600080fd5b50600436106100785760003560e01c8063471f23d11461007d578063715018a6146100925780638da5cb5b1461009a578063b628171a146100be578063b7bc7356146100cf578063e19133e2146100e2578063eaa76157146100f5578063f2fde38b14610108575b600080fd5b61009061008b3660046103cc565b61011b565b005b6100906101e7565b6100a26101fb565b6040516001600160a01b03909116815260200160405180910390f35b6100906100cc3660046103cc565b50565b6100906100dd3660046103cc565b61020a565b6001546100a2906001600160a01b031681565b6100906101033660046103e5565b610270565b6100906101163660046103e5565b6102a2565b426000824361012b60018261042b565b408461013860c882610444565b610143906001610466565b6040805160208101969096528501939093526060840191909152608083015260a082015260c00160408051808303601f1901815290829052805160209091012060015461078f60e21b835260048301869052602483018290529092506001600160a01b031690611e3c90604401600060405180830381600087803b1580156101ca57600080fd5b505af11580156101de573d6000803e3d6000fd5b50505050505050565b6101ef61031d565b6101f9600061037c565b565b6000546001600160a01b031690565b60015460405161078f60e21b815260048101839052600060248201819052916001600160a01b031690611e3c90604401600060405180830381600087803b15801561025457600080fd5b505af1158015610268573d6000803e3d6000fd5b505050505050565b61027861031d565b6102806101e7565b600180546001600160a01b0319166001600160a01b0392909216919091179055565b6102aa61031d565b6001600160a01b0381166103145760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b60648201526084015b60405180910390fd5b6100cc8161037c565b336103266101fb565b6001600160a01b0316146101f95760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015260640161030b565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b6000602082840312156103de57600080fd5b5035919050565b6000602082840312156103f757600080fd5b81356001600160a01b038116811461040e57600080fd5b9392505050565b634e487b7160e01b600052601160045260246000fd5b8181038181111561043e5761043e610415565b92915050565b60008261046157634e487b7160e01b600052601260045260246000fd5b500690565b8082018082111561043e5761043e61041556fea26469706673582212203d818f728b7a490ca542d4b01b1aae80c75e800a98e34f2d93b2722ff3bbdaf164736f6c63430008110033",
125
- "deployedBytecode": "0x608060405234801561001057600080fd5b50600436106100785760003560e01c8063471f23d11461007d578063715018a6146100925780638da5cb5b1461009a578063b628171a146100be578063b7bc7356146100cf578063e19133e2146100e2578063eaa76157146100f5578063f2fde38b14610108575b600080fd5b61009061008b3660046103cc565b61011b565b005b6100906101e7565b6100a26101fb565b6040516001600160a01b03909116815260200160405180910390f35b6100906100cc3660046103cc565b50565b6100906100dd3660046103cc565b61020a565b6001546100a2906001600160a01b031681565b6100906101033660046103e5565b610270565b6100906101163660046103e5565b6102a2565b426000824361012b60018261042b565b408461013860c882610444565b610143906001610466565b6040805160208101969096528501939093526060840191909152608083015260a082015260c00160408051808303601f1901815290829052805160209091012060015461078f60e21b835260048301869052602483018290529092506001600160a01b031690611e3c90604401600060405180830381600087803b1580156101ca57600080fd5b505af11580156101de573d6000803e3d6000fd5b50505050505050565b6101ef61031d565b6101f9600061037c565b565b6000546001600160a01b031690565b60015460405161078f60e21b815260048101839052600060248201819052916001600160a01b031690611e3c90604401600060405180830381600087803b15801561025457600080fd5b505af1158015610268573d6000803e3d6000fd5b505050505050565b61027861031d565b6102806101e7565b600180546001600160a01b0319166001600160a01b0392909216919091179055565b6102aa61031d565b6001600160a01b0381166103145760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b60648201526084015b60405180910390fd5b6100cc8161037c565b336103266101fb565b6001600160a01b0316146101f95760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015260640161030b565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b6000602082840312156103de57600080fd5b5035919050565b6000602082840312156103f757600080fd5b81356001600160a01b038116811461040e57600080fd5b9392505050565b634e487b7160e01b600052601160045260246000fd5b8181038181111561043e5761043e610415565b92915050565b60008261046157634e487b7160e01b600052601260045260246000fd5b500690565b8082018082111561043e5761043e61041556fea26469706673582212203d818f728b7a490ca542d4b01b1aae80c75e800a98e34f2d93b2722ff3bbdaf164736f6c63430008110033",
124
+ "bytecode": "0x608060405234801561001057600080fd5b5061001a3361001f565b61006f565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b6104af8061007e6000396000f3fe608060405234801561001057600080fd5b50600436106100785760003560e01c8063471f23d11461007d578063715018a6146100925780638da5cb5b1461009a578063b628171a146100be578063b7bc7356146100cf578063e19133e2146100e2578063eaa76157146100f5578063f2fde38b14610108575b600080fd5b61009061008b3660046103cc565b61011b565b005b6100906101e7565b6100a26101fb565b6040516001600160a01b03909116815260200160405180910390f35b6100906100cc3660046103cc565b50565b6100906100dd3660046103cc565b61020a565b6001546100a2906001600160a01b031681565b6100906101033660046103e5565b610270565b6100906101163660046103e5565b6102a2565b426000824361012b60018261042b565b408461013860c882610444565b610143906001610466565b6040805160208101969096528501939093526060840191909152608083015260a082015260c00160408051808303601f1901815290829052805160209091012060015461078f60e21b835260048301869052602483018290529092506001600160a01b031690611e3c90604401600060405180830381600087803b1580156101ca57600080fd5b505af11580156101de573d6000803e3d6000fd5b50505050505050565b6101ef61031d565b6101f9600061037c565b565b6000546001600160a01b031690565b60015460405161078f60e21b815260048101839052600060248201819052916001600160a01b031690611e3c90604401600060405180830381600087803b15801561025457600080fd5b505af1158015610268573d6000803e3d6000fd5b505050505050565b61027861031d565b6102806101e7565b600180546001600160a01b0319166001600160a01b0392909216919091179055565b6102aa61031d565b6001600160a01b0381166103145760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b60648201526084015b60405180910390fd5b6100cc8161037c565b336103266101fb565b6001600160a01b0316146101f95760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015260640161030b565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b6000602082840312156103de57600080fd5b5035919050565b6000602082840312156103f757600080fd5b81356001600160a01b038116811461040e57600080fd5b9392505050565b634e487b7160e01b600052601160045260246000fd5b8181038181111561043e5761043e610415565b92915050565b60008261046157634e487b7160e01b600052601260045260246000fd5b500690565b8082018082111561043e5761043e61041556fea2646970667358221220562f072427c431daed5ef18c4942fd539ae7551f13d76a91c59b82353ea1285564736f6c63430008110033",
125
+ "deployedBytecode": "0x608060405234801561001057600080fd5b50600436106100785760003560e01c8063471f23d11461007d578063715018a6146100925780638da5cb5b1461009a578063b628171a146100be578063b7bc7356146100cf578063e19133e2146100e2578063eaa76157146100f5578063f2fde38b14610108575b600080fd5b61009061008b3660046103cc565b61011b565b005b6100906101e7565b6100a26101fb565b6040516001600160a01b03909116815260200160405180910390f35b6100906100cc3660046103cc565b50565b6100906100dd3660046103cc565b61020a565b6001546100a2906001600160a01b031681565b6100906101033660046103e5565b610270565b6100906101163660046103e5565b6102a2565b426000824361012b60018261042b565b408461013860c882610444565b610143906001610466565b6040805160208101969096528501939093526060840191909152608083015260a082015260c00160408051808303601f1901815290829052805160209091012060015461078f60e21b835260048301869052602483018290529092506001600160a01b031690611e3c90604401600060405180830381600087803b1580156101ca57600080fd5b505af11580156101de573d6000803e3d6000fd5b50505050505050565b6101ef61031d565b6101f9600061037c565b565b6000546001600160a01b031690565b60015460405161078f60e21b815260048101839052600060248201819052916001600160a01b031690611e3c90604401600060405180830381600087803b15801561025457600080fd5b505af1158015610268573d6000803e3d6000fd5b505050505050565b61027861031d565b6102806101e7565b600180546001600160a01b0319166001600160a01b0392909216919091179055565b6102aa61031d565b6001600160a01b0381166103145760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b60648201526084015b60405180910390fd5b6100cc8161037c565b336103266101fb565b6001600160a01b0316146101f95760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015260640161030b565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b6000602082840312156103de57600080fd5b5035919050565b6000602082840312156103f757600080fd5b81356001600160a01b038116811461040e57600080fd5b9392505050565b634e487b7160e01b600052601160045260246000fd5b8181038181111561043e5761043e610415565b92915050565b60008261046157634e487b7160e01b600052601260045260246000fd5b500690565b8082018082111561043e5761043e61041556fea2646970667358221220562f072427c431daed5ef18c4942fd539ae7551f13d76a91c59b82353ea1285564736f6c63430008110033",
126
126
  "linkReferences": {},
127
127
  "deployedLinkReferences": {}
128
128
  }
@@ -0,0 +1,126 @@
1
+ // SPDX-License-Identifier: LGPL-3.0-only
2
+ // Creatd By: Art Blocks Inc.
3
+
4
+ pragma solidity 0.8.17;
5
+
6
+ import "./interfaces/0.8.x/IGenArt721CoreContractV3_Base.sol";
7
+ import "./interfaces/0.8.x/IRandomizerPolyptychV0.sol";
8
+
9
+ import "@openzeppelin-4.7/contracts/access/Ownable.sol";
10
+
11
+ /**
12
+ * @title Basic Polytych Randomizer contract that enables the copying of token hash seeds.
13
+ * @notice This contract requires several configuration options to be set properly before
14
+ * it enables the copying of token hashes from an original token (the first panel of a polyptych)
15
+ * to subsequent diptych, triptych, or polyptych panels.
16
+ *
17
+ * Requirements to use the polyptych randomizer:
18
+ * - Core contract must be an instance of `GenArt721CoreV3_Engine`
19
+ * - The initial project used as the first panel should be minted with a pseudo random token hash
20
+ * - An `MinterPolyptychV0` contract or similar must be deployed and configured as the `hashSeedSetterContract`
21
+ * - The `projectDuplicateHashSeedLimit` should be configured for each project
22
+ *
23
+ * Once the contract is configured, it will enable newly-minted tokens to use a copy of the hash
24
+ * seed from a previously-minted token.
25
+ */
26
+ contract BasicPolyptychRandomizerV0 is IRandomizerPolyptychV0, Ownable {
27
+ // The core contract that may interact with this randomizer contract.
28
+ IGenArt721CoreContractV3_Base public genArt721Core;
29
+
30
+ // Used to obtain the project ID from the token ID
31
+ uint256 constant ONE_MILLION = 1_000_000;
32
+
33
+ // Mapping of token IDs to hash seeds
34
+ mapping(uint256 => bytes12) public polyptychHashSeeds;
35
+
36
+ // Configures the maximum number of hash seed copies that can exist per project (default zero)
37
+ mapping(uint256 => bool) public projectIsPolyptych;
38
+
39
+ // The contract allowed to assign hash seeds (e.g. PolyptychMinterV0)
40
+ address public hashSeedSetterContract;
41
+
42
+ function assignCoreAndRenounce(address _genArt721Core) external onlyOwner {
43
+ renounceOwnership();
44
+ genArt721Core = IGenArt721CoreContractV3_Base(_genArt721Core);
45
+ }
46
+
47
+ // modifier to restrict access to only AdminACL allowed calls
48
+ // @dev defers which ACL contract is used to the core contract
49
+ modifier onlyCoreAdminACL(bytes4 _selector) {
50
+ require(
51
+ genArt721Core.adminACLAllowed(msg.sender, address(this), _selector),
52
+ "Only Core AdminACL allowed"
53
+ );
54
+ _;
55
+ }
56
+
57
+ modifier onlyArtist(uint256 _projectId) {
58
+ require(
59
+ msg.sender == genArt721Core.projectIdToArtistAddress(_projectId),
60
+ "Only Artist"
61
+ );
62
+ _;
63
+ }
64
+
65
+ // Allows the owner of the core contract to set the minter that is allowed to assign hash seeds
66
+ function setHashSeedSetterContract(
67
+ address _contractAddress
68
+ ) external onlyCoreAdminACL(this.setHashSeedSetterContract.selector) {
69
+ hashSeedSetterContract = _contractAddress;
70
+ emit HashSeedSetterUpdated(_contractAddress);
71
+ }
72
+
73
+ /**
74
+ * @notice Allows the owner of the core contract to configure a project as a polyptych
75
+ * @param _projectId - The ID of the project that has a polyptych panel (second, third, etc.)
76
+ */
77
+ function toggleProjectIsPolyptych(
78
+ uint256 _projectId
79
+ ) external onlyArtist(_projectId) {
80
+ projectIsPolyptych[_projectId] = !projectIsPolyptych[_projectId];
81
+ emit ProjectIsPolyptychUpdated(
82
+ _projectId,
83
+ projectIsPolyptych[_projectId]
84
+ );
85
+ }
86
+
87
+ // Sets the token hash seed to be re-used in the subsequent panels of a polyptych
88
+ function setPolyptychHashSeed(
89
+ uint256 _tokenId,
90
+ bytes12 _hashSeed
91
+ ) external {
92
+ require(
93
+ msg.sender == hashSeedSetterContract,
94
+ "Only hashSeedSetterContract"
95
+ );
96
+ polyptychHashSeeds[_tokenId] = _hashSeed;
97
+ // @dev event indicating token hash seed assigned is not required for subgraph indexing
98
+ // because token hash seeds are still assigned atomically in `assignTokenHash` function.
99
+ // If token hash seeds were assigned async, event emission may be required to support
100
+ // subgraph indexing.
101
+ }
102
+
103
+ // When `genArt721Core` calls this, it can be assured that the randomizer
104
+ // will set a bytes32 hash for tokenId `_tokenId` on the core contract.
105
+ function assignTokenHash(uint256 _tokenId) external virtual {
106
+ require(msg.sender == address(genArt721Core), "Only core may call");
107
+
108
+ if (projectIsPolyptych[_tokenId / ONE_MILLION]) {
109
+ bytes12 seededHash = polyptychHashSeeds[_tokenId];
110
+ require(seededHash != 0, "Only non-zero hash seed");
111
+ genArt721Core.setTokenHash_8PT(_tokenId, seededHash);
112
+ } else {
113
+ uint256 time = block.timestamp;
114
+ bytes32 hash = keccak256(
115
+ abi.encodePacked(
116
+ _tokenId,
117
+ block.number,
118
+ blockhash(block.number - 1),
119
+ time,
120
+ (time % 200) + 1
121
+ )
122
+ );
123
+ genArt721Core.setTokenHash_8PT(_tokenId, hash);
124
+ }
125
+ }
126
+ }
@@ -4,17 +4,17 @@
4
4
  pragma solidity 0.8.17;
5
5
 
6
6
  import "./interfaces/0.8.x/IRandomizerV2.sol";
7
- import "./interfaces/0.8.x/IGenArt721CoreContractV3.sol";
7
+ import "./interfaces/0.8.x/IGenArt721CoreContractV3_Base.sol";
8
8
 
9
9
  import "@openzeppelin-4.7/contracts/access/Ownable.sol";
10
10
 
11
11
  contract BasicRandomizerV2 is IRandomizerV2, Ownable {
12
12
  // The core contract that may interact with this randomizer contract.
13
- IGenArt721CoreContractV3 public genArt721Core;
13
+ IGenArt721CoreContractV3_Base public genArt721Core;
14
14
 
15
15
  function assignCoreAndRenounce(address _genArt721Core) external onlyOwner {
16
16
  renounceOwnership();
17
- genArt721Core = IGenArt721CoreContractV3(_genArt721Core);
17
+ genArt721Core = IGenArt721CoreContractV3_Base(_genArt721Core);
18
18
  }
19
19
 
20
20
  // When `genArt721Core` calls this, it can be assured that the randomizer