@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,390 @@
|
|
|
1
|
+
// SPDX-License-Identifier: LGPL-3.0-only
|
|
2
|
+
// Created By: Art Blocks Inc.
|
|
3
|
+
|
|
4
|
+
import "./MaxInvocationsLib.sol";
|
|
5
|
+
import "./DAExpLib.sol";
|
|
6
|
+
import "./SplitFundsLib.sol";
|
|
7
|
+
|
|
8
|
+
import "@openzeppelin-4.7/contracts/utils/math/SafeCast.sol";
|
|
9
|
+
|
|
10
|
+
pragma solidity ^0.8.0;
|
|
11
|
+
|
|
12
|
+
/**
|
|
13
|
+
* @title Art Blocks Settlement Library for Exponential Auctions
|
|
14
|
+
* @notice This library manages the settlement logic for Art Blocks settlement
|
|
15
|
+
* minters. It provides functionality for managing a project's settlement state
|
|
16
|
+
* via the SettlementAuctionProjectConfig struct, and managing an individual's
|
|
17
|
+
* settlement state on a given project via the Receipt struct.
|
|
18
|
+
* @author Art Blocks Inc.
|
|
19
|
+
*/
|
|
20
|
+
|
|
21
|
+
library SettlementExpLib {
|
|
22
|
+
using SafeCast for uint256;
|
|
23
|
+
|
|
24
|
+
bytes32 internal constant CONFIG_CURRENT_SETTLED_PRICE =
|
|
25
|
+
"currentSettledPrice";
|
|
26
|
+
bytes32 internal constant CONFIG_AUCTION_REVENUES_COLLECTED =
|
|
27
|
+
"auctionRevenuesCollected";
|
|
28
|
+
|
|
29
|
+
// The SettlementAuctionProjectConfig struct tracks the state of a project's
|
|
30
|
+
// settlement auction. It tracks the number of tokens minted that have
|
|
31
|
+
// potential of future settlement, the latest purchase price of a token on
|
|
32
|
+
// the project, and whether or not the auction's revenues have been
|
|
33
|
+
// collected.
|
|
34
|
+
struct SettlementAuctionProjectConfig {
|
|
35
|
+
// set to true only after artist + admin revenues have been collected
|
|
36
|
+
bool auctionRevenuesCollected;
|
|
37
|
+
// number of tokens minted that have potential of future settlement.
|
|
38
|
+
// @dev max uint24 > 16.7 million tokens > 1 million tokens/project max
|
|
39
|
+
uint24 numSettleableInvocations;
|
|
40
|
+
// When non-zero, this value is used as a reference when an auction is
|
|
41
|
+
// reset by admin, and then a new auction is configured by an artist.
|
|
42
|
+
// In that case, the new auction will be required to have a starting
|
|
43
|
+
// price less than or equal to this value, if one or more purchases
|
|
44
|
+
// have been made on this minter.
|
|
45
|
+
// @dev max uint128 allows for > 1e51 ETH (much more than max supply)
|
|
46
|
+
// This enables struct packing, and is consistent with prices value
|
|
47
|
+
// limits in DAExpLib's DAProjectConfig struct.
|
|
48
|
+
uint128 latestPurchasePrice;
|
|
49
|
+
}
|
|
50
|
+
|
|
51
|
+
// The Receipt struct tracks the state of a user's settlement on a given
|
|
52
|
+
// project. It tracks the total funds posted by the user on the project
|
|
53
|
+
// and the number of tokens purchased by the user on the project.
|
|
54
|
+
struct Receipt {
|
|
55
|
+
// max uint232 allows for > 1e51 ETH (much more than max supply)
|
|
56
|
+
uint232 netPosted;
|
|
57
|
+
// max uint24 still allows for > max project supply of 1 million tokens
|
|
58
|
+
uint24 numPurchased;
|
|
59
|
+
}
|
|
60
|
+
|
|
61
|
+
/**
|
|
62
|
+
* This function updates the _receipt to include `msg.value` and increments
|
|
63
|
+
* the number of tokens purchased by 1. It then checks that the updated
|
|
64
|
+
* receipt is valid (i.e. sufficient funds have been posted for the
|
|
65
|
+
* number of tokens purchased on the updated receipt), and reverts if not.
|
|
66
|
+
* The new receipt net posted and num purchased are then returned to make
|
|
67
|
+
* the values available in a gas-efficient manner to the caller of this
|
|
68
|
+
* function.
|
|
69
|
+
* @param _receipt Receipt struct for the user on the project being checked
|
|
70
|
+
* @param _currentPriceInWei current price of token in Wei
|
|
71
|
+
* @return netPosted total funds posted by user on project (that have not
|
|
72
|
+
* been yet settled), including the current transaction
|
|
73
|
+
* @return numPurchased total number of tokens purchased by user on
|
|
74
|
+
* project, including the current transaction
|
|
75
|
+
*/
|
|
76
|
+
function validateReceiptEffects(
|
|
77
|
+
Receipt storage _receipt,
|
|
78
|
+
uint256 _currentPriceInWei
|
|
79
|
+
) internal returns (uint232 netPosted, uint24 numPurchased) {
|
|
80
|
+
// in memory copy + update
|
|
81
|
+
netPosted = (_receipt.netPosted + msg.value).toUint232();
|
|
82
|
+
numPurchased = _receipt.numPurchased + 1;
|
|
83
|
+
|
|
84
|
+
// require sufficient payment on project
|
|
85
|
+
require(
|
|
86
|
+
netPosted >= numPurchased * _currentPriceInWei,
|
|
87
|
+
"Min value to mint req."
|
|
88
|
+
);
|
|
89
|
+
|
|
90
|
+
// update Receipt in storage
|
|
91
|
+
// @dev overflow checks are not required since the added values cannot
|
|
92
|
+
// be enough to overflow due to maximum invocations or supply of ETH
|
|
93
|
+
_receipt.netPosted = netPosted;
|
|
94
|
+
_receipt.numPurchased = numPurchased;
|
|
95
|
+
}
|
|
96
|
+
|
|
97
|
+
/**
|
|
98
|
+
* @notice Emergency override function that allows a sellout price of a
|
|
99
|
+
* completed auction to be reduced to something below current latest
|
|
100
|
+
* purchase price, but gte base price. This is useful in the case that a
|
|
101
|
+
* project's auction artifically sold out at a price higher than the
|
|
102
|
+
* project's base price, and the artist wishes to allow settlement at a
|
|
103
|
+
* lower price (and thus lower settlement revenues, increasing purchaser
|
|
104
|
+
* returned settlement funds by the minter to collectors).
|
|
105
|
+
* @param _projectId Project ID to reduce auction sellout price for.
|
|
106
|
+
* @param _newSelloutPrice New sellout price to set for the auction. Must
|
|
107
|
+
* be less than the current sellout price, gte base price.
|
|
108
|
+
*/
|
|
109
|
+
function adminEmergencyReduceSelloutPrice(
|
|
110
|
+
uint256 _projectId,
|
|
111
|
+
address _coreContract,
|
|
112
|
+
uint128 _newSelloutPrice,
|
|
113
|
+
SettlementAuctionProjectConfig storage _settlementAuctionProjectConfig,
|
|
114
|
+
MaxInvocationsLib.MaxInvocationsProjectConfig
|
|
115
|
+
storage _maxInvocationsProjectConfig,
|
|
116
|
+
DAExpLib.DAProjectConfig storage _DAProjectConfig
|
|
117
|
+
) internal returns (bool maxInvocationsUpdated) {
|
|
118
|
+
// CHECKS
|
|
119
|
+
require(
|
|
120
|
+
!_settlementAuctionProjectConfig.auctionRevenuesCollected,
|
|
121
|
+
"Only before revenues collected"
|
|
122
|
+
);
|
|
123
|
+
|
|
124
|
+
// refresh max invocations, updating any local values that are
|
|
125
|
+
// illogical with respect to the current core contract state, and
|
|
126
|
+
// ensuring that local hasMaxBeenInvoked is accurate.
|
|
127
|
+
maxInvocationsUpdated = MaxInvocationsLib.refreshMaxInvocations(
|
|
128
|
+
_projectId,
|
|
129
|
+
_coreContract,
|
|
130
|
+
_maxInvocationsProjectConfig
|
|
131
|
+
);
|
|
132
|
+
require(
|
|
133
|
+
_newSelloutPrice >= _DAProjectConfig.basePrice,
|
|
134
|
+
"Only gte base price"
|
|
135
|
+
);
|
|
136
|
+
// require max invocations has been reached
|
|
137
|
+
require(
|
|
138
|
+
_maxInvocationsProjectConfig.maxHasBeenInvoked,
|
|
139
|
+
"Auction must be complete"
|
|
140
|
+
);
|
|
141
|
+
// @dev no need to check that auction max invocations has been reached,
|
|
142
|
+
// because if it was, the sellout price will be zero, and the following
|
|
143
|
+
// check will fail.
|
|
144
|
+
require(
|
|
145
|
+
_newSelloutPrice <
|
|
146
|
+
_settlementAuctionProjectConfig.latestPurchasePrice,
|
|
147
|
+
"May only reduce sellout price"
|
|
148
|
+
);
|
|
149
|
+
// ensure _newSelloutPrice is non-zero
|
|
150
|
+
// @dev this is a redundant check since minter doesn't allow base price
|
|
151
|
+
// of zero, but is included in case that logic changes in the future.
|
|
152
|
+
// @dev no coverage else branch of following line because redundant
|
|
153
|
+
require(_newSelloutPrice > 0, "Only sellout prices > 0");
|
|
154
|
+
// EFFECTS
|
|
155
|
+
_settlementAuctionProjectConfig.latestPurchasePrice = _newSelloutPrice;
|
|
156
|
+
}
|
|
157
|
+
|
|
158
|
+
/**
|
|
159
|
+
* @notice Distributes the net revenues from the project's auction, and
|
|
160
|
+
* marks the auction as having had its revenues collected.
|
|
161
|
+
* IMPORTANT - this affects state and distributes revenue funds, so it
|
|
162
|
+
* performs all three of CHECKS, EFFECTS and INTERACTIONS.
|
|
163
|
+
* @param _projectId Project ID to get revenues for
|
|
164
|
+
* @param _coreContract Core contract address
|
|
165
|
+
* @param _settlementAuctionProjectConfig SettlementAuctionProjectConfig
|
|
166
|
+
* struct for the project.
|
|
167
|
+
* @param _maxInvocationsProjectConfig MaxInvocationProjectConfig struct
|
|
168
|
+
* for the project.
|
|
169
|
+
* @param _DAProjectConfig DAProjectConfig struct for the project.
|
|
170
|
+
* @param _isEngine bool indicating whether the core contract is an engine
|
|
171
|
+
* @return maxInvocationsUpdated whether or not the minter's local max
|
|
172
|
+
* invocations state was updated during this function call.
|
|
173
|
+
*/
|
|
174
|
+
function distributeArtistAndAdminRevenues(
|
|
175
|
+
uint256 _projectId,
|
|
176
|
+
address _coreContract,
|
|
177
|
+
SettlementAuctionProjectConfig storage _settlementAuctionProjectConfig,
|
|
178
|
+
MaxInvocationsLib.MaxInvocationsProjectConfig
|
|
179
|
+
storage _maxInvocationsProjectConfig,
|
|
180
|
+
DAExpLib.DAProjectConfig storage _DAProjectConfig,
|
|
181
|
+
bool _isEngine
|
|
182
|
+
) internal returns (bool maxInvocationsUpdated) {
|
|
183
|
+
// require revenues to not have already been collected
|
|
184
|
+
require(
|
|
185
|
+
!_settlementAuctionProjectConfig.auctionRevenuesCollected,
|
|
186
|
+
"Revenues already collected"
|
|
187
|
+
);
|
|
188
|
+
// refresh max invocations, updating any local values that are
|
|
189
|
+
// illogical with respect to the current core contract state, and
|
|
190
|
+
// ensuring that local hasMaxBeenInvoked is accurate.
|
|
191
|
+
maxInvocationsUpdated = MaxInvocationsLib.refreshMaxInvocations(
|
|
192
|
+
_projectId,
|
|
193
|
+
_coreContract,
|
|
194
|
+
_maxInvocationsProjectConfig
|
|
195
|
+
);
|
|
196
|
+
|
|
197
|
+
// get the current net price of the auction - reverts if no auction
|
|
198
|
+
// is configured.
|
|
199
|
+
// @dev we use _getPriceUnsafe here, since we just safely synced the
|
|
200
|
+
// project's max invocations and maxHasBeenInvoked, which guarantees
|
|
201
|
+
// an accurate price calculation from _getPriceUnsafe, while being
|
|
202
|
+
// more gas efficient than _getPriceSafe.
|
|
203
|
+
// @dev price is guaranteed <= _projectConfig.latestPurchasePrice,
|
|
204
|
+
// since this minter enforces monotonically decreasing purchase prices.
|
|
205
|
+
uint256 _price = getPriceUnsafe({
|
|
206
|
+
_settlementAuctionProjectConfig: _settlementAuctionProjectConfig,
|
|
207
|
+
_maxInvocationsProjectConfig: _maxInvocationsProjectConfig,
|
|
208
|
+
_DAProjectConfig: _DAProjectConfig
|
|
209
|
+
});
|
|
210
|
+
// if the price is not base price, require that the auction have
|
|
211
|
+
// reached max invocations. This prevents premature withdrawl
|
|
212
|
+
// before final auction price is possible to know.
|
|
213
|
+
if (_price != _DAProjectConfig.basePrice) {
|
|
214
|
+
// @dev we can trust maxHasBeenInvoked, since we just
|
|
215
|
+
// refreshed it above with refreshMaxInvocations, preventing any
|
|
216
|
+
// false negatives
|
|
217
|
+
require(
|
|
218
|
+
_maxInvocationsProjectConfig.maxHasBeenInvoked,
|
|
219
|
+
"Active auction not yet sold out"
|
|
220
|
+
);
|
|
221
|
+
} else {
|
|
222
|
+
uint128 basePrice = _DAProjectConfig.basePrice;
|
|
223
|
+
// base price of zero indicates no sales, since base price of zero
|
|
224
|
+
// is not allowed when configuring an auction.
|
|
225
|
+
// @dev no coverage else branch of following line because redundant
|
|
226
|
+
require(basePrice > 0, "Only latestPurchasePrice > 0");
|
|
227
|
+
// if the price is base price, the auction is valid and may be claimed
|
|
228
|
+
// update the latest purchase price to the base price, to ensure
|
|
229
|
+
// the base price is used for all future settlement calculations
|
|
230
|
+
// EFFECTS
|
|
231
|
+
_settlementAuctionProjectConfig.latestPurchasePrice = basePrice;
|
|
232
|
+
}
|
|
233
|
+
_settlementAuctionProjectConfig.auctionRevenuesCollected = true;
|
|
234
|
+
// calculate the artist and admin revenues
|
|
235
|
+
uint256 netRevenues = _settlementAuctionProjectConfig
|
|
236
|
+
.numSettleableInvocations * _price;
|
|
237
|
+
// INTERACTIONS
|
|
238
|
+
SplitFundsLib.splitRevenuesETH({
|
|
239
|
+
_projectId: _projectId,
|
|
240
|
+
_valueInWei: netRevenues,
|
|
241
|
+
_coreContract: _coreContract,
|
|
242
|
+
_isEngine: _isEngine
|
|
243
|
+
});
|
|
244
|
+
// @dev maxInvocationsUpdated is returned
|
|
245
|
+
}
|
|
246
|
+
|
|
247
|
+
/**
|
|
248
|
+
*
|
|
249
|
+
* @param _settlementAuctionProjectConfig SettlementAuctionProjectConfig
|
|
250
|
+
* struct for the project.
|
|
251
|
+
* Reverts if no purchases have been made on the project by the collector
|
|
252
|
+
* being checked.
|
|
253
|
+
* @param _receipt Receipt struct for the collector on the project being
|
|
254
|
+
* checked
|
|
255
|
+
* @return excessSettlementFunds excess settlement funds, in wei
|
|
256
|
+
* @return requiredAmountPosted required amount to be posted by user, in wei
|
|
257
|
+
*/
|
|
258
|
+
function getProjectExcessSettlementFunds(
|
|
259
|
+
SettlementAuctionProjectConfig storage _settlementAuctionProjectConfig,
|
|
260
|
+
Receipt storage _receipt
|
|
261
|
+
)
|
|
262
|
+
internal
|
|
263
|
+
view
|
|
264
|
+
returns (uint256 excessSettlementFunds, uint256 requiredAmountPosted)
|
|
265
|
+
{
|
|
266
|
+
// require that a user has purchased at least one token on this project
|
|
267
|
+
uint256 numPurchased = _receipt.numPurchased;
|
|
268
|
+
require(numPurchased > 0, "No purchases made by this address");
|
|
269
|
+
|
|
270
|
+
uint256 currentSettledTokenPrice = _settlementAuctionProjectConfig
|
|
271
|
+
.latestPurchasePrice;
|
|
272
|
+
|
|
273
|
+
// calculate the excess settlement funds amount
|
|
274
|
+
// implicit overflow/underflow checks in solidity ^0.8
|
|
275
|
+
requiredAmountPosted = numPurchased * currentSettledTokenPrice;
|
|
276
|
+
excessSettlementFunds = _receipt.netPosted - requiredAmountPosted;
|
|
277
|
+
return (excessSettlementFunds, requiredAmountPosted);
|
|
278
|
+
}
|
|
279
|
+
|
|
280
|
+
/**
|
|
281
|
+
* @notice Gets price of minting a token on project `_projectId` given
|
|
282
|
+
* the project's AuctionParameters and current block timestamp.
|
|
283
|
+
* Reverts if auction has not yet started or auction is unconfigured, and
|
|
284
|
+
* local hasMaxBeenInvoked is false and revenues have not been withdrawn.
|
|
285
|
+
* Price is guaranteed to be accurate unless the minter's local
|
|
286
|
+
* hasMaxBeenInvoked is stale and returning a false negative.
|
|
287
|
+
* @dev when an accurate price is required regardless of the current state
|
|
288
|
+
* state of the locally cached minter max invocations, use the less gas
|
|
289
|
+
* efficient function `_getPriceSafe`.
|
|
290
|
+
* @param _settlementAuctionProjectConfig SettlementAuctionProjectConfig
|
|
291
|
+
* struct for the project.
|
|
292
|
+
* @param _maxInvocationsProjectConfig MaxInvocationsProjectConfig
|
|
293
|
+
* struct for the project.
|
|
294
|
+
* @param _DAProjectConfig DAProjectConfig struct for the project.
|
|
295
|
+
* @return uint256 current price of token in Wei, accurate if minter max
|
|
296
|
+
* invocations are up to date
|
|
297
|
+
* @dev This method calculates price decay using a linear interpolation
|
|
298
|
+
* of exponential decay based on the artist-provided half-life for price
|
|
299
|
+
* decay, `_priceDecayHalfLifeSeconds`.
|
|
300
|
+
*/
|
|
301
|
+
function getPriceUnsafe(
|
|
302
|
+
SettlementAuctionProjectConfig storage _settlementAuctionProjectConfig,
|
|
303
|
+
MaxInvocationsLib.MaxInvocationsProjectConfig
|
|
304
|
+
storage _maxInvocationsProjectConfig,
|
|
305
|
+
DAExpLib.DAProjectConfig storage _DAProjectConfig
|
|
306
|
+
) internal view returns (uint256) {
|
|
307
|
+
// return latest purchase price if:
|
|
308
|
+
// - minter is aware of a sold-out auction (without updating max
|
|
309
|
+
// invocation value)
|
|
310
|
+
// - auction revenues have been collected, at which point the latest
|
|
311
|
+
// purchase price will never change again
|
|
312
|
+
if (
|
|
313
|
+
_maxInvocationsProjectConfig.maxHasBeenInvoked ||
|
|
314
|
+
_settlementAuctionProjectConfig.auctionRevenuesCollected
|
|
315
|
+
) {
|
|
316
|
+
return _settlementAuctionProjectConfig.latestPurchasePrice;
|
|
317
|
+
}
|
|
318
|
+
// otherwise calculate price based on current block timestamp and
|
|
319
|
+
// auction configuration
|
|
320
|
+
// @dev this will revert if auction has not yet started or auction is
|
|
321
|
+
// unconfigured, which is relied upon for security.
|
|
322
|
+
return DAExpLib.getPriceExp({_DAProjectConfig: _DAProjectConfig});
|
|
323
|
+
}
|
|
324
|
+
|
|
325
|
+
/**
|
|
326
|
+
* @notice Gets price of minting a token on project `_projectId` given
|
|
327
|
+
* the project's AuctionParameters and current block timestamp.
|
|
328
|
+
* This is labeled as "safe", because price is guaranteed to be accurate
|
|
329
|
+
* even in the case of a stale locally cached minter max invocations.
|
|
330
|
+
* Reverts if auction has not yet started or auction is unconfigured, and
|
|
331
|
+
* auction has not sold out or revenues have not been withdrawn.
|
|
332
|
+
* @dev This method is less gas efficient than `_getPriceUnsafe`, but is
|
|
333
|
+
* guaranteed to be accurate.
|
|
334
|
+
* @param _projectId Project ID to get price of token for.
|
|
335
|
+
* @return tokenPriceInWei current price of token in Wei
|
|
336
|
+
* @dev This method calculates price decay using a linear interpolation
|
|
337
|
+
* of exponential decay based on the artist-provided half-life for price
|
|
338
|
+
* decay, `_priceDecayHalfLifeSeconds`.
|
|
339
|
+
*/
|
|
340
|
+
function getPriceSafe(
|
|
341
|
+
uint256 _projectId,
|
|
342
|
+
address _coreContract,
|
|
343
|
+
SettlementAuctionProjectConfig storage _settlementAuctionProjectConfig,
|
|
344
|
+
MaxInvocationsLib.MaxInvocationsProjectConfig
|
|
345
|
+
storage _maxInvocationsProjectConfig,
|
|
346
|
+
DAExpLib.DAProjectConfig storage _DAProjectConfig
|
|
347
|
+
) internal view returns (uint256 tokenPriceInWei) {
|
|
348
|
+
// accurately check if project has sold out
|
|
349
|
+
if (
|
|
350
|
+
MaxInvocationsLib.projectMaxHasBeenInvokedSafe({
|
|
351
|
+
_projectId: _projectId,
|
|
352
|
+
_coreContract: _coreContract,
|
|
353
|
+
_maxInvocationsProjectConfig: _maxInvocationsProjectConfig
|
|
354
|
+
})
|
|
355
|
+
) {
|
|
356
|
+
// max invocations have been reached, return the latest purchased
|
|
357
|
+
// price
|
|
358
|
+
tokenPriceInWei = _settlementAuctionProjectConfig
|
|
359
|
+
.latestPurchasePrice;
|
|
360
|
+
} else {
|
|
361
|
+
// if not sold out, return the current price via getPriceUnsafe
|
|
362
|
+
tokenPriceInWei = getPriceUnsafe({
|
|
363
|
+
_settlementAuctionProjectConfig: _settlementAuctionProjectConfig,
|
|
364
|
+
_maxInvocationsProjectConfig: _maxInvocationsProjectConfig,
|
|
365
|
+
_DAProjectConfig: _DAProjectConfig
|
|
366
|
+
});
|
|
367
|
+
}
|
|
368
|
+
return tokenPriceInWei;
|
|
369
|
+
}
|
|
370
|
+
|
|
371
|
+
/**
|
|
372
|
+
* Returns if a new auction's start price is valid, given the current
|
|
373
|
+
* state of the project's settlement auction configuration.
|
|
374
|
+
* @param _startPrice starting price of new auction, in wei
|
|
375
|
+
* @param _settlementAuctionProjectConfig SettlementAuctionProjectConfig
|
|
376
|
+
* struct for the project being configured for a new auction.
|
|
377
|
+
*/
|
|
378
|
+
function isValidStartPrice(
|
|
379
|
+
uint256 _startPrice,
|
|
380
|
+
SettlementAuctionProjectConfig storage _settlementAuctionProjectConfig
|
|
381
|
+
) internal view returns (bool) {
|
|
382
|
+
// If previous purchases have been made, require monotonically
|
|
383
|
+
// decreasing purchase prices to preserve settlement and revenue
|
|
384
|
+
// claiming logic. Since base price is always non-zero, if
|
|
385
|
+
// latestPurchasePrice is zero, then no previous purchases have been
|
|
386
|
+
// made, and startPrice may be set to any value.
|
|
387
|
+
return (_settlementAuctionProjectConfig.latestPurchasePrice == 0 || // never purchased
|
|
388
|
+
_startPrice <= _settlementAuctionProjectConfig.latestPurchasePrice);
|
|
389
|
+
}
|
|
390
|
+
}
|