@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
|
@@ -0,0 +1,133 @@
|
|
|
1
|
+
// SPDX-License-Identifier: LGPL-3.0-only
|
|
2
|
+
pragma solidity 0.8.22;
|
|
3
|
+
|
|
4
|
+
// Created By: Art Blocks Inc.
|
|
5
|
+
|
|
6
|
+
import {GenArt721CoreV3_Engine} from "./engine/V3/GenArt721CoreV3_Engine.sol";
|
|
7
|
+
import {EngineConfiguration} from "./interfaces/v0.8.x/IGenArt721CoreContractV3_Engine.sol";
|
|
8
|
+
|
|
9
|
+
import "./libs/v0.8.x/Bytes32Strings.sol";
|
|
10
|
+
|
|
11
|
+
/**
|
|
12
|
+
* @title Art Blocks Curated ERC-721 core contract, V3.2
|
|
13
|
+
* @author Art Blocks Inc.
|
|
14
|
+
* @notice This contract derives from the Art Blocks Engine contract and adds
|
|
15
|
+
* some functionality to support curation of projects by Art Blocks.
|
|
16
|
+
* It also performs initialization of the contract in the constructor, because
|
|
17
|
+
* the contract is not intended to use a clone proxy pattern, and is intended
|
|
18
|
+
* to be deployed without any required follow-on calls to initialize.
|
|
19
|
+
* ----------------------------------------------------------------------------
|
|
20
|
+
* See the Art Blocks Engine contract for additional applicable documentation.
|
|
21
|
+
*/
|
|
22
|
+
contract GenArt721CoreV3_Curated is GenArt721CoreV3_Engine {
|
|
23
|
+
using Bytes32Strings for bytes32;
|
|
24
|
+
|
|
25
|
+
/// override patch version of this core contract
|
|
26
|
+
// @dev this is a constant value that is used to override the inherited core version CORE_VERSION
|
|
27
|
+
bytes32 private constant _CORE_VERSION_OVERRIDE = "v3.2.6";
|
|
28
|
+
|
|
29
|
+
// @dev overridden core version is returned instead of the inherited core version
|
|
30
|
+
function coreVersion() external pure override returns (string memory) {
|
|
31
|
+
return _CORE_VERSION_OVERRIDE.toString();
|
|
32
|
+
}
|
|
33
|
+
|
|
34
|
+
/// metadata pointer to the previous associated Flagship Artblocks core contracts
|
|
35
|
+
// @dev not defined as constant because constant address arrays are not yet implemented in Solidity
|
|
36
|
+
address[] public PREVIOUS_ART_BLOCKS_CONTRACTS = [
|
|
37
|
+
0x059EDD72Cd353dF5106D2B9cC5ab83a52287aC3a,
|
|
38
|
+
0xa7d8d9ef8D8Ce8992Df33D8b8CF4Aebabd5bD270,
|
|
39
|
+
0x99a9B7c1116f9ceEB1652de04d5969CcE509B069
|
|
40
|
+
];
|
|
41
|
+
|
|
42
|
+
/// Curation registry for Flagship projects, managed by Art Blocks
|
|
43
|
+
address public artblocksCurationRegistryAddress;
|
|
44
|
+
|
|
45
|
+
bool public constant IS_FLAGSHIP = true;
|
|
46
|
+
|
|
47
|
+
/**
|
|
48
|
+
* @notice Construct a new curated Art Blocks ERC-721 core contract.
|
|
49
|
+
* Performs all contract initialization in the constructor.
|
|
50
|
+
* @param engineConfiguration Configuration for the engine contract.
|
|
51
|
+
* note: parameter `engineConfiguration.newSuperAdminAddress` is not used or operated on in this contract.
|
|
52
|
+
* @param adminACLContract_ Address of the admin ACL contract.
|
|
53
|
+
* @param defaultBaseURIHost Default base URI host for token URIs, e.g. "https://token.artblocks.io/" for mainnet
|
|
54
|
+
* @param bytecodeStorageReaderContract_ Address of the bytecode storage reader contract to be used by this
|
|
55
|
+
* contract.
|
|
56
|
+
*/
|
|
57
|
+
constructor(
|
|
58
|
+
EngineConfiguration memory engineConfiguration,
|
|
59
|
+
address adminACLContract_,
|
|
60
|
+
string memory defaultBaseURIHost,
|
|
61
|
+
address bytecodeStorageReaderContract_
|
|
62
|
+
) GenArt721CoreV3_Engine() {
|
|
63
|
+
// input validation generally performed by the engine factory
|
|
64
|
+
_onlyNonZeroAddress(engineConfiguration.renderProviderAddress);
|
|
65
|
+
_onlyNonZeroAddress(engineConfiguration.randomizerContract);
|
|
66
|
+
_onlyNonZeroAddress(adminACLContract_);
|
|
67
|
+
_onlyNonZeroAddress(bytecodeStorageReaderContract_);
|
|
68
|
+
require(
|
|
69
|
+
bytes(defaultBaseURIHost).length > 0,
|
|
70
|
+
"GenArt721CoreV3_Curated: defaultBaseURIHost must be non-empty"
|
|
71
|
+
);
|
|
72
|
+
|
|
73
|
+
// input validation specific to the curated contract
|
|
74
|
+
require(
|
|
75
|
+
!engineConfiguration.autoApproveArtistSplitProposals,
|
|
76
|
+
"GenArt721CoreV3_Curated: autoApproveArtistSplitProposals must be false"
|
|
77
|
+
);
|
|
78
|
+
// @dev artblocks is listed as render provider, no party should be platform provider
|
|
79
|
+
require(
|
|
80
|
+
engineConfiguration.nullPlatformProvider,
|
|
81
|
+
"GenArt721CoreV3_Curated: nullPlatformProvider must be true"
|
|
82
|
+
);
|
|
83
|
+
require(
|
|
84
|
+
!engineConfiguration.allowArtistProjectActivation,
|
|
85
|
+
"GenArt721CoreV3_Curated: allowArtistProjectActivation must be false"
|
|
86
|
+
);
|
|
87
|
+
// @dev previous artblocks contracts exists, so only starting project ID > 0
|
|
88
|
+
require(
|
|
89
|
+
engineConfiguration.startingProjectId > 0,
|
|
90
|
+
"GenArt721CoreV3_Curated: startingProjectId must be greater than 0"
|
|
91
|
+
);
|
|
92
|
+
|
|
93
|
+
// initialize the contract
|
|
94
|
+
_initialize({
|
|
95
|
+
engineConfiguration: engineConfiguration,
|
|
96
|
+
adminACLContract_: adminACLContract_,
|
|
97
|
+
defaultBaseURIHost: defaultBaseURIHost,
|
|
98
|
+
bytecodeStorageReaderContract_: bytecodeStorageReaderContract_
|
|
99
|
+
});
|
|
100
|
+
|
|
101
|
+
// override default base URI to be curated format instead of Engine (no address required for curated)
|
|
102
|
+
_updateDefaultBaseURI(defaultBaseURIHost);
|
|
103
|
+
}
|
|
104
|
+
|
|
105
|
+
/**
|
|
106
|
+
* @notice Override of the Engine contract's initialize function.
|
|
107
|
+
* Immediately reverts, as initialization of this Curated contract is performed in the constructor.
|
|
108
|
+
*/
|
|
109
|
+
function initialize(
|
|
110
|
+
EngineConfiguration memory /*engineConfiguration*/,
|
|
111
|
+
address /*adminACLContract_*/,
|
|
112
|
+
string memory /*defaultBaseURIHost*/,
|
|
113
|
+
address /*bytecodeStorageReaderContract_*/
|
|
114
|
+
) external pure override {
|
|
115
|
+
// revert - initialization for this contract is performed in the constructor
|
|
116
|
+
// @dev note that the initialize function would revert without this override, but it is included for clarity
|
|
117
|
+
revert("GenArt721CoreV3_Curated: contract initialized in constructor");
|
|
118
|
+
}
|
|
119
|
+
|
|
120
|
+
/**
|
|
121
|
+
* @notice Updates reference to Art Blocks Curation Registry contract.
|
|
122
|
+
* @param _artblocksCurationRegistryAddress Address of Art Blocks Curation Registry contract.
|
|
123
|
+
*/
|
|
124
|
+
function updateArtblocksCurationRegistryAddress(
|
|
125
|
+
address _artblocksCurationRegistryAddress
|
|
126
|
+
) external {
|
|
127
|
+
_onlyAdminACL(this.updateArtblocksCurationRegistryAddress.selector);
|
|
128
|
+
artblocksCurationRegistryAddress = _artblocksCurationRegistryAddress;
|
|
129
|
+
emit ArtBlocksCurationRegistryContractUpdated(
|
|
130
|
+
_artblocksCurationRegistryAddress
|
|
131
|
+
);
|
|
132
|
+
}
|
|
133
|
+
}
|
|
@@ -0,0 +1,173 @@
|
|
|
1
|
+
// SPDX-License-Identifier: LGPL-3.0-only
|
|
2
|
+
// Created By: Art Blocks Inc.
|
|
3
|
+
|
|
4
|
+
// @dev fixed to specific solidity version for clarity and for more clear
|
|
5
|
+
// source code verification purposes.
|
|
6
|
+
pragma solidity 0.8.22;
|
|
7
|
+
|
|
8
|
+
import {IOwnedCreate2FactoryV0} from "./interfaces/v0.8.x/IOwnedCreate2FactoryV0.sol";
|
|
9
|
+
|
|
10
|
+
import "@openzeppelin-5.0/contracts/access/Ownable.sol";
|
|
11
|
+
import {IERC20} from "@openzeppelin-5.0/contracts/token/ERC20/IERC20.sol";
|
|
12
|
+
import {SafeERC20} from "@openzeppelin-5.0/contracts/token/ERC20/utils/SafeERC20.sol";
|
|
13
|
+
import {Create2} from "@openzeppelin-5.0/contracts/utils/Create2.sol";
|
|
14
|
+
|
|
15
|
+
/**
|
|
16
|
+
* @title OwnedCreate2FactoryV0
|
|
17
|
+
* @author Art Blocks Inc.
|
|
18
|
+
* @notice Owned, Create2 factory contract for deploying arbitrary contracts from a single wallet.
|
|
19
|
+
* This contract is intended to be used as a factory for deploying other contracts, while also allowing
|
|
20
|
+
* the owner to drain the contract's balance to a recipient address. The contract also provides a
|
|
21
|
+
* function to execute a batch of calls, which can be useful for interacting with contracts that
|
|
22
|
+
* might deem this contract eligible for airdrops, thereby avoiding loss of funds.
|
|
23
|
+
*/
|
|
24
|
+
contract OwnedCreate2FactoryV0 is Ownable, IOwnedCreate2FactoryV0 {
|
|
25
|
+
// public type
|
|
26
|
+
bytes32 public constant type_ = "OwnedCreate2FactoryV0";
|
|
27
|
+
|
|
28
|
+
/**
|
|
29
|
+
* Represents a generic call operation.
|
|
30
|
+
*/
|
|
31
|
+
struct Call {
|
|
32
|
+
address to;
|
|
33
|
+
bytes data;
|
|
34
|
+
}
|
|
35
|
+
|
|
36
|
+
/**
|
|
37
|
+
* @notice creates this contract and deploys the curated contract
|
|
38
|
+
* @param owner_ address of the initial owner of this contract to execute all future calls
|
|
39
|
+
*/
|
|
40
|
+
constructor(address owner_) Ownable(owner_) {
|
|
41
|
+
// input validation
|
|
42
|
+
// @dev Ownable enforces that the owner must be non-zero
|
|
43
|
+
|
|
44
|
+
// emit Deployed event
|
|
45
|
+
emit Deployed();
|
|
46
|
+
}
|
|
47
|
+
|
|
48
|
+
/**
|
|
49
|
+
* @notice Deploy a new contract using create2.
|
|
50
|
+
* Reverts if the initcode is empty.
|
|
51
|
+
* Reverts if not called by the owner.
|
|
52
|
+
* The address of the new contract is deterministic based on the salt and initcode, and may be obtained by calling
|
|
53
|
+
* the `predictDeterministicAddress` function.
|
|
54
|
+
* @param salt The salt to use for the deployment.
|
|
55
|
+
* @param initcode The initcode of the contract to deploy.
|
|
56
|
+
* @return newContract The address of the newly deployed contract.
|
|
57
|
+
*/
|
|
58
|
+
function deployCreate2(
|
|
59
|
+
bytes32 salt,
|
|
60
|
+
bytes calldata initcode
|
|
61
|
+
) external payable onlyOwner returns (address newContract) {
|
|
62
|
+
// input validation
|
|
63
|
+
// @dev Create2.deploy will revert if initcode is empty
|
|
64
|
+
|
|
65
|
+
// deploy contract
|
|
66
|
+
newContract = Create2.deploy({
|
|
67
|
+
amount: msg.value,
|
|
68
|
+
salt: salt,
|
|
69
|
+
bytecode: initcode
|
|
70
|
+
});
|
|
71
|
+
|
|
72
|
+
emit ContractCreated({newContract: newContract});
|
|
73
|
+
return newContract;
|
|
74
|
+
}
|
|
75
|
+
|
|
76
|
+
/**
|
|
77
|
+
* @dev This contract is not intended to hold funds. This function,
|
|
78
|
+
* `drainETH`, and `drainERC20` are implemented to prevent the loss
|
|
79
|
+
* of funds that might be sent to this contract inadvertently.
|
|
80
|
+
*/
|
|
81
|
+
receive() external payable {}
|
|
82
|
+
|
|
83
|
+
/**
|
|
84
|
+
* @notice Drains the contract's balance to the `recipient`.
|
|
85
|
+
* @param recipient The address to send funds to.
|
|
86
|
+
* Only callable by the owner.
|
|
87
|
+
*/
|
|
88
|
+
function drainETH(address payable recipient) external onlyOwner {
|
|
89
|
+
uint256 balance = address(this).balance;
|
|
90
|
+
if (balance > 0) {
|
|
91
|
+
(bool success, ) = recipient.call{value: balance}("");
|
|
92
|
+
require(success, "Payment failed");
|
|
93
|
+
}
|
|
94
|
+
}
|
|
95
|
+
|
|
96
|
+
/**
|
|
97
|
+
* @notice Drains the contract's balance of an input ERC20 token to
|
|
98
|
+
* the `recipient`.
|
|
99
|
+
* @param ERC20TokenAddress The address of the ERC20 token to withdraw.
|
|
100
|
+
* @param recipient The address to send ERC20 tokens to.
|
|
101
|
+
* Only callable by the owner.
|
|
102
|
+
*/
|
|
103
|
+
function drainERC20(
|
|
104
|
+
address ERC20TokenAddress,
|
|
105
|
+
address recipient
|
|
106
|
+
) external onlyOwner {
|
|
107
|
+
IERC20 token = IERC20(ERC20TokenAddress);
|
|
108
|
+
uint256 balance = token.balanceOf(address(this));
|
|
109
|
+
if (balance > 0) {
|
|
110
|
+
SafeERC20.safeTransfer({
|
|
111
|
+
token: token,
|
|
112
|
+
to: recipient,
|
|
113
|
+
value: balance
|
|
114
|
+
});
|
|
115
|
+
}
|
|
116
|
+
}
|
|
117
|
+
|
|
118
|
+
/**
|
|
119
|
+
* @notice Execute a batch of calls.
|
|
120
|
+
* @dev The calls are executed in order, reverting if any of them fails. Can
|
|
121
|
+
* only be called by the owner. It is safe to check ownership only once here
|
|
122
|
+
* because the owner status is only used to gate access to the function, not
|
|
123
|
+
* to validate each individual call. Even if ownership is transferred during
|
|
124
|
+
* the sequence of calls, it does not affect the execution logic or security,
|
|
125
|
+
* as ownership is solely used to prevent unauthorized use of this batch
|
|
126
|
+
* execution capability. This is particularly useful to safely interact
|
|
127
|
+
* with contracts or addresses that might deem this contract eligible for
|
|
128
|
+
* airdrops, thereby avoiding loss of funds.
|
|
129
|
+
* @param _calls The calls to execute
|
|
130
|
+
*/
|
|
131
|
+
function execCalls(
|
|
132
|
+
Call[] calldata _calls
|
|
133
|
+
)
|
|
134
|
+
external
|
|
135
|
+
onlyOwner
|
|
136
|
+
returns (uint256 blockNumber, bytes[] memory returnData)
|
|
137
|
+
{
|
|
138
|
+
blockNumber = block.number;
|
|
139
|
+
uint256 length = _calls.length;
|
|
140
|
+
returnData = new bytes[](length);
|
|
141
|
+
|
|
142
|
+
for (uint256 i = 0; i < length; ++i) {
|
|
143
|
+
Call calldata calli = _calls[i];
|
|
144
|
+
|
|
145
|
+
// check for existence of code at the target address
|
|
146
|
+
if (calli.to.code.length == 0) {
|
|
147
|
+
// when the call is to an EOA, the calldata must be empty.
|
|
148
|
+
require(calli.data.length == 0, "Invalid call data");
|
|
149
|
+
}
|
|
150
|
+
|
|
151
|
+
(bool success, bytes memory data) = calli.to.call(calli.data);
|
|
152
|
+
require(success, string(data));
|
|
153
|
+
returnData[i] = data;
|
|
154
|
+
}
|
|
155
|
+
}
|
|
156
|
+
|
|
157
|
+
/**
|
|
158
|
+
* @dev Predict the deterministic address for a new deployment using create2.
|
|
159
|
+
* @param salt Salt used to deterministically deploy the clone.
|
|
160
|
+
* @param initcode The initcode of the contract to deploy.
|
|
161
|
+
*/
|
|
162
|
+
|
|
163
|
+
function predictDeterministicAddress(
|
|
164
|
+
bytes32 salt,
|
|
165
|
+
bytes memory initcode
|
|
166
|
+
) external view returns (address predicted) {
|
|
167
|
+
return
|
|
168
|
+
Create2.computeAddress({
|
|
169
|
+
salt: salt,
|
|
170
|
+
bytecodeHash: keccak256(initcode)
|
|
171
|
+
});
|
|
172
|
+
}
|
|
173
|
+
}
|
|
@@ -1,19 +1,19 @@
|
|
|
1
1
|
// SPDX-License-Identifier: LGPL-3.0-only
|
|
2
|
-
pragma solidity 0.8.
|
|
2
|
+
pragma solidity 0.8.22;
|
|
3
3
|
|
|
4
4
|
// Created By: Art Blocks Inc.
|
|
5
5
|
|
|
6
|
-
import "
|
|
7
|
-
import "
|
|
8
|
-
import "
|
|
9
|
-
import "
|
|
10
|
-
import "
|
|
6
|
+
import "../interfaces/v0.8.x/IRandomizer_V3CoreBase.sol";
|
|
7
|
+
import "../interfaces/v0.8.x/IAdminACLV0.sol";
|
|
8
|
+
import "../interfaces/v0.8.x/IGenArt721CoreContractV3.sol";
|
|
9
|
+
import "../interfaces/v0.8.x/IGenArt721CoreContractExposesHashSeed.sol";
|
|
10
|
+
import "../interfaces/v0.8.x/IManifold.sol";
|
|
11
11
|
|
|
12
12
|
import "@openzeppelin-4.7/contracts/utils/Strings.sol";
|
|
13
13
|
import "@openzeppelin-4.7/contracts/access/Ownable.sol";
|
|
14
|
-
import "
|
|
15
|
-
import "
|
|
16
|
-
import "
|
|
14
|
+
import "../libs/v0.8.x/ERC721_PackedHashSeed.sol";
|
|
15
|
+
import "../libs/v0.8.x/BytecodeStorageV1.sol";
|
|
16
|
+
import "../libs/v0.8.x/Bytes32Strings.sol";
|
|
17
17
|
|
|
18
18
|
/**
|
|
19
19
|
* @title Art Blocks ERC-721 core contract, V3.
|
|
@@ -103,7 +103,7 @@ contract GenArt721CoreV3 is
|
|
|
103
103
|
uint8 constant AT_CHARACTER_CODE = uint8(bytes1("@")); // 0x40
|
|
104
104
|
|
|
105
105
|
// numeric constants
|
|
106
|
-
|
|
106
|
+
// max art blocks primary sales percentage is 100%
|
|
107
107
|
uint256 constant ART_BLOCKS_MAX_SECONDARY_SALES_BPS = 10000; // 10_000 BPS = 100%
|
|
108
108
|
uint256 constant ARTIST_MAX_SECONDARY_ROYALTY_PERCENTAGE = 95; // 95%
|
|
109
109
|
|
|
@@ -125,10 +125,13 @@ contract GenArt721CoreV3 is
|
|
|
125
125
|
bytes32 constant FIELD_ARTBLOCKS_SECONDARY_SALES_ADDRESS =
|
|
126
126
|
"artblocksSecondarySalesAddress";
|
|
127
127
|
bytes32 constant FIELD_RANDOMIZER_ADDRESS = "randomizerAddress";
|
|
128
|
+
bytes32 constant FIELD_NEXT_CORE_CONTRACT = "nextCoreContract";
|
|
128
129
|
bytes32 constant FIELD_ARTBLOCKS_CURATION_REGISTRY_ADDRESS =
|
|
129
130
|
"curationRegistryAddress";
|
|
130
131
|
bytes32 constant FIELD_ARTBLOCKS_DEPENDENCY_REGISTRY_ADDRESS =
|
|
131
132
|
"dependencyRegistryAddress";
|
|
133
|
+
bytes32 constant FIELD_ARTBLOCKS_ON_CHAIN_GENERATOR_ADDRESS =
|
|
134
|
+
"onChainGeneratorAddress";
|
|
132
135
|
bytes32 constant FIELD_ARTBLOCKS_PRIMARY_SALES_PERCENTAGE =
|
|
133
136
|
"artblocksPrimaryPercentage";
|
|
134
137
|
bytes32 constant FIELD_ARTBLOCKS_SECONDARY_SALES_BPS =
|
|
@@ -160,11 +163,15 @@ contract GenArt721CoreV3 is
|
|
|
160
163
|
/// Art Blocks Project ID range: [3-373]
|
|
161
164
|
address public constant ART_BLOCKS_ERC721TOKEN_ADDRESS_V1 =
|
|
162
165
|
0xa7d8d9ef8D8Ce8992Df33D8b8CF4Aebabd5bD270;
|
|
166
|
+
/// pointer to next core contract associated with this contract
|
|
167
|
+
address public nextCoreContract;
|
|
163
168
|
|
|
164
169
|
/// Curation registry managed by Art Blocks
|
|
165
170
|
address public artblocksCurationRegistryAddress;
|
|
166
171
|
/// Dependency registry managed by Art Blocks
|
|
167
172
|
address public artblocksDependencyRegistryAddress;
|
|
173
|
+
/// On chain generator managed by Art Blocks
|
|
174
|
+
address public artblocksOnChainGeneratorAddress;
|
|
168
175
|
|
|
169
176
|
/// current randomizer contract
|
|
170
177
|
IRandomizer_V3CoreBase public randomizerContract;
|
|
@@ -484,6 +491,16 @@ contract GenArt721CoreV3 is
|
|
|
484
491
|
Ownable.renounceOwnership();
|
|
485
492
|
}
|
|
486
493
|
|
|
494
|
+
/**
|
|
495
|
+
* @notice Updates reference to next core contract, associated with this contract.
|
|
496
|
+
* @param _nextCoreContract Address of the next core contract
|
|
497
|
+
*/
|
|
498
|
+
function updateNextCoreContract(address _nextCoreContract) external {
|
|
499
|
+
_onlyAdminACL(this.updateNextCoreContract.selector);
|
|
500
|
+
nextCoreContract = _nextCoreContract;
|
|
501
|
+
emit PlatformUpdated(FIELD_NEXT_CORE_CONTRACT);
|
|
502
|
+
}
|
|
503
|
+
|
|
487
504
|
/**
|
|
488
505
|
* @notice Updates reference to Art Blocks Curation Registry contract.
|
|
489
506
|
* @param _artblocksCurationRegistryAddress Address of new Curation
|
|
@@ -512,6 +529,19 @@ contract GenArt721CoreV3 is
|
|
|
512
529
|
emit PlatformUpdated(FIELD_ARTBLOCKS_DEPENDENCY_REGISTRY_ADDRESS);
|
|
513
530
|
}
|
|
514
531
|
|
|
532
|
+
/**
|
|
533
|
+
* @notice Updates reference to Art Blocks On Chain Generator contract.
|
|
534
|
+
* @param _artblocksOnChainGeneratorAddress Address of new on chain generator.
|
|
535
|
+
*/
|
|
536
|
+
function updateArtblocksOnChainGeneratorAddress(
|
|
537
|
+
address _artblocksOnChainGeneratorAddress
|
|
538
|
+
) external {
|
|
539
|
+
_onlyAdminACL(this.updateArtblocksOnChainGeneratorAddress.selector);
|
|
540
|
+
_onlyNonZeroAddress(_artblocksOnChainGeneratorAddress);
|
|
541
|
+
artblocksOnChainGeneratorAddress = _artblocksOnChainGeneratorAddress;
|
|
542
|
+
emit PlatformUpdated(FIELD_ARTBLOCKS_ON_CHAIN_GENERATOR_ADDRESS);
|
|
543
|
+
}
|
|
544
|
+
|
|
515
545
|
/**
|
|
516
546
|
* @notice Updates artblocksPrimarySalesAddress to
|
|
517
547
|
* `_artblocksPrimarySalesAddress`.
|
|
@@ -550,11 +580,8 @@ contract GenArt721CoreV3 is
|
|
|
550
580
|
uint256 artblocksPrimarySalesPercentage_
|
|
551
581
|
) external {
|
|
552
582
|
_onlyAdminACL(this.updateArtblocksPrimarySalesPercentage.selector);
|
|
553
|
-
|
|
554
|
-
|
|
555
|
-
ART_BLOCKS_MAX_PRIMARY_SALES_PERCENTAGE,
|
|
556
|
-
"Max of ART_BLOCKS_MAX_PRIMARY_SALES_PERCENTAGE percent"
|
|
557
|
-
);
|
|
583
|
+
// anything above 100 percent is illogical
|
|
584
|
+
require(artblocksPrimarySalesPercentage_ <= 100, "Max of 100 percent");
|
|
558
585
|
_artblocksPrimarySalesPercentage = uint8(
|
|
559
586
|
artblocksPrimarySalesPercentage_
|
|
560
587
|
);
|
|
@@ -896,6 +923,8 @@ contract GenArt721CoreV3 is
|
|
|
896
923
|
/**
|
|
897
924
|
* @notice Updates artist name for project `_projectId` to be
|
|
898
925
|
* `_projectArtistName`.
|
|
926
|
+
* @dev allows admin to update after project is locked, due to our
|
|
927
|
+
* experiences of artist name changes being requested post-lock.
|
|
899
928
|
* @param _projectId Project ID.
|
|
900
929
|
* @param _projectArtistName New artist name.
|
|
901
930
|
*/
|
|
@@ -903,10 +932,17 @@ contract GenArt721CoreV3 is
|
|
|
903
932
|
uint256 _projectId,
|
|
904
933
|
string memory _projectArtistName
|
|
905
934
|
) external {
|
|
906
|
-
|
|
907
|
-
|
|
908
|
-
|
|
909
|
-
|
|
935
|
+
// checks
|
|
936
|
+
// if unlocked, only artist may update, if locked, only admin may update
|
|
937
|
+
require(
|
|
938
|
+
_projectUnlocked(_projectId)
|
|
939
|
+
? msg.sender == projectIdToFinancials[_projectId].artistAddress
|
|
940
|
+
: adminACLAllowed(
|
|
941
|
+
msg.sender,
|
|
942
|
+
address(this),
|
|
943
|
+
this.updateProjectArtistName.selector
|
|
944
|
+
),
|
|
945
|
+
"Only artist, owner when locked"
|
|
910
946
|
);
|
|
911
947
|
_onlyNonEmptyString(_projectArtistName);
|
|
912
948
|
projects[_projectId].artist = _projectArtistName;
|
|
@@ -967,7 +1003,7 @@ contract GenArt721CoreV3 is
|
|
|
967
1003
|
address(this),
|
|
968
1004
|
this.updateProjectDescription.selector
|
|
969
1005
|
),
|
|
970
|
-
"Only artist
|
|
1006
|
+
"Only artist, owner when locked"
|
|
971
1007
|
);
|
|
972
1008
|
// effects
|
|
973
1009
|
// store description in contract bytecode, replacing reference address from
|
|
@@ -43,7 +43,7 @@ import "../libs/v0.8.x/Bytes32Strings.sol";
|
|
|
43
43
|
* - forbidNewProjects (forever forbidding new projects)
|
|
44
44
|
* - updateDefaultBaseURI (used to initialize new project base URIs)
|
|
45
45
|
* ----------------------------------------------------------------------------
|
|
46
|
-
* The following functions are restricted to either the
|
|
46
|
+
* The following functions are restricted to either the Artist address or
|
|
47
47
|
* the Admin ACL contract, only when the project is not locked:
|
|
48
48
|
* - updateProjectName
|
|
49
49
|
* - updateProjectArtistName
|
|
@@ -103,7 +103,7 @@ contract GenArt721CoreV3_Explorations is
|
|
|
103
103
|
uint8 constant AT_CHARACTER_CODE = uint8(bytes1("@")); // 0x40
|
|
104
104
|
|
|
105
105
|
// numeric constants
|
|
106
|
-
|
|
106
|
+
// max art blocks primary sales percentage is 100%
|
|
107
107
|
uint256 constant ART_BLOCKS_MAX_SECONDARY_SALES_BPS = 10000; // 10_000 BPS = 100%
|
|
108
108
|
uint256 constant ARTIST_MAX_SECONDARY_ROYALTY_PERCENTAGE = 95; // 95%
|
|
109
109
|
|
|
@@ -125,11 +125,14 @@ contract GenArt721CoreV3_Explorations is
|
|
|
125
125
|
bytes32 constant FIELD_ARTBLOCKS_SECONDARY_SALES_ADDRESS =
|
|
126
126
|
"artblocksSecondarySalesAddress";
|
|
127
127
|
bytes32 constant FIELD_RANDOMIZER_ADDRESS = "randomizerAddress";
|
|
128
|
+
bytes32 constant FIELD_NEXT_CORE_CONTRACT = "nextCoreContract";
|
|
128
129
|
// note: Curation registry address will never be updated on V3 Explorations
|
|
129
130
|
bytes32 constant FIELD_ARTBLOCKS_CURATION_REGISTRY_ADDRESS =
|
|
130
131
|
"curationRegistryAddress";
|
|
131
132
|
bytes32 constant FIELD_ARTBLOCKS_DEPENDENCY_REGISTRY_ADDRESS =
|
|
132
133
|
"dependencyRegistryAddress";
|
|
134
|
+
bytes32 constant FIELD_ARTBLOCKS_ON_CHAIN_GENERATOR_ADDRESS =
|
|
135
|
+
"onChainGeneratorAddress";
|
|
133
136
|
bytes32 constant FIELD_ARTBLOCKS_PRIMARY_SALES_PERCENTAGE =
|
|
134
137
|
"artblocksPrimaryPercentage";
|
|
135
138
|
bytes32 constant FIELD_ARTBLOCKS_SECONDARY_SALES_BPS =
|
|
@@ -154,12 +157,17 @@ contract GenArt721CoreV3_Explorations is
|
|
|
154
157
|
bytes32 constant FIELD_PROJECT_ASPECT_RATIO = "aspectRatio";
|
|
155
158
|
bytes32 constant FIELD_PROJECT_BASE_URI = "baseURI";
|
|
156
159
|
|
|
160
|
+
/// pointer to next core contract associated with this contract
|
|
161
|
+
address public nextCoreContract;
|
|
162
|
+
|
|
157
163
|
/// Curation registry is not relevant for Art Blocks Explorations, and will
|
|
158
164
|
/// remain null for interface-conformance purposes only, specifically for
|
|
159
165
|
/// indexing layers.
|
|
160
166
|
address public artblocksCurationRegistryAddress;
|
|
161
167
|
/// Dependency registry managed by Art Blocks
|
|
162
168
|
address public artblocksDependencyRegistryAddress;
|
|
169
|
+
/// On chain generator managed by Art Blocks
|
|
170
|
+
address public artblocksOnChainGeneratorAddress;
|
|
163
171
|
|
|
164
172
|
/// current randomizer contract
|
|
165
173
|
IRandomizerV2 public randomizerContract;
|
|
@@ -408,7 +416,7 @@ contract GenArt721CoreV3_Explorations is
|
|
|
408
416
|
unchecked {
|
|
409
417
|
// invocationsBefore is uint24 << max uint256. In production use,
|
|
410
418
|
// _projectId * ONE_MILLION must be << max uint256, otherwise
|
|
411
|
-
// tokenIdToProjectId function
|
|
419
|
+
// tokenIdToProjectId function becomes invalid.
|
|
412
420
|
// Therefore, no risk of overflow
|
|
413
421
|
thisTokenId = (_projectId * ONE_MILLION) + invocationsBefore;
|
|
414
422
|
}
|
|
@@ -489,6 +497,16 @@ contract GenArt721CoreV3_Explorations is
|
|
|
489
497
|
Ownable.renounceOwnership();
|
|
490
498
|
}
|
|
491
499
|
|
|
500
|
+
/**
|
|
501
|
+
* @notice Updates reference to next core contract, associated with this contract.
|
|
502
|
+
* @param _nextCoreContract Address of the next core contract
|
|
503
|
+
*/
|
|
504
|
+
function updateNextCoreContract(address _nextCoreContract) external {
|
|
505
|
+
_onlyAdminACL(this.updateNextCoreContract.selector);
|
|
506
|
+
nextCoreContract = _nextCoreContract;
|
|
507
|
+
emit PlatformUpdated(FIELD_NEXT_CORE_CONTRACT);
|
|
508
|
+
}
|
|
509
|
+
|
|
492
510
|
/**
|
|
493
511
|
* @notice Warning: Configuring Curation Registry contract is not supported
|
|
494
512
|
* on V3 Explorations version of this contract.
|
|
@@ -518,6 +536,19 @@ contract GenArt721CoreV3_Explorations is
|
|
|
518
536
|
emit PlatformUpdated(FIELD_ARTBLOCKS_DEPENDENCY_REGISTRY_ADDRESS);
|
|
519
537
|
}
|
|
520
538
|
|
|
539
|
+
/**
|
|
540
|
+
* @notice Updates reference to Art Blocks On Chain Generator contract.
|
|
541
|
+
* @param _artblocksOnChainGeneratorAddress Address of new on chain generator.
|
|
542
|
+
*/
|
|
543
|
+
function updateArtblocksOnChainGeneratorAddress(
|
|
544
|
+
address _artblocksOnChainGeneratorAddress
|
|
545
|
+
) external {
|
|
546
|
+
_onlyAdminACL(this.updateArtblocksOnChainGeneratorAddress.selector);
|
|
547
|
+
_onlyNonZeroAddress(_artblocksOnChainGeneratorAddress);
|
|
548
|
+
artblocksOnChainGeneratorAddress = _artblocksOnChainGeneratorAddress;
|
|
549
|
+
emit PlatformUpdated(FIELD_ARTBLOCKS_ON_CHAIN_GENERATOR_ADDRESS);
|
|
550
|
+
}
|
|
551
|
+
|
|
521
552
|
/**
|
|
522
553
|
* @notice Updates artblocksPrimarySalesAddress to
|
|
523
554
|
* `_artblocksPrimarySalesAddress`.
|
|
@@ -556,11 +587,8 @@ contract GenArt721CoreV3_Explorations is
|
|
|
556
587
|
uint256 artblocksPrimarySalesPercentage_
|
|
557
588
|
) external {
|
|
558
589
|
_onlyAdminACL(this.updateArtblocksPrimarySalesPercentage.selector);
|
|
559
|
-
|
|
560
|
-
|
|
561
|
-
ART_BLOCKS_MAX_PRIMARY_SALES_PERCENTAGE,
|
|
562
|
-
"Max of ART_BLOCKS_MAX_PRIMARY_SALES_PERCENTAGE percent"
|
|
563
|
-
);
|
|
590
|
+
// anything above 100 percent is illogical
|
|
591
|
+
require(artblocksPrimarySalesPercentage_ <= 100, "Max of 100 percent");
|
|
564
592
|
_artblocksPrimarySalesPercentage = uint8(
|
|
565
593
|
artblocksPrimarySalesPercentage_
|
|
566
594
|
);
|
|
@@ -902,6 +930,8 @@ contract GenArt721CoreV3_Explorations is
|
|
|
902
930
|
/**
|
|
903
931
|
* @notice Updates artist name for project `_projectId` to be
|
|
904
932
|
* `_projectArtistName`.
|
|
933
|
+
* @dev allows admin to update after project is locked, due to our
|
|
934
|
+
* experiences of artist name changes being requested post-lock.
|
|
905
935
|
* @param _projectId Project ID.
|
|
906
936
|
* @param _projectArtistName New artist name.
|
|
907
937
|
*/
|
|
@@ -909,10 +939,16 @@ contract GenArt721CoreV3_Explorations is
|
|
|
909
939
|
uint256 _projectId,
|
|
910
940
|
string memory _projectArtistName
|
|
911
941
|
) external {
|
|
912
|
-
|
|
913
|
-
|
|
914
|
-
_projectId
|
|
915
|
-
|
|
942
|
+
// if unlocked, only artist may update, if locked, only admin may update
|
|
943
|
+
require(
|
|
944
|
+
_projectUnlocked(_projectId)
|
|
945
|
+
? msg.sender == projectIdToFinancials[_projectId].artistAddress
|
|
946
|
+
: adminACLAllowed(
|
|
947
|
+
msg.sender,
|
|
948
|
+
address(this),
|
|
949
|
+
this.updateProjectArtistName.selector
|
|
950
|
+
),
|
|
951
|
+
"Only artist, owner when locked"
|
|
916
952
|
);
|
|
917
953
|
_onlyNonEmptyString(_projectArtistName);
|
|
918
954
|
projects[_projectId].artist = _projectArtistName;
|
|
@@ -973,7 +1009,7 @@ contract GenArt721CoreV3_Explorations is
|
|
|
973
1009
|
address(this),
|
|
974
1010
|
this.updateProjectDescription.selector
|
|
975
1011
|
),
|
|
976
|
-
"Only artist
|
|
1012
|
+
"Only artist, owner when locked"
|
|
977
1013
|
);
|
|
978
1014
|
// effects
|
|
979
1015
|
// store description in contract bytecode, replacing reference address from
|
|
@@ -1,10 +1,10 @@
|
|
|
1
1
|
// SPDX-License-Identifier: LGPL-3.0-only
|
|
2
2
|
// Created By: Art Blocks Inc.
|
|
3
3
|
|
|
4
|
-
import "
|
|
5
|
-
import "
|
|
6
|
-
import "
|
|
7
|
-
import "
|
|
4
|
+
import "../../../interfaces/v0.8.x/IMinterBaseV0.sol";
|
|
5
|
+
import "../../../interfaces/v0.8.x/IGenArt721CoreContractV3_Base.sol";
|
|
6
|
+
import "../../../interfaces/v0.8.x/IGenArt721CoreContractV3.sol";
|
|
7
|
+
import "../../../interfaces/v0.8.x/IGenArt721CoreContractV3_Engine.sol";
|
|
8
8
|
|
|
9
9
|
import "@openzeppelin-4.7/contracts/token/ERC20/IERC20.sol";
|
|
10
10
|
|
|
@@ -1,10 +1,10 @@
|
|
|
1
1
|
// SPDX-License-Identifier: LGPL-3.0-only
|
|
2
2
|
// Created By: Art Blocks Inc.
|
|
3
3
|
|
|
4
|
-
import "
|
|
5
|
-
import "
|
|
6
|
-
import "
|
|
7
|
-
import "
|
|
4
|
+
import "../../../../interfaces/v0.8.x/IGenArt721CoreContractV3_Base.sol";
|
|
5
|
+
import "../../../../interfaces/v0.8.x/IMinterFilterV0.sol";
|
|
6
|
+
import "../../../../interfaces/v0.8.x/IFilteredMinterDAExpV1.sol";
|
|
7
|
+
import "../MinterBase_v0_1_1.sol";
|
|
8
8
|
|
|
9
9
|
import "@openzeppelin-4.5/contracts/security/ReentrancyGuard.sol";
|
|
10
10
|
import "@openzeppelin-4.5/contracts/utils/math/SafeCast.sol";
|