@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.
- package/README.md +30 -11
- package/artifacts/contracts/AdminACLV1.sol/AdminACLV1.json +2 -2
- package/artifacts/contracts/BasicPolyptychRandomizerV0.sol/BasicPolyptychRandomizerV0.json +229 -0
- package/artifacts/contracts/BasicRandomizerV2.sol/BasicRandomizerV2.json +3 -3
- package/artifacts/contracts/GenArt721CoreV3.sol/GenArt721CoreV3.json +2 -2
- package/artifacts/contracts/GenArt721CoreV3_Engine.sol/GenArt721CoreV3_Engine.json +2 -2
- package/artifacts/contracts/archive/GenArt721CoreV0.sol/Address.json +10 -0
- package/artifacts/contracts/archive/GenArt721CoreV0.sol/Counters.json +10 -0
- package/artifacts/contracts/archive/GenArt721CoreV0.sol/CustomERC721Metadata.json +425 -0
- package/artifacts/contracts/archive/GenArt721CoreV0.sol/ERC165.json +38 -0
- package/artifacts/contracts/archive/GenArt721CoreV0.sol/ERC721.json +322 -0
- package/artifacts/contracts/archive/GenArt721CoreV0.sol/ERC721Enumerable.json +384 -0
- package/artifacts/contracts/archive/GenArt721CoreV0.sol/ERC721ReceiverMock.json +101 -0
- package/artifacts/contracts/archive/GenArt721CoreV0.sol/GenArt721.json +1528 -0
- package/artifacts/contracts/archive/GenArt721CoreV0.sol/IERC165.json +32 -0
- package/artifacts/contracts/archive/GenArt721CoreV0.sol/IERC721.json +316 -0
- package/artifacts/contracts/archive/GenArt721CoreV0.sol/IERC721Enumerable.json +378 -0
- package/artifacts/contracts/archive/GenArt721CoreV0.sol/IERC721Receiver.json +47 -0
- package/artifacts/contracts/archive/GenArt721CoreV0.sol/SafeMath.json +10 -0
- package/artifacts/contracts/archive/GenArt721CoreV0.sol/Strings.json +10 -0
- package/artifacts/contracts/archive/GenArt721CoreV1.sol/Address.json +10 -0
- package/artifacts/contracts/archive/GenArt721CoreV1.sol/Counters.json +10 -0
- package/artifacts/contracts/archive/GenArt721CoreV1.sol/CustomERC721Metadata.json +425 -0
- package/artifacts/contracts/archive/GenArt721CoreV1.sol/ERC165.json +38 -0
- package/artifacts/contracts/archive/GenArt721CoreV1.sol/ERC721.json +322 -0
- package/artifacts/contracts/archive/GenArt721CoreV1.sol/ERC721Enumerable.json +384 -0
- package/artifacts/contracts/archive/GenArt721CoreV1.sol/GenArt721Core.json +1773 -0
- package/artifacts/contracts/archive/GenArt721CoreV1.sol/IERC165.json +32 -0
- package/artifacts/contracts/archive/GenArt721CoreV1.sol/IERC721.json +316 -0
- package/artifacts/contracts/archive/GenArt721CoreV1.sol/IERC721Enumerable.json +378 -0
- package/artifacts/contracts/archive/GenArt721CoreV1.sol/IERC721Receiver.json +47 -0
- package/artifacts/contracts/archive/GenArt721CoreV1.sol/Randomizer.json +26 -0
- package/artifacts/contracts/archive/GenArt721CoreV1.sol/SafeMath.json +10 -0
- package/artifacts/contracts/archive/GenArt721CoreV1.sol/Strings.json +10 -0
- package/artifacts/contracts/archive/minter-suite/Minters/MinterDAExp/MinterDAExpV0.sol/MinterDAExpV0.json +575 -0
- package/artifacts/contracts/archive/minter-suite/Minters/MinterDAExp/MinterDAExpV1.sol/MinterDAExpV1.json +463 -0
- package/artifacts/contracts/{minter-suite → archive/minter-suite}/Minters/MinterDAExp/MinterDAExpV2.sol/MinterDAExpV2.json +3 -3
- package/artifacts/contracts/{minter-suite → archive/minter-suite}/Minters/MinterDAExp/MinterDAExpV3.sol/MinterDAExpV3.json +3 -3
- package/artifacts/contracts/{minter-suite → archive/minter-suite}/Minters/MinterDAExpSettlement/MinterDAExpSettlementV0.sol/MinterDAExpSettlementV0.json +15 -15
- package/artifacts/contracts/archive/minter-suite/Minters/MinterDAExpSettlement/MinterDAExpSettlementV1.sol/MinterDAExpSettlementV1.json +1066 -0
- package/artifacts/contracts/archive/minter-suite/Minters/MinterDALin/MinterDALinV0.sol/MinterDALinV0.json +551 -0
- package/artifacts/contracts/archive/minter-suite/Minters/MinterDALin/MinterDALinV1.sol/MinterDALinV1.json +439 -0
- package/artifacts/contracts/{minter-suite → archive/minter-suite}/Minters/MinterDALin/MinterDALinV2.sol/MinterDALinV2.json +3 -3
- package/artifacts/contracts/{minter-suite → archive/minter-suite}/Minters/MinterDALin/MinterDALinV3.sol/MinterDALinV3.json +3 -3
- package/artifacts/contracts/archive/minter-suite/Minters/MinterHolder/MinterHolderV0.sol/MinterHolderV0.json +622 -0
- package/artifacts/contracts/archive/minter-suite/Minters/MinterHolder/MinterHolderV1.sol/MinterHolderV1.json +719 -0
- package/artifacts/contracts/archive/minter-suite/Minters/MinterHolder/MinterHolderV2.sol/MinterHolderV2.json +794 -0
- package/artifacts/contracts/{minter-suite → archive/minter-suite}/Minters/MinterHolder/MinterHolderV3.sol/MinterHolderV3.json +3 -3
- package/artifacts/contracts/archive/minter-suite/Minters/MinterMerkle/MinterMerkleV0.sol/MinterMerkleV0.json +873 -0
- package/artifacts/contracts/archive/minter-suite/Minters/MinterMerkle/MinterMerkleV1.sol/MinterMerkleV1.json +932 -0
- package/artifacts/contracts/archive/minter-suite/Minters/MinterMerkle/MinterMerkleV2.sol/MinterMerkleV2.json +984 -0
- package/artifacts/contracts/{minter-suite → archive/minter-suite}/Minters/MinterMerkle/MinterMerkleV3.sol/MinterMerkleV3.json +3 -3
- package/artifacts/contracts/{minter-suite → archive/minter-suite}/Minters/MinterMerkle/MinterMerkleV4.sol/MinterMerkleV4.json +3 -3
- package/artifacts/contracts/archive/minter-suite/Minters/MinterSetPrice/MinterSetPriceV0.sol/MinterSetPriceV0.json +400 -0
- package/artifacts/contracts/{minter-suite/Minters/MinterSetPrice/deprecated → archive/minter-suite/Minters/MinterSetPrice}/MinterSetPriceV1.sol/MinterSetPriceV1.json +3 -3
- package/artifacts/contracts/{minter-suite → archive/minter-suite}/Minters/MinterSetPrice/MinterSetPriceV2.sol/MinterSetPriceV2.json +3 -3
- package/artifacts/contracts/{minter-suite → archive/minter-suite}/Minters/MinterSetPrice/MinterSetPriceV3.sol/MinterSetPriceV3.json +3 -3
- package/artifacts/contracts/{minter-suite/Minters/MinterSetPriceERC20/deprecated → archive/minter-suite/Minters/MinterSetPriceERC20}/MinterSetPriceERC20V0.sol/MinterSetPriceERC20V0.json +3 -3
- package/artifacts/contracts/archive/minter-suite/Minters/MinterSetPriceERC20/MinterSetPriceERC20V1.sol/MinterSetPriceERC20V1.json +349 -0
- package/artifacts/contracts/{minter-suite → archive/minter-suite}/Minters/MinterSetPriceERC20/MinterSetPriceERC20V2.sol/MinterSetPriceERC20V2.json +3 -3
- package/artifacts/contracts/{minter-suite → archive/minter-suite}/Minters/MinterSetPriceERC20/MinterSetPriceERC20V3.sol/MinterSetPriceERC20V3.json +3 -3
- package/artifacts/contracts/explorations/GenArt721CoreV3_Explorations.sol/GenArt721CoreV3_Explorations.json +2 -2
- package/artifacts/contracts/interfaces/0.8.x/IFilteredMinterDAExpSettlementV0.sol/IFilteredMinterDAExpSettlementV0.json +12 -12
- package/artifacts/contracts/interfaces/0.8.x/IFilteredMinterDAExpSettlementV1.sol/IFilteredMinterDAExpSettlementV1.json +767 -0
- package/artifacts/contracts/interfaces/0.8.x/IFilteredMinterDAExpSettlement_Mixin.sol/IFilteredMinterDAExpSettlement_Mixin.json +161 -0
- package/artifacts/contracts/interfaces/0.8.x/IMinterBaseV0.sol/IMinterBaseV0.json +24 -0
- package/artifacts/contracts/interfaces/0.8.x/IMinterFilterV0.sol/IMinterFilterV0.json +6 -0
- package/artifacts/contracts/interfaces/0.8.x/IMintingAPICoreV0.sol/IMintingAPICoreV0.json +185 -0
- package/artifacts/contracts/interfaces/0.8.x/IMintingAPIMinterV0.sol/IMintingAPIMinterV0.json +88 -0
- package/artifacts/contracts/interfaces/0.8.x/IRandomizerPolyptychV0.sol/IRandomizerPolyptychV0.json +87 -0
- package/artifacts/contracts/interfaces/0.8.x/IRandomizerV2.sol/IRandomizerV2.json +1 -1
- package/artifacts/contracts/minter-suite/MinterFilter/MinterFilterV0.sol/MinterFilterV0.json +8 -2
- package/artifacts/contracts/minter-suite/MinterFilter/MinterFilterV1.sol/MinterFilterV1.json +34 -2
- package/artifacts/contracts/minter-suite/Minters/MinterBase_v0_1_1.sol/MinterBase.json +24 -0
- package/artifacts/contracts/minter-suite/Minters/MinterDAExpSettlementV2.sol/MinterDAExpSettlementV2.json +1127 -0
- package/artifacts/contracts/minter-suite/Minters/MinterDAExpV4.sol/MinterDAExpV4.json +882 -0
- package/artifacts/contracts/minter-suite/Minters/MinterDALinV4.sol/MinterDALinV4.json +858 -0
- package/artifacts/contracts/minter-suite/Minters/MinterHolderV4.sol/MinterHolderV4.json +1126 -0
- package/artifacts/contracts/minter-suite/Minters/MinterMerkleV5.sol/MinterMerkleV5.json +1065 -0
- package/artifacts/contracts/minter-suite/Minters/MinterPolyptychV0.sol/IGenArt721CoreContractV3WithRandomizer.json +662 -0
- package/artifacts/contracts/minter-suite/Minters/MinterPolyptychV0.sol/MinterPolyptychV0.json +1268 -0
- package/artifacts/contracts/minter-suite/Minters/MinterSetPriceERC20V4.sol/MinterSetPriceERC20V4.json +768 -0
- package/artifacts/contracts/minter-suite/Minters/MinterSetPriceV4.sol/MinterSetPriceV4.json +697 -0
- package/artifacts/contracts/mock/GenArt721CoreV3_Engine_IncorrectCoreType.sol/GenArt721CoreV3_Engine_IncorrectCoreType.json +1817 -0
- package/artifacts/contracts/mock/RandomizerV2_NoAssignMock.sol/RandomizerV2_NoAssignMock.json +3 -3
- package/contracts/BasicPolyptychRandomizerV0.sol +126 -0
- package/contracts/BasicRandomizerV2.sol +3 -3
- package/contracts/archive/GenArt721CoreV0.sol +1621 -0
- package/contracts/archive/GenArt721CoreV1.sol +1577 -0
- package/contracts/archive/minter-suite/Minters/MinterDAExp/MinterDAExpV0.sol +503 -0
- package/contracts/archive/minter-suite/Minters/MinterDAExp/MinterDAExpV1.sol +442 -0
- package/contracts/{minter-suite → archive/minter-suite}/Minters/MinterDAExp/MinterDAExpV2.sol +3 -3
- package/contracts/{minter-suite → archive/minter-suite}/Minters/MinterDAExp/MinterDAExpV3.sol +3 -3
- package/contracts/{minter-suite → archive/minter-suite}/Minters/MinterDAExpSettlement/MinterDAExpSettlementV0.sol +3 -3
- package/contracts/archive/minter-suite/Minters/MinterDAExpSettlement/MinterDAExpSettlementV1.sol +1026 -0
- package/contracts/archive/minter-suite/Minters/MinterDALin/MinterDALinV0.sol +450 -0
- package/contracts/archive/minter-suite/Minters/MinterDALin/MinterDALinV1.sol +406 -0
- package/contracts/{minter-suite → archive/minter-suite}/Minters/MinterDALin/MinterDALinV2.sol +3 -3
- package/contracts/{minter-suite → archive/minter-suite}/Minters/MinterDALin/MinterDALinV3.sol +3 -3
- package/contracts/archive/minter-suite/Minters/MinterHolder/MinterHolderV0.sol +540 -0
- package/contracts/archive/minter-suite/Minters/MinterHolder/MinterHolderV1.sol +648 -0
- package/contracts/{minter-suite → archive/minter-suite}/Minters/MinterHolder/MinterHolderV2.sol +6 -6
- package/contracts/{minter-suite → archive/minter-suite}/Minters/MinterHolder/MinterHolderV3.sol +4 -4
- package/contracts/archive/minter-suite/Minters/MinterMerkle/MinterMerkleV0.sol +523 -0
- package/contracts/archive/minter-suite/Minters/MinterMerkle/MinterMerkleV1.sol +602 -0
- package/contracts/archive/minter-suite/Minters/MinterMerkle/MinterMerkleV2.sol +679 -0
- package/contracts/{minter-suite → archive/minter-suite}/Minters/MinterMerkle/MinterMerkleV3.sol +4 -4
- package/contracts/{minter-suite → archive/minter-suite}/Minters/MinterMerkle/MinterMerkleV4.sol +4 -4
- package/contracts/archive/minter-suite/Minters/MinterSetPrice/MinterSetPriceV0.sol +333 -0
- package/contracts/{minter-suite/Minters/MinterSetPrice/deprecated → archive/minter-suite/Minters/MinterSetPrice}/MinterSetPriceV1.sol +0 -0
- package/contracts/{minter-suite → archive/minter-suite}/Minters/MinterSetPrice/MinterSetPriceV2.sol +3 -3
- package/contracts/{minter-suite → archive/minter-suite}/Minters/MinterSetPrice/MinterSetPriceV3.sol +3 -3
- package/contracts/{minter-suite/Minters/MinterSetPriceERC20/deprecated → archive/minter-suite/Minters/MinterSetPriceERC20}/MinterSetPriceERC20V0.sol +0 -0
- package/contracts/archive/minter-suite/Minters/MinterSetPriceERC20/MinterSetPriceERC20V1.sol +411 -0
- package/contracts/{minter-suite → archive/minter-suite}/Minters/MinterSetPriceERC20/MinterSetPriceERC20V2.sol +3 -3
- package/contracts/{minter-suite → archive/minter-suite}/Minters/MinterSetPriceERC20/MinterSetPriceERC20V3.sol +3 -3
- package/contracts/interfaces/0.8.x/IFilteredMinterDAExpSettlementV0.sol +4 -53
- package/contracts/interfaces/0.8.x/IFilteredMinterDAExpSettlementV1.sol +21 -0
- package/contracts/interfaces/0.8.x/IFilteredMinterDAExpSettlement_Mixin.sol +62 -0
- package/contracts/interfaces/0.8.x/IMinterBaseV0.sol +20 -0
- package/contracts/interfaces/0.8.x/IMinterFilterV0.sol +6 -0
- package/contracts/interfaces/0.8.x/IMintingAPICoreV0.sol +62 -0
- package/contracts/interfaces/0.8.x/IMintingAPIMinterV0.sol +31 -0
- package/contracts/interfaces/0.8.x/IRandomizerPolyptychV0.sol +31 -0
- package/contracts/interfaces/0.8.x/IRandomizerV2.sol +5 -2
- package/contracts/minter-suite/MinterFilter/MinterFilterV1.sol +18 -0
- package/contracts/minter-suite/Minters/MinterBase_v0_1_1.sol +293 -0
- package/contracts/minter-suite/Minters/MinterDAExpSettlementV2.sol +1312 -0
- package/contracts/minter-suite/Minters/MinterDAExpV4.sol +600 -0
- package/contracts/minter-suite/Minters/MinterDALinV4.sol +552 -0
- package/contracts/minter-suite/Minters/MinterHolderV4.sol +781 -0
- package/contracts/minter-suite/Minters/MinterMerkleV5.sol +717 -0
- package/contracts/minter-suite/Minters/MinterPolyptychV0.sol +998 -0
- package/contracts/minter-suite/Minters/MinterSetPriceERC20V4.sol +480 -0
- package/contracts/minter-suite/Minters/MinterSetPriceV4.sol +380 -0
- package/contracts/mock/GenArt721CoreV3_Engine_IncorrectCoreType.sol +1979 -0
- package/package.json +8 -2
- package/artifacts/contracts/minter-suite/Minters/MinterHolder/MinterHolderV2.sol/MinterHolderV2.json +0 -794
package/artifacts/contracts/mock/RandomizerV2_NoAssignMock.sol/RandomizerV2_NoAssignMock.json
CHANGED
|
@@ -79,7 +79,7 @@
|
|
|
79
79
|
"name": "genArt721Core",
|
|
80
80
|
"outputs": [
|
|
81
81
|
{
|
|
82
|
-
"internalType": "contract
|
|
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": "
|
|
125
|
-
"deployedBytecode": "
|
|
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/
|
|
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
|
-
|
|
13
|
+
IGenArt721CoreContractV3_Base public genArt721Core;
|
|
14
14
|
|
|
15
15
|
function assignCoreAndRenounce(address _genArt721Core) external onlyOwner {
|
|
16
16
|
renounceOwnership();
|
|
17
|
-
genArt721Core =
|
|
17
|
+
genArt721Core = IGenArt721CoreContractV3_Base(_genArt721Core);
|
|
18
18
|
}
|
|
19
19
|
|
|
20
20
|
// When `genArt721Core` calls this, it can be assured that the randomizer
|