@artblocks/contracts 1.0.2 → 1.0.4
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 +56 -21
- package/artifacts/contracts/AdminACLV0.sol/AdminACLV0.json +2 -2
- package/artifacts/contracts/AdminACLV1.sol/AdminACLV1.json +2 -2
- package/artifacts/contracts/DependencyRegistryV0.sol/DependencyRegistryV0.json +141 -15
- package/artifacts/contracts/GenArt721CoreV3.sol/GenArt721CoreV3.json +42 -5
- package/artifacts/contracts/archive/minter-suite/Minters/MinterDAExp/MinterDAExpV0.sol/MinterDAExpV0.json +2 -2
- package/artifacts/contracts/archive/minter-suite/Minters/MinterDAExp/MinterDAExpV1.sol/MinterDAExpV1.json +2 -2
- package/artifacts/contracts/archive/minter-suite/Minters/MinterDAExp/MinterDAExpV2.sol/MinterDAExpV2.json +2 -2
- package/artifacts/contracts/archive/minter-suite/Minters/MinterDAExp/MinterDAExpV3.sol/MinterDAExpV3.json +2 -2
- package/artifacts/contracts/archive/minter-suite/Minters/MinterDAExpSettlement/MinterDAExpSettlementV0.sol/MinterDAExpSettlementV0.json +2 -2
- package/artifacts/contracts/archive/minter-suite/Minters/MinterDAExpSettlement/MinterDAExpSettlementV1.sol/MinterDAExpSettlementV1.json +2 -2
- package/artifacts/contracts/archive/minter-suite/Minters/MinterDALin/MinterDALinV0.sol/MinterDALinV0.json +2 -2
- package/artifacts/contracts/archive/minter-suite/Minters/MinterDALin/MinterDALinV1.sol/MinterDALinV1.json +2 -2
- package/artifacts/contracts/archive/minter-suite/Minters/MinterDALin/MinterDALinV2.sol/MinterDALinV2.json +2 -2
- package/artifacts/contracts/archive/minter-suite/Minters/MinterDALin/MinterDALinV3.sol/MinterDALinV3.json +2 -2
- package/artifacts/contracts/archive/minter-suite/Minters/MinterHolder/MinterHolderV0.sol/MinterHolderV0.json +2 -2
- package/artifacts/contracts/archive/minter-suite/Minters/MinterHolder/MinterHolderV1.sol/MinterHolderV1.json +2 -2
- package/artifacts/contracts/archive/minter-suite/Minters/MinterHolder/MinterHolderV2.sol/MinterHolderV2.json +2 -2
- package/artifacts/contracts/archive/minter-suite/Minters/MinterHolder/MinterHolderV3.sol/MinterHolderV3.json +2 -2
- package/artifacts/contracts/archive/minter-suite/Minters/MinterMerkle/MinterMerkleV0.sol/MinterMerkleV0.json +2 -2
- package/artifacts/contracts/archive/minter-suite/Minters/MinterMerkle/MinterMerkleV1.sol/MinterMerkleV1.json +2 -2
- package/artifacts/contracts/archive/minter-suite/Minters/MinterMerkle/MinterMerkleV2.sol/MinterMerkleV2.json +2 -2
- package/artifacts/contracts/archive/minter-suite/Minters/MinterMerkle/MinterMerkleV3.sol/MinterMerkleV3.json +2 -2
- package/artifacts/contracts/archive/minter-suite/Minters/MinterMerkle/MinterMerkleV4.sol/MinterMerkleV4.json +2 -2
- package/artifacts/contracts/archive/minter-suite/Minters/MinterSetPrice/MinterSetPriceV0.sol/MinterSetPriceV0.json +2 -2
- package/artifacts/contracts/archive/minter-suite/Minters/MinterSetPrice/MinterSetPriceV1.sol/MinterSetPriceV1.json +2 -2
- package/artifacts/contracts/archive/minter-suite/Minters/MinterSetPrice/MinterSetPriceV2.sol/MinterSetPriceV2.json +2 -2
- package/artifacts/contracts/archive/minter-suite/Minters/MinterSetPrice/MinterSetPriceV3.sol/MinterSetPriceV3.json +2 -2
- package/artifacts/contracts/archive/minter-suite/Minters/MinterSetPriceERC20/MinterSetPriceERC20V0.sol/MinterSetPriceERC20V0.json +2 -2
- package/artifacts/contracts/archive/minter-suite/Minters/MinterSetPriceERC20/MinterSetPriceERC20V1.sol/MinterSetPriceERC20V1.json +2 -2
- package/artifacts/contracts/archive/minter-suite/Minters/MinterSetPriceERC20/MinterSetPriceERC20V2.sol/MinterSetPriceERC20V2.json +2 -2
- package/artifacts/contracts/archive/minter-suite/Minters/MinterSetPriceERC20/MinterSetPriceERC20V3.sol/MinterSetPriceERC20V3.json +2 -2
- package/artifacts/contracts/engine/{GenArt721CoreV2_ENGINE_FLEX.sol → V2/GenArt721CoreV2_ENGINE_FLEX.sol}/GenArt721CoreV2_ENGINE_FLEX.json +3 -3
- package/artifacts/contracts/engine/{GenArt721CoreV2_PBAB.sol → V2/GenArt721CoreV2_PBAB.sol}/GenArt721CoreV2_PBAB.json +3 -3
- package/artifacts/contracts/engine/{GenArt721CoreV2_PRTNR.sol → V2/GenArt721CoreV2_PRTNR.sol}/GenArt721CoreV2_PRTNR.json +3 -3
- package/artifacts/contracts/engine/{GenArt721MinterBurner_PBAB.sol → V2/GenArt721MinterBurner_PBAB.sol}/GenArt721MinterBurner_PBAB.json +3 -3
- package/artifacts/contracts/engine/{GenArt721MinterDAExp_PBAB.sol → V2/GenArt721MinterDAExp_PBAB.sol}/GenArt721MinterDAExp_PBAB.json +3 -3
- package/artifacts/contracts/engine/{GenArt721Minter_PBAB.sol → V2/GenArt721Minter_PBAB.sol}/GenArt721Minter_PBAB.json +3 -3
- package/artifacts/contracts/engine/V3/GenArt721CoreV3_Engine.sol/GenArt721CoreV3_Engine.json +1960 -0
- package/artifacts/contracts/engine/V3/GenArt721CoreV3_Engine_Flex.sol/GenArt721CoreV3_Engine_Flex.json +2247 -0
- package/artifacts/contracts/engine/V3/forks/GenArt721CoreV3_Engine_Flex_PROOF.sol/GenArt721CoreV3_Engine_Flex_PROOF.json +2247 -0
- package/artifacts/contracts/engine/V3/forks/PROHIBITION/AdminACLV0_PROHIBITION.sol/AdminACLV0_PROHIBITION.json +401 -0
- package/artifacts/contracts/engine/V3/forks/PROHIBITION/GenArt721CoreV3_Engine_Flex_PROHIBITION.sol/GenArt721CoreV3_Engine_Flex_PROHIBITION.json +2281 -0
- package/artifacts/contracts/engine/V3/forks/PROHIBITION/interfaces/IAdminACLV0_PROHIBITION.sol/IAdminACLV0_PROHIBITION.json +359 -0
- package/artifacts/contracts/engine/V3/forks/PROHIBITION/interfaces/IGenArt721CoreContractV3_Engine_Flex_PROHIBITION.sol/IGenArt721CoreContractV3_Engine_Flex_PROHIBITION.json +1094 -0
- package/artifacts/contracts/engine-registry/CoreRegistryV1.sol/CoreRegistryV1.json +242 -0
- package/artifacts/contracts/engine-registry/EngineRegistryV0.sol/EngineRegistryV0.json +2 -2
- package/artifacts/contracts/explorations/GenArt721CoreV3_Explorations.sol/GenArt721CoreV3_Explorations.json +41 -4
- package/artifacts/contracts/interfaces/{0.5.x → v0.5.x}/IBonusContract.sol/IBonusContract.json +1 -1
- package/artifacts/contracts/interfaces/{0.5.x → v0.5.x}/IGenArt721CoreContractV1.sol/IGenArt721CoreContractV1.json +1 -1
- package/artifacts/contracts/interfaces/{0.5.x → v0.5.x}/IGenArt721CoreV2_PBAB.sol/IGenArt721CoreV2_PBAB.json +1 -1
- package/artifacts/contracts/interfaces/{0.5.x → v0.5.x}/IRandomizer.sol/IRandomizer.json +1 -1
- package/artifacts/contracts/interfaces/{0.8.x → v0.8.x}/IAdminACLV0.sol/IAdminACLV0.json +1 -1
- package/artifacts/contracts/interfaces/{0.8.x → v0.8.x}/IArtblocksRoyaltyOverride.sol/IArtblocksRoyaltyOverride.json +1 -1
- package/artifacts/contracts/interfaces/{0.8.x → v0.8.x}/IBonusContract.sol/IBonusContract.json +1 -1
- package/artifacts/contracts/interfaces/v0.8.x/IBytecodeStorageReader.sol/IBytecodeStorageReader.json +111 -0
- package/artifacts/contracts/interfaces/v0.8.x/ICoreRegistryV1.sol/ICoreRegistryV1.json +172 -0
- package/artifacts/contracts/interfaces/{0.8.x → v0.8.x}/IDelegationRegistry.sol/IDelegationRegistry.json +1 -1
- package/artifacts/contracts/interfaces/{0.8.x → v0.8.x}/IDependencyRegistryCompatibleV0.sol/IDependencyRegistryCompatibleV0.json +1 -1
- package/artifacts/contracts/interfaces/{0.8.x → v0.8.x}/IDependencyRegistryV0.sol/IDependencyRegistryV0.json +3 -3
- package/artifacts/contracts/interfaces/{0.8.x → v0.8.x}/IEngineRegistryV0.sol/IEngineRegistryV0.json +1 -1
- package/artifacts/contracts/interfaces/{0.8.x → v0.8.x}/IFilteredMinterDAExpSettlementV0.sol/IFilteredMinterDAExpSettlementV0.json +1 -1
- package/artifacts/contracts/interfaces/{0.8.x → v0.8.x}/IFilteredMinterDAExpSettlementV1.sol/IFilteredMinterDAExpSettlementV1.json +1 -1
- package/artifacts/contracts/interfaces/{0.8.x → v0.8.x}/IFilteredMinterDAExpSettlement_Mixin.sol/IFilteredMinterDAExpSettlement_Mixin.json +1 -1
- package/artifacts/contracts/interfaces/{0.8.x → v0.8.x}/IFilteredMinterDAExpV0.sol/IFilteredMinterDAExpV0.json +1 -1
- package/artifacts/contracts/interfaces/{0.8.x → v0.8.x}/IFilteredMinterDAExpV1.sol/IFilteredMinterDAExpV1.json +1 -1
- package/artifacts/contracts/interfaces/{0.8.x → v0.8.x}/IFilteredMinterDALinV0.sol/IFilteredMinterDALinV0.json +1 -1
- package/artifacts/contracts/interfaces/{0.8.x → v0.8.x}/IFilteredMinterDALinV1.sol/IFilteredMinterDALinV1.json +1 -1
- package/artifacts/contracts/interfaces/{0.8.x → v0.8.x}/IFilteredMinterHolderV0.sol/IFilteredMinterHolderV0.json +1 -1
- package/artifacts/contracts/interfaces/{0.8.x → v0.8.x}/IFilteredMinterHolderV1.sol/IFilteredMinterHolderV1.json +1 -1
- package/artifacts/contracts/interfaces/{0.8.x → v0.8.x}/IFilteredMinterHolderV2.sol/IFilteredMinterHolderV2.json +1 -1
- package/artifacts/contracts/interfaces/{0.8.x → v0.8.x}/IFilteredMinterMerkleV0.sol/IFilteredMinterMerkleV0.json +1 -1
- package/artifacts/contracts/interfaces/{0.8.x → v0.8.x}/IFilteredMinterMerkleV1.sol/IFilteredMinterMerkleV1.json +1 -1
- package/artifacts/contracts/interfaces/{0.8.x → v0.8.x}/IFilteredMinterMerkleV2.sol/IFilteredMinterMerkleV2.json +1 -1
- package/artifacts/contracts/interfaces/{0.8.x → v0.8.x}/IFilteredMinterSEAV0.sol/IFilteredMinterSEAV0.json +56 -54
- package/artifacts/contracts/interfaces/{0.8.x → v0.8.x}/IFilteredMinterV0.sol/IFilteredMinterV0.json +1 -1
- package/artifacts/contracts/interfaces/{0.8.x → v0.8.x}/IFilteredMinterV1.sol/IFilteredMinterV1.json +1 -1
- package/artifacts/contracts/interfaces/{0.8.x → v0.8.x}/IFilteredMinterV2.sol/IFilteredMinterV2.json +1 -1
- package/artifacts/contracts/interfaces/v0.8.x/IGenArt721CoreContractExposesHashSeed.sol/IGenArt721CoreContractExposesHashSeed.json +30 -0
- package/artifacts/contracts/interfaces/{0.8.x → v0.8.x}/IGenArt721CoreContractV1.sol/IGenArt721CoreContractV1.json +1 -1
- package/artifacts/contracts/interfaces/{0.8.x → v0.8.x}/IGenArt721CoreContractV3.sol/IGenArt721CoreContractV3.json +14 -1
- package/artifacts/contracts/interfaces/v0.8.x/IGenArt721CoreContractV3WithSharedRandomizer.sol/IGenArt721CoreContractV3WithSharedRandomizer.json +24 -0
- package/artifacts/contracts/interfaces/{0.8.x → v0.8.x}/IGenArt721CoreContractV3_Base.sol/IGenArt721CoreContractV3_Base.json +14 -1
- package/artifacts/contracts/interfaces/{0.8.x → v0.8.x}/IGenArt721CoreContractV3_Engine.sol/IGenArt721CoreContractV3_Engine.json +8 -14
- package/artifacts/contracts/interfaces/{0.8.x → v0.8.x}/IGenArt721CoreContractV3_Engine_Flex.sol/IGenArt721CoreContractV3_Engine_Flex.json +8 -14
- package/artifacts/contracts/interfaces/{0.8.x → v0.8.x}/IGenArt721CoreV2_PBAB.sol/IGenArt721CoreV2_PBAB.json +1 -1
- package/artifacts/contracts/interfaces/{0.8.x → v0.8.x}/IManifold.sol/IManifold.json +1 -1
- package/artifacts/contracts/interfaces/{0.8.x → v0.8.x}/IMinterBaseV0.sol/IMinterBaseV0.json +1 -1
- package/artifacts/contracts/interfaces/{0.8.x → v0.8.x}/IMinterFilterV0.sol/IMinterFilterV0.json +1 -1
- package/artifacts/contracts/interfaces/v0.8.x/IMinterFilterV1.sol/IMinterFilterV1.json +514 -0
- package/artifacts/contracts/interfaces/{0.8.x → v0.8.x}/IMintingAPICoreV0.sol/IMintingAPICoreV0.json +1 -1
- package/artifacts/contracts/interfaces/{0.8.x → v0.8.x}/IMintingAPIMinterV0.sol/IMintingAPIMinterV0.json +1 -1
- package/artifacts/contracts/interfaces/v0.8.x/IPseudorandomAtomic.sol/IPseudorandomAtomic.json +30 -0
- package/artifacts/contracts/interfaces/{0.8.x → v0.8.x}/IRandomizer.sol/IRandomizer.json +1 -1
- package/artifacts/contracts/interfaces/{0.8.x → v0.8.x}/IRandomizerPolyptychV0.sol/IRandomizerPolyptychV0.json +1 -1
- package/artifacts/contracts/interfaces/{0.8.x → v0.8.x}/IRandomizerV2.sol/IRandomizerV2.json +1 -1
- package/artifacts/contracts/interfaces/v0.8.x/IRandomizer_V3CoreBase.sol/IRandomizer_V3CoreBase.json +24 -0
- package/artifacts/contracts/interfaces/v0.8.x/ISharedMinterDAExpSettlementV0.sol/ISharedMinterDAExpSettlementV0.json +207 -0
- package/artifacts/contracts/interfaces/v0.8.x/ISharedMinterDAExpV0.sol/ISharedMinterDAExpV0.json +93 -0
- package/artifacts/contracts/interfaces/v0.8.x/ISharedMinterDALinV0.sol/ISharedMinterDALinV0.json +93 -0
- package/artifacts/contracts/interfaces/v0.8.x/ISharedMinterDAV0.sol/ISharedMinterDAV0.json +69 -0
- package/artifacts/contracts/interfaces/v0.8.x/ISharedMinterHolderV0.sol/ISharedMinterHolderV0.json +203 -0
- package/artifacts/contracts/interfaces/v0.8.x/ISharedMinterMerkleV0.sol/ISharedMinterMerkleV0.json +123 -0
- package/artifacts/contracts/interfaces/v0.8.x/ISharedMinterSEAV0.sol/ISharedMinterSEAV0.json +261 -0
- package/artifacts/contracts/interfaces/v0.8.x/ISharedMinterSimplePurchaseV0.sol/ISharedMinterSimplePurchaseV0.json +64 -0
- package/artifacts/contracts/interfaces/v0.8.x/ISharedMinterV0.sol/ISharedMinterV0.json +533 -0
- package/artifacts/contracts/interfaces/v0.8.x/ISharedRandomizerV0.sol/ISharedRandomizerV0.json +223 -0
- package/artifacts/contracts/interfaces/{0.8.x → v0.8.x}/IWETH.sol/IWETH.json +1 -1
- package/artifacts/contracts/legacy/GenArt721CoreV1.sol/Address.json +2 -2
- package/artifacts/contracts/legacy/GenArt721CoreV1.sol/Counters.json +2 -2
- package/artifacts/contracts/legacy/GenArt721CoreV1.sol/CustomERC721Metadata.json +2 -2
- package/artifacts/contracts/legacy/GenArt721CoreV1.sol/ERC721.json +2 -2
- package/artifacts/contracts/legacy/GenArt721CoreV1.sol/ERC721Enumerable.json +2 -2
- package/artifacts/contracts/legacy/GenArt721CoreV1.sol/GenArt721CoreV1.json +2 -2
- package/artifacts/contracts/legacy/GenArt721CoreV1.sol/SafeMath.json +2 -2
- package/artifacts/contracts/legacy/GenArt721CoreV1.sol/Strings.json +2 -2
- package/artifacts/contracts/legacy/GenArt721LegacyMinter.sol/GenArt721LegacyMinter.json +2 -2
- package/artifacts/contracts/libs/integration-refs/delegation-registry/DelegationRegistry.sol/DelegationRegistry.json +2 -2
- package/artifacts/contracts/libs/integration-refs/gnosis-safe/GnosisSafeMock.sol/GnosisSafeMock.json +2 -2
- package/artifacts/contracts/libs/integration-refs/gnosis-safe/GnosisSafeProxyFactoryMock.sol/GnosisSafeProxyFactoryMock.json +2 -2
- package/artifacts/contracts/libs/integration-refs/gnosis-safe/MultiSendMock.sol/MultiSendMock.json +2 -2
- package/artifacts/contracts/libs/integration-refs/weth9/weth9.sol/WETH9_.json +2 -2
- package/artifacts/contracts/libs/{0.5.x → v0.5.x}/CustomERC721Metadata.sol/CustomERC721Metadata.json +3 -3
- package/artifacts/contracts/libs/{0.5.x → v0.5.x}/IERC20.sol/IERC20.json +1 -1
- package/artifacts/contracts/libs/{0.5.x → v0.5.x}/SafeMath.sol/SafeMath.json +3 -3
- package/artifacts/contracts/libs/{0.5.x → v0.5.x}/Strings.sol/Strings.json +3 -3
- package/artifacts/contracts/libs/v0.8.x/ABHelpers.sol/ABHelpers.json +10 -0
- package/artifacts/contracts/libs/v0.8.x/AuthLib.sol/AuthLib.json +10 -0
- package/artifacts/contracts/libs/{0.8.x/BytecodeStorage.sol → v0.8.x/BytecodeStorageV0.sol}/BytecodeStorage.json +3 -3
- package/artifacts/contracts/libs/v0.8.x/BytecodeStorageV1.sol/BytecodeStorageReader.json +163 -0
- package/artifacts/contracts/libs/v0.8.x/BytecodeStorageV1.sol/BytecodeStorageWriter.json +10 -0
- package/artifacts/contracts/libs/{0.8.x → v0.8.x}/Bytes32Strings.sol/Bytes32Strings.json +3 -3
- package/artifacts/contracts/libs/{0.8.x → v0.8.x}/ERC721_PackedHashSeed.sol/ERC721_PackedHashSeed.json +3 -3
- package/artifacts/contracts/libs/v0.8.x/SSTORE2.sol/SSTORE2.json +10 -0
- package/artifacts/contracts/libs/v0.8.x/minter-libs/DAExpLib.sol/DAExpLib.json +10 -0
- package/artifacts/contracts/libs/v0.8.x/minter-libs/DALinLib.sol/DALinLib.json +10 -0
- package/artifacts/contracts/libs/v0.8.x/minter-libs/MaxInvocationsLib.sol/MaxInvocationsLib.json +10 -0
- package/artifacts/contracts/libs/v0.8.x/minter-libs/MerkleLib.sol/MerkleLib.json +10 -0
- package/artifacts/contracts/libs/v0.8.x/minter-libs/PolyptychLib.sol/PolyptychLib.json +10 -0
- package/artifacts/contracts/libs/v0.8.x/minter-libs/SEALib.sol/SEALib.json +10 -0
- package/artifacts/contracts/libs/v0.8.x/minter-libs/SetPriceLib.sol/SetPriceLib.json +10 -0
- package/artifacts/contracts/libs/v0.8.x/minter-libs/SettlementExpLib.sol/SettlementExpLib.json +10 -0
- package/artifacts/contracts/libs/v0.8.x/minter-libs/SplitFundsLib.sol/SplitFundsLib.json +10 -0
- package/artifacts/contracts/libs/v0.8.x/minter-libs/TokenHolderLib.sol/TokenHolderLib.json +10 -0
- package/artifacts/contracts/minter-suite/MinterFilter/MinterFilterV0.sol/MinterFilterV0.json +2 -2
- package/artifacts/contracts/minter-suite/MinterFilter/MinterFilterV1.sol/MinterFilterV1.json +2 -2
- package/artifacts/contracts/minter-suite/MinterFilter/MinterFilterV2.sol/MinterFilterV2.json +748 -0
- package/artifacts/contracts/minter-suite/Minters/MinterDAExpHolderV5.sol/MinterDAExpHolderV5.json +1228 -0
- package/artifacts/contracts/minter-suite/Minters/MinterDAExpSettlementV2.sol/MinterDAExpSettlementV2.json +2 -2
- package/artifacts/contracts/minter-suite/Minters/MinterDAExpSettlementV3.sol/MinterDAExpSettlementV3.json +1146 -0
- package/artifacts/contracts/minter-suite/Minters/MinterDAExpV4.sol/MinterDAExpV4.json +2 -2
- package/artifacts/contracts/minter-suite/Minters/MinterDAExpV5.sol/MinterDAExpV5.json +909 -0
- package/artifacts/contracts/minter-suite/Minters/MinterDALinHolderV5.sol/MinterDALinHolderV5.json +1228 -0
- package/artifacts/contracts/minter-suite/Minters/MinterDALinV4.sol/MinterDALinV4.json +2 -2
- package/artifacts/contracts/minter-suite/Minters/MinterDALinV5.sol/MinterDALinV5.json +909 -0
- package/artifacts/contracts/minter-suite/Minters/MinterHolderV4.sol/MinterHolderV4.json +2 -2
- package/artifacts/contracts/minter-suite/Minters/MinterMerkleV5.sol/MinterMerkleV5.json +2 -2
- package/artifacts/contracts/minter-suite/Minters/MinterPolyptychV0.sol/IGenArt721CoreContractV3WithRandomizer.json +10 -160
- package/artifacts/contracts/minter-suite/Minters/MinterPolyptychV0.sol/MinterPolyptychV0.json +2 -2
- package/artifacts/contracts/minter-suite/Minters/MinterSEAV0.sol/MinterSEAV0.json +59 -80
- package/artifacts/contracts/minter-suite/Minters/MinterSEAV1.sol/MinterSEAV1.json +1325 -0
- package/artifacts/contracts/minter-suite/Minters/MinterSetPriceERC20V4.sol/MinterSetPriceERC20V4.json +2 -2
- package/artifacts/contracts/minter-suite/Minters/MinterSetPriceERC20V5.sol/MinterSetPriceERC20V5.json +848 -0
- package/artifacts/contracts/minter-suite/Minters/MinterSetPriceHolderV5.sol/MinterSetPriceHolderV5.json +1091 -0
- package/artifacts/contracts/minter-suite/Minters/MinterSetPriceMerkleV5.sol/MinterSetPriceMerkleV5.json +1075 -0
- package/artifacts/contracts/minter-suite/Minters/MinterSetPricePolyptychERC20V5.sol/MinterSetPricePolyptychERC20V5.json +1243 -0
- package/artifacts/contracts/minter-suite/Minters/MinterSetPricePolyptychV5.sol/MinterSetPricePolyptychV5.json +1167 -0
- package/artifacts/contracts/minter-suite/Minters/MinterSetPriceV4.sol/MinterSetPriceV4.json +2 -2
- package/artifacts/contracts/minter-suite/Minters/MinterSetPriceV5.sol/MinterSetPriceV5.json +772 -0
- package/artifacts/contracts/mock/{BytecodeTextCR_DMock.sol/BytecodeTextCR_DMock.json → BytecodeV0TextCR_DMock.sol/BytecodeV0TextCR_DMock.json} +4 -4
- package/artifacts/contracts/mock/BytecodeV1LibCallsMock.sol/BytecodeV1LibCallsMock.json +135 -0
- package/artifacts/contracts/mock/BytecodeV1TextCR_DMock.sol/BytecodeV1TextCR_DMock.json +301 -0
- package/artifacts/contracts/mock/DeadReceiverBidderMock.sol/DeadReceiverBidderMock.json +25 -2
- package/artifacts/contracts/mock/DeadReceiverMock.sol/DeadReceiverMock.json +2 -2
- package/artifacts/contracts/mock/DummySharedMinter.sol/DummySharedMinter.json +114 -0
- package/artifacts/contracts/mock/ERC20Mock.sol/ERC20Mock.json +28 -2
- package/artifacts/contracts/mock/GasLimitReceiverBidderMock.sol/GasLimitReceiverBidderMock.json +2 -2
- package/artifacts/contracts/mock/GasLimitReceiverMock.sol/GasLimitReceiverMock.json +2 -2
- package/artifacts/contracts/mock/GenArt721CoreV3_Engine_IncorrectCoreType.sol/GenArt721CoreV3_Engine_IncorrectCoreType.json +22 -4
- package/artifacts/contracts/mock/MockAdminACLV0.sol/MockAdminACLV0Events.json +2 -2
- package/artifacts/contracts/mock/MockAdminACLV0_PROHIBITION.sol/MockAdminACLV0Events_PROHIBITION.json +440 -0
- package/artifacts/contracts/mock/OriginRegisterMock.sol/OriginRegisterMock.json +39 -0
- package/artifacts/contracts/mock/RandomizerV2_NoAssignMock.sol/RandomizerV2_NoAssignMock.json +2 -2
- package/artifacts/contracts/mock/ReentrancyHolderMock.sol/ReentrancyHolderMock.json +2 -2
- package/artifacts/contracts/mock/ReentrancyMerkleMock.sol/ReentrancyMerkleMock.json +2 -2
- package/artifacts/contracts/mock/ReentrancyMock.sol/ReentrancyMock.json +2 -2
- package/artifacts/contracts/mock/ReentrancySEAMock.sol/ReentrancySEAAutoBidderMock.json +2 -2
- package/artifacts/contracts/mock/SSTORE2Mock.sol/SSTORE2Mock.json +118 -0
- package/artifacts/contracts/randomizer/{BasicRandomizer.sol → deprecated/BasicRandomizer.sol}/BasicRandomizer.json +3 -3
- package/artifacts/contracts/randomizer/{BasicRandomizerBase_v0_0_0.sol → deprecated/BasicRandomizerBase_v0_0_0.sol}/RandomizerBase.json +1 -1
- package/artifacts/contracts/randomizer/{PolyptychRandomizerV0.sol → deprecated/PolyptychRandomizerV0.sol}/BasicPolyptychRandomizerV0.json +3 -3
- package/artifacts/contracts/randomizer/{RandomizerV2.sol → deprecated/RandomizerV2.sol}/BasicRandomizerV2.json +3 -3
- package/artifacts/contracts/randomizer/primitive/PseudorandomAtomicBasic.sol/PseudorandomAtomic.json +30 -0
- package/artifacts/contracts/randomizer/shared/SharedRandomizerV0.sol/SharedRandomizerV0.json +247 -0
- package/artifacts/contracts/royalty-registry/GenArt721RoyaltyOverride.sol/GenArt721RoyaltyOverride.json +2 -2
- package/artifacts/contracts/royalty-registry/GenArt721RoyaltyOverride_PBAB.sol/GenArt721RoyaltyOverride_PBAB.json +2 -2
- package/contracts/AdminACLV0.sol +2 -2
- package/contracts/AdminACLV1.sol +2 -2
- package/contracts/DependencyRegistryV0.sol +219 -123
- package/contracts/GenArt721CoreV3.sol +60 -42
- package/contracts/archive/minter-suite/Minters/MinterDAExp/MinterDAExpV0.sol +3 -3
- package/contracts/archive/minter-suite/Minters/MinterDAExp/MinterDAExpV1.sol +3 -3
- package/contracts/archive/minter-suite/Minters/MinterDAExp/MinterDAExpV2.sol +4 -4
- package/contracts/archive/minter-suite/Minters/MinterDAExp/MinterDAExpV3.sol +4 -4
- package/contracts/archive/minter-suite/Minters/MinterDAExpSettlement/MinterDAExpSettlementV0.sol +4 -4
- package/contracts/archive/minter-suite/Minters/MinterDAExpSettlement/MinterDAExpSettlementV1.sol +4 -4
- package/contracts/archive/minter-suite/Minters/MinterDALin/MinterDALinV0.sol +3 -3
- package/contracts/archive/minter-suite/Minters/MinterDALin/MinterDALinV1.sol +3 -3
- package/contracts/archive/minter-suite/Minters/MinterDALin/MinterDALinV2.sol +4 -4
- package/contracts/archive/minter-suite/Minters/MinterDALin/MinterDALinV3.sol +4 -4
- package/contracts/archive/minter-suite/Minters/MinterHolder/MinterHolderV0.sol +3 -3
- package/contracts/archive/minter-suite/Minters/MinterHolder/MinterHolderV1.sol +4 -4
- package/contracts/archive/minter-suite/Minters/MinterHolder/MinterHolderV2.sol +5 -5
- package/contracts/archive/minter-suite/Minters/MinterHolder/MinterHolderV3.sol +5 -5
- package/contracts/archive/minter-suite/Minters/MinterMerkle/MinterMerkleV0.sol +3 -3
- package/contracts/archive/minter-suite/Minters/MinterMerkle/MinterMerkleV1.sol +4 -4
- package/contracts/archive/minter-suite/Minters/MinterMerkle/MinterMerkleV2.sol +5 -5
- package/contracts/archive/minter-suite/Minters/MinterMerkle/MinterMerkleV3.sol +5 -5
- package/contracts/archive/minter-suite/Minters/MinterMerkle/MinterMerkleV4.sol +5 -5
- package/contracts/archive/minter-suite/Minters/MinterSetPrice/MinterSetPriceV0.sol +3 -3
- package/contracts/archive/minter-suite/Minters/MinterSetPrice/MinterSetPriceV1.sol +3 -3
- package/contracts/archive/minter-suite/Minters/MinterSetPrice/MinterSetPriceV2.sol +4 -4
- package/contracts/archive/minter-suite/Minters/MinterSetPrice/MinterSetPriceV3.sol +4 -4
- package/contracts/archive/minter-suite/Minters/MinterSetPriceERC20/MinterSetPriceERC20V0.sol +3 -3
- package/contracts/archive/minter-suite/Minters/MinterSetPriceERC20/MinterSetPriceERC20V1.sol +3 -3
- package/contracts/archive/minter-suite/Minters/MinterSetPriceERC20/MinterSetPriceERC20V2.sol +4 -4
- package/contracts/archive/minter-suite/Minters/MinterSetPriceERC20/MinterSetPriceERC20V3.sol +4 -4
- package/contracts/engine/{GenArt721CoreV2_ENGINE_FLEX.sol → V2/GenArt721CoreV2_ENGINE_FLEX.sol} +2 -2
- package/contracts/engine/{GenArt721CoreV2_PBAB.sol → V2/GenArt721CoreV2_PBAB.sol} +2 -2
- package/contracts/engine/{GenArt721CoreV2_PRTNR.sol → V2/GenArt721CoreV2_PRTNR.sol} +3 -3
- package/contracts/engine/{GenArt721MinterBurner_PBAB.sol → V2/GenArt721MinterBurner_PBAB.sol} +2 -2
- package/contracts/engine/{GenArt721MinterDAExp_PBAB.sol → V2/GenArt721MinterDAExp_PBAB.sol} +2 -2
- package/contracts/engine/{GenArt721Minter_PBAB.sol → V2/GenArt721Minter_PBAB.sol} +2 -2
- package/contracts/{GenArt721CoreV3_Engine.sol → engine/V3/GenArt721CoreV3_Engine.sol} +48 -24
- package/contracts/engine/V3/GenArt721CoreV3_Engine_Flex.sol +2298 -0
- package/contracts/{GenArt721CoreV3_Engine_Flex.sol → engine/V3/forks/GenArt721CoreV3_Engine_Flex_PROOF.sol} +50 -31
- package/contracts/engine/V3/forks/PROHIBITION/AdminACLV0_PROHIBITION.sol +281 -0
- package/contracts/engine/V3/forks/PROHIBITION/GenArt721CoreV3_Engine_Flex_PROHIBITION.sol +2359 -0
- package/contracts/engine/V3/forks/PROHIBITION/interfaces/IAdminACLV0_PROHIBITION.sol +123 -0
- package/contracts/engine/V3/forks/PROHIBITION/interfaces/IGenArt721CoreContractV3_Engine_Flex_PROHIBITION.sol +29 -0
- package/contracts/engine-registry/CoreRegistryV1.sol +254 -0
- package/contracts/engine-registry/EngineRegistryV0.sol +2 -2
- package/contracts/explorations/GenArt721CoreV3_Explorations.sol +58 -40
- package/contracts/interfaces/v0.8.x/IBytecodeStorageReader.sol +62 -0
- package/contracts/interfaces/v0.8.x/ICoreRegistryV1.sol +27 -0
- package/contracts/interfaces/{0.8.x → v0.8.x}/IDelegationRegistry.sol +1 -1
- package/contracts/interfaces/{0.8.x → v0.8.x}/IDependencyRegistryCompatibleV0.sol +1 -1
- package/contracts/interfaces/{0.8.x → v0.8.x}/IDependencyRegistryV0.sol +3 -3
- package/contracts/interfaces/{0.8.x → v0.8.x}/IEngineRegistryV0.sol +1 -1
- package/contracts/interfaces/{0.8.x → v0.8.x}/IFilteredMinterSEAV0.sol +34 -15
- package/contracts/interfaces/v0.8.x/IGenArt721CoreContractExposesHashSeed.sol +11 -0
- package/contracts/interfaces/v0.8.x/IGenArt721CoreContractV3WithSharedRandomizer.sol +23 -0
- package/contracts/interfaces/{0.8.x → v0.8.x}/IGenArt721CoreContractV3_Base.sol +3 -0
- package/contracts/interfaces/{0.8.x → v0.8.x}/IGenArt721CoreContractV3_Engine.sol +0 -5
- package/contracts/interfaces/v0.8.x/IMinterFilterV1.sol +184 -0
- package/contracts/interfaces/v0.8.x/IPseudorandomAtomic.sol +16 -0
- package/contracts/interfaces/{0.8.x → v0.8.x}/IRandomizerPolyptychV0.sol +1 -1
- package/contracts/interfaces/{0.8.x → v0.8.x}/IRandomizerV2.sol +2 -5
- package/contracts/interfaces/v0.8.x/IRandomizer_V3CoreBase.sol +23 -0
- package/contracts/interfaces/v0.8.x/ISharedMinterDAExpSettlementV0.sol +37 -0
- package/contracts/interfaces/v0.8.x/ISharedMinterDAExpV0.sol +25 -0
- package/contracts/interfaces/v0.8.x/ISharedMinterDALinV0.sol +26 -0
- package/contracts/interfaces/v0.8.x/ISharedMinterDAV0.sol +19 -0
- package/contracts/interfaces/v0.8.x/ISharedMinterHolderV0.sol +69 -0
- package/contracts/interfaces/v0.8.x/ISharedMinterMerkleV0.sol +44 -0
- package/contracts/interfaces/v0.8.x/ISharedMinterSEAV0.sol +78 -0
- package/contracts/interfaces/v0.8.x/ISharedMinterSimplePurchaseV0.sol +28 -0
- package/contracts/interfaces/v0.8.x/ISharedMinterV0.sol +191 -0
- package/contracts/interfaces/v0.8.x/ISharedRandomizerV0.sol +123 -0
- package/contracts/legacy/GenArt721CoreV1.sol +2 -2
- package/contracts/legacy/GenArt721LegacyMinter.sol +5 -5
- package/contracts/libs/integration-refs/delegation-registry/DelegationRegistry.sol +2 -2
- package/contracts/libs/integration-refs/weth9/weth9.sol +2 -0
- package/contracts/libs/v0.8.x/ABHelpers.sol +55 -0
- package/contracts/libs/v0.8.x/AuthLib.sol +197 -0
- package/contracts/libs/v0.8.x/BytecodeStorageV1.sol +399 -0
- package/contracts/libs/v0.8.x/SSTORE2.sol +109 -0
- package/contracts/libs/v0.8.x/minter-libs/DAExpLib.sol +125 -0
- package/contracts/libs/v0.8.x/minter-libs/DALinLib.sol +109 -0
- package/contracts/libs/v0.8.x/minter-libs/MaxInvocationsLib.sol +348 -0
- package/contracts/libs/v0.8.x/minter-libs/MerkleLib.sol +175 -0
- package/contracts/libs/v0.8.x/minter-libs/PolyptychLib.sol +160 -0
- package/contracts/libs/v0.8.x/minter-libs/SEALib.sol +320 -0
- package/contracts/libs/v0.8.x/minter-libs/SetPriceLib.sol +44 -0
- package/contracts/libs/v0.8.x/minter-libs/SettlementExpLib.sol +390 -0
- package/contracts/libs/v0.8.x/minter-libs/SplitFundsLib.sol +583 -0
- package/contracts/libs/v0.8.x/minter-libs/TokenHolderLib.sol +153 -0
- package/contracts/minter-suite/MinterFilter/MinterFilterV0.sol +3 -3
- package/contracts/minter-suite/MinterFilter/MinterFilterV1.sol +6 -6
- package/contracts/minter-suite/MinterFilter/MinterFilterV2.sol +830 -0
- package/contracts/minter-suite/Minters/MinterBase_v0_1_1.sol +4 -4
- package/contracts/minter-suite/Minters/MinterDAExpHolderV5.sol +966 -0
- package/contracts/minter-suite/Minters/MinterDAExpSettlementV2.sol +4 -4
- package/contracts/minter-suite/Minters/MinterDAExpSettlementV3.sol +1126 -0
- package/contracts/minter-suite/Minters/MinterDAExpV4.sol +4 -4
- package/contracts/minter-suite/Minters/MinterDAExpV5.sol +606 -0
- package/contracts/minter-suite/Minters/MinterDALinHolderV5.sol +952 -0
- package/contracts/minter-suite/Minters/MinterDALinV4.sol +4 -4
- package/contracts/minter-suite/Minters/MinterDALinV5.sol +591 -0
- package/contracts/minter-suite/Minters/MinterHolderV4.sol +5 -5
- package/contracts/minter-suite/Minters/MinterMerkleV5.sol +5 -5
- package/contracts/minter-suite/Minters/MinterPolyptychV0.sol +18 -17
- package/contracts/minter-suite/Minters/MinterSEAV0.sol +235 -186
- package/contracts/minter-suite/Minters/MinterSEAV1.sol +1190 -0
- package/contracts/minter-suite/Minters/MinterSetPriceERC20V4.sol +6 -6
- package/contracts/minter-suite/Minters/MinterSetPriceERC20V5.sol +570 -0
- package/contracts/minter-suite/Minters/MinterSetPriceHolderV5.sol +821 -0
- package/contracts/minter-suite/Minters/MinterSetPriceMerkleV5.sol +802 -0
- package/contracts/minter-suite/Minters/MinterSetPricePolyptychERC20V5.sol +1096 -0
- package/contracts/minter-suite/Minters/MinterSetPricePolyptychV5.sol +992 -0
- package/contracts/minter-suite/Minters/MinterSetPriceV4.sol +4 -4
- package/contracts/minter-suite/Minters/MinterSetPriceV5.sol +461 -0
- package/contracts/mock/{BytecodeTextCR_DMock.sol → BytecodeV0TextCR_DMock.sol} +5 -5
- package/contracts/mock/BytecodeV1LibCallsMock.sol +114 -0
- package/contracts/mock/BytecodeV1TextCR_DMock.sol +233 -0
- package/contracts/mock/DeadReceiverBidderMock.sol +16 -1
- package/contracts/mock/DeadReceiverMock.sol +1 -1
- package/contracts/mock/DummySharedMinter.sol +75 -0
- package/contracts/mock/ERC20Mock.sol +16 -0
- package/contracts/mock/GasLimitReceiverBidderMock.sol +1 -1
- package/contracts/mock/GasLimitReceiverMock.sol +1 -1
- package/contracts/mock/GenArt721CoreV3_Engine_IncorrectCoreType.sol +22 -35
- package/contracts/mock/MockAdminACLV0.sol +2 -2
- package/contracts/mock/MockAdminACLV0_PROHIBITION.sol +207 -0
- package/contracts/mock/OriginRegisterMock.sol +27 -0
- package/contracts/mock/RandomizerV2_NoAssignMock.sol +2 -2
- package/contracts/mock/ReentrancyHolderMock.sol +1 -1
- package/contracts/mock/ReentrancyMerkleMock.sol +1 -1
- package/contracts/mock/ReentrancyMock.sol +1 -1
- package/contracts/mock/ReentrancySEAMock.sol +1 -1
- package/contracts/mock/SSTORE2Mock.sol +93 -0
- package/contracts/randomizer/{BasicRandomizer.sol → deprecated/BasicRandomizer.sol} +1 -1
- package/contracts/randomizer/{BasicRandomizerBase_v0_0_0.sol → deprecated/BasicRandomizerBase_v0_0_0.sol} +1 -1
- package/contracts/randomizer/{PolyptychRandomizerV0.sol → deprecated/PolyptychRandomizerV0.sol} +3 -3
- package/contracts/randomizer/{RandomizerV2.sol → deprecated/RandomizerV2.sol} +3 -3
- package/contracts/randomizer/primitive/PseudorandomAtomicBasic.sol +30 -0
- package/contracts/randomizer/shared/SharedRandomizerV0.sol +260 -0
- package/contracts/royalty-registry/GenArt721RoyaltyOverride.sol +2 -2
- package/contracts/royalty-registry/GenArt721RoyaltyOverride_PBAB.sol +2 -2
- package/package.json +51 -43
- package/.env.example +0 -17
- package/LICENSE +0 -165
- package/artifacts/contracts/GenArt721CoreV3_Engine.sol/GenArt721CoreV3_Engine.json +0 -1942
- package/artifacts/contracts/GenArt721CoreV3_Engine_Flex.sol/GenArt721CoreV3_Engine_Flex.json +0 -2229
- package/artifacts/contracts/engine-registry/future/EngineRegistryV1.sol/EngineRegistryV1.json +0 -109
- package/contracts/engine-registry/future/EngineRegistryV1.sol +0 -86
- /package/contracts/interfaces/{0.5.x → v0.5.x}/IBonusContract.sol +0 -0
- /package/contracts/interfaces/{0.5.x → v0.5.x}/IGenArt721CoreContractV1.sol +0 -0
- /package/contracts/interfaces/{0.5.x → v0.5.x}/IGenArt721CoreV2_PBAB.sol +0 -0
- /package/contracts/interfaces/{0.5.x → v0.5.x}/IRandomizer.sol +0 -0
- /package/contracts/interfaces/{0.8.x → v0.8.x}/IAdminACLV0.sol +0 -0
- /package/contracts/interfaces/{0.8.x → v0.8.x}/IArtblocksRoyaltyOverride.sol +0 -0
- /package/contracts/interfaces/{0.8.x → v0.8.x}/IBonusContract.sol +0 -0
- /package/contracts/interfaces/{0.8.x → v0.8.x}/IFilteredMinterDAExpSettlementV0.sol +0 -0
- /package/contracts/interfaces/{0.8.x → v0.8.x}/IFilteredMinterDAExpSettlementV1.sol +0 -0
- /package/contracts/interfaces/{0.8.x → v0.8.x}/IFilteredMinterDAExpSettlement_Mixin.sol +0 -0
- /package/contracts/interfaces/{0.8.x → v0.8.x}/IFilteredMinterDAExpV0.sol +0 -0
- /package/contracts/interfaces/{0.8.x → v0.8.x}/IFilteredMinterDAExpV1.sol +0 -0
- /package/contracts/interfaces/{0.8.x → v0.8.x}/IFilteredMinterDALinV0.sol +0 -0
- /package/contracts/interfaces/{0.8.x → v0.8.x}/IFilteredMinterDALinV1.sol +0 -0
- /package/contracts/interfaces/{0.8.x → v0.8.x}/IFilteredMinterHolderV0.sol +0 -0
- /package/contracts/interfaces/{0.8.x → v0.8.x}/IFilteredMinterHolderV1.sol +0 -0
- /package/contracts/interfaces/{0.8.x → v0.8.x}/IFilteredMinterHolderV2.sol +0 -0
- /package/contracts/interfaces/{0.8.x → v0.8.x}/IFilteredMinterMerkleV0.sol +0 -0
- /package/contracts/interfaces/{0.8.x → v0.8.x}/IFilteredMinterMerkleV1.sol +0 -0
- /package/contracts/interfaces/{0.8.x → v0.8.x}/IFilteredMinterMerkleV2.sol +0 -0
- /package/contracts/interfaces/{0.8.x → v0.8.x}/IFilteredMinterV0.sol +0 -0
- /package/contracts/interfaces/{0.8.x → v0.8.x}/IFilteredMinterV1.sol +0 -0
- /package/contracts/interfaces/{0.8.x → v0.8.x}/IFilteredMinterV2.sol +0 -0
- /package/contracts/interfaces/{0.8.x → v0.8.x}/IGenArt721CoreContractV1.sol +0 -0
- /package/contracts/interfaces/{0.8.x → v0.8.x}/IGenArt721CoreContractV3.sol +0 -0
- /package/contracts/interfaces/{0.8.x → v0.8.x}/IGenArt721CoreContractV3_Engine_Flex.sol +0 -0
- /package/contracts/interfaces/{0.8.x → v0.8.x}/IGenArt721CoreV2_PBAB.sol +0 -0
- /package/contracts/interfaces/{0.8.x → v0.8.x}/IManifold.sol +0 -0
- /package/contracts/interfaces/{0.8.x → v0.8.x}/IMinterBaseV0.sol +0 -0
- /package/contracts/interfaces/{0.8.x → v0.8.x}/IMinterFilterV0.sol +0 -0
- /package/contracts/interfaces/{0.8.x → v0.8.x}/IMintingAPICoreV0.sol +0 -0
- /package/contracts/interfaces/{0.8.x → v0.8.x}/IMintingAPIMinterV0.sol +0 -0
- /package/contracts/interfaces/{0.8.x → v0.8.x}/IRandomizer.sol +0 -0
- /package/contracts/interfaces/{0.8.x → v0.8.x}/IWETH.sol +0 -0
- /package/contracts/libs/{0.5.x → v0.5.x}/CustomERC721Metadata.sol +0 -0
- /package/contracts/libs/{0.5.x → v0.5.x}/IERC20.sol +0 -0
- /package/contracts/libs/{0.5.x → v0.5.x}/SafeMath.sol +0 -0
- /package/contracts/libs/{0.5.x → v0.5.x}/Strings.sol +0 -0
- /package/contracts/libs/{0.8.x/BytecodeStorage.sol → v0.8.x/BytecodeStorageV0.sol} +0 -0
- /package/contracts/libs/{0.8.x → v0.8.x}/Bytes32Strings.sol +0 -0
- /package/contracts/libs/{0.8.x → v0.8.x}/ERC721_PackedHashSeed.sol +0 -0
|
@@ -0,0 +1,123 @@
|
|
|
1
|
+
// SPDX-License-Identifier: LGPL-3.0-only
|
|
2
|
+
// Created By: Art Blocks Inc.
|
|
3
|
+
|
|
4
|
+
pragma solidity ^0.8.0;
|
|
5
|
+
|
|
6
|
+
import "../../../../../interfaces/v0.8.x/IAdminACLV0.sol";
|
|
7
|
+
|
|
8
|
+
interface IAdminACLV0_PROHIBITION is IAdminACLV0 {
|
|
9
|
+
/**
|
|
10
|
+
* @notice Emitted when function caller is updated.
|
|
11
|
+
* @param contractAddress Contract that the selector caller is being set for.
|
|
12
|
+
* @param selector Selector of the function we're giving the privilege to call.
|
|
13
|
+
* @param caller Caller address that is allowed to call the function.
|
|
14
|
+
* @param approved Boolean value indicating if the caller is approved or not.
|
|
15
|
+
*/
|
|
16
|
+
event ContractSelectorApprovalUpdated(
|
|
17
|
+
address indexed contractAddress,
|
|
18
|
+
bytes4 indexed selector,
|
|
19
|
+
address indexed caller,
|
|
20
|
+
bool approved
|
|
21
|
+
);
|
|
22
|
+
|
|
23
|
+
/**
|
|
24
|
+
* @notice Emitted when verified artist is updated.
|
|
25
|
+
* @param contractAddress Contract that the selector caller is being set for.
|
|
26
|
+
* @param caller Address of the artist.
|
|
27
|
+
* @param approved Boolean value indicating if the caller is approved or not.
|
|
28
|
+
*/
|
|
29
|
+
event ContractArtistApprovalUpdated(
|
|
30
|
+
address indexed contractAddress,
|
|
31
|
+
address indexed caller,
|
|
32
|
+
bool approved
|
|
33
|
+
);
|
|
34
|
+
|
|
35
|
+
/**
|
|
36
|
+
* @notice Retrieve whether of the caller is allowed to call a contract's function
|
|
37
|
+
* @param _contract The contract address.
|
|
38
|
+
* @param _selector The function selector.
|
|
39
|
+
* @param _caller The caller address.
|
|
40
|
+
* @return isApproved The approval status.
|
|
41
|
+
*/
|
|
42
|
+
function getContractSelectorApproval(
|
|
43
|
+
address _contract,
|
|
44
|
+
bytes4 _selector,
|
|
45
|
+
address _caller
|
|
46
|
+
) external view returns (bool);
|
|
47
|
+
|
|
48
|
+
/**
|
|
49
|
+
* @notice Retrieve whether of the caller is allowed to call a functions for a project
|
|
50
|
+
* @param _contract The contract address.
|
|
51
|
+
* @param _caller The caller address.
|
|
52
|
+
* @return isApproved The approval status.
|
|
53
|
+
*/
|
|
54
|
+
function getContractArtistApproval(
|
|
55
|
+
address _contract,
|
|
56
|
+
address _caller
|
|
57
|
+
) external view returns (bool);
|
|
58
|
+
|
|
59
|
+
/**
|
|
60
|
+
* @notice Allowed caller can to set a contract function caller.
|
|
61
|
+
* @param _contract The contract address.
|
|
62
|
+
* @param _selector The function selector.
|
|
63
|
+
* @param _caller The caller address.
|
|
64
|
+
* @dev this function is gated to only superAdmin address or allowed caller.
|
|
65
|
+
*/
|
|
66
|
+
function toggleContractSelectorApproval(
|
|
67
|
+
address _contract,
|
|
68
|
+
bytes4 _selector,
|
|
69
|
+
address _caller
|
|
70
|
+
) external;
|
|
71
|
+
|
|
72
|
+
/**
|
|
73
|
+
* @notice Toggles verification for artists to call functions relating to their projects on a contract
|
|
74
|
+
* @param _contract The contract address.
|
|
75
|
+
* @param _caller The caller address.
|
|
76
|
+
* @dev this function is gated to only allwed addressed.
|
|
77
|
+
*/
|
|
78
|
+
function toggleContractArtistApproval(
|
|
79
|
+
address _contract,
|
|
80
|
+
address _caller
|
|
81
|
+
) external;
|
|
82
|
+
|
|
83
|
+
/**
|
|
84
|
+
* @notice Checks if sender `_sender` is allowed to call function (or functions for projects) with
|
|
85
|
+
* method `_selector` on `_contract`. Returns true if sender is superAdmin.
|
|
86
|
+
* @param _sender The sender address.
|
|
87
|
+
* @param _contract The contract address.
|
|
88
|
+
* @param _selector The function selector.
|
|
89
|
+
* @param _projectId The project ID.
|
|
90
|
+
* @return isApproved The approval status.
|
|
91
|
+
* @dev this function is public insteaad of internal so that the right to toggle approvals can also be delegated
|
|
92
|
+
*/
|
|
93
|
+
function allowed(
|
|
94
|
+
address _sender,
|
|
95
|
+
address _contract,
|
|
96
|
+
bytes4 _selector,
|
|
97
|
+
uint256 _projectId
|
|
98
|
+
) external returns (bool);
|
|
99
|
+
|
|
100
|
+
/**
|
|
101
|
+
* @notice Hash the contract address, selector, and caller address.
|
|
102
|
+
* @param _contract The contract address.
|
|
103
|
+
* @param _selector The function selector.
|
|
104
|
+
* @param _caller The caller address.
|
|
105
|
+
* @return hash The hash.
|
|
106
|
+
*/
|
|
107
|
+
function hashSelectorApprovalKey(
|
|
108
|
+
address _contract,
|
|
109
|
+
bytes4 _selector,
|
|
110
|
+
address _caller
|
|
111
|
+
) external pure returns (bytes32);
|
|
112
|
+
|
|
113
|
+
/**
|
|
114
|
+
* @notice Hash the contract address and artist address.
|
|
115
|
+
* @param _contract The contract address.
|
|
116
|
+
* @param _caller The artist address.
|
|
117
|
+
* @return hash The hash.
|
|
118
|
+
*/
|
|
119
|
+
function hashArtistApprovalKey(
|
|
120
|
+
address _contract,
|
|
121
|
+
address _caller
|
|
122
|
+
) external pure returns (bytes32);
|
|
123
|
+
}
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
// SPDX-License-Identifier: LGPL-3.0-only
|
|
2
|
+
// Created By: Art Blocks Inc.
|
|
3
|
+
|
|
4
|
+
pragma solidity ^0.8.0;
|
|
5
|
+
|
|
6
|
+
import "./IAdminACLV0_PROHIBITION.sol";
|
|
7
|
+
import "../../../../../interfaces/v0.8.x/IGenArt721CoreContractV3_Engine_Flex.sol";
|
|
8
|
+
|
|
9
|
+
/**
|
|
10
|
+
* @title This interface is intended to house interface items that are common
|
|
11
|
+
* across all GenArt721CoreContractV3 Engine Flex and derivative implementations.
|
|
12
|
+
* @author Art Blocks Inc.
|
|
13
|
+
*/
|
|
14
|
+
interface IGenArt721CoreContractV3_Engine_Flex_PROHIBITION is
|
|
15
|
+
IGenArt721CoreContractV3_Engine_Flex
|
|
16
|
+
{
|
|
17
|
+
/**
|
|
18
|
+
* Function determining if _sender is allowed to call function with
|
|
19
|
+
* selector _selector on contract `_contract` for project `_projectId`.
|
|
20
|
+
* Intended to be used with peripheral contracts such as minters, as well
|
|
21
|
+
* as internally by the core contract itself.
|
|
22
|
+
*/
|
|
23
|
+
function adminACLAllowed(
|
|
24
|
+
address _sender,
|
|
25
|
+
address _contract,
|
|
26
|
+
bytes4 _selector,
|
|
27
|
+
uint256 _projectId
|
|
28
|
+
) external returns (bool);
|
|
29
|
+
}
|
|
@@ -0,0 +1,254 @@
|
|
|
1
|
+
// SPDX-License-Identifier: MIT
|
|
2
|
+
|
|
3
|
+
pragma solidity 0.8.19;
|
|
4
|
+
|
|
5
|
+
import "../interfaces/v0.8.x/ICoreRegistryV1.sol";
|
|
6
|
+
import "@openzeppelin-4.7/contracts/access/Ownable.sol";
|
|
7
|
+
import "@openzeppelin-4.7/contracts/utils/structs/EnumerableSet.sol";
|
|
8
|
+
|
|
9
|
+
/**
|
|
10
|
+
* @title Art Blocks Core Contract Registry, V1.
|
|
11
|
+
* @author Art Blocks Inc.
|
|
12
|
+
* @notice Privileged Roles and Ownership:
|
|
13
|
+
* This contract has a single owner, and is intended to be deployed with a
|
|
14
|
+
* permissioned owner that has elevated privileges on this contract.
|
|
15
|
+
* If in the future multiple deployer addresses are needed to interact with
|
|
16
|
+
* this registry, a new registry version with more complex logic should be
|
|
17
|
+
* implemented and deployed to replace this.
|
|
18
|
+
*
|
|
19
|
+
* This contract builds on the EngineRegistryV0 contract, but encompases more
|
|
20
|
+
* than just Engine contracts. It is updated to be named CoreRegistry, and is
|
|
21
|
+
* V1 because it is the next iteration of the V0 Engine Registry.
|
|
22
|
+
*
|
|
23
|
+
* This contract is intended to be able to act as a registry of all core
|
|
24
|
+
* contracts that are allowed to interact with a specific MinterFilter V2.
|
|
25
|
+
* This includes, but is not limited to:
|
|
26
|
+
* - Flagship contracts
|
|
27
|
+
* - Collaboration contracts
|
|
28
|
+
* - Engine contracts
|
|
29
|
+
* - Engine Flex contracts
|
|
30
|
+
*
|
|
31
|
+
* Note that not all contracts will be registered in this registry, as some
|
|
32
|
+
* contracts may not need to interact with a MinterFilterV2 contract. For
|
|
33
|
+
* example, the original Art Blocks V0 contract does not need to interact with
|
|
34
|
+
* a MinterFilterV2 contract, as it uses a different minting mechanism.
|
|
35
|
+
*
|
|
36
|
+
* A view function is provided to determine if a contract is registered.
|
|
37
|
+
*
|
|
38
|
+
* This contract is designed to be managed by an owner with privileged roles
|
|
39
|
+
* and abilities.
|
|
40
|
+
* ----------------------------------------------------------------------------
|
|
41
|
+
* The following function is restricted to the engine registry owner sending,
|
|
42
|
+
* or the core contract being registered during a transaction originating from
|
|
43
|
+
* the engine registry owner:
|
|
44
|
+
* - registerContract
|
|
45
|
+
* ----------------------------------------------------------------------------
|
|
46
|
+
* The following functions are restricted to the engine registry owner sending:
|
|
47
|
+
* - unregisterContract
|
|
48
|
+
* - registerContracts
|
|
49
|
+
* - unregisterContracts
|
|
50
|
+
* - Ownable: transferOwnership
|
|
51
|
+
* - Ownable: renounceOwnership
|
|
52
|
+
* ----------------------------------------------------------------------------
|
|
53
|
+
* Additional privileged roles may be described on minters, registries, and
|
|
54
|
+
* other contracts that may interact with this contract.
|
|
55
|
+
*/
|
|
56
|
+
contract CoreRegistryV1 is Ownable, ICoreRegistryV1 {
|
|
57
|
+
using EnumerableSet for EnumerableSet.AddressSet;
|
|
58
|
+
|
|
59
|
+
/// private enumerable set of registered contracts
|
|
60
|
+
EnumerableSet.AddressSet private registeredContracts;
|
|
61
|
+
|
|
62
|
+
/// private mapping of registered contract addresses to
|
|
63
|
+
EnumerableSet.AddressSet
|
|
64
|
+
private registeredMinterFilterV2CompatibleContracts;
|
|
65
|
+
|
|
66
|
+
/**
|
|
67
|
+
* @notice Reverts if `tx.origin` is not the owner.
|
|
68
|
+
* @dev Warning that this check is only against tx.origin, which may be
|
|
69
|
+
* misleading when used for security.
|
|
70
|
+
*/
|
|
71
|
+
function _onlyOwnerOrigin() internal view {
|
|
72
|
+
require(tx.origin == owner(), "Only tx origin of owner");
|
|
73
|
+
}
|
|
74
|
+
|
|
75
|
+
constructor() Ownable() {}
|
|
76
|
+
|
|
77
|
+
/**
|
|
78
|
+
* @notice Register a contract and emit a `ContractRegistered` event with
|
|
79
|
+
* the provided information. Only callable by the owner or the contract
|
|
80
|
+
* being registered, and only if tx.origin == owner.
|
|
81
|
+
* Reverts if authorization fails, or if the contract is already
|
|
82
|
+
* registered.
|
|
83
|
+
*/
|
|
84
|
+
function registerContract(
|
|
85
|
+
address _contractAddress,
|
|
86
|
+
bytes32 _coreVersion,
|
|
87
|
+
bytes32 _coreType
|
|
88
|
+
) external {
|
|
89
|
+
// CHECKS
|
|
90
|
+
// Validate against `tx.origin` rather than `msg.sender` as it is
|
|
91
|
+
// intended that this registration be performed in an automated
|
|
92
|
+
// fashion at the time of contract deployment of `_contractAddress`.
|
|
93
|
+
// @dev Security implications of using `tx.origin` are acknowledged
|
|
94
|
+
_onlyOwnerOrigin();
|
|
95
|
+
// only allow registration of a contract registering itself, or allow
|
|
96
|
+
// the owner to register any contract.
|
|
97
|
+
require(
|
|
98
|
+
msg.sender == _contractAddress || msg.sender == owner(),
|
|
99
|
+
"Only owner or registrant"
|
|
100
|
+
);
|
|
101
|
+
// EFFECTS
|
|
102
|
+
_registerContract(_contractAddress, _coreVersion, _coreType);
|
|
103
|
+
}
|
|
104
|
+
|
|
105
|
+
/**
|
|
106
|
+
* @notice Unregister a contract and emit a `ContractUnregistered` event.
|
|
107
|
+
* Only callable by the owner of this registry contract.
|
|
108
|
+
* Reverts if authorization fails, or if the contract is not already
|
|
109
|
+
* registered.
|
|
110
|
+
*/
|
|
111
|
+
function unregisterContract(address _contractAddress) external {
|
|
112
|
+
// CHECKS
|
|
113
|
+
// revert if not called by owner
|
|
114
|
+
Ownable._checkOwner();
|
|
115
|
+
// EFFECTS
|
|
116
|
+
_unregisterContract(_contractAddress);
|
|
117
|
+
}
|
|
118
|
+
|
|
119
|
+
/**
|
|
120
|
+
* @notice Register multiple contracts at once.
|
|
121
|
+
* Only callable by the owner.
|
|
122
|
+
* Reverts if any contract is already registered.
|
|
123
|
+
* @dev This should primarily be used for backfilling the registry with
|
|
124
|
+
* existing contracts shortly after deployment.
|
|
125
|
+
* @param _contractAddresses Array of contract addresses to register.
|
|
126
|
+
* @param _coreVersions Array of core versions for each contract (aligned).
|
|
127
|
+
* @param _coreTypes Array of core types for each contract (aligned).
|
|
128
|
+
*/
|
|
129
|
+
function registerContracts(
|
|
130
|
+
address[] calldata _contractAddresses,
|
|
131
|
+
bytes32[] calldata _coreVersions,
|
|
132
|
+
bytes32[] calldata _coreTypes
|
|
133
|
+
) external {
|
|
134
|
+
// CHECKS
|
|
135
|
+
// revert if not called by owner
|
|
136
|
+
Ownable._checkOwner();
|
|
137
|
+
// validate same length arrays
|
|
138
|
+
uint256 numContracts = _contractAddresses.length;
|
|
139
|
+
require(
|
|
140
|
+
numContracts == _coreVersions.length &&
|
|
141
|
+
numContracts == _coreTypes.length,
|
|
142
|
+
"Mismatched array lengths"
|
|
143
|
+
);
|
|
144
|
+
// EFFECTS
|
|
145
|
+
for (uint256 i = 0; i < numContracts; ) {
|
|
146
|
+
_registerContract(
|
|
147
|
+
_contractAddresses[i],
|
|
148
|
+
_coreVersions[i],
|
|
149
|
+
_coreTypes[i]
|
|
150
|
+
);
|
|
151
|
+
unchecked {
|
|
152
|
+
++i;
|
|
153
|
+
}
|
|
154
|
+
}
|
|
155
|
+
}
|
|
156
|
+
|
|
157
|
+
/**
|
|
158
|
+
* @notice Unregister multiple contracts at once.
|
|
159
|
+
* Only callable by the owner.
|
|
160
|
+
* Reverts if any contract is not already registered.
|
|
161
|
+
* @param _contractAddresses Array of contract addresses to unregister.
|
|
162
|
+
*/
|
|
163
|
+
function unregisterContracts(
|
|
164
|
+
address[] calldata _contractAddresses
|
|
165
|
+
) external {
|
|
166
|
+
// CHECKS
|
|
167
|
+
// revert if not called by owner
|
|
168
|
+
Ownable._checkOwner();
|
|
169
|
+
// EFFECTS
|
|
170
|
+
uint256 numContracts = _contractAddresses.length;
|
|
171
|
+
for (uint256 i = 0; i < numContracts; ) {
|
|
172
|
+
_unregisterContract(_contractAddresses[i]);
|
|
173
|
+
unchecked {
|
|
174
|
+
++i;
|
|
175
|
+
}
|
|
176
|
+
}
|
|
177
|
+
}
|
|
178
|
+
|
|
179
|
+
/**
|
|
180
|
+
* @notice Get the number of registered contracts.
|
|
181
|
+
* @return The number of registered contracts.
|
|
182
|
+
*/
|
|
183
|
+
function getNumRegisteredContracts() external view returns (uint256) {
|
|
184
|
+
return registeredContracts.length();
|
|
185
|
+
}
|
|
186
|
+
|
|
187
|
+
/**
|
|
188
|
+
* @notice Get the address of a registered contract by index.
|
|
189
|
+
* @param _index The index of the contract to get.
|
|
190
|
+
* @return The address of the contract at the given index.
|
|
191
|
+
*/
|
|
192
|
+
function getRegisteredContractAt(
|
|
193
|
+
uint256 _index
|
|
194
|
+
) external view returns (address) {
|
|
195
|
+
return registeredContracts.at(_index);
|
|
196
|
+
}
|
|
197
|
+
|
|
198
|
+
/**
|
|
199
|
+
* @notice Gets an array of all registered contract addresses.
|
|
200
|
+
* Warning: Unbounded gas limit. This function is gas intensive and should
|
|
201
|
+
* only be used for off-chain analysis. Please use
|
|
202
|
+
* `getNumRegisteredContracts` and `getRegisteredContractAt` for bounded
|
|
203
|
+
* gas usage.
|
|
204
|
+
*/
|
|
205
|
+
function getAllRegisteredContracts()
|
|
206
|
+
external
|
|
207
|
+
view
|
|
208
|
+
returns (address[] memory)
|
|
209
|
+
{
|
|
210
|
+
return registeredContracts.values();
|
|
211
|
+
}
|
|
212
|
+
|
|
213
|
+
/**
|
|
214
|
+
* @notice Returns boolean representing if contract is registered on this
|
|
215
|
+
* registry.
|
|
216
|
+
* @param _contractAddress The address of the contract to check.
|
|
217
|
+
* @return isRegistered True if the contract is registered.
|
|
218
|
+
*/
|
|
219
|
+
function isRegisteredContract(
|
|
220
|
+
address _contractAddress
|
|
221
|
+
) external view returns (bool isRegistered) {
|
|
222
|
+
return registeredContracts.contains(_contractAddress);
|
|
223
|
+
}
|
|
224
|
+
|
|
225
|
+
/**
|
|
226
|
+
* @notice Internal function to register a contract.
|
|
227
|
+
* Reverts if the contract is already registered.
|
|
228
|
+
*/
|
|
229
|
+
function _registerContract(
|
|
230
|
+
address _contractAddress,
|
|
231
|
+
bytes32 _coreVersion,
|
|
232
|
+
bytes32 _coreType
|
|
233
|
+
) internal {
|
|
234
|
+
// @dev add returns true only if not already registered
|
|
235
|
+
require(
|
|
236
|
+
registeredContracts.add(_contractAddress),
|
|
237
|
+
"Contract already registered"
|
|
238
|
+
);
|
|
239
|
+
emit ContractRegistered(_contractAddress, _coreVersion, _coreType);
|
|
240
|
+
}
|
|
241
|
+
|
|
242
|
+
/**
|
|
243
|
+
* @notice Internal function to unregister a contract.
|
|
244
|
+
* Reverts if the contract is not already registered.
|
|
245
|
+
*/
|
|
246
|
+
function _unregisterContract(address _contractAddress) internal {
|
|
247
|
+
// @dev remove returns true only if already in set
|
|
248
|
+
require(
|
|
249
|
+
registeredContracts.remove(_contractAddress),
|
|
250
|
+
"Only registered contracts"
|
|
251
|
+
);
|
|
252
|
+
emit ContractUnregistered(_contractAddress);
|
|
253
|
+
}
|
|
254
|
+
}
|
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
// SPDX-License-Identifier: MIT
|
|
2
2
|
|
|
3
|
-
pragma solidity 0.8.
|
|
3
|
+
pragma solidity 0.8.19;
|
|
4
4
|
|
|
5
|
-
import "../interfaces/
|
|
5
|
+
import "../interfaces/v0.8.x/IEngineRegistryV0.sol";
|
|
6
6
|
import "@openzeppelin-4.7/contracts/utils/introspection/ERC165.sol";
|
|
7
7
|
|
|
8
8
|
/**
|
|
@@ -1,18 +1,19 @@
|
|
|
1
1
|
// SPDX-License-Identifier: LGPL-3.0-only
|
|
2
|
-
pragma solidity 0.8.
|
|
2
|
+
pragma solidity 0.8.19;
|
|
3
3
|
|
|
4
4
|
// Created By: Art Blocks Inc.
|
|
5
5
|
|
|
6
|
-
import "../interfaces/
|
|
7
|
-
import "../interfaces/
|
|
8
|
-
import "../interfaces/
|
|
9
|
-
import "../interfaces/
|
|
6
|
+
import "../interfaces/v0.8.x/IRandomizerV2.sol";
|
|
7
|
+
import "../interfaces/v0.8.x/IAdminACLV0.sol";
|
|
8
|
+
import "../interfaces/v0.8.x/IGenArt721CoreContractV3.sol";
|
|
9
|
+
import "../interfaces/v0.8.x/IGenArt721CoreContractExposesHashSeed.sol";
|
|
10
|
+
import "../interfaces/v0.8.x/IManifold.sol";
|
|
10
11
|
|
|
11
12
|
import "@openzeppelin-4.7/contracts/utils/Strings.sol";
|
|
12
13
|
import "@openzeppelin-4.7/contracts/access/Ownable.sol";
|
|
13
|
-
import "../libs/
|
|
14
|
-
import "../libs/
|
|
15
|
-
import "../libs/
|
|
14
|
+
import "../libs/v0.8.x/ERC721_PackedHashSeed.sol";
|
|
15
|
+
import "../libs/v0.8.x/BytecodeStorageV1.sol";
|
|
16
|
+
import "../libs/v0.8.x/Bytes32Strings.sol";
|
|
16
17
|
|
|
17
18
|
/**
|
|
18
19
|
* @title Art Blocks ERC-721 core contract, V3_Explorations.
|
|
@@ -88,10 +89,10 @@ import "../libs/0.8.x/Bytes32Strings.sol";
|
|
|
88
89
|
contract GenArt721CoreV3_Explorations is
|
|
89
90
|
ERC721_PackedHashSeed,
|
|
90
91
|
Ownable,
|
|
91
|
-
IGenArt721CoreContractV3
|
|
92
|
+
IGenArt721CoreContractV3,
|
|
93
|
+
IGenArt721CoreContractExposesHashSeed
|
|
92
94
|
{
|
|
93
|
-
using
|
|
94
|
-
using BytecodeStorage for address;
|
|
95
|
+
using BytecodeStorageWriter for string;
|
|
95
96
|
using Bytes32Strings for bytes32;
|
|
96
97
|
using Strings for uint256;
|
|
97
98
|
using Strings for address;
|
|
@@ -180,7 +181,7 @@ contract GenArt721CoreV3_Explorations is
|
|
|
180
181
|
bool paused;
|
|
181
182
|
string name;
|
|
182
183
|
string artist;
|
|
183
|
-
|
|
184
|
+
address descriptionAddress;
|
|
184
185
|
string website;
|
|
185
186
|
string license;
|
|
186
187
|
string projectBaseURI;
|
|
@@ -237,7 +238,7 @@ contract GenArt721CoreV3_Explorations is
|
|
|
237
238
|
/// version & type of this core contract
|
|
238
239
|
/// coreVersion is updated from Flagship V3 core due to minor changes
|
|
239
240
|
/// implemented in the Explorations version of the contract.
|
|
240
|
-
string public constant coreVersion = "v3.
|
|
241
|
+
string public constant coreVersion = "v3.2.3";
|
|
241
242
|
/// coreType remains consistent with flagship V3 core because external &
|
|
242
243
|
/// public functions used for indexing are unchanged.
|
|
243
244
|
string public constant coreType = "GenArt721CoreV3";
|
|
@@ -949,6 +950,13 @@ contract GenArt721CoreV3_Explorations is
|
|
|
949
950
|
/**
|
|
950
951
|
* @notice Updates description of project `_projectId`.
|
|
951
952
|
* Only artist may call when unlocked, only admin may call when locked.
|
|
953
|
+
* Note: The BytecodeStorage library is used to store the description to
|
|
954
|
+
* reduce initial upload cost, however, even minor edits will require an
|
|
955
|
+
* expensive, entirely new bytecode storage contract to be deployed instead
|
|
956
|
+
* of relatively cheap updates to already-warm storage slots. This results
|
|
957
|
+
* in an increased gas cost for minor edits to the description after the
|
|
958
|
+
* initial upload, but an overall decrease in gas cost for projects with
|
|
959
|
+
* less than ~3-5 edits (depending on the length of the description).
|
|
952
960
|
* @param _projectId Project ID.
|
|
953
961
|
* @param _projectDescription New project description.
|
|
954
962
|
*/
|
|
@@ -968,7 +976,10 @@ contract GenArt721CoreV3_Explorations is
|
|
|
968
976
|
"Only artist when unlocked, owner when locked"
|
|
969
977
|
);
|
|
970
978
|
// effects
|
|
971
|
-
|
|
979
|
+
// store description in contract bytecode, replacing reference address from
|
|
980
|
+
// the old storage description with the newly created one
|
|
981
|
+
projects[_projectId].descriptionAddress = _projectDescription
|
|
982
|
+
.writeToBytecode();
|
|
972
983
|
emit ProjectUpdated(_projectId, FIELD_PROJECT_DESCRIPTION);
|
|
973
984
|
}
|
|
974
985
|
|
|
@@ -1076,18 +1087,8 @@ contract GenArt721CoreV3_Explorations is
|
|
|
1076
1087
|
_onlyNonEmptyString(_script);
|
|
1077
1088
|
Project storage project = projects[_projectId];
|
|
1078
1089
|
require(_scriptId < project.scriptCount, "scriptId out of range");
|
|
1079
|
-
// purge old contract bytecode contract from the blockchain state
|
|
1080
|
-
// note: Although this does reduce usage of Ethereum state, it does not
|
|
1081
|
-
// reduce the gas costs of removal transactions. We believe this is the
|
|
1082
|
-
// best behavior at the time of writing, and do not expect this to
|
|
1083
|
-
// result in any breaking changes in the future. All current proposals
|
|
1084
|
-
// to change the self-destruct opcode are backwards compatible, but may
|
|
1085
|
-
// result in not removing the bytecode from the blockchain state. This
|
|
1086
|
-
// implementation is compatible with that architecture, as it does not
|
|
1087
|
-
// rely on the bytecode being removed from the blockchain state.
|
|
1088
|
-
project.scriptBytecodeAddresses[_scriptId].purgeBytecode();
|
|
1089
1090
|
// store script in contract bytecode, replacing reference address from
|
|
1090
|
-
// the
|
|
1091
|
+
// the old storage contract with the newly created one
|
|
1091
1092
|
project.scriptBytecodeAddresses[_scriptId] = _script.writeToBytecode();
|
|
1092
1093
|
emit ProjectUpdated(_projectId, FIELD_PROJECT_SCRIPT);
|
|
1093
1094
|
}
|
|
@@ -1104,19 +1105,7 @@ contract GenArt721CoreV3_Explorations is
|
|
|
1104
1105
|
);
|
|
1105
1106
|
Project storage project = projects[_projectId];
|
|
1106
1107
|
require(project.scriptCount > 0, "there are no scripts to remove");
|
|
1107
|
-
//
|
|
1108
|
-
// note: Although this does reduce usage of Ethereum state, it does not
|
|
1109
|
-
// reduce the gas costs of removal transactions. We believe this is the
|
|
1110
|
-
// best behavior at the time of writing, and do not expect this to
|
|
1111
|
-
// result in any breaking changes in the future. All current proposals
|
|
1112
|
-
// to change the self-destruct opcode are backwards compatible, but may
|
|
1113
|
-
// result in not removing the bytecode from the blockchain state. This
|
|
1114
|
-
// implementation is compatible with that architecture, as it does not
|
|
1115
|
-
// rely on the bytecode being removed from the blockchain state.
|
|
1116
|
-
project
|
|
1117
|
-
.scriptBytecodeAddresses[project.scriptCount - 1]
|
|
1118
|
-
.purgeBytecode();
|
|
1119
|
-
// delete reference to contract address that no longer exists
|
|
1108
|
+
// delete reference to old storage contract address
|
|
1120
1109
|
delete project.scriptBytecodeAddresses[project.scriptCount - 1];
|
|
1121
1110
|
unchecked {
|
|
1122
1111
|
project.scriptCount = project.scriptCount - 1;
|
|
@@ -1253,6 +1242,20 @@ contract GenArt721CoreV3_Explorations is
|
|
|
1253
1242
|
return keccak256(abi.encode(_hashSeed));
|
|
1254
1243
|
}
|
|
1255
1244
|
|
|
1245
|
+
/**
|
|
1246
|
+
* @notice Returns token hash **seed** for token ID `_tokenId`. Returns
|
|
1247
|
+
* null if hash seed has not been set. The hash seed id the bytes12 value
|
|
1248
|
+
* which is hashed to produce the token hash.
|
|
1249
|
+
* @param _tokenId Token ID to be queried.
|
|
1250
|
+
* @return bytes12 Token hash seed.
|
|
1251
|
+
* @dev token hash seed is keccak256 hashed to give the token hash
|
|
1252
|
+
*/
|
|
1253
|
+
function tokenIdToHashSeed(
|
|
1254
|
+
uint256 _tokenId
|
|
1255
|
+
) external view returns (bytes12) {
|
|
1256
|
+
return _ownersAndHashSeeds[_tokenId].hashSeed;
|
|
1257
|
+
}
|
|
1258
|
+
|
|
1256
1259
|
/**
|
|
1257
1260
|
* @notice View function returning Art Blocks portion of primary sales, in
|
|
1258
1261
|
* percent.
|
|
@@ -1367,7 +1370,12 @@ contract GenArt721CoreV3_Explorations is
|
|
|
1367
1370
|
Project storage project = projects[_projectId];
|
|
1368
1371
|
projectName = project.name;
|
|
1369
1372
|
artist = project.artist;
|
|
1370
|
-
|
|
1373
|
+
address projectDescriptionBytecodeAddress = project.descriptionAddress;
|
|
1374
|
+
if (projectDescriptionBytecodeAddress == address(0)) {
|
|
1375
|
+
description = "";
|
|
1376
|
+
} else {
|
|
1377
|
+
description = _readFromBytecode(projectDescriptionBytecodeAddress);
|
|
1378
|
+
}
|
|
1371
1379
|
website = project.website;
|
|
1372
1380
|
license = project.license;
|
|
1373
1381
|
}
|
|
@@ -1505,7 +1513,7 @@ contract GenArt721CoreV3_Explorations is
|
|
|
1505
1513
|
if (_index >= project.scriptCount) {
|
|
1506
1514
|
return "";
|
|
1507
1515
|
}
|
|
1508
|
-
return project.scriptBytecodeAddresses[_index]
|
|
1516
|
+
return _readFromBytecode(project.scriptBytecodeAddresses[_index]);
|
|
1509
1517
|
}
|
|
1510
1518
|
|
|
1511
1519
|
/**
|
|
@@ -1957,4 +1965,14 @@ contract GenArt721CoreV3_Explorations is
|
|
|
1957
1965
|
(block.timestamp - projectCompletedTimestamp <
|
|
1958
1966
|
FOUR_WEEKS_IN_SECONDS);
|
|
1959
1967
|
}
|
|
1968
|
+
|
|
1969
|
+
/**
|
|
1970
|
+
* Helper for calling `BytecodeStorageReader` external library reader method,
|
|
1971
|
+
* added for bytecode size reduction purposes.
|
|
1972
|
+
*/
|
|
1973
|
+
function _readFromBytecode(
|
|
1974
|
+
address _address
|
|
1975
|
+
) internal view returns (string memory) {
|
|
1976
|
+
return BytecodeStorageReader.readFromBytecode(_address);
|
|
1977
|
+
}
|
|
1960
1978
|
}
|
|
@@ -0,0 +1,62 @@
|
|
|
1
|
+
// SPDX-License-Identifier: LGPL-3.0-only
|
|
2
|
+
// Creatd By: Art Blocks Inc.
|
|
3
|
+
|
|
4
|
+
pragma solidity ^0.8.0;
|
|
5
|
+
|
|
6
|
+
/**
|
|
7
|
+
* @title Art Blocks Script Storage Library (Reader)
|
|
8
|
+
* @notice This interface defines the expected read functions for the Art Blocks Script Storage Library (Reader).
|
|
9
|
+
*/
|
|
10
|
+
interface IBytecodeStorageReader {
|
|
11
|
+
/**
|
|
12
|
+
* @notice Read a string from contract bytecode
|
|
13
|
+
* @param _address address of deployed contract with bytecode stored in the V0 or V1 format
|
|
14
|
+
* @return data string read from contract bytecode
|
|
15
|
+
* @dev This function performs input validation that the contract to read is in an expected format
|
|
16
|
+
*/
|
|
17
|
+
function readFromBytecode(
|
|
18
|
+
address _address
|
|
19
|
+
) external view returns (string memory data);
|
|
20
|
+
|
|
21
|
+
/**
|
|
22
|
+
* @notice Read the bytes from contract bytecode that was written to the EVM using SSTORE2
|
|
23
|
+
* @param _address address of deployed contract with bytecode stored in the SSTORE2 format
|
|
24
|
+
* @return data bytes read from contract bytecode
|
|
25
|
+
* @dev This function performs no input validation on the provided contract,
|
|
26
|
+
* other than that there is content to read (but not that its a "storage contract")
|
|
27
|
+
*/
|
|
28
|
+
function readBytesFromSSTORE2Bytecode(
|
|
29
|
+
address _address
|
|
30
|
+
) external view returns (bytes memory data);
|
|
31
|
+
|
|
32
|
+
/**
|
|
33
|
+
* @notice Read the bytes from contract bytecode, with an explicitly provided starting offset
|
|
34
|
+
* @param _address address of deployed contract with bytecode stored in the V0 or V1 format
|
|
35
|
+
* @param _offset offset to read from in contract bytecode, explicitly provided (not calculated)
|
|
36
|
+
* @return data bytes read from contract bytecode
|
|
37
|
+
* @dev This function performs no input validation on the provided contract,
|
|
38
|
+
* other than that there is content to read (but not that its a "storage contract")
|
|
39
|
+
*/
|
|
40
|
+
function readBytesFromBytecode(
|
|
41
|
+
address _address,
|
|
42
|
+
uint256 _offset
|
|
43
|
+
) external view returns (bytes memory data);
|
|
44
|
+
|
|
45
|
+
/**
|
|
46
|
+
* @notice Get address for deployer for given contract bytecode
|
|
47
|
+
* @param _address address of deployed contract with bytecode stored in the V0 or V1 format
|
|
48
|
+
* @return writerAddress address read from contract bytecode
|
|
49
|
+
*/
|
|
50
|
+
function getWriterAddressForBytecode(
|
|
51
|
+
address _address
|
|
52
|
+
) external view returns (address);
|
|
53
|
+
|
|
54
|
+
/**
|
|
55
|
+
* @notice Get version for given contract bytecode
|
|
56
|
+
* @param _address address of deployed contract with bytecode stored in the V0 or V1 format
|
|
57
|
+
* @return version version read from contract bytecode
|
|
58
|
+
*/
|
|
59
|
+
function getLibraryVersionForBytecode(
|
|
60
|
+
address _address
|
|
61
|
+
) external view returns (bytes32);
|
|
62
|
+
}
|