@artblocks/contracts 1.0.3 → 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 +32 -25
- 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 +125 -17
- package/artifacts/contracts/GenArt721CoreV3.sol/GenArt721CoreV3.json +6 -6
- 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/V2/GenArt721CoreV2_ENGINE_FLEX.sol/GenArt721CoreV2_ENGINE_FLEX.json +2 -2
- package/artifacts/contracts/engine/V2/GenArt721CoreV2_PBAB.sol/GenArt721CoreV2_PBAB.json +2 -2
- package/artifacts/contracts/engine/V2/GenArt721CoreV2_PRTNR.sol/GenArt721CoreV2_PRTNR.json +2 -2
- package/artifacts/contracts/engine/V2/GenArt721MinterBurner_PBAB.sol/GenArt721MinterBurner_PBAB.json +2 -2
- package/artifacts/contracts/engine/V2/GenArt721MinterDAExp_PBAB.sol/GenArt721MinterDAExp_PBAB.json +2 -2
- package/artifacts/contracts/engine/V2/GenArt721Minter_PBAB.sol/GenArt721Minter_PBAB.json +2 -2
- package/artifacts/contracts/engine/V3/GenArt721CoreV3_Engine.sol/GenArt721CoreV3_Engine.json +6 -6
- package/artifacts/contracts/engine/V3/GenArt721CoreV3_Engine_Flex.sol/GenArt721CoreV3_Engine_Flex.json +6 -6
- package/artifacts/contracts/engine/V3/forks/GenArt721CoreV3_Engine_Flex_PROOF.sol/GenArt721CoreV3_Engine_Flex_PROOF.json +4 -4
- package/artifacts/contracts/engine/V3/forks/PROHIBITION/AdminACLV0_PROHIBITION.sol/AdminACLV0_PROHIBITION.json +2 -2
- package/artifacts/contracts/engine/V3/forks/PROHIBITION/GenArt721CoreV3_Engine_Flex_PROHIBITION.sol/GenArt721CoreV3_Engine_Flex_PROHIBITION.json +6 -6
- package/artifacts/contracts/engine-registry/CoreRegistryV1.sol/CoreRegistryV1.json +2 -2
- package/artifacts/contracts/engine-registry/EngineRegistryV0.sol/EngineRegistryV0.json +2 -2
- package/artifacts/contracts/explorations/GenArt721CoreV3_Explorations.sol/GenArt721CoreV3_Explorations.json +6 -6
- 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/{0.8.x → v0.8.x}/IBytecodeStorageReader.sol/IBytecodeStorageReader.json +1 -1
- package/artifacts/contracts/interfaces/{0.8.x → v0.8.x}/ICoreRegistryV1.sol/ICoreRegistryV1.json +1 -1
- 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 +1 -1
- 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/{0.8.x → v0.8.x}/IGenArt721CoreContractExposesHashSeed.sol/IGenArt721CoreContractExposesHashSeed.json +1 -1
- 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 +1 -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 +1 -1
- package/artifacts/contracts/interfaces/{0.8.x → v0.8.x}/IGenArt721CoreContractV3_Engine.sol/IGenArt721CoreContractV3_Engine.json +1 -1
- package/artifacts/contracts/interfaces/{0.8.x → v0.8.x}/IGenArt721CoreContractV3_Engine_Flex.sol/IGenArt721CoreContractV3_Engine_Flex.json +1 -1
- 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/{0.8.x → v0.8.x}/IMinterFilterV1.sol/IMinterFilterV1.json +86 -1
- 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/{0.8.x → v0.8.x}/IPseudorandomAtomic.sol/IPseudorandomAtomic.json +1 -1
- 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/{0.8.x → v0.8.x}/IRandomizer_V3CoreBase.sol/IRandomizer_V3CoreBase.json +1 -1
- 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/{0.8.x → v0.8.x}/ISharedRandomizerV0.sol/ISharedRandomizerV0.json +42 -26
- 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/{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 → v0.8.x}/BytecodeStorageV0.sol/BytecodeStorage.json +3 -3
- package/artifacts/contracts/libs/{0.8.x → v0.8.x}/BytecodeStorageV1.sol/BytecodeStorageReader.json +3 -3
- package/artifacts/contracts/libs/{0.8.x → v0.8.x}/BytecodeStorageV1.sol/BytecodeStorageWriter.json +3 -3
- 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/{0.8.x → v0.8.x}/SSTORE2.sol/SSTORE2.json +3 -3
- 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 +58 -2
- 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/MinterPolyptychV0.json +2 -2
- package/artifacts/contracts/minter-suite/Minters/MinterSEAV0.sol/MinterSEAV0.json +2 -2
- 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/BytecodeV0TextCR_DMock.sol/BytecodeV0TextCR_DMock.json +2 -2
- package/artifacts/contracts/mock/BytecodeV1LibCallsMock.sol/BytecodeV1LibCallsMock.json +2 -2
- package/artifacts/contracts/mock/BytecodeV1TextCR_DMock.sol/BytecodeV1TextCR_DMock.json +4 -4
- package/artifacts/contracts/mock/DeadReceiverBidderMock.sol/DeadReceiverBidderMock.json +25 -2
- package/artifacts/contracts/mock/DummySharedMinter.sol/DummySharedMinter.json +2 -2
- package/artifacts/contracts/mock/ERC20Mock.sol/ERC20Mock.json +28 -2
- package/artifacts/contracts/mock/GenArt721CoreV3_Engine_IncorrectCoreType.sol/GenArt721CoreV3_Engine_IncorrectCoreType.json +4 -4
- package/artifacts/contracts/mock/MockAdminACLV0.sol/MockAdminACLV0Events.json +2 -2
- package/artifacts/contracts/mock/MockAdminACLV0_PROHIBITION.sol/MockAdminACLV0Events_PROHIBITION.json +2 -2
- package/artifacts/contracts/mock/OriginRegisterMock.sol/OriginRegisterMock.json +2 -2
- 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 +2 -2
- package/artifacts/contracts/randomizer/deprecated/BasicRandomizer.sol/BasicRandomizer.json +2 -2
- package/artifacts/contracts/randomizer/deprecated/PolyptychRandomizerV0.sol/BasicPolyptychRandomizerV0.json +2 -2
- package/artifacts/contracts/randomizer/deprecated/RandomizerV2.sol/BasicRandomizerV2.json +2 -2
- package/artifacts/contracts/randomizer/primitive/PseudorandomAtomicBasic.sol/PseudorandomAtomic.json +2 -2
- package/artifacts/contracts/randomizer/shared/SharedRandomizerV0.sol/SharedRandomizerV0.json +48 -32
- 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 +1 -1
- package/contracts/AdminACLV1.sol +1 -1
- package/contracts/DependencyRegistryV0.sol +216 -107
- package/contracts/GenArt721CoreV3.sol +27 -12
- 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 +3 -3
- package/contracts/archive/minter-suite/Minters/MinterDAExp/MinterDAExpV3.sol +3 -3
- package/contracts/archive/minter-suite/Minters/MinterDAExpSettlement/MinterDAExpSettlementV0.sol +3 -3
- package/contracts/archive/minter-suite/Minters/MinterDAExpSettlement/MinterDAExpSettlementV1.sol +3 -3
- 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 +3 -3
- package/contracts/archive/minter-suite/Minters/MinterDALin/MinterDALinV3.sol +3 -3
- package/contracts/archive/minter-suite/Minters/MinterHolder/MinterHolderV0.sol +3 -3
- package/contracts/archive/minter-suite/Minters/MinterHolder/MinterHolderV1.sol +3 -3
- package/contracts/archive/minter-suite/Minters/MinterHolder/MinterHolderV2.sol +4 -4
- package/contracts/archive/minter-suite/Minters/MinterHolder/MinterHolderV3.sol +4 -4
- package/contracts/archive/minter-suite/Minters/MinterMerkle/MinterMerkleV0.sol +3 -3
- package/contracts/archive/minter-suite/Minters/MinterMerkle/MinterMerkleV1.sol +3 -3
- package/contracts/archive/minter-suite/Minters/MinterMerkle/MinterMerkleV2.sol +4 -4
- package/contracts/archive/minter-suite/Minters/MinterMerkle/MinterMerkleV3.sol +4 -4
- package/contracts/archive/minter-suite/Minters/MinterMerkle/MinterMerkleV4.sol +4 -4
- 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 +3 -3
- package/contracts/archive/minter-suite/Minters/MinterSetPrice/MinterSetPriceV3.sol +3 -3
- 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 +3 -3
- package/contracts/archive/minter-suite/Minters/MinterSetPriceERC20/MinterSetPriceERC20V3.sol +3 -3
- package/contracts/engine/V2/GenArt721CoreV2_ENGINE_FLEX.sol +2 -2
- package/contracts/engine/V2/GenArt721CoreV2_PBAB.sol +2 -2
- package/contracts/engine/V2/GenArt721CoreV2_PRTNR.sol +3 -3
- package/contracts/engine/V2/GenArt721MinterBurner_PBAB.sol +2 -2
- package/contracts/engine/V2/GenArt721MinterDAExp_PBAB.sol +1 -1
- package/contracts/engine/V2/GenArt721Minter_PBAB.sol +2 -2
- package/contracts/engine/V3/GenArt721CoreV3_Engine.sol +29 -14
- package/contracts/engine/V3/GenArt721CoreV3_Engine_Flex.sol +29 -14
- package/contracts/engine/V3/forks/GenArt721CoreV3_Engine_Flex_PROOF.sol +9 -9
- package/contracts/engine/V3/forks/PROHIBITION/AdminACLV0_PROHIBITION.sol +1 -1
- package/contracts/engine/V3/forks/PROHIBITION/GenArt721CoreV3_Engine_Flex_PROHIBITION.sol +20 -15
- package/contracts/engine/V3/forks/PROHIBITION/interfaces/IAdminACLV0_PROHIBITION.sol +1 -1
- package/contracts/engine/V3/forks/PROHIBITION/interfaces/IGenArt721CoreContractV3_Engine_Flex_PROHIBITION.sol +1 -1
- package/contracts/engine-registry/CoreRegistryV1.sol +1 -1
- package/contracts/engine-registry/EngineRegistryV0.sol +1 -1
- package/contracts/explorations/GenArt721CoreV3_Explorations.sol +27 -12
- package/contracts/interfaces/{0.8.x → v0.8.x}/IDependencyRegistryV0.sol +2 -2
- package/contracts/interfaces/v0.8.x/IGenArt721CoreContractV3WithSharedRandomizer.sol +23 -0
- package/contracts/interfaces/{0.8.x → v0.8.x}/IMinterFilterV1.sol +26 -0
- 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/{0.8.x → v0.8.x}/ISharedRandomizerV0.sol +42 -24
- package/contracts/legacy/GenArt721CoreV1.sol +2 -2
- package/contracts/legacy/GenArt721LegacyMinter.sol +5 -5
- package/contracts/libs/integration-refs/delegation-registry/DelegationRegistry.sol +1 -1
- 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/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 +5 -5
- package/contracts/minter-suite/MinterFilter/MinterFilterV2.sol +83 -9
- 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 +3 -3
- package/contracts/minter-suite/Minters/MinterDAExpSettlementV3.sol +1126 -0
- package/contracts/minter-suite/Minters/MinterDAExpV4.sol +3 -3
- 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 +3 -3
- package/contracts/minter-suite/Minters/MinterDALinV5.sol +591 -0
- package/contracts/minter-suite/Minters/MinterHolderV4.sol +4 -4
- package/contracts/minter-suite/Minters/MinterMerkleV5.sol +4 -4
- package/contracts/minter-suite/Minters/MinterPolyptychV0.sol +6 -6
- package/contracts/minter-suite/Minters/MinterSEAV0.sol +3 -3
- package/contracts/minter-suite/Minters/MinterSEAV1.sol +1190 -0
- package/contracts/minter-suite/Minters/MinterSetPriceERC20V4.sol +5 -5
- 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 +3 -3
- package/contracts/minter-suite/Minters/MinterSetPriceV5.sol +461 -0
- package/contracts/mock/BytecodeV0TextCR_DMock.sol +1 -1
- package/contracts/mock/BytecodeV1LibCallsMock.sol +1 -1
- package/contracts/mock/BytecodeV1TextCR_DMock.sol +1 -1
- package/contracts/mock/DeadReceiverBidderMock.sol +15 -0
- package/contracts/mock/DummySharedMinter.sol +2 -2
- package/contracts/mock/ERC20Mock.sol +16 -0
- package/contracts/mock/GenArt721CoreV3_Engine_IncorrectCoreType.sol +9 -9
- package/contracts/mock/MockAdminACLV0.sol +1 -1
- package/contracts/mock/MockAdminACLV0_PROHIBITION.sol +1 -1
- package/contracts/mock/OriginRegisterMock.sol +1 -1
- 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 +1 -1
- package/contracts/randomizer/deprecated/BasicRandomizer.sol +1 -1
- package/contracts/randomizer/deprecated/PolyptychRandomizerV0.sol +2 -2
- package/contracts/randomizer/deprecated/RandomizerV2.sol +2 -2
- package/contracts/randomizer/primitive/PseudorandomAtomicBasic.sol +1 -1
- package/contracts/randomizer/shared/SharedRandomizerV0.sol +91 -76
- package/contracts/royalty-registry/GenArt721RoyaltyOverride.sol +2 -2
- package/contracts/royalty-registry/GenArt721RoyaltyOverride_PBAB.sol +2 -2
- package/package.json +46 -31
- package/LICENSE +0 -165
- package/contracts/interfaces/0.8.x/IRandomizer_V3CoreBase.sol +0 -10
- /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}/IBytecodeStorageReader.sol +0 -0
- /package/contracts/interfaces/{0.8.x → v0.8.x}/ICoreRegistryV1.sol +0 -0
- /package/contracts/interfaces/{0.8.x → v0.8.x}/IDelegationRegistry.sol +0 -0
- /package/contracts/interfaces/{0.8.x → v0.8.x}/IDependencyRegistryCompatibleV0.sol +0 -0
- /package/contracts/interfaces/{0.8.x → v0.8.x}/IEngineRegistryV0.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}/IFilteredMinterSEAV0.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}/IGenArt721CoreContractExposesHashSeed.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_Base.sol +0 -0
- /package/contracts/interfaces/{0.8.x → v0.8.x}/IGenArt721CoreContractV3_Engine.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}/IPseudorandomAtomic.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}/IRandomizerPolyptychV0.sol +0 -0
- /package/contracts/interfaces/{0.8.x → v0.8.x}/IRandomizerV2.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 → v0.8.x}/BytecodeStorageV0.sol +0 -0
- /package/contracts/libs/{0.8.x → v0.8.x}/BytecodeStorageV1.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
- /package/contracts/libs/{0.8.x → v0.8.x}/SSTORE2.sol +0 -0
|
@@ -0,0 +1,197 @@
|
|
|
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/IGenArt721CoreContractV3_Base.sol";
|
|
7
|
+
import "../../interfaces/v0.8.x/IMinterFilterV1.sol";
|
|
8
|
+
|
|
9
|
+
/**
|
|
10
|
+
* @title Art Blocks Authorization Minter Library
|
|
11
|
+
* @notice This library contains helper functions that may be used contracts to
|
|
12
|
+
* check authorization for performing operations in the Art Blocks V3 core
|
|
13
|
+
* contract ecosystem.
|
|
14
|
+
* @author Art Blocks Inc.
|
|
15
|
+
*/
|
|
16
|
+
|
|
17
|
+
library AuthLib {
|
|
18
|
+
/**
|
|
19
|
+
* function to restrict access to only AdminACL allowed calls, where
|
|
20
|
+
* AdminACL is the admin of an IMinterFilterV1.
|
|
21
|
+
* Reverts if not allowed.
|
|
22
|
+
* @param _minterFilterAddress address of the minter filter to be checked,
|
|
23
|
+
* should implement IMinterFilterV1
|
|
24
|
+
* @param _sender address of the caller
|
|
25
|
+
* @param _contract address of the contract being called
|
|
26
|
+
* @param _selector selector of the function being called
|
|
27
|
+
*/
|
|
28
|
+
function onlyMinterFilterAdminACL(
|
|
29
|
+
address _minterFilterAddress,
|
|
30
|
+
address _sender,
|
|
31
|
+
address _contract,
|
|
32
|
+
bytes4 _selector
|
|
33
|
+
) internal {
|
|
34
|
+
require(
|
|
35
|
+
_minterFilterAdminACLAllowed({
|
|
36
|
+
_minterFilterAddress: _minterFilterAddress,
|
|
37
|
+
_sender: _sender,
|
|
38
|
+
_contract: _contract,
|
|
39
|
+
_selector: _selector
|
|
40
|
+
}),
|
|
41
|
+
"Only MinterFilter AdminACL"
|
|
42
|
+
);
|
|
43
|
+
}
|
|
44
|
+
|
|
45
|
+
/**
|
|
46
|
+
* Function to restrict access to only AdminACL allowed calls, where
|
|
47
|
+
* AdminACL is the admin of a core contract at `_coreContract`.
|
|
48
|
+
* Reverts if not allowed.
|
|
49
|
+
* @param _coreContract address of the core contract to be checked
|
|
50
|
+
* @param _sender address of the caller
|
|
51
|
+
* @param _contract address of the contract being called
|
|
52
|
+
* @param _selector selector of the function being called
|
|
53
|
+
*/
|
|
54
|
+
function onlyCoreAdminACL(
|
|
55
|
+
address _coreContract,
|
|
56
|
+
address _sender,
|
|
57
|
+
address _contract,
|
|
58
|
+
bytes4 _selector
|
|
59
|
+
) internal {
|
|
60
|
+
require(
|
|
61
|
+
_coreAdminACLAllowed({
|
|
62
|
+
_coreContract: _coreContract,
|
|
63
|
+
_sender: _sender,
|
|
64
|
+
_contract: _contract,
|
|
65
|
+
_selector: _selector
|
|
66
|
+
}),
|
|
67
|
+
"Only Core AdminACL allowed"
|
|
68
|
+
);
|
|
69
|
+
}
|
|
70
|
+
|
|
71
|
+
/**
|
|
72
|
+
* @notice Throws if `_sender` is any account other than the artist of the
|
|
73
|
+
* specified project `_projectId` on core contract `_coreContract`.
|
|
74
|
+
* Requirements: `msg.sender` must be the artist associated with
|
|
75
|
+
* `_projectId` on `_coreContract`.
|
|
76
|
+
* @param _projectId The ID of the project being checked.
|
|
77
|
+
* @param _coreContract The address of the GenArt721CoreContractV3_Base
|
|
78
|
+
* contract.
|
|
79
|
+
* @param _sender Wallet to check. Typically, the address of the caller.
|
|
80
|
+
*/
|
|
81
|
+
function onlyArtist(
|
|
82
|
+
uint256 _projectId,
|
|
83
|
+
address _coreContract,
|
|
84
|
+
address _sender
|
|
85
|
+
) internal view {
|
|
86
|
+
require(
|
|
87
|
+
_senderIsArtist({
|
|
88
|
+
_projectId: _projectId,
|
|
89
|
+
_coreContract: _coreContract,
|
|
90
|
+
_sender: _sender
|
|
91
|
+
}),
|
|
92
|
+
"Only Artist"
|
|
93
|
+
);
|
|
94
|
+
}
|
|
95
|
+
|
|
96
|
+
/**
|
|
97
|
+
* function to restrict access to only the artist of a project, or AdminACL
|
|
98
|
+
* allowed calls, where AdminACL is the admin of a core contract at
|
|
99
|
+
* `_coreContract`.
|
|
100
|
+
* @param _projectId id of the project
|
|
101
|
+
* @param _coreContract address of the core contract to be checked
|
|
102
|
+
* @param _sender address of the caller
|
|
103
|
+
* @param _contract address of the contract being called
|
|
104
|
+
* @param _selector selector of the function being called
|
|
105
|
+
*/
|
|
106
|
+
function onlyCoreAdminACLOrArtist(
|
|
107
|
+
uint256 _projectId,
|
|
108
|
+
address _coreContract,
|
|
109
|
+
address _sender,
|
|
110
|
+
address _contract,
|
|
111
|
+
bytes4 _selector
|
|
112
|
+
) internal {
|
|
113
|
+
require(
|
|
114
|
+
_senderIsArtist({
|
|
115
|
+
_projectId: _projectId,
|
|
116
|
+
_coreContract: _coreContract,
|
|
117
|
+
_sender: _sender
|
|
118
|
+
}) ||
|
|
119
|
+
_coreAdminACLAllowed({
|
|
120
|
+
_coreContract: _coreContract,
|
|
121
|
+
_sender: _sender,
|
|
122
|
+
_contract: _contract,
|
|
123
|
+
_selector: _selector
|
|
124
|
+
}),
|
|
125
|
+
"Only Artist or Core Admin ACL"
|
|
126
|
+
);
|
|
127
|
+
}
|
|
128
|
+
|
|
129
|
+
// ------------------------------------------------------------------------
|
|
130
|
+
// Private functions used internally by this library
|
|
131
|
+
// ------------------------------------------------------------------------
|
|
132
|
+
|
|
133
|
+
/**
|
|
134
|
+
* Private function that returns if minter filter contract's AdminACL
|
|
135
|
+
* allows `_sender` to call function with selector `_selector` on contract
|
|
136
|
+
* `_contract`.
|
|
137
|
+
* @param _minterFilterAddress address of the minter filter to be checked.
|
|
138
|
+
* Should implement IMinterFilterV1.
|
|
139
|
+
* @param _sender address of the caller
|
|
140
|
+
* @param _contract address of the contract being called
|
|
141
|
+
* @param _selector selector of the function being called
|
|
142
|
+
*/
|
|
143
|
+
function _minterFilterAdminACLAllowed(
|
|
144
|
+
address _minterFilterAddress,
|
|
145
|
+
address _sender,
|
|
146
|
+
address _contract,
|
|
147
|
+
bytes4 _selector
|
|
148
|
+
) private returns (bool) {
|
|
149
|
+
return
|
|
150
|
+
IMinterFilterV1(_minterFilterAddress).adminACLAllowed({
|
|
151
|
+
_sender: _sender,
|
|
152
|
+
_contract: _contract,
|
|
153
|
+
_selector: _selector
|
|
154
|
+
});
|
|
155
|
+
}
|
|
156
|
+
|
|
157
|
+
/**
|
|
158
|
+
* Private function that returns if core contract's AdminACL allows
|
|
159
|
+
* `_sender` to call function with selector `_selector` on contract
|
|
160
|
+
* `_contract`.
|
|
161
|
+
* @param _coreContract address of the core contract to be checked
|
|
162
|
+
* @param _sender address of the caller
|
|
163
|
+
* @param _contract address of the contract being called
|
|
164
|
+
* @param _selector selector of the function being called
|
|
165
|
+
*/
|
|
166
|
+
function _coreAdminACLAllowed(
|
|
167
|
+
address _coreContract,
|
|
168
|
+
address _sender,
|
|
169
|
+
address _contract,
|
|
170
|
+
bytes4 _selector
|
|
171
|
+
) private returns (bool) {
|
|
172
|
+
return
|
|
173
|
+
IGenArt721CoreContractV3_Base(_coreContract).adminACLAllowed({
|
|
174
|
+
_sender: _sender,
|
|
175
|
+
_contract: _contract,
|
|
176
|
+
_selector: _selector
|
|
177
|
+
});
|
|
178
|
+
}
|
|
179
|
+
|
|
180
|
+
/**
|
|
181
|
+
* Private function that returns if `_sender` is the artist of `_projectId`
|
|
182
|
+
* on `_coreContract`.
|
|
183
|
+
* @param _projectId project ID to check
|
|
184
|
+
* @param _coreContract core contract to check
|
|
185
|
+
* @param _sender wallet to check
|
|
186
|
+
*/
|
|
187
|
+
function _senderIsArtist(
|
|
188
|
+
uint256 _projectId,
|
|
189
|
+
address _coreContract,
|
|
190
|
+
address _sender
|
|
191
|
+
) private view returns (bool senderIsArtist) {
|
|
192
|
+
return
|
|
193
|
+
_sender ==
|
|
194
|
+
IGenArt721CoreContractV3_Base(_coreContract)
|
|
195
|
+
.projectIdToArtistAddress(_projectId);
|
|
196
|
+
}
|
|
197
|
+
}
|
|
@@ -0,0 +1,125 @@
|
|
|
1
|
+
// SPDX-License-Identifier: LGPL-3.0-only
|
|
2
|
+
// Created By: Art Blocks Inc.
|
|
3
|
+
|
|
4
|
+
pragma solidity ^0.8.0;
|
|
5
|
+
|
|
6
|
+
/**
|
|
7
|
+
* @title Art Blocks Dutch Auction (exponential price curve) Library
|
|
8
|
+
* @notice This library is designed to implement logic and checks for Art
|
|
9
|
+
* Blocks projects using an exponential Dutch auctionprice curve for minting
|
|
10
|
+
* tokens.
|
|
11
|
+
* @author Art Blocks Inc.
|
|
12
|
+
*/
|
|
13
|
+
|
|
14
|
+
library DAExpLib {
|
|
15
|
+
struct DAProjectConfig {
|
|
16
|
+
// @dev max uint40 ~= 1.1e12 sec ~= 34 thousand years
|
|
17
|
+
uint40 timestampStart;
|
|
18
|
+
uint40 priceDecayHalfLifeSeconds;
|
|
19
|
+
// @dev max uint88 ~= 3e26 Wei = ~300 million ETH, which is well above
|
|
20
|
+
// the expected prices of any NFT mint in the foreseeable future.
|
|
21
|
+
uint88 startPrice;
|
|
22
|
+
uint88 basePrice;
|
|
23
|
+
}
|
|
24
|
+
|
|
25
|
+
/**
|
|
26
|
+
* @notice Sets auction details for an exponential-price auction type.
|
|
27
|
+
* @dev The function sets the auction start timestamp, price decay
|
|
28
|
+
* half-life, starting, and base prices for an exponential-price auction.
|
|
29
|
+
* @dev Minter implementations should ensure that any additional guard-
|
|
30
|
+
* rails are properly checked outside of this function. For example, the
|
|
31
|
+
* minter should check that _priceDecayHalfLifeSeconds is greater than the
|
|
32
|
+
* minter's minimum allowable value for price decay half-life (if the
|
|
33
|
+
* minter chooses to include that guard-rail).
|
|
34
|
+
* @param _DAProjectConfig The storage reference to the DAProjectConfig
|
|
35
|
+
* struct.
|
|
36
|
+
* @param _auctionTimestampStart The timestamp when the auction will start.
|
|
37
|
+
* @param _priceDecayHalfLifeSeconds The half-life time for price decay in
|
|
38
|
+
* seconds.
|
|
39
|
+
* @param _startPrice The starting price of the auction.
|
|
40
|
+
* @param _basePrice The base price of the auction.
|
|
41
|
+
* @param _allowReconfigureAfterStart Bool indicating whether the auction
|
|
42
|
+
* can be reconfigured after it has started. This is sometimes useful for
|
|
43
|
+
* minter implementations that want to allow an artist to reconfigure the
|
|
44
|
+
* auction after it has reached minter-local max invocations, for example.
|
|
45
|
+
*/
|
|
46
|
+
function setAuctionDetailsExp(
|
|
47
|
+
DAProjectConfig storage _DAProjectConfig,
|
|
48
|
+
uint40 _auctionTimestampStart,
|
|
49
|
+
uint40 _priceDecayHalfLifeSeconds,
|
|
50
|
+
uint88 _startPrice,
|
|
51
|
+
uint88 _basePrice,
|
|
52
|
+
bool _allowReconfigureAfterStart
|
|
53
|
+
) internal {
|
|
54
|
+
require(
|
|
55
|
+
_DAProjectConfig.timestampStart == 0 || // uninitialized
|
|
56
|
+
block.timestamp < _DAProjectConfig.timestampStart || // auction not yet started
|
|
57
|
+
_allowReconfigureAfterStart, // specifically allowing reconfiguration after start
|
|
58
|
+
"No modifications mid-auction"
|
|
59
|
+
);
|
|
60
|
+
require(
|
|
61
|
+
block.timestamp < _auctionTimestampStart,
|
|
62
|
+
"Only future auctions"
|
|
63
|
+
);
|
|
64
|
+
require(
|
|
65
|
+
_startPrice > _basePrice,
|
|
66
|
+
"Auction start price must be greater than auction end price"
|
|
67
|
+
);
|
|
68
|
+
|
|
69
|
+
// EFFECTS
|
|
70
|
+
_DAProjectConfig.timestampStart = _auctionTimestampStart;
|
|
71
|
+
_DAProjectConfig.priceDecayHalfLifeSeconds = _priceDecayHalfLifeSeconds;
|
|
72
|
+
_DAProjectConfig.startPrice = _startPrice;
|
|
73
|
+
_DAProjectConfig.basePrice = _basePrice;
|
|
74
|
+
}
|
|
75
|
+
|
|
76
|
+
/**
|
|
77
|
+
* @notice Gets price of minting a token given the project's
|
|
78
|
+
* DAProjectConfig.
|
|
79
|
+
* This function reverts if auction has not yet started, or if auction is
|
|
80
|
+
* unconfigured, which is relied upon by certain minter implications for
|
|
81
|
+
* security.
|
|
82
|
+
* @return uint256 current price of token in Wei
|
|
83
|
+
*/
|
|
84
|
+
function getPriceExp(
|
|
85
|
+
DAProjectConfig storage _DAProjectConfig
|
|
86
|
+
) internal view returns (uint256) {
|
|
87
|
+
// move parameters to memory if used more than once
|
|
88
|
+
uint256 _timestampStart = _DAProjectConfig.timestampStart;
|
|
89
|
+
uint256 _priceDecayHalfLifeSeconds = _DAProjectConfig
|
|
90
|
+
.priceDecayHalfLifeSeconds;
|
|
91
|
+
uint256 _basePrice = _DAProjectConfig.basePrice;
|
|
92
|
+
|
|
93
|
+
require(block.timestamp > _timestampStart, "Auction not yet started");
|
|
94
|
+
require(_priceDecayHalfLifeSeconds > 0, "Only configured auctions");
|
|
95
|
+
uint256 decayedPrice = _DAProjectConfig.startPrice;
|
|
96
|
+
uint256 elapsedTimeSeconds;
|
|
97
|
+
unchecked {
|
|
98
|
+
// already checked that block.timestamp > _timestampStart above
|
|
99
|
+
elapsedTimeSeconds = block.timestamp - _timestampStart;
|
|
100
|
+
}
|
|
101
|
+
// Divide by two (via bit-shifting) for the number of entirely completed
|
|
102
|
+
// half-lives that have elapsed since auction start time.
|
|
103
|
+
unchecked {
|
|
104
|
+
// already required _priceDecayHalfLifeSeconds > 0
|
|
105
|
+
decayedPrice >>= elapsedTimeSeconds / _priceDecayHalfLifeSeconds;
|
|
106
|
+
}
|
|
107
|
+
// Perform a linear interpolation between partial half-life points, to
|
|
108
|
+
// approximate the current place on a perfect exponential decay curve.
|
|
109
|
+
unchecked {
|
|
110
|
+
// value of expression is provably always less than decayedPrice,
|
|
111
|
+
// so no underflow is possible when the subtraction assignment
|
|
112
|
+
// operator is used on decayedPrice.
|
|
113
|
+
decayedPrice -=
|
|
114
|
+
(decayedPrice *
|
|
115
|
+
(elapsedTimeSeconds % _priceDecayHalfLifeSeconds)) /
|
|
116
|
+
_priceDecayHalfLifeSeconds /
|
|
117
|
+
2;
|
|
118
|
+
}
|
|
119
|
+
if (decayedPrice < _basePrice) {
|
|
120
|
+
// Price may not decay below stay `basePrice`.
|
|
121
|
+
return _basePrice;
|
|
122
|
+
}
|
|
123
|
+
return decayedPrice;
|
|
124
|
+
}
|
|
125
|
+
}
|
|
@@ -0,0 +1,109 @@
|
|
|
1
|
+
// SPDX-License-Identifier: LGPL-3.0-only
|
|
2
|
+
// Created By: Art Blocks Inc.
|
|
3
|
+
|
|
4
|
+
pragma solidity ^0.8.0;
|
|
5
|
+
|
|
6
|
+
/**
|
|
7
|
+
* @title Art Blocks Dutch Auction (linear price curve) Library
|
|
8
|
+
* @notice This library is designed to implement logic and checks for Art
|
|
9
|
+
* Blocks projects using an exponential Dutch auctionprice curve for minting
|
|
10
|
+
* tokens.
|
|
11
|
+
* @author Art Blocks Inc.
|
|
12
|
+
*/
|
|
13
|
+
|
|
14
|
+
library DALinLib {
|
|
15
|
+
struct DAProjectConfig {
|
|
16
|
+
// @dev max uint40 ~= 1.1e12 sec ~= 34 thousand years
|
|
17
|
+
uint40 timestampStart;
|
|
18
|
+
uint40 timestampEnd;
|
|
19
|
+
// @dev max uint88 ~= 3e26 Wei = ~300 million ETH, which is well above
|
|
20
|
+
// the expected prices of any NFT mint in the foreseeable future.
|
|
21
|
+
uint88 startPrice;
|
|
22
|
+
uint88 basePrice;
|
|
23
|
+
}
|
|
24
|
+
|
|
25
|
+
/**
|
|
26
|
+
* @notice Sets auction details for a linear-price auction type.
|
|
27
|
+
* @dev The function sets the auction start timestamp, auction end
|
|
28
|
+
* timestamp, starting, and base prices for a linear-price auction.
|
|
29
|
+
* @dev Minter implementations should ensure that any additional guard-
|
|
30
|
+
* rails are properly checked outside of this function. For example, the
|
|
31
|
+
* minter should check that auction length is greater than the minter's
|
|
32
|
+
* minimum allowable value (if the minter chooses to include that guard-
|
|
33
|
+
* rail).
|
|
34
|
+
* @param _DAProjectConfig The storage reference to the DAProjectConfig
|
|
35
|
+
* struct.
|
|
36
|
+
* @param _auctionTimestampStart The timestamp when the auction will start.
|
|
37
|
+
* @param _auctionTimestampEnd The timestamp when the auction will end.
|
|
38
|
+
* @param _startPrice The starting price of the auction.
|
|
39
|
+
* @param _basePrice The base price of the auction.
|
|
40
|
+
* @param _allowReconfigureAfterStart Bool indicating whether the auction
|
|
41
|
+
* can be reconfigured after it has started. This is sometimes useful for
|
|
42
|
+
* minter implementations that want to allow an artist to reconfigure the
|
|
43
|
+
* auction after it has reached minter-local max invocations, for example.
|
|
44
|
+
*/
|
|
45
|
+
function setAuctionDetailsLin(
|
|
46
|
+
DAProjectConfig storage _DAProjectConfig,
|
|
47
|
+
uint40 _auctionTimestampStart,
|
|
48
|
+
uint40 _auctionTimestampEnd,
|
|
49
|
+
uint88 _startPrice,
|
|
50
|
+
uint88 _basePrice,
|
|
51
|
+
bool _allowReconfigureAfterStart
|
|
52
|
+
) internal {
|
|
53
|
+
require(
|
|
54
|
+
_DAProjectConfig.timestampStart == 0 || // uninitialized
|
|
55
|
+
block.timestamp < _DAProjectConfig.timestampStart || // auction not yet started
|
|
56
|
+
_allowReconfigureAfterStart, // specifically allowing reconfiguration after start
|
|
57
|
+
"No modifications mid-auction"
|
|
58
|
+
);
|
|
59
|
+
require(
|
|
60
|
+
block.timestamp < _auctionTimestampStart,
|
|
61
|
+
"Only future auctions"
|
|
62
|
+
);
|
|
63
|
+
require(
|
|
64
|
+
_startPrice > _basePrice,
|
|
65
|
+
"Auction start price must be greater than auction end price"
|
|
66
|
+
);
|
|
67
|
+
|
|
68
|
+
// EFFECTS
|
|
69
|
+
_DAProjectConfig.timestampStart = _auctionTimestampStart;
|
|
70
|
+
_DAProjectConfig.timestampEnd = _auctionTimestampEnd;
|
|
71
|
+
_DAProjectConfig.startPrice = _startPrice;
|
|
72
|
+
_DAProjectConfig.basePrice = _basePrice;
|
|
73
|
+
}
|
|
74
|
+
|
|
75
|
+
/**
|
|
76
|
+
* @notice Gets price of minting a token given the project's
|
|
77
|
+
* DAProjectConfig.
|
|
78
|
+
* This function reverts if auction has not yet started, or if auction is
|
|
79
|
+
* unconfigured.
|
|
80
|
+
* @return current price of token in Wei
|
|
81
|
+
*/
|
|
82
|
+
function getPriceLin(
|
|
83
|
+
DAProjectConfig storage _DAProjectConfig
|
|
84
|
+
) internal view returns (uint256) {
|
|
85
|
+
// move parameters to memory if used more than once
|
|
86
|
+
uint256 _timestampStart = _DAProjectConfig.timestampStart;
|
|
87
|
+
uint256 _timestampEnd = _DAProjectConfig.timestampEnd;
|
|
88
|
+
uint256 _startPrice = _DAProjectConfig.startPrice;
|
|
89
|
+
uint256 _basePrice = _DAProjectConfig.basePrice;
|
|
90
|
+
|
|
91
|
+
require(block.timestamp > _timestampStart, "Auction not yet started");
|
|
92
|
+
if (block.timestamp >= _timestampEnd) {
|
|
93
|
+
require(_timestampEnd > 0, "Only configured auctions");
|
|
94
|
+
return _basePrice;
|
|
95
|
+
}
|
|
96
|
+
uint256 elapsedTime;
|
|
97
|
+
uint256 duration;
|
|
98
|
+
uint256 startToEndDiff;
|
|
99
|
+
unchecked {
|
|
100
|
+
// already checked that block.timestamp > _timestampStart
|
|
101
|
+
elapsedTime = block.timestamp - _timestampStart;
|
|
102
|
+
// _timestampEnd > _timestampStart enforced during assignment
|
|
103
|
+
duration = _timestampEnd - _timestampStart;
|
|
104
|
+
// _startPrice > _basePrice enforced during assignment
|
|
105
|
+
startToEndDiff = _startPrice - _basePrice;
|
|
106
|
+
}
|
|
107
|
+
return _startPrice - ((elapsedTime * startToEndDiff) / duration);
|
|
108
|
+
}
|
|
109
|
+
}
|