@artblocks/contracts 1.1.0 → 1.2.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +86 -34
- package/artifacts/contracts/AdminACLV0.sol/AdminACLV0.json +2 -2
- package/artifacts/contracts/AdminACLV1.sol/AdminACLV1.json +2 -2
- package/artifacts/contracts/BytecodeStorageReaders/BytecodeStorageReaderContractV2.sol/BytecodeStorageReaderContractV2.json +201 -0
- package/artifacts/contracts/BytecodeStorageReaders/UniversalBytecodeStorageReader.sol/UniversalBytecodeStorageReader.json +154 -0
- package/artifacts/contracts/BytecodeStorageV2Writer.sol/BytecodeStorageV2Writer.json +87 -0
- package/artifacts/contracts/DependencyRegistryV0.sol/DependencyRegistryV0.json +403 -155
- package/artifacts/contracts/GenArt721CoreV3_Curated.sol/GenArt721CoreV3_Curated.json +2493 -0
- package/artifacts/contracts/OwnedCreate2FactoryV0.sol/OwnedCreate2FactoryV0.json +311 -0
- package/artifacts/contracts/archive/GenArt721CoreV3.sol/GenArt721CoreV3.json +2060 -0
- package/artifacts/contracts/archive/GenArt721CoreV3_Explorations.sol/GenArt721CoreV3_Explorations.json +2034 -0
- package/artifacts/contracts/{minter-suite → archive/minter-suite}/Minters/MinterBase_v0_1_1.sol/MinterBase.json +1 -1
- 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/{minter-suite/Minters → archive/minter-suite/Minters/MinterDAExp}/MinterDAExpV4.sol/MinterDAExpV4.json +3 -3
- 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/{minter-suite/Minters → archive/minter-suite/Minters/MinterDAExpSettlement}/MinterDAExpSettlementV2.sol/MinterDAExpSettlementV2.json +3 -3
- 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/{minter-suite/Minters → archive/minter-suite/Minters/MinterDALin}/MinterDALinV4.sol/MinterDALinV4.json +3 -3
- 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/{minter-suite/Minters → archive/minter-suite/Minters/MinterHolder}/MinterHolderV4.sol/MinterHolderV4.json +3 -3
- 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/{minter-suite/Minters → archive/minter-suite/Minters/MinterMerkle}/MinterMerkleV5.sol/MinterMerkleV5.json +3 -3
- package/artifacts/contracts/{minter-suite/Minters → archive/minter-suite/Minters/MinterPolyptych}/MinterPolyptychV0.sol/IGenArt721CoreContractV3WithRandomizer.json +54 -49
- package/artifacts/contracts/{minter-suite/Minters → archive/minter-suite/Minters/MinterPolyptych}/MinterPolyptychV0.sol/MinterPolyptychV0.json +3 -3
- package/artifacts/contracts/{minter-suite/Minters → archive/minter-suite/Minters/MinterSEA}/MinterSEAV0.sol/MinterSEAV0.json +3 -3
- 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/{minter-suite/Minters → archive/minter-suite/Minters/MinterSetPrice}/MinterSetPriceV4.sol/MinterSetPriceV4.json +3 -3
- package/artifacts/contracts/archive/minter-suite/Minters/MinterSetPriceERC20/MinterSetPriceERC20V0.sol/MinterSetPriceERC20V0.json +65 -2
- package/artifacts/contracts/archive/minter-suite/Minters/MinterSetPriceERC20/MinterSetPriceERC20V1.sol/MinterSetPriceERC20V1.json +65 -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/archive/minter-suite/Minters/MinterSetPriceERC20/MinterSetPriceERC20V4.sol/MinterSetPriceERC20V4.json +807 -0
- package/artifacts/contracts/engine/V2/GenArt721MinterBurner_PBAB.sol/GenArt721MinterBurner_PBAB.json +65 -2
- package/artifacts/contracts/engine/V2/GenArt721Minter_PBAB.sol/GenArt721Minter_PBAB.json +65 -2
- package/artifacts/contracts/engine/V3/EngineFactoryV0.sol/EngineFactoryV0.json +624 -0
- package/artifacts/contracts/engine/V3/GenArt721CoreV3_Engine.sol/GenArt721CoreV3_Engine.json +613 -216
- package/artifacts/contracts/engine/V3/GenArt721CoreV3_Engine_Flex.sol/GenArt721CoreV3_Engine_Flex.json +805 -206
- package/artifacts/contracts/engine/V3/forks/GenArt721CoreV3_Engine_Flex_PROOF.sol/GenArt721CoreV3_Engine_Flex_PROOF.json +51 -8
- 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 +51 -8
- package/artifacts/contracts/engine/V3/forks/PROHIBITION/interfaces/IGenArt721CoreContractV3_Engine_Flex_PROHIBITION.sol/IGenArt721CoreContractV3_Engine_Flex_PROHIBITION.json +59 -54
- package/artifacts/contracts/engine-registry/CoreRegistryV1.sol/CoreRegistryV1.json +2 -2
- package/artifacts/contracts/generator/AddressChunks.sol/AddressChunks.json +10 -0
- package/artifacts/contracts/generator/GenArt721GeneratorV0.sol/GenArt721GeneratorV0.json +333 -0
- package/artifacts/contracts/generator/GenArt721GeneratorV0.sol/ILegacyGenArt721CoreV2_PBAB_Flex.json +47 -0
- package/artifacts/contracts/interfaces/v0.8.x/IAdminACLV0_Extended.sol/IAdminACLV0_Extended.json +140 -0
- package/artifacts/contracts/interfaces/v0.8.x/IBytecodeStorageReader.sol/IBytecodeStorageReader.json +7 -7
- package/artifacts/contracts/interfaces/v0.8.x/IBytecodeStorageReaderV2.sol/IBytecodeStorageReaderV2.json +130 -0
- package/artifacts/contracts/interfaces/v0.8.x/IBytecodeStorageReader_Base.sol/IBytecodeStorageReader_Base.json +30 -0
- package/artifacts/contracts/interfaces/v0.8.x/ICoreRegistryV1.sol/ICoreRegistryV1.json +13 -0
- package/artifacts/contracts/interfaces/v0.8.x/IDependencyRegistryV0.sol/IDependencyRegistryV0.json +228 -45
- package/artifacts/contracts/interfaces/v0.8.x/IEngineFactoryV0.sol/IEngineFactoryV0.json +283 -0
- package/artifacts/contracts/interfaces/v0.8.x/IFilteredMinterDAExpSettlementV0.sol/IFilteredMinterDAExpSettlementV0.json +12 -12
- package/artifacts/contracts/interfaces/v0.8.x/IFilteredMinterDAExpSettlementV1.sol/IFilteredMinterDAExpSettlementV1.json +12 -12
- package/artifacts/contracts/interfaces/v0.8.x/IGenArt721CoreContractV3.sol/IGenArt721CoreContractV3.json +53 -48
- package/artifacts/contracts/interfaces/v0.8.x/IGenArt721CoreContractV3_Base.sol/IGenArt721CoreContractV3_Base.json +53 -48
- package/artifacts/contracts/interfaces/v0.8.x/IGenArt721CoreContractV3_Engine.sol/IGenArt721CoreContractV3_Engine.json +198 -90
- package/artifacts/contracts/interfaces/v0.8.x/IGenArt721CoreContractV3_Engine_Flex.sol/IGenArt721CoreContractV3_Engine_Flex.json +198 -90
- package/artifacts/contracts/interfaces/v0.8.x/IGenArt721CoreContractV3_Engine_Flex_PreV3p2.sol/IGenArt721CoreContractV3_Engine_Flex_PreV3p2.json +1065 -0
- package/artifacts/contracts/interfaces/v0.8.x/IGenArt721CoreContractV3_Engine_PreV3p2.sol/IGenArt721CoreContractV3_Engine_PreV3p2.json +778 -0
- package/artifacts/contracts/interfaces/v0.8.x/IGenArt721CoreContractV3_ProjectFinance.sol/IGenArt721CoreContractV3_ProjectFinance.json +87 -0
- package/artifacts/contracts/interfaces/v0.8.x/IGenArt721CoreProjectScriptV0.sol/IGenArt721CoreProjectScriptV0.json +59 -0
- package/artifacts/contracts/interfaces/v0.8.x/IGenArt721CoreProjectScriptV1.sol/IGenArt721CoreProjectScriptV1.json +64 -0
- package/artifacts/contracts/interfaces/v0.8.x/IGenArt721CoreTokenHashProviderV0.sol/IGenArt721CoreTokenHashProviderV0.json +30 -0
- package/artifacts/contracts/interfaces/v0.8.x/IGenArt721CoreTokenHashProviderV1.sol/IGenArt721CoreTokenHashProviderV1.json +30 -0
- package/artifacts/contracts/interfaces/v0.8.x/IGenArt721GeneratorV0.sol/IGenArt721GeneratorV0.json +63 -0
- package/artifacts/contracts/interfaces/v0.8.x/IGenArt721Minter_PBAB.sol/IGenArt721Minter_PBAB.json +279 -0
- package/artifacts/contracts/interfaces/v0.8.x/IOwnedCreate2FactoryV0.sol/IOwnedCreate2FactoryV0.json +74 -0
- package/artifacts/contracts/interfaces/v0.8.x/IPseudorandomAtomic.sol/IPseudorandomAtomic.json +1 -1
- package/artifacts/contracts/interfaces/v0.8.x/ISeaDropShimForContract.sol/ISeaDropShimForContract.json +37 -0
- package/artifacts/contracts/interfaces/v0.8.x/ISharedMinterDAExpSettlementV0.sol/ISharedMinterDAExpSettlementV0.json +18 -0
- package/artifacts/contracts/interfaces/v0.8.x/ISharedMinterMinPriceV0.sol/ISharedMinterMinPriceV0.json +37 -0
- package/artifacts/contracts/interfaces/v0.8.x/ISharedMinterRAMV0.sol/ISharedMinterRAMV0.json +62 -0
- package/artifacts/contracts/interfaces/v0.8.x/ISharedMinterRequired.sol/ISharedMinterRequired.json +37 -0
- package/artifacts/contracts/interfaces/v0.8.x/ISharedMinterSEAV0.sol/ISharedMinterSEAV0.json +1 -1
- package/artifacts/contracts/interfaces/v0.8.x/ISplitAtomicFactoryV0.sol/ISplitAtomicFactoryV0.json +170 -0
- package/artifacts/contracts/interfaces/v0.8.x/ISplitAtomicV0.sol/ISplitAtomicV0.json +126 -0
- package/artifacts/contracts/interfaces/v0.8.x/ISplitProviderV0.sol/ISplitProviderV0.json +98 -0
- package/artifacts/contracts/interfaces/v0.8.x/IUniversalBytecodeStorageReader.sol/IUniversalBytecodeStorageReader.json +56 -0
- package/artifacts/contracts/interfaces/v0.8.x/integration-refs/OpenSea/ERC721SeaDropStructsErrorsAndEvents.sol/ERC721SeaDropStructsErrorsAndEvents.json +43 -0
- package/artifacts/contracts/interfaces/v0.8.x/integration-refs/OpenSea/INonFungibleSeaDropToken.sol/INonFungibleSeaDropToken.json +715 -0
- package/artifacts/contracts/interfaces/v0.8.x/integration-refs/OpenSea/ISeaDrop.sol/ISeaDrop.json +1571 -0
- package/artifacts/contracts/interfaces/v0.8.x/integration-refs/OpenSea/ISeaDropTokenContractMetadata.sol/ISeaDropTokenContractMetadata.json +345 -0
- package/artifacts/contracts/interfaces/v0.8.x/integration-refs/OpenSea/SeaDropErrorsAndEvents.sol/SeaDropErrorsAndEvents.json +717 -0
- package/artifacts/contracts/interfaces/v0.8.x/integration-refs/splits-0x-v2/ISplitFactoryV2.sol/ISplitFactoryV2.json +123 -0
- 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/v0.8.x/ABHelpers.sol/ABHelpers.json +2 -2
- package/artifacts/contracts/libs/v0.8.x/AuthLib.sol/AuthLib.json +2 -2
- package/artifacts/contracts/libs/v0.8.x/BitMap.sol/BitMaps256.json +10 -0
- package/artifacts/contracts/libs/v0.8.x/BytecodeStorageV0.sol/BytecodeStorage.json +2 -2
- package/artifacts/contracts/libs/v0.8.x/BytecodeStorageV1.sol/BytecodeStorageReader.json +2 -2
- package/artifacts/contracts/libs/v0.8.x/BytecodeStorageV1.sol/BytecodeStorageWriter.json +2 -2
- package/artifacts/contracts/libs/v0.8.x/BytecodeStorageV2.sol/BytecodeStorageReader.json +214 -0
- package/artifacts/contracts/libs/v0.8.x/BytecodeStorageV2.sol/BytecodeStorageWriter.json +10 -0
- package/artifacts/contracts/libs/v0.8.x/Bytes32Strings.sol/Bytes32Strings.json +2 -2
- package/artifacts/contracts/libs/v0.8.x/DependencyRegistryStorageLib.sol/DependencyRegistryStorageLib.json +10 -0
- package/artifacts/contracts/libs/v0.8.x/ERC721_PackedHashSeed.sol/ERC721_PackedHashSeed.json +2 -2
- package/artifacts/contracts/libs/v0.8.x/ERC721_PackedHashSeedV1.sol/ERC721_PackedHashSeedV1.json +444 -0
- package/artifacts/contracts/libs/v0.8.x/JsonStatic.sol/JsonStatic.json +10 -0
- package/artifacts/contracts/libs/v0.8.x/PackedBools.sol/PackedBools.json +10 -0
- package/artifacts/contracts/libs/v0.8.x/SSTORE2.sol/SSTORE2.json +2 -2
- package/artifacts/contracts/libs/v0.8.x/V3FlexLib.sol/V3FlexLib.json +195 -0
- package/artifacts/contracts/libs/v0.8.x/minter-libs/DAExpLib.sol/DAExpLib.json +2 -2
- package/artifacts/contracts/libs/v0.8.x/minter-libs/DALib.sol/DALib.json +2 -2
- package/artifacts/contracts/libs/v0.8.x/minter-libs/DALinLib.sol/DALinLib.json +2 -2
- package/artifacts/contracts/libs/v0.8.x/minter-libs/GenericMinterEventsLib.sol/GenericMinterEventsLib.json +2 -2
- package/artifacts/contracts/libs/v0.8.x/minter-libs/MaxInvocationsLib.sol/MaxInvocationsLib.json +2 -2
- package/artifacts/contracts/libs/v0.8.x/minter-libs/MerkleLib.sol/MerkleLib.json +2 -2
- package/artifacts/contracts/libs/v0.8.x/minter-libs/MinPriceLib.sol/MinPriceLib.json +24 -0
- package/artifacts/contracts/libs/v0.8.x/minter-libs/PolyptychLib.sol/PolyptychLib.json +2 -2
- package/artifacts/contracts/libs/v0.8.x/minter-libs/RAMLib.sol/RAMLib.json +398 -0
- package/artifacts/contracts/libs/v0.8.x/minter-libs/SEALib.sol/SEALib.json +2 -2
- package/artifacts/contracts/libs/v0.8.x/minter-libs/SetPriceLib.sol/SetPriceLib.json +2 -2
- package/artifacts/contracts/libs/v0.8.x/minter-libs/SettlementExpLib.sol/SettlementExpLib.json +2 -2
- package/artifacts/contracts/libs/v0.8.x/minter-libs/SplitFundsLib.sol/SplitFundsLib.json +2 -2
- package/artifacts/contracts/libs/v0.8.x/minter-libs/TokenHolderLib.sol/TokenHolderLib.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 +2 -2
- package/artifacts/contracts/minter-suite/Minters/MinterDAExpHolderV5.sol/MinterDAExpHolderV5.json +2 -2
- package/artifacts/contracts/minter-suite/Minters/MinterDAExpSettlementV3.sol/MinterDAExpSettlementV3.json +2 -2
- package/artifacts/contracts/minter-suite/Minters/MinterDAExpV5.sol/MinterDAExpV5.json +2 -2
- package/artifacts/contracts/minter-suite/Minters/MinterDALinHolderV5.sol/MinterDALinHolderV5.json +2 -2
- package/artifacts/contracts/minter-suite/Minters/MinterDALinV5.sol/MinterDALinV5.json +2 -2
- package/artifacts/contracts/minter-suite/Minters/MinterMinPriceMerkleV0.sol/MinterMinPriceMerkleV0.json +664 -0
- package/artifacts/contracts/minter-suite/Minters/MinterMinPriceV0.sol/MinterMinPriceV0.json +387 -0
- package/artifacts/contracts/minter-suite/Minters/MinterRAMV0.sol/MinterRAMV0.json +1374 -0
- package/artifacts/contracts/minter-suite/Minters/MinterSEAV1.sol/MinterSEAV1.json +7 -7
- package/artifacts/contracts/minter-suite/Minters/MinterSetPriceERC20V5.sol/MinterSetPriceERC20V5.json +2 -2
- package/artifacts/contracts/minter-suite/Minters/MinterSetPriceHolderV5.sol/MinterSetPriceHolderV5.json +2 -2
- package/artifacts/contracts/minter-suite/Minters/MinterSetPriceMerkleV5.sol/MinterSetPriceMerkleV5.json +2 -2
- package/artifacts/contracts/minter-suite/Minters/MinterSetPricePolyptychERC20V5.sol/MinterSetPricePolyptychERC20V5.json +2 -2
- package/artifacts/contracts/minter-suite/Minters/MinterSetPricePolyptychV5.sol/MinterSetPricePolyptychV5.json +2 -2
- package/artifacts/contracts/minter-suite/Minters/MinterSetPriceV5.sol/MinterSetPriceV5.json +2 -2
- package/artifacts/contracts/minter-suite/Minters/one-off/MinterSetPriceV5_SingleCore.sol/MinterSetPriceV5_SingleCore.json +417 -0
- package/artifacts/contracts/minter-suite/Minters/one-off/SeaDropXArtBlocksShim.sol/SeaDropXArtBlocksShim.json +1206 -0
- package/artifacts/contracts/mock/BytecodeV1LibCallsMock.sol/BytecodeV1LibCallsMock.json +2 -2
- package/artifacts/contracts/mock/BytecodeV2LibCallsMock.sol/BytecodeV2LibCallsMock.json +154 -0
- package/artifacts/contracts/mock/BytecodeV2TextCR_DMock.sol/BytecodeV2TextCR_DMock.json +428 -0
- package/artifacts/contracts/mock/DummySharedMinter.sol/DummySharedMinter.json +2 -2
- package/artifacts/contracts/mock/ERC20Mock.sol/ERC20Mock.json +2 -2
- package/artifacts/contracts/mock/ERC20MockAltDecimals.sol/ERC20MockAltDecimals.json +318 -0
- package/artifacts/contracts/mock/ForceSendMock.sol/ForceSendMock.json +24 -0
- package/artifacts/contracts/mock/GenArt721CoreV3_Engine_IncorrectCoreType.sol/GenArt721CoreV3_Engine_IncorrectCoreType.json +2 -2
- package/artifacts/contracts/mock/Mock0xSplitsV2PullFactory.sol/Mock0xSplitsV2PullFactory.json +149 -0
- package/artifacts/contracts/mock/Mock0xSplitsV2Splitter.sol/Mock0xSplitsV2Splitter.json +99 -0
- package/artifacts/contracts/mock/MockAdminACLV0.sol/MockAdminACLV0Events.json +20 -2
- package/artifacts/contracts/mock/MockAdminACLV0_PROHIBITION.sol/MockAdminACLV0Events_PROHIBITION.json +20 -2
- package/artifacts/contracts/mock/MockFileStore.sol/MockFileStore.json +35 -0
- 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/ReentrancyGenArt721MinterMock.sol/ReentrancyGenArt721MinterMock.json +100 -0
- package/artifacts/contracts/mock/ReentrancyHolderMock.sol/ReentrancyHolderMock.json +2 -2
- package/artifacts/contracts/mock/ReentrancyHolderMockShared.sol/ReentrancyHolderMockShared.json +2 -2
- package/artifacts/contracts/mock/ReentrancyMerkleMock.sol/ReentrancyMerkleMock.json +2 -2
- package/artifacts/contracts/mock/ReentrancyMerkleMockShared.sol/ReentrancyMerkleMockShared.json +2 -2
- package/artifacts/contracts/mock/ReentrancyMock.sol/ReentrancyMock.json +2 -2
- package/artifacts/contracts/mock/ReentrancyMockShared.sol/ReentrancyMockShared.json +2 -2
- package/artifacts/contracts/mock/ReentrancySEAMock.sol/ReentrancySEAAutoBidderMock.json +2 -2
- package/artifacts/contracts/mock/ReentrancySEAMockShared.sol/ReentrancySEAAutoBidderMockShared.json +2 -2
- package/artifacts/contracts/mock/ReentrancySplitterMocks.sol/ReentrancySplitterDrainETHMock.json +54 -0
- package/artifacts/contracts/mock/ReentrancySplitterMocks.sol/ReentrancySplitterSendETHMock.json +54 -0
- 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 +2 -2
- package/artifacts/contracts/split/SplitAtomicFactoryV0.sol/SplitAtomicFactoryV0.json +203 -0
- package/artifacts/contracts/split/SplitAtomicV0.sol/SplitAtomicV0.json +168 -0
- package/artifacts/contracts/split/split-provider/SplitProviderV0.sol/SplitProviderV0.json +141 -0
- package/contracts/AdminACLV0.sol +6 -2
- package/contracts/AdminACLV1.sol +2 -2
- package/contracts/BytecodeStorageReaders/BytecodeStorageReaderContractV2.sol +103 -0
- package/contracts/BytecodeStorageReaders/UniversalBytecodeStorageReader.sol +70 -0
- package/contracts/BytecodeStorageV2Writer.sol +69 -0
- package/contracts/DependencyRegistryV0.sol +878 -430
- package/contracts/GenArt721CoreV3_Curated.sol +133 -0
- package/contracts/OwnedCreate2FactoryV0.sol +173 -0
- package/contracts/{GenArt721CoreV3.sol → archive/GenArt721CoreV3.sol} +56 -20
- package/contracts/{explorations → archive}/GenArt721CoreV3_Explorations.sol +49 -13
- package/contracts/{minter-suite → archive/minter-suite}/Minters/MinterBase_v0_1_1.sol +4 -4
- package/contracts/{minter-suite/Minters → archive/minter-suite/Minters/MinterDAExp}/MinterDAExpV4.sol +4 -4
- package/contracts/archive/minter-suite/Minters/MinterDAExpSettlement/MinterDAExpSettlementV0.sol +4 -4
- package/contracts/archive/minter-suite/Minters/MinterDAExpSettlement/MinterDAExpSettlementV1.sol +5 -5
- package/contracts/{minter-suite/Minters → archive/minter-suite/Minters/MinterDAExpSettlement}/MinterDAExpSettlementV2.sol +8 -8
- package/contracts/{minter-suite/Minters → archive/minter-suite/Minters/MinterDALin}/MinterDALinV4.sol +4 -4
- package/contracts/{minter-suite/Minters → archive/minter-suite/Minters/MinterHolder}/MinterHolderV4.sol +5 -5
- package/contracts/{minter-suite/Minters → archive/minter-suite/Minters/MinterMerkle}/MinterMerkleV5.sol +5 -5
- package/contracts/{minter-suite/Minters → archive/minter-suite/Minters/MinterPolyptych}/MinterPolyptychV0.sol +7 -7
- package/contracts/{minter-suite/Minters → archive/minter-suite/Minters/MinterSEA}/MinterSEAV0.sol +13 -13
- package/contracts/{minter-suite/Minters → archive/minter-suite/Minters/MinterSetPrice}/MinterSetPriceV4.sol +4 -4
- package/contracts/archive/minter-suite/Minters/MinterSetPriceERC20/MinterSetPriceERC20V0.sol +82 -10
- package/contracts/archive/minter-suite/Minters/MinterSetPriceERC20/MinterSetPriceERC20V1.sol +82 -10
- package/contracts/{minter-suite/Minters → archive/minter-suite/Minters/MinterSetPriceERC20}/MinterSetPriceERC20V4.sol +88 -21
- package/contracts/engine/V2/GenArt721MinterBurner_PBAB.sol +81 -22
- package/contracts/engine/V2/GenArt721Minter_PBAB.sol +80 -22
- package/contracts/engine/V3/EngineFactoryV0.sol +427 -0
- package/contracts/engine/V3/GenArt721CoreV3_Engine.sol +977 -502
- package/contracts/engine/V3/GenArt721CoreV3_Engine_Flex.sol +1137 -663
- package/contracts/engine/V3/forks/GenArt721CoreV3_Engine_Flex_PROOF.sol +3 -3
- package/contracts/engine/V3/forks/PROHIBITION/GenArt721CoreV3_Engine_Flex_PROHIBITION.sol +1 -1
- package/contracts/engine/V3/forks/PROHIBITION/interfaces/IGenArt721CoreContractV3_Engine_Flex_PROHIBITION.sol +2 -2
- package/contracts/generator/AddressChunks.sol +106 -0
- package/contracts/generator/GenArt721GeneratorV0.sol +1094 -0
- package/contracts/generator/scripty-support/Scripty.sol +5 -0
- package/contracts/interfaces/v0.8.x/IAdminACLV0_Extended.sol +20 -0
- package/contracts/interfaces/v0.8.x/IBytecodeStorageReader.sol +34 -36
- package/contracts/interfaces/v0.8.x/IBytecodeStorageReaderV2.sol +25 -0
- package/contracts/interfaces/v0.8.x/IBytecodeStorageReader_Base.sol +20 -0
- package/contracts/interfaces/v0.8.x/ICoreRegistryV1.sol +5 -0
- package/contracts/interfaces/v0.8.x/IDependencyRegistryV0.sol +141 -45
- package/contracts/interfaces/v0.8.x/IEngineFactoryV0.sol +124 -0
- package/contracts/interfaces/v0.8.x/IFilteredMinterDAExpSettlementV0.sol +1 -3
- package/contracts/interfaces/v0.8.x/IFilteredMinterDAExpSettlementV1.sol +1 -3
- package/contracts/interfaces/v0.8.x/IFilteredMinterDAExpV1.sol +1 -3
- package/contracts/interfaces/v0.8.x/IFilteredMinterDALinV1.sol +1 -3
- package/contracts/interfaces/v0.8.x/IFilteredMinterHolderV2.sol +1 -3
- package/contracts/interfaces/v0.8.x/IFilteredMinterMerkleV2.sol +1 -3
- package/contracts/interfaces/v0.8.x/IGenArt721CoreContractV3_Base.sol +126 -11
- package/contracts/interfaces/v0.8.x/IGenArt721CoreContractV3_Engine.sol +86 -8
- package/contracts/interfaces/v0.8.x/IGenArt721CoreContractV3_Engine_Flex.sol +26 -8
- package/contracts/interfaces/v0.8.x/IGenArt721CoreContractV3_Engine_Flex_PreV3p2.sol +141 -0
- package/contracts/interfaces/v0.8.x/IGenArt721CoreContractV3_Engine_PreV3p2.sol +78 -0
- package/contracts/interfaces/v0.8.x/IGenArt721CoreContractV3_ProjectFinance.sol +47 -0
- package/contracts/interfaces/v0.8.x/IGenArt721CoreProjectScriptV0.sol +22 -0
- package/contracts/interfaces/v0.8.x/IGenArt721CoreProjectScriptV1.sol +23 -0
- package/contracts/interfaces/v0.8.x/IGenArt721CoreTokenHashProviderV0.sol +11 -0
- package/contracts/interfaces/v0.8.x/IGenArt721CoreTokenHashProviderV1.sol +9 -0
- package/contracts/interfaces/v0.8.x/IGenArt721GeneratorV0.sol +14 -0
- package/contracts/interfaces/v0.8.x/IGenArt721Minter_PBAB.sol +91 -0
- package/contracts/interfaces/v0.8.x/IOwnedCreate2FactoryV0.sol +40 -0
- package/contracts/interfaces/v0.8.x/IPseudorandomAtomic.sol +1 -3
- package/contracts/interfaces/v0.8.x/ISeaDropShimForContract.sol +19 -0
- package/contracts/interfaces/v0.8.x/ISharedMinterDAExpSettlementV0.sol +19 -0
- package/contracts/interfaces/v0.8.x/ISharedMinterMinPriceV0.sol +22 -0
- package/contracts/interfaces/v0.8.x/ISharedMinterRAMV0.sol +23 -0
- package/contracts/interfaces/v0.8.x/ISharedMinterRequired.sol +26 -0
- package/contracts/interfaces/v0.8.x/ISharedMinterSEAV0.sol +1 -4
- package/contracts/interfaces/v0.8.x/ISharedMinterV0.sol +12 -6
- package/contracts/interfaces/v0.8.x/ISplitAtomicFactoryV0.sol +81 -0
- package/contracts/interfaces/v0.8.x/ISplitAtomicV0.sol +72 -0
- package/contracts/interfaces/v0.8.x/ISplitProviderV0.sol +49 -0
- package/contracts/interfaces/v0.8.x/IUniversalBytecodeStorageReader.sol +28 -0
- package/contracts/interfaces/v0.8.x/integration-refs/OpenSea/ERC721SeaDropStructsErrorsAndEvents.sol +58 -0
- package/contracts/interfaces/v0.8.x/integration-refs/OpenSea/INonFungibleSeaDropToken.sol +186 -0
- package/contracts/interfaces/v0.8.x/integration-refs/OpenSea/ISeaDrop.sol +337 -0
- package/contracts/interfaces/v0.8.x/integration-refs/OpenSea/ISeaDropTokenContractMetadata.sol +152 -0
- package/contracts/interfaces/v0.8.x/integration-refs/OpenSea/SeaDropErrorsAndEvents.sol +320 -0
- package/contracts/interfaces/v0.8.x/integration-refs/OpenSea/SeaDropStructs.sol +146 -0
- package/contracts/interfaces/v0.8.x/integration-refs/splits-0x-v2/ISplitFactoryV2.sol +62 -0
- package/contracts/libs/v0.8.x/ABHelpers.sol +18 -4
- package/contracts/libs/v0.8.x/BitMap.sol +112 -0
- package/contracts/libs/v0.8.x/BytecodeStorageV2.sol +593 -0
- package/contracts/libs/v0.8.x/Bytes32Strings.sol +20 -0
- package/contracts/libs/v0.8.x/DependencyRegistryStorageLib.sol +98 -0
- package/contracts/libs/v0.8.x/ERC721_PackedHashSeedV1.sol +591 -0
- package/contracts/libs/v0.8.x/JsonStatic.sol +373 -0
- package/contracts/libs/v0.8.x/PackedBools.sol +42 -0
- package/contracts/libs/v0.8.x/V3FlexLib.sol +597 -0
- package/contracts/libs/v0.8.x/minter-libs/DAExpLib.sol +10 -12
- package/contracts/libs/v0.8.x/minter-libs/DALinLib.sol +4 -9
- package/contracts/libs/v0.8.x/minter-libs/GenericMinterEventsLib.sol +44 -44
- package/contracts/libs/v0.8.x/minter-libs/MaxInvocationsLib.sol +64 -63
- package/contracts/libs/v0.8.x/minter-libs/MerkleLib.sol +14 -10
- package/contracts/libs/v0.8.x/minter-libs/MinPriceLib.sol +64 -0
- package/contracts/libs/v0.8.x/minter-libs/RAMLib.sol +2927 -0
- package/contracts/libs/v0.8.x/minter-libs/SEALib.sol +60 -62
- package/contracts/libs/v0.8.x/minter-libs/SetPriceLib.sol +4 -8
- package/contracts/libs/v0.8.x/minter-libs/SettlementExpLib.sol +92 -89
- package/contracts/libs/v0.8.x/minter-libs/SplitFundsLib.sol +128 -15
- package/contracts/libs/v0.8.x/minter-libs/TokenHolderLib.sol +5 -4
- package/contracts/minter-suite/MinterFilter/MinterFilterV2.sol +16 -10
- package/contracts/minter-suite/Minters/MinterDAExpHolderV5.sol +2 -2
- package/contracts/minter-suite/Minters/MinterDAExpSettlementV3.sol +19 -15
- package/contracts/minter-suite/Minters/MinterDAExpV5.sol +2 -2
- package/contracts/minter-suite/Minters/MinterDALinHolderV5.sol +2 -2
- package/contracts/minter-suite/Minters/MinterDALinV5.sol +2 -2
- package/contracts/minter-suite/Minters/MinterMinPriceMerkleV0.sol +765 -0
- package/contracts/minter-suite/Minters/MinterMinPriceV0.sol +462 -0
- package/contracts/minter-suite/Minters/MinterRAMV0.sol +1205 -0
- package/contracts/minter-suite/Minters/MinterSEAV1.sol +21 -32
- package/contracts/minter-suite/Minters/MinterSetPriceERC20V5.sol +17 -8
- package/contracts/minter-suite/Minters/MinterSetPriceHolderV5.sol +2 -2
- package/contracts/minter-suite/Minters/MinterSetPriceMerkleV5.sol +2 -2
- package/contracts/minter-suite/Minters/MinterSetPricePolyptychERC20V5.sol +23 -9
- package/contracts/minter-suite/Minters/MinterSetPricePolyptychV5.sol +2 -2
- package/contracts/minter-suite/Minters/MinterSetPriceV5.sol +2 -2
- package/contracts/minter-suite/Minters/one-off/MinterSetPriceV5_SingleCore.sol +446 -0
- package/contracts/minter-suite/Minters/one-off/SeaDropXArtBlocksShim.sol +869 -0
- package/contracts/mock/BytecodeV2LibCallsMock.sol +128 -0
- package/contracts/mock/BytecodeV2TextCR_DMock.sol +316 -0
- package/contracts/mock/ERC20MockAltDecimals.sol +31 -0
- package/contracts/mock/ForceSendMock.sol +22 -0
- package/contracts/mock/Mock0xSplitsV2PullFactory.sol +75 -0
- package/contracts/mock/Mock0xSplitsV2Splitter.sol +47 -0
- package/contracts/mock/MockAdminACLV0.sol +21 -0
- package/contracts/mock/MockAdminACLV0_PROHIBITION.sol +21 -0
- package/contracts/mock/MockFileStore.sol +22 -0
- package/contracts/mock/ReentrancyGenArt721MinterMock.sol +47 -0
- package/contracts/mock/ReentrancySplitterMocks.sol +67 -0
- package/contracts/randomizer/primitive/PseudorandomAtomicBasic.sol +1 -1
- package/contracts/randomizer/shared/SharedRandomizerV0.sol +1 -1
- package/contracts/split/SplitAtomicFactoryV0.sol +121 -0
- package/contracts/split/SplitAtomicV0.sol +265 -0
- package/contracts/split/split-provider/SplitProviderV0.sol +201 -0
- package/package.json +66 -36
- package/artifacts/contracts/GenArt721CoreV3.sol/GenArt721CoreV3.json +0 -1965
- package/artifacts/contracts/explorations/GenArt721CoreV3_Explorations.sol/GenArt721CoreV3_Explorations.json +0 -1939
- package/artifacts/contracts/minter-suite/Minters/MinterSetPriceERC20V4.sol/MinterSetPriceERC20V4.json +0 -768
- package/artifacts/contracts/royalty-registry/GenArt721RoyaltyOverride.sol/GenArt721RoyaltyOverride.json +0 -208
- package/artifacts/contracts/royalty-registry/GenArt721RoyaltyOverride_PBAB.sol/GenArt721RoyaltyOverride_PBAB.json +0 -301
- package/contracts/archive/readme.md +0 -16
- package/contracts/engine/README.md +0 -21
- package/contracts/royalty-registry/GenArt721RoyaltyOverride.sol +0 -168
- package/contracts/royalty-registry/GenArt721RoyaltyOverride_PBAB.sol +0 -221
|
@@ -96,6 +96,44 @@ library SplitFundsLib {
|
|
|
96
96
|
}
|
|
97
97
|
}
|
|
98
98
|
|
|
99
|
+
/**
|
|
100
|
+
* @notice pays ETH funds to sender (if refund), with all of token price
|
|
101
|
+
* being sent to the render provider for a token purchased on project
|
|
102
|
+
* `projectId`.
|
|
103
|
+
* WARNING: This function uses msg.value and msg.sender to determine
|
|
104
|
+
* refund amounts, and therefore may not be applicable to all use cases
|
|
105
|
+
* (e.g. do not use with Dutch Auctions with on-chain settlement).
|
|
106
|
+
* @dev This function relies on msg.sender and msg.value, so it must be
|
|
107
|
+
* called directly from the contract that is receiving the payment.
|
|
108
|
+
* @dev possible DoS during splits is acknowledged, and mitigated by
|
|
109
|
+
* business practices, including end-to-end testing on mainnet, and
|
|
110
|
+
* admin-accepted artist payment addresses.
|
|
111
|
+
* @param projectId Project ID for which funds shall be split.
|
|
112
|
+
* @param pricePerTokenInWei Current price of token, in Wei.
|
|
113
|
+
* @param coreContract Address of the GenArt721CoreContract associated
|
|
114
|
+
* with the project.
|
|
115
|
+
*/
|
|
116
|
+
function sendAllToRenderProviderETHRefundSender(
|
|
117
|
+
uint256 projectId,
|
|
118
|
+
uint256 pricePerTokenInWei,
|
|
119
|
+
address coreContract
|
|
120
|
+
) internal {
|
|
121
|
+
if (msg.value > 0) {
|
|
122
|
+
// send refund to sender
|
|
123
|
+
uint256 refund = msg.value - pricePerTokenInWei;
|
|
124
|
+
if (refund > 0) {
|
|
125
|
+
(bool success_, ) = msg.sender.call{value: refund}("");
|
|
126
|
+
require(success_, "Refund failed");
|
|
127
|
+
}
|
|
128
|
+
// send remaining to render provider
|
|
129
|
+
sendAllToRenderProviderETHNoRefund({
|
|
130
|
+
projectId: projectId,
|
|
131
|
+
valueInWei: pricePerTokenInWei,
|
|
132
|
+
coreContract: coreContract
|
|
133
|
+
});
|
|
134
|
+
}
|
|
135
|
+
}
|
|
136
|
+
|
|
99
137
|
/**
|
|
100
138
|
* @notice Splits ETH revenues between providers, artist, and artist's
|
|
101
139
|
* additional payee for revenue generated by project `projectId`.
|
|
@@ -185,6 +223,75 @@ library SplitFundsLib {
|
|
|
185
223
|
});
|
|
186
224
|
}
|
|
187
225
|
|
|
226
|
+
/**
|
|
227
|
+
* @notice Sends all revenue generated by project `projectId` to render
|
|
228
|
+
* provider.
|
|
229
|
+
* This function does NOT refund msg.sender, and does NOT use msg.value
|
|
230
|
+
* when determining the value to be split.
|
|
231
|
+
* @dev possible DoS during splits is acknowledged, and mitigated by
|
|
232
|
+
* business practices, including end-to-end testing on mainnet, and
|
|
233
|
+
* admin-accepted payment addresses.
|
|
234
|
+
* @param projectId Project ID for which funds shall be sent.
|
|
235
|
+
* @param valueInWei Value to be sent, in Wei.
|
|
236
|
+
* @param coreContract Address of the GenArt721CoreContract
|
|
237
|
+
* associated with the project.
|
|
238
|
+
*/
|
|
239
|
+
function sendAllToRenderProviderETHNoRefund(
|
|
240
|
+
uint256 projectId,
|
|
241
|
+
uint256 valueInWei,
|
|
242
|
+
address coreContract
|
|
243
|
+
) internal {
|
|
244
|
+
if (valueInWei == 0) {
|
|
245
|
+
return; // return early
|
|
246
|
+
}
|
|
247
|
+
// split funds between platforms, artist, and artist's
|
|
248
|
+
// additional payee
|
|
249
|
+
bool isEngine_ = isEngine(coreContract);
|
|
250
|
+
address payable renderProviderAddress;
|
|
251
|
+
if (isEngine_) {
|
|
252
|
+
// get engine splits
|
|
253
|
+
(
|
|
254
|
+
,
|
|
255
|
+
renderProviderAddress,
|
|
256
|
+
,
|
|
257
|
+
,
|
|
258
|
+
,
|
|
259
|
+
,
|
|
260
|
+
,
|
|
261
|
+
|
|
262
|
+
) = IGenArt721CoreContractV3_Engine(coreContract)
|
|
263
|
+
.getPrimaryRevenueSplits({
|
|
264
|
+
_projectId: projectId,
|
|
265
|
+
_price: valueInWei
|
|
266
|
+
});
|
|
267
|
+
} else {
|
|
268
|
+
// get flagship splits
|
|
269
|
+
// @dev note that platformProviderAddress and
|
|
270
|
+
// platformProviderRevenue remain 0 for flagship
|
|
271
|
+
(
|
|
272
|
+
,
|
|
273
|
+
// artblocks revenue
|
|
274
|
+
renderProviderAddress, // artblocks address
|
|
275
|
+
,
|
|
276
|
+
,
|
|
277
|
+
,
|
|
278
|
+
|
|
279
|
+
) = IGenArt721CoreContractV3(coreContract).getPrimaryRevenueSplits({
|
|
280
|
+
_projectId: projectId,
|
|
281
|
+
_price: valueInWei
|
|
282
|
+
});
|
|
283
|
+
}
|
|
284
|
+
require(
|
|
285
|
+
renderProviderAddress != address(0),
|
|
286
|
+
"Render Provider address not set"
|
|
287
|
+
);
|
|
288
|
+
// distribute revenue
|
|
289
|
+
// Render Provider / Art Blocks payment
|
|
290
|
+
// @dev previous conditional ensures valueInWei is non-zero
|
|
291
|
+
(bool success, ) = renderProviderAddress.call{value: valueInWei}("");
|
|
292
|
+
require(success, "Render Provider payment failed");
|
|
293
|
+
}
|
|
294
|
+
|
|
188
295
|
/**
|
|
189
296
|
* @notice Splits ERC20 funds between providers, artist, and artist's
|
|
190
297
|
* additional payee, for a token purchased on project `projectId`.
|
|
@@ -197,7 +304,9 @@ library SplitFundsLib {
|
|
|
197
304
|
* business practices, including end-to-end testing on mainnet, and
|
|
198
305
|
* admin-accepted artist payment addresses.
|
|
199
306
|
* @param projectId Project ID for which funds shall be split.
|
|
200
|
-
* @param pricePerToken Current price of token,
|
|
307
|
+
* @param pricePerToken Current price of token, in base units. For example,
|
|
308
|
+
* if the ERC20 token has 6 decimals, an input value of `1_000_000` would
|
|
309
|
+
* represent a price of `1.000000` tokens.
|
|
201
310
|
* @param coreContract Core contract address.
|
|
202
311
|
*/
|
|
203
312
|
function splitFundsERC20(
|
|
@@ -221,7 +330,6 @@ library SplitFundsLib {
|
|
|
221
330
|
currencyAddress != address(0),
|
|
222
331
|
"ERC20: payment not configured"
|
|
223
332
|
);
|
|
224
|
-
require(msg.value == 0, "ERC20: No ETH when using ERC20");
|
|
225
333
|
// ERC20 token is used for payment
|
|
226
334
|
validateERC20Approvals({
|
|
227
335
|
msgSender: msg.sender,
|
|
@@ -230,7 +338,7 @@ library SplitFundsLib {
|
|
|
230
338
|
});
|
|
231
339
|
projectCurrency = IERC20(currencyAddress);
|
|
232
340
|
}
|
|
233
|
-
// split remaining funds between foundation, artist, and artist's
|
|
341
|
+
// split remaining funds between foundation, artist, and artist's additional payee
|
|
234
342
|
bool isEngine_ = isEngine(coreContract);
|
|
235
343
|
uint256 renderProviderRevenue;
|
|
236
344
|
address payable renderProviderAddress;
|
|
@@ -333,9 +441,8 @@ library SplitFundsLib {
|
|
|
333
441
|
coreContract: coreContract
|
|
334
442
|
});
|
|
335
443
|
// recommend price reset if currency address was previously configured
|
|
336
|
-
|
|
337
|
-
|
|
338
|
-
}
|
|
444
|
+
recommendPriceReset = (splitFundsProjectConfig.currencyAddress !=
|
|
445
|
+
address(0));
|
|
339
446
|
splitFundsProjectConfig.currencySymbol = currencySymbol;
|
|
340
447
|
splitFundsProjectConfig.currencyAddress = currencyAddress;
|
|
341
448
|
|
|
@@ -478,10 +585,9 @@ library SplitFundsLib {
|
|
|
478
585
|
// also note that per Solidity ABI encoding, the address return
|
|
479
586
|
// values are padded to 32 bytes.
|
|
480
587
|
return true;
|
|
481
|
-
} else {
|
|
482
|
-
// unexpected return value length
|
|
483
|
-
revert("Unexpected revenue split bytes");
|
|
484
588
|
}
|
|
589
|
+
// unexpected return value length
|
|
590
|
+
revert("Unexpected revenue split bytes");
|
|
485
591
|
}
|
|
486
592
|
|
|
487
593
|
/**
|
|
@@ -491,8 +597,8 @@ library SplitFundsLib {
|
|
|
491
597
|
* `currencyAddress` is zero.
|
|
492
598
|
* @param projectId Project ID to get config for
|
|
493
599
|
* @param coreContract Core contract address to get config for
|
|
494
|
-
* @return currencyAddress
|
|
495
|
-
* @return currencySymbol
|
|
600
|
+
* @return currencyAddress currency address for the referenced SplitFundsProjectConfig.
|
|
601
|
+
* @return currencySymbol currency symbol for the referenced SplitFundsProjectConfig.
|
|
496
602
|
*/
|
|
497
603
|
function getCurrencyInfoERC20(
|
|
498
604
|
uint256 projectId,
|
|
@@ -518,7 +624,7 @@ library SplitFundsLib {
|
|
|
518
624
|
* @notice Gets the balance of `currencyAddress` ERC20 tokens for `walletAddress`.
|
|
519
625
|
* @param currencyAddress ERC20 token address.
|
|
520
626
|
* @param walletAddress wallet address.
|
|
521
|
-
* @return balance
|
|
627
|
+
* @return balance Balance of ERC-20
|
|
522
628
|
*/
|
|
523
629
|
function getERC20Balance(
|
|
524
630
|
address currencyAddress,
|
|
@@ -533,7 +639,7 @@ library SplitFundsLib {
|
|
|
533
639
|
* @param currencyAddress ERC20 token address.
|
|
534
640
|
* @param walletAddress wallet address.
|
|
535
641
|
* @param spenderAddress spender address.
|
|
536
|
-
* @return allowance
|
|
642
|
+
* @return allowance Allowance of ERC-20
|
|
537
643
|
*/
|
|
538
644
|
function getERC20Allowance(
|
|
539
645
|
address currencyAddress,
|
|
@@ -555,7 +661,9 @@ library SplitFundsLib {
|
|
|
555
661
|
* Reverts if insufficient allowance or balance.
|
|
556
662
|
* @param msgSender Address of the message sender to validate.
|
|
557
663
|
* @param currencyAddress Address of the ERC20 token to validate.
|
|
558
|
-
* @param pricePerToken Price
|
|
664
|
+
* @param pricePerToken Price of token, in base units. For example,
|
|
665
|
+
* if the ERC20 token has 6 decimals, an input value of `1_000_000` would
|
|
666
|
+
* represent a price of `1.000000` tokens.
|
|
559
667
|
*/
|
|
560
668
|
function validateERC20Approvals(
|
|
561
669
|
address msgSender,
|
|
@@ -578,6 +686,9 @@ library SplitFundsLib {
|
|
|
578
686
|
/**
|
|
579
687
|
* @notice Sends ETH revenues between providers, artist, and artist's
|
|
580
688
|
* additional payee. Reverts if any payment fails.
|
|
689
|
+
* @dev This function pays priviliged addresses. DoS is acknowledged, and
|
|
690
|
+
* mitigated by business practices, including end-to-end testing on
|
|
691
|
+
* mainnet, and admin-accepted artist payment addresses.
|
|
581
692
|
* @param platformProviderRevenue Platform Provider revenue.
|
|
582
693
|
* @param platformProviderAddress Platform Provider address.
|
|
583
694
|
* @param renderProviderRevenue Render Provider revenue.
|
|
@@ -628,7 +739,9 @@ library SplitFundsLib {
|
|
|
628
739
|
/**
|
|
629
740
|
* @notice Sends ERC20 revenues between providers, artist, and artist's
|
|
630
741
|
* additional payee. Reverts if any payment fails. All revenue values
|
|
631
|
-
* should
|
|
742
|
+
* should use base units. For example, if the ERC20 token has 6 decimals,
|
|
743
|
+
* an input value of `1_000_000` would represent an amount of `1.000000`
|
|
744
|
+
* tokens.
|
|
632
745
|
* @dev This function relies on msg.sender, so it must be called from
|
|
633
746
|
* the contract that is receiving the payment.
|
|
634
747
|
* @param projectCurrency IERC20 payment token.
|
|
@@ -5,6 +5,8 @@ pragma solidity ^0.8.0;
|
|
|
5
5
|
|
|
6
6
|
import {IERC721} from "@openzeppelin-4.7/contracts/token/ERC721/IERC721.sol";
|
|
7
7
|
|
|
8
|
+
import {ABHelpers} from "../ABHelpers.sol";
|
|
9
|
+
|
|
8
10
|
import {EnumerableSet} from "@openzeppelin-4.5/contracts/utils/structs/EnumerableSet.sol";
|
|
9
11
|
|
|
10
12
|
/**
|
|
@@ -71,9 +73,6 @@ library TokenHolderLib {
|
|
|
71
73
|
bytes32 constant TOKEN_HOLDER_LIB_STORAGE_POSITION =
|
|
72
74
|
keccak256("tokenholderlib.storage");
|
|
73
75
|
|
|
74
|
-
// Define one million to represent the base token ID for each project.
|
|
75
|
-
uint256 constant ONE_MILLION = 1_000_000;
|
|
76
|
-
|
|
77
76
|
struct HolderProjectConfig {
|
|
78
77
|
// projects whose holders are allowed to purchase a token on `projectId`
|
|
79
78
|
mapping(address ownedNFTAddress => mapping(uint256 ownedNFTProjectId => bool allowed)) allowedProjectHolders;
|
|
@@ -253,7 +252,9 @@ library TokenHolderLib {
|
|
|
253
252
|
projectId: projectId,
|
|
254
253
|
coreContract: coreContract
|
|
255
254
|
});
|
|
256
|
-
uint256 ownedNFTProjectId =
|
|
255
|
+
uint256 ownedNFTProjectId = ABHelpers.tokenIdToProjectId(
|
|
256
|
+
ownedNFTTokenId
|
|
257
|
+
);
|
|
257
258
|
return
|
|
258
259
|
holderProjectConfig.allowedProjectHolders[ownedNFTAddress][
|
|
259
260
|
ownedNFTProjectId
|
|
@@ -16,6 +16,7 @@ import {Bytes32Strings} from "../../libs/v0.8.x/Bytes32Strings.sol";
|
|
|
16
16
|
import {Ownable} from "@openzeppelin-4.7/contracts/access/Ownable.sol";
|
|
17
17
|
import {EnumerableMap} from "@openzeppelin-4.7/contracts/utils/structs/EnumerableMap.sol";
|
|
18
18
|
import {EnumerableSet} from "@openzeppelin-4.7/contracts/utils/structs/EnumerableSet.sol";
|
|
19
|
+
import {Math} from "@openzeppelin-4.7/contracts/utils/math/Math.sol";
|
|
19
20
|
|
|
20
21
|
/**
|
|
21
22
|
* @title MinterFilterV2
|
|
@@ -118,8 +119,7 @@ contract MinterFilterV2 is Ownable, IMinterFilterV1 {
|
|
|
118
119
|
|
|
119
120
|
/**
|
|
120
121
|
* @notice Function to restrict access to only AdminACL allowed calls
|
|
121
|
-
* on
|
|
122
|
-
* @dev defers to the ACL contract used by the core contract
|
|
122
|
+
* on this minter filter's admin ACL contract.
|
|
123
123
|
* @param selector function selector to be checked
|
|
124
124
|
*/
|
|
125
125
|
function _onlyAdminACL(bytes4 selector) internal {
|
|
@@ -274,7 +274,7 @@ contract MinterFilterV2 is Ownable, IMinterFilterV1 {
|
|
|
274
274
|
*/
|
|
275
275
|
function approveMinterGlobally(address minter) external {
|
|
276
276
|
_onlyAdminACL(this.approveMinterGlobally.selector);
|
|
277
|
-
// @dev add() return true if the value was
|
|
277
|
+
// @dev add() return true if the value was added to the set
|
|
278
278
|
require(
|
|
279
279
|
_globallyApprovedMinters.add(minter),
|
|
280
280
|
"Minter already approved"
|
|
@@ -326,7 +326,7 @@ contract MinterFilterV2 is Ownable, IMinterFilterV1 {
|
|
|
326
326
|
coreContract: coreContract,
|
|
327
327
|
selector: this.approveMinterForContract.selector
|
|
328
328
|
});
|
|
329
|
-
// @dev add() returns true if the value was
|
|
329
|
+
// @dev add() returns true if the value was added to the Set
|
|
330
330
|
require(
|
|
331
331
|
_contractApprovedMinters[coreContract].add(minter),
|
|
332
332
|
"Minter already approved"
|
|
@@ -539,6 +539,7 @@ contract MinterFilterV2 is Ownable, IMinterFilterV1 {
|
|
|
539
539
|
uint256 projectId,
|
|
540
540
|
address coreContract
|
|
541
541
|
) external view returns (address) {
|
|
542
|
+
// @dev use tryGet to control revert message if no minter assigned
|
|
542
543
|
(bool hasMinter, address currentMinter) = _minterForProject[
|
|
543
544
|
coreContract
|
|
544
545
|
].tryGet(projectId);
|
|
@@ -637,16 +638,21 @@ contract MinterFilterV2 is Ownable, IMinterFilterV1 {
|
|
|
637
638
|
address coreContract,
|
|
638
639
|
address minter
|
|
639
640
|
) external view returns (uint256[] memory projectIds) {
|
|
641
|
+
EnumerableMap.UintToAddressMap storage minterMap = _minterForProject[
|
|
642
|
+
coreContract
|
|
643
|
+
];
|
|
640
644
|
// initialize arrays with maximum potential length
|
|
641
|
-
// @dev use num projects using minter across all contracts
|
|
642
|
-
//
|
|
643
|
-
|
|
645
|
+
// @dev use lesser of num projects using minter across all contracts
|
|
646
|
+
// and number of projects on the contract with minters assigned, since
|
|
647
|
+
// both values represent an upper bound on the number of projects that
|
|
648
|
+
// could be using the minter on the contract
|
|
649
|
+
uint256 maxNumProjects = Math.min(
|
|
650
|
+
numProjectsUsingMinter[minter],
|
|
651
|
+
minterMap.length()
|
|
652
|
+
);
|
|
644
653
|
projectIds = new uint256[](maxNumProjects);
|
|
645
654
|
// iterate over all projects on contract, adding to array if using
|
|
646
655
|
// `minter`
|
|
647
|
-
EnumerableMap.UintToAddressMap storage minterMap = _minterForProject[
|
|
648
|
-
coreContract
|
|
649
|
-
];
|
|
650
656
|
uint256 numProjects = minterMap.length();
|
|
651
657
|
uint256 numProjectsOnContractUsingMinter;
|
|
652
658
|
for (uint256 i; i < numProjects; ) {
|
|
@@ -365,7 +365,7 @@ contract MinterDAExpHolderV5 is
|
|
|
365
365
|
coreContract: coreContract
|
|
366
366
|
})
|
|
367
367
|
) {
|
|
368
|
-
syncProjectMaxInvocationsToCore({
|
|
368
|
+
MaxInvocationsLib.syncProjectMaxInvocationsToCore({
|
|
369
369
|
projectId: projectId,
|
|
370
370
|
coreContract: coreContract
|
|
371
371
|
});
|
|
@@ -837,7 +837,7 @@ contract MinterDAExpHolderV5 is
|
|
|
837
837
|
|
|
838
838
|
// NOTE: delegate-vault handling **ends here**.
|
|
839
839
|
|
|
840
|
-
MaxInvocationsLib.
|
|
840
|
+
MaxInvocationsLib.validateMintEffectsInvocations({
|
|
841
841
|
tokenId: tokenId,
|
|
842
842
|
coreContract: coreContract
|
|
843
843
|
});
|
|
@@ -342,7 +342,7 @@ contract MinterDAExpSettlementV3 is
|
|
|
342
342
|
/**
|
|
343
343
|
* @notice Reclaims the sender's payment above current settled price for
|
|
344
344
|
* project `projectId` on core contract `coreContract`.
|
|
345
|
-
* The current settled price is the
|
|
345
|
+
* The current settled price is the price paid for the most recently
|
|
346
346
|
* purchased token, or the base price if the artist has withdrawn revenues
|
|
347
347
|
* after the auction reached base price.
|
|
348
348
|
* This function is callable at any point, but is expected to typically be
|
|
@@ -366,7 +366,7 @@ contract MinterDAExpSettlementV3 is
|
|
|
366
366
|
|
|
367
367
|
/**
|
|
368
368
|
* @notice Reclaims the sender's payment above current settled price for
|
|
369
|
-
* projects in `projectIds`. The current settled price is the
|
|
369
|
+
* projects in `projectIds`. The current settled price is the price
|
|
370
370
|
* paid for the most recently purchased token, or the base price if the
|
|
371
371
|
* artist has withdrawn revenues after the auction reached base price.
|
|
372
372
|
* This function is callable at any point, but is expected to typically be
|
|
@@ -702,7 +702,7 @@ contract MinterDAExpSettlementV3 is
|
|
|
702
702
|
/**
|
|
703
703
|
* @notice Reclaims the sender's payment above current settled price for
|
|
704
704
|
* project `projectId` on core contract `coreContract`.
|
|
705
|
-
* The current settled price is the
|
|
705
|
+
* The current settled price is the price paid for the most recently
|
|
706
706
|
* purchased token, or the base price if the artist has withdrawn revenues
|
|
707
707
|
* after the auction reached base price.
|
|
708
708
|
* This function is callable at any point, but is expected to typically be
|
|
@@ -725,13 +725,14 @@ contract MinterDAExpSettlementV3 is
|
|
|
725
725
|
to: to,
|
|
726
726
|
projectId: projectId,
|
|
727
727
|
coreContract: coreContract,
|
|
728
|
-
purchaserAddress: msg.sender
|
|
728
|
+
purchaserAddress: msg.sender,
|
|
729
|
+
doSendFunds: true
|
|
729
730
|
});
|
|
730
731
|
}
|
|
731
732
|
|
|
732
733
|
/**
|
|
733
734
|
* @notice Reclaims the sender's payment above current settled price for
|
|
734
|
-
* projects in `projectIds`. The current settled price is the
|
|
735
|
+
* projects in `projectIds`. The current settled price is the price
|
|
735
736
|
* paid for the most recently purchased token, or the base price if the
|
|
736
737
|
* artist has withdrawn revenues after the auction reached base price.
|
|
737
738
|
* This function is callable at any point, but is expected to typically be
|
|
@@ -765,12 +766,14 @@ contract MinterDAExpSettlementV3 is
|
|
|
765
766
|
// the receipt in storage
|
|
766
767
|
uint256 excessSettlementFunds;
|
|
767
768
|
for (uint256 i; i < projectIdsLength; ) {
|
|
768
|
-
SettlementExpLib
|
|
769
|
-
|
|
770
|
-
|
|
771
|
-
|
|
772
|
-
|
|
773
|
-
|
|
769
|
+
excessSettlementFunds += SettlementExpLib
|
|
770
|
+
.reclaimProjectExcessSettlementFundsTo({
|
|
771
|
+
to: to,
|
|
772
|
+
projectId: projectIds[i],
|
|
773
|
+
coreContract: coreContracts[i],
|
|
774
|
+
purchaserAddress: msg.sender,
|
|
775
|
+
doSendFunds: false // do not send funds, just tally
|
|
776
|
+
});
|
|
774
777
|
|
|
775
778
|
// gas efficiently increment i
|
|
776
779
|
// won't overflow due to for loop, as well as gas limts
|
|
@@ -782,9 +785,10 @@ contract MinterDAExpSettlementV3 is
|
|
|
782
785
|
// INTERACTIONS
|
|
783
786
|
// send excess settlement funds in a single chunk for all
|
|
784
787
|
// projects
|
|
785
|
-
|
|
786
|
-
|
|
787
|
-
|
|
788
|
+
if (excessSettlementFunds > 0) {
|
|
789
|
+
(bool success_, ) = to.call{value: excessSettlementFunds}("");
|
|
790
|
+
require(success_, "Reclaiming failed");
|
|
791
|
+
}
|
|
788
792
|
}
|
|
789
793
|
|
|
790
794
|
/**
|
|
@@ -849,7 +853,7 @@ contract MinterDAExpSettlementV3 is
|
|
|
849
853
|
|
|
850
854
|
// verify token invocation is valid given local minter max invocations,
|
|
851
855
|
// update local maxHasBeenInvoked
|
|
852
|
-
MaxInvocationsLib.
|
|
856
|
+
MaxInvocationsLib.validateMintEffectsInvocations({
|
|
853
857
|
tokenId: tokenId,
|
|
854
858
|
coreContract: coreContract
|
|
855
859
|
});
|
|
@@ -197,7 +197,7 @@ contract MinterDAExpV5 is
|
|
|
197
197
|
coreContract: coreContract
|
|
198
198
|
})
|
|
199
199
|
) {
|
|
200
|
-
syncProjectMaxInvocationsToCore({
|
|
200
|
+
MaxInvocationsLib.syncProjectMaxInvocationsToCore({
|
|
201
201
|
projectId: projectId,
|
|
202
202
|
coreContract: coreContract
|
|
203
203
|
});
|
|
@@ -528,7 +528,7 @@ contract MinterDAExpV5 is
|
|
|
528
528
|
sender: msg.sender
|
|
529
529
|
});
|
|
530
530
|
|
|
531
|
-
MaxInvocationsLib.
|
|
531
|
+
MaxInvocationsLib.validateMintEffectsInvocations({
|
|
532
532
|
tokenId: tokenId,
|
|
533
533
|
coreContract: coreContract
|
|
534
534
|
});
|
|
@@ -364,7 +364,7 @@ contract MinterDALinHolderV5 is
|
|
|
364
364
|
coreContract: coreContract
|
|
365
365
|
})
|
|
366
366
|
) {
|
|
367
|
-
syncProjectMaxInvocationsToCore({
|
|
367
|
+
MaxInvocationsLib.syncProjectMaxInvocationsToCore({
|
|
368
368
|
projectId: projectId,
|
|
369
369
|
coreContract: coreContract
|
|
370
370
|
});
|
|
@@ -827,7 +827,7 @@ contract MinterDALinHolderV5 is
|
|
|
827
827
|
|
|
828
828
|
// NOTE: delegate-vault handling **ends here**.
|
|
829
829
|
|
|
830
|
-
MaxInvocationsLib.
|
|
830
|
+
MaxInvocationsLib.validateMintEffectsInvocations({
|
|
831
831
|
tokenId: tokenId,
|
|
832
832
|
coreContract: coreContract
|
|
833
833
|
});
|
|
@@ -191,7 +191,7 @@ contract MinterDALinV5 is
|
|
|
191
191
|
coreContract: coreContract
|
|
192
192
|
})
|
|
193
193
|
) {
|
|
194
|
-
syncProjectMaxInvocationsToCore({
|
|
194
|
+
MaxInvocationsLib.syncProjectMaxInvocationsToCore({
|
|
195
195
|
projectId: projectId,
|
|
196
196
|
coreContract: coreContract
|
|
197
197
|
});
|
|
@@ -517,7 +517,7 @@ contract MinterDALinV5 is
|
|
|
517
517
|
sender: msg.sender
|
|
518
518
|
});
|
|
519
519
|
|
|
520
|
-
MaxInvocationsLib.
|
|
520
|
+
MaxInvocationsLib.validateMintEffectsInvocations({
|
|
521
521
|
tokenId: tokenId,
|
|
522
522
|
coreContract: coreContract
|
|
523
523
|
});
|