@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,597 @@
|
|
|
1
|
+
// SPDX-License-Identifier: LGPL-3.0-only
|
|
2
|
+
// Created By: Art Blocks Inc.
|
|
3
|
+
|
|
4
|
+
pragma solidity ^0.8.0;
|
|
5
|
+
|
|
6
|
+
import {IGenArt721CoreContractV3_Engine_Flex} from "../../interfaces/v0.8.x/IGenArt721CoreContractV3_Engine_Flex.sol";
|
|
7
|
+
import {IBytecodeStorageReader_Base} from "../../interfaces/v0.8.x/IBytecodeStorageReader_Base.sol";
|
|
8
|
+
|
|
9
|
+
import {BytecodeStorageWriter} from "./BytecodeStorageV2.sol";
|
|
10
|
+
|
|
11
|
+
/**
|
|
12
|
+
* @title Art Blocks V3 Engine Flex - External Helper Library
|
|
13
|
+
* @notice This library is designed to offload bytecode from the V3 Engine
|
|
14
|
+
* Flex contract. It implements logic that may be accessed via DELEGATECALL for
|
|
15
|
+
* operations related to the V3 Engine Flex contract.
|
|
16
|
+
* @author Art Blocks Inc.
|
|
17
|
+
*/
|
|
18
|
+
|
|
19
|
+
library V3FlexLib {
|
|
20
|
+
using BytecodeStorageWriter for string;
|
|
21
|
+
using BytecodeStorageWriter for bytes;
|
|
22
|
+
// For the purposes of this implementation, due to the limited scope and
|
|
23
|
+
// existing legacy infrastructure, the library emits the events
|
|
24
|
+
// defined in IGenArt721CoreContractV3_Engine_Flex.sol. The events are
|
|
25
|
+
// manually duplicated here
|
|
26
|
+
/**
|
|
27
|
+
* @notice When an external asset dependency is updated or added, this event is emitted.
|
|
28
|
+
* @param _projectId The project ID of the project that was updated.
|
|
29
|
+
* @param _index The index of the external asset dependency that was updated.
|
|
30
|
+
* @param _cid Field that contains the CID of the dependency if IPFS or ARWEAVE,
|
|
31
|
+
* empty string of ONCHAIN, or a string representation of the Art Blocks Dependency
|
|
32
|
+
* Registry's `dependencyNameAndVersion` if ART_BLOCKS_DEPENDENCY_REGISTRY.
|
|
33
|
+
* @param _dependencyType The type of the external asset dependency.
|
|
34
|
+
* @param _externalAssetDependencyCount The number of external asset dependencies.
|
|
35
|
+
*/
|
|
36
|
+
event ExternalAssetDependencyUpdated(
|
|
37
|
+
uint256 indexed _projectId,
|
|
38
|
+
uint256 indexed _index,
|
|
39
|
+
string _cid,
|
|
40
|
+
IGenArt721CoreContractV3_Engine_Flex.ExternalAssetDependencyType _dependencyType,
|
|
41
|
+
uint24 _externalAssetDependencyCount
|
|
42
|
+
);
|
|
43
|
+
|
|
44
|
+
/**
|
|
45
|
+
* @notice The project id `_projectId` has had an external asset dependency removed at index `_index`.
|
|
46
|
+
*/
|
|
47
|
+
event ExternalAssetDependencyRemoved(
|
|
48
|
+
uint256 indexed _projectId,
|
|
49
|
+
uint256 indexed _index
|
|
50
|
+
);
|
|
51
|
+
|
|
52
|
+
/**
|
|
53
|
+
* @notice The preferred gateway for dependency type `_dependencyType` has been updated to `_gatewayAddress`.
|
|
54
|
+
*/
|
|
55
|
+
event GatewayUpdated(
|
|
56
|
+
IGenArt721CoreContractV3_Engine_Flex.ExternalAssetDependencyType indexed _dependencyType,
|
|
57
|
+
string _gatewayAddress
|
|
58
|
+
);
|
|
59
|
+
|
|
60
|
+
/**
|
|
61
|
+
* @notice The project id `_projectId` has had all external asset dependencies locked.
|
|
62
|
+
* @dev This is a one-way operation. Once locked, the external asset dependencies cannot be updated.
|
|
63
|
+
*/
|
|
64
|
+
event ProjectExternalAssetDependenciesLocked(uint256 indexed _projectId);
|
|
65
|
+
|
|
66
|
+
// position of V3 Flex Lib storage, using a diamond storage pattern
|
|
67
|
+
// for this library
|
|
68
|
+
bytes32 constant V3_FLEX_LIB_STORAGE_POSITION =
|
|
69
|
+
keccak256("v3flexlib.storage");
|
|
70
|
+
|
|
71
|
+
// project-level variables
|
|
72
|
+
/**
|
|
73
|
+
* Struct used to store a project's currently configured price, and
|
|
74
|
+
* whether or not the price has been configured.
|
|
75
|
+
*/
|
|
76
|
+
struct FlexProjectData {
|
|
77
|
+
bool externalAssetDependenciesLocked;
|
|
78
|
+
uint24 externalAssetDependencyCount;
|
|
79
|
+
mapping(uint256 => IGenArt721CoreContractV3_Engine_Flex.ExternalAssetDependency) externalAssetDependencies;
|
|
80
|
+
}
|
|
81
|
+
|
|
82
|
+
// Diamond storage pattern is used in this library
|
|
83
|
+
struct V3FlexLibStorage {
|
|
84
|
+
string preferredIPFSGateway;
|
|
85
|
+
string preferredArweaveGateway;
|
|
86
|
+
mapping(uint256 projectId => FlexProjectData) flexProjectsData;
|
|
87
|
+
}
|
|
88
|
+
|
|
89
|
+
/**
|
|
90
|
+
* @notice Updates preferredIPFSGateway to `_gateway`.
|
|
91
|
+
* @param _gateway The new preferred IPFS gateway.
|
|
92
|
+
*/
|
|
93
|
+
function updateIPFSGateway(string calldata _gateway) external {
|
|
94
|
+
s().preferredIPFSGateway = _gateway;
|
|
95
|
+
emit GatewayUpdated({
|
|
96
|
+
_dependencyType: IGenArt721CoreContractV3_Engine_Flex
|
|
97
|
+
.ExternalAssetDependencyType
|
|
98
|
+
.IPFS,
|
|
99
|
+
_gatewayAddress: _gateway
|
|
100
|
+
});
|
|
101
|
+
}
|
|
102
|
+
|
|
103
|
+
/**
|
|
104
|
+
* @notice Updates preferredArweaveGateway to `_gateway`.
|
|
105
|
+
* @param _gateway The new preferred Arweave gateway.
|
|
106
|
+
*/
|
|
107
|
+
function updateArweaveGateway(string calldata _gateway) external {
|
|
108
|
+
s().preferredArweaveGateway = _gateway;
|
|
109
|
+
emit GatewayUpdated({
|
|
110
|
+
_dependencyType: IGenArt721CoreContractV3_Engine_Flex
|
|
111
|
+
.ExternalAssetDependencyType
|
|
112
|
+
.ARWEAVE,
|
|
113
|
+
_gatewayAddress: _gateway
|
|
114
|
+
});
|
|
115
|
+
}
|
|
116
|
+
|
|
117
|
+
/**
|
|
118
|
+
* @notice Locks external asset dependencies for project `_projectId`.
|
|
119
|
+
* Reverts if the external asset dependencies are already locked.
|
|
120
|
+
* @dev This is a one-way operation. Once locked, the external asset dependencies cannot be updated.
|
|
121
|
+
* @param _projectId Project to be locked.
|
|
122
|
+
*/
|
|
123
|
+
function lockProjectExternalAssetDependencies(uint256 _projectId) external {
|
|
124
|
+
FlexProjectData storage flexProjectData = getFlexProjectData(
|
|
125
|
+
_projectId
|
|
126
|
+
);
|
|
127
|
+
_onlyUnlockedProjectExternalAssetDependencies(flexProjectData);
|
|
128
|
+
flexProjectData.externalAssetDependenciesLocked = true;
|
|
129
|
+
emit ProjectExternalAssetDependenciesLocked(_projectId);
|
|
130
|
+
}
|
|
131
|
+
|
|
132
|
+
/**
|
|
133
|
+
* @notice Updates external asset dependency for project `_projectId`.
|
|
134
|
+
* @dev Making this an external function adds roughly 1% to the gas cost of adding an asset, but
|
|
135
|
+
* significantly reduces the bytecode of contracts using this library.
|
|
136
|
+
* @param _projectId Project to be updated.
|
|
137
|
+
* @param _index Asset index.
|
|
138
|
+
* @param _cidOrData Field that contains the CID of the dependency if IPFS or ARWEAVE,
|
|
139
|
+
* empty string of ONCHAIN, or a string representation of the Art Blocks Dependency
|
|
140
|
+
* Registry's `dependencyNameAndVersion` if ART_BLOCKS_DEPENDENCY_REGISTRY.
|
|
141
|
+
* @param _dependencyType Asset dependency type.
|
|
142
|
+
* 0 - IPFS
|
|
143
|
+
* 1 - ARWEAVE
|
|
144
|
+
* 2 - ONCHAIN
|
|
145
|
+
* 3 - ART_BLOCKS_DEPENDENCY_REGISTRY
|
|
146
|
+
*/
|
|
147
|
+
function updateProjectExternalAssetDependency(
|
|
148
|
+
uint256 _projectId,
|
|
149
|
+
uint256 _index,
|
|
150
|
+
string memory _cidOrData,
|
|
151
|
+
IGenArt721CoreContractV3_Engine_Flex.ExternalAssetDependencyType _dependencyType
|
|
152
|
+
) external {
|
|
153
|
+
FlexProjectData storage flexProjectData = getFlexProjectData(
|
|
154
|
+
_projectId
|
|
155
|
+
);
|
|
156
|
+
_onlyUnlockedProjectExternalAssetDependencies(flexProjectData);
|
|
157
|
+
uint24 assetCount = flexProjectData.externalAssetDependencyCount;
|
|
158
|
+
require(_index < assetCount, "Asset index out of range");
|
|
159
|
+
// @dev dependencyNameAndVersion are not validated against the dependency registry
|
|
160
|
+
// due to limitations of L1 reads on L2 networks at this time
|
|
161
|
+
|
|
162
|
+
IGenArt721CoreContractV3_Engine_Flex.ExternalAssetDependency
|
|
163
|
+
storage _oldDependency = flexProjectData.externalAssetDependencies[
|
|
164
|
+
_index
|
|
165
|
+
];
|
|
166
|
+
IGenArt721CoreContractV3_Engine_Flex.ExternalAssetDependencyType _oldDependencyType = _oldDependency
|
|
167
|
+
.dependencyType;
|
|
168
|
+
// update the asset's dependency type to new value in storage
|
|
169
|
+
flexProjectData
|
|
170
|
+
.externalAssetDependencies[_index]
|
|
171
|
+
.dependencyType = _dependencyType;
|
|
172
|
+
// if the incoming dependency type is onchain, we need to write the data to bytecode
|
|
173
|
+
if (
|
|
174
|
+
_dependencyType ==
|
|
175
|
+
IGenArt721CoreContractV3_Engine_Flex
|
|
176
|
+
.ExternalAssetDependencyType
|
|
177
|
+
.ONCHAIN
|
|
178
|
+
) {
|
|
179
|
+
if (
|
|
180
|
+
_oldDependencyType !=
|
|
181
|
+
IGenArt721CoreContractV3_Engine_Flex
|
|
182
|
+
.ExternalAssetDependencyType
|
|
183
|
+
.ONCHAIN
|
|
184
|
+
) {
|
|
185
|
+
// we only need to set the cid to an empty string if we are replacing an offchain asset
|
|
186
|
+
// an onchain asset will already have an empty cid
|
|
187
|
+
flexProjectData.externalAssetDependencies[_index].cid = "";
|
|
188
|
+
}
|
|
189
|
+
|
|
190
|
+
flexProjectData
|
|
191
|
+
.externalAssetDependencies[_index]
|
|
192
|
+
.bytecodeAddress = _cidOrData.writeToBytecode();
|
|
193
|
+
// we don't want to emit data, so we emit the cid as an empty string
|
|
194
|
+
_cidOrData = "";
|
|
195
|
+
} else {
|
|
196
|
+
// incoming dependency type is not ONCHAIN, so we set the cid directly with either
|
|
197
|
+
// the incoming cid or string representation of the dependencyNameAndVersion
|
|
198
|
+
flexProjectData.externalAssetDependencies[_index].cid = _cidOrData;
|
|
199
|
+
// clear any previously populated bytecode address
|
|
200
|
+
flexProjectData
|
|
201
|
+
.externalAssetDependencies[_index]
|
|
202
|
+
.bytecodeAddress = address(0);
|
|
203
|
+
}
|
|
204
|
+
emit ExternalAssetDependencyUpdated({
|
|
205
|
+
_projectId: _projectId,
|
|
206
|
+
_index: _index,
|
|
207
|
+
_cid: _cidOrData,
|
|
208
|
+
_dependencyType: _dependencyType,
|
|
209
|
+
_externalAssetDependencyCount: assetCount
|
|
210
|
+
});
|
|
211
|
+
}
|
|
212
|
+
|
|
213
|
+
/**
|
|
214
|
+
* @notice Updates external asset dependency for project `_projectId` of type
|
|
215
|
+
* ONCHAIN using on-chain compression. This function stores the string
|
|
216
|
+
* in a compressed format on-chain. For reads, the compressed script is
|
|
217
|
+
* decompressed on-chain, ensuring the original text is reconstructed without
|
|
218
|
+
* external dependencies.
|
|
219
|
+
* @param _projectId Project to be updated.
|
|
220
|
+
* @param _index Asset index.
|
|
221
|
+
* @param _compressedString Pre-compressed string asset to be added.
|
|
222
|
+
*/
|
|
223
|
+
function updateProjectExternalAssetDependencyOnChainCompressed(
|
|
224
|
+
uint256 _projectId,
|
|
225
|
+
uint256 _index,
|
|
226
|
+
bytes memory _compressedString
|
|
227
|
+
) external {
|
|
228
|
+
FlexProjectData storage flexProjectData = getFlexProjectData(
|
|
229
|
+
_projectId
|
|
230
|
+
);
|
|
231
|
+
_onlyUnlockedProjectExternalAssetDependencies(flexProjectData);
|
|
232
|
+
|
|
233
|
+
// check that the index is within the range of the asset count
|
|
234
|
+
uint24 assetCount = flexProjectData.externalAssetDependencyCount;
|
|
235
|
+
require(_index < assetCount, "Asset index out of range");
|
|
236
|
+
|
|
237
|
+
// EFFECTS
|
|
238
|
+
// overwrite the relevant fields of the previous asset, assigning bytecodeAddress directly
|
|
239
|
+
IGenArt721CoreContractV3_Engine_Flex.ExternalAssetDependency
|
|
240
|
+
storage currentDependency = flexProjectData
|
|
241
|
+
.externalAssetDependencies[_index];
|
|
242
|
+
currentDependency.cid = "";
|
|
243
|
+
currentDependency.dependencyType = IGenArt721CoreContractV3_Engine_Flex
|
|
244
|
+
.ExternalAssetDependencyType
|
|
245
|
+
.ONCHAIN;
|
|
246
|
+
currentDependency.bytecodeAddress = _compressedString
|
|
247
|
+
.writeToBytecodeCompressed();
|
|
248
|
+
|
|
249
|
+
// emit the event
|
|
250
|
+
emit ExternalAssetDependencyUpdated({
|
|
251
|
+
_projectId: _projectId,
|
|
252
|
+
_index: _index,
|
|
253
|
+
_cid: "",
|
|
254
|
+
_dependencyType: IGenArt721CoreContractV3_Engine_Flex
|
|
255
|
+
.ExternalAssetDependencyType
|
|
256
|
+
.ONCHAIN,
|
|
257
|
+
_externalAssetDependencyCount: assetCount
|
|
258
|
+
});
|
|
259
|
+
}
|
|
260
|
+
|
|
261
|
+
/**
|
|
262
|
+
* @notice Updates external asset dependency for project `_projectId` at
|
|
263
|
+
* index `_index`, with data at BytecodeStorage-compatible address
|
|
264
|
+
* `_assetAddress`.
|
|
265
|
+
* @param _projectId Project to be updated.
|
|
266
|
+
* @param _index Asset index.
|
|
267
|
+
* @param _assetAddress Address of the on-chain asset.
|
|
268
|
+
*/
|
|
269
|
+
function updateProjectAssetDependencyOnChainAtAddress(
|
|
270
|
+
uint256 _projectId,
|
|
271
|
+
uint256 _index,
|
|
272
|
+
address _assetAddress
|
|
273
|
+
) external {
|
|
274
|
+
// CHECKS
|
|
275
|
+
FlexProjectData storage flexProjectData = getFlexProjectData(
|
|
276
|
+
_projectId
|
|
277
|
+
);
|
|
278
|
+
_onlyUnlockedProjectExternalAssetDependencies(flexProjectData);
|
|
279
|
+
uint24 assetCount = flexProjectData.externalAssetDependencyCount;
|
|
280
|
+
require(_index < assetCount, "Asset index out of range");
|
|
281
|
+
|
|
282
|
+
// EFFECTS
|
|
283
|
+
// overwrite the relevant fields of the previous asset
|
|
284
|
+
IGenArt721CoreContractV3_Engine_Flex.ExternalAssetDependency
|
|
285
|
+
storage currentDependency = flexProjectData
|
|
286
|
+
.externalAssetDependencies[_index];
|
|
287
|
+
currentDependency.cid = "";
|
|
288
|
+
currentDependency.dependencyType = IGenArt721CoreContractV3_Engine_Flex
|
|
289
|
+
.ExternalAssetDependencyType
|
|
290
|
+
.ONCHAIN;
|
|
291
|
+
currentDependency.bytecodeAddress = _assetAddress;
|
|
292
|
+
|
|
293
|
+
// emit the event
|
|
294
|
+
emit ExternalAssetDependencyUpdated({
|
|
295
|
+
_projectId: _projectId,
|
|
296
|
+
_index: _index,
|
|
297
|
+
_cid: "",
|
|
298
|
+
_dependencyType: IGenArt721CoreContractV3_Engine_Flex
|
|
299
|
+
.ExternalAssetDependencyType
|
|
300
|
+
.ONCHAIN,
|
|
301
|
+
_externalAssetDependencyCount: assetCount
|
|
302
|
+
});
|
|
303
|
+
}
|
|
304
|
+
|
|
305
|
+
/**
|
|
306
|
+
* @notice Removes external asset dependency for project `_projectId` at index `_index`.
|
|
307
|
+
* Removal is done by swapping the element to be removed with the last element in the array, then deleting this last element.
|
|
308
|
+
* Assets with indices higher than `_index` can have their indices adjusted as a result of this operation.
|
|
309
|
+
* @param _projectId Project to be updated.
|
|
310
|
+
* @param _index Asset index
|
|
311
|
+
*/
|
|
312
|
+
function removeProjectExternalAssetDependency(
|
|
313
|
+
uint256 _projectId,
|
|
314
|
+
uint256 _index
|
|
315
|
+
) external {
|
|
316
|
+
FlexProjectData storage flexProjectData = getFlexProjectData(
|
|
317
|
+
_projectId
|
|
318
|
+
);
|
|
319
|
+
_onlyUnlockedProjectExternalAssetDependencies(flexProjectData);
|
|
320
|
+
// ensure the index is within the range of the asset count
|
|
321
|
+
uint24 assetCount = flexProjectData.externalAssetDependencyCount;
|
|
322
|
+
require(_index < assetCount, "Asset index out of range");
|
|
323
|
+
// @dev solidity underflow will revert on the following statement if assetCount is 0
|
|
324
|
+
uint24 lastElementIndex = assetCount - 1;
|
|
325
|
+
// for UX purposes, only allow removal of the last lastElementIndex
|
|
326
|
+
require(_index == lastElementIndex, "Only removal of last asset");
|
|
327
|
+
|
|
328
|
+
// @dev simply delete last element; no need to copy last to deleted index due to require statement above
|
|
329
|
+
|
|
330
|
+
delete flexProjectData.externalAssetDependencies[lastElementIndex];
|
|
331
|
+
|
|
332
|
+
flexProjectData.externalAssetDependencyCount = lastElementIndex;
|
|
333
|
+
|
|
334
|
+
emit ExternalAssetDependencyRemoved({
|
|
335
|
+
_projectId: _projectId,
|
|
336
|
+
_index: _index
|
|
337
|
+
});
|
|
338
|
+
}
|
|
339
|
+
|
|
340
|
+
/**
|
|
341
|
+
* @notice Adds external asset dependency for project `_projectId`.
|
|
342
|
+
* @dev Making this an external function adds roughly 1% to the gas cost of adding an asset, but
|
|
343
|
+
* significantly reduces the bytecode of contracts using this library.
|
|
344
|
+
* @param _projectId Project to be updated.
|
|
345
|
+
* @param _cidOrData Field that contains the CID of the dependency if IPFS or ARWEAVE,
|
|
346
|
+
* empty string of ONCHAIN, or a string representation of the Art Blocks Dependency
|
|
347
|
+
* Registry's `dependencyNameAndVersion` if ART_BLOCKS_DEPENDENCY_REGISTRY.
|
|
348
|
+
* @param _dependencyType Asset dependency type.
|
|
349
|
+
* 0 - IPFS
|
|
350
|
+
* 1 - ARWEAVE
|
|
351
|
+
* 2 - ONCHAIN
|
|
352
|
+
* 3 - ART_BLOCKS_DEPENDENCY_REGISTRY
|
|
353
|
+
*/
|
|
354
|
+
function addProjectExternalAssetDependency(
|
|
355
|
+
uint256 _projectId,
|
|
356
|
+
string memory _cidOrData,
|
|
357
|
+
IGenArt721CoreContractV3_Engine_Flex.ExternalAssetDependencyType _dependencyType
|
|
358
|
+
) external {
|
|
359
|
+
FlexProjectData storage flexProjectData = getFlexProjectData(
|
|
360
|
+
_projectId
|
|
361
|
+
);
|
|
362
|
+
_onlyUnlockedProjectExternalAssetDependencies(flexProjectData);
|
|
363
|
+
// @dev dependencyNameAndVersion are not validated against the dependency registry
|
|
364
|
+
// due to limitations of L1 reads on L2 networks at this time
|
|
365
|
+
|
|
366
|
+
uint24 assetCount = flexProjectData.externalAssetDependencyCount;
|
|
367
|
+
address _bytecodeAddress = address(0);
|
|
368
|
+
// if the incoming dependency type is onchain, we need to write the data to bytecode
|
|
369
|
+
if (
|
|
370
|
+
_dependencyType ==
|
|
371
|
+
IGenArt721CoreContractV3_Engine_Flex
|
|
372
|
+
.ExternalAssetDependencyType
|
|
373
|
+
.ONCHAIN
|
|
374
|
+
) {
|
|
375
|
+
_bytecodeAddress = _cidOrData.writeToBytecode();
|
|
376
|
+
// we don't want to assign or emit data, so we emit the cid as an empty string
|
|
377
|
+
_cidOrData = "";
|
|
378
|
+
}
|
|
379
|
+
|
|
380
|
+
// append the new asset to the end of the project's asset storage array
|
|
381
|
+
flexProjectData.externalAssetDependencies[
|
|
382
|
+
assetCount
|
|
383
|
+
] = IGenArt721CoreContractV3_Engine_Flex.ExternalAssetDependency({
|
|
384
|
+
cid: _cidOrData,
|
|
385
|
+
dependencyType: _dependencyType,
|
|
386
|
+
bytecodeAddress: _bytecodeAddress
|
|
387
|
+
});
|
|
388
|
+
// increment the project's asset count
|
|
389
|
+
flexProjectData.externalAssetDependencyCount = assetCount + 1;
|
|
390
|
+
|
|
391
|
+
// emit event indicating the asset has been added
|
|
392
|
+
emit ExternalAssetDependencyUpdated({
|
|
393
|
+
_projectId: _projectId,
|
|
394
|
+
_index: assetCount,
|
|
395
|
+
_cid: _cidOrData,
|
|
396
|
+
_dependencyType: _dependencyType,
|
|
397
|
+
_externalAssetDependencyCount: assetCount + 1
|
|
398
|
+
});
|
|
399
|
+
}
|
|
400
|
+
|
|
401
|
+
/**
|
|
402
|
+
* @notice Adds external asset dependency for project `_projectId` of type
|
|
403
|
+
* ONCHAIN using on-chain compression. This function stores the string
|
|
404
|
+
* in a compressed format on-chain. For reads, the compressed script is
|
|
405
|
+
* decompressed on-chain, ensuring the original text is reconstructed without
|
|
406
|
+
* external dependencies.
|
|
407
|
+
* @param _projectId Project to be updated.
|
|
408
|
+
* @param _compressedString Pre-compressed string asset to be added.
|
|
409
|
+
*/
|
|
410
|
+
function addProjectExternalAssetDependencyOnChainCompressed(
|
|
411
|
+
uint256 _projectId,
|
|
412
|
+
bytes memory _compressedString
|
|
413
|
+
) external {
|
|
414
|
+
FlexProjectData storage flexProjectData = getFlexProjectData(
|
|
415
|
+
_projectId
|
|
416
|
+
);
|
|
417
|
+
_onlyUnlockedProjectExternalAssetDependencies(flexProjectData);
|
|
418
|
+
|
|
419
|
+
// append the new asset to the end of the project's asset storage array
|
|
420
|
+
uint24 assetCount = flexProjectData.externalAssetDependencyCount;
|
|
421
|
+
flexProjectData.externalAssetDependencies[
|
|
422
|
+
assetCount
|
|
423
|
+
] = IGenArt721CoreContractV3_Engine_Flex.ExternalAssetDependency({
|
|
424
|
+
cid: "",
|
|
425
|
+
dependencyType: IGenArt721CoreContractV3_Engine_Flex
|
|
426
|
+
.ExternalAssetDependencyType
|
|
427
|
+
.ONCHAIN,
|
|
428
|
+
bytecodeAddress: _compressedString.writeToBytecodeCompressed()
|
|
429
|
+
});
|
|
430
|
+
|
|
431
|
+
// increment the asset count
|
|
432
|
+
flexProjectData.externalAssetDependencyCount = assetCount + 1;
|
|
433
|
+
|
|
434
|
+
// emit event indicating the asset has been added
|
|
435
|
+
emit ExternalAssetDependencyUpdated({
|
|
436
|
+
_projectId: _projectId,
|
|
437
|
+
_index: assetCount,
|
|
438
|
+
_cid: "",
|
|
439
|
+
_dependencyType: IGenArt721CoreContractV3_Engine_Flex
|
|
440
|
+
.ExternalAssetDependencyType
|
|
441
|
+
.ONCHAIN,
|
|
442
|
+
_externalAssetDependencyCount: assetCount + 1
|
|
443
|
+
});
|
|
444
|
+
}
|
|
445
|
+
|
|
446
|
+
/**
|
|
447
|
+
* @notice Adds an on-chain external asset dependency for project
|
|
448
|
+
* `_projectId`, with data at BytecodeStorage-compatible address
|
|
449
|
+
* `_assetAddress`.
|
|
450
|
+
* @param _projectId Project to be updated.
|
|
451
|
+
* @param _assetAddress Address of the BytecodeStorageReader-compatible on-chain asset.
|
|
452
|
+
*/
|
|
453
|
+
function addProjectAssetDependencyOnChainAtAddress(
|
|
454
|
+
uint256 _projectId,
|
|
455
|
+
address _assetAddress
|
|
456
|
+
) external {
|
|
457
|
+
FlexProjectData storage flexProjectData = getFlexProjectData(
|
|
458
|
+
_projectId
|
|
459
|
+
);
|
|
460
|
+
_onlyUnlockedProjectExternalAssetDependencies(flexProjectData);
|
|
461
|
+
|
|
462
|
+
// append the new asset to the end of the project's asset storage array
|
|
463
|
+
uint24 assetCount = flexProjectData.externalAssetDependencyCount;
|
|
464
|
+
flexProjectData.externalAssetDependencies[
|
|
465
|
+
assetCount
|
|
466
|
+
] = IGenArt721CoreContractV3_Engine_Flex.ExternalAssetDependency({
|
|
467
|
+
cid: "",
|
|
468
|
+
dependencyType: IGenArt721CoreContractV3_Engine_Flex
|
|
469
|
+
.ExternalAssetDependencyType
|
|
470
|
+
.ONCHAIN,
|
|
471
|
+
bytecodeAddress: _assetAddress
|
|
472
|
+
});
|
|
473
|
+
|
|
474
|
+
// increment the asset count
|
|
475
|
+
flexProjectData.externalAssetDependencyCount = assetCount + 1;
|
|
476
|
+
|
|
477
|
+
// emit event indicating the asset has been added
|
|
478
|
+
emit ExternalAssetDependencyUpdated({
|
|
479
|
+
_projectId: _projectId,
|
|
480
|
+
_index: assetCount,
|
|
481
|
+
_cid: "",
|
|
482
|
+
_dependencyType: IGenArt721CoreContractV3_Engine_Flex
|
|
483
|
+
.ExternalAssetDependencyType
|
|
484
|
+
.ONCHAIN,
|
|
485
|
+
_externalAssetDependencyCount: assetCount + 1
|
|
486
|
+
});
|
|
487
|
+
}
|
|
488
|
+
|
|
489
|
+
/**
|
|
490
|
+
* @notice Returns external asset dependency count for project `_projectId` at index `_index`.
|
|
491
|
+
*/
|
|
492
|
+
function projectExternalAssetDependencyCount(
|
|
493
|
+
uint256 _projectId
|
|
494
|
+
) external view returns (uint256) {
|
|
495
|
+
FlexProjectData storage flexProjectData = getFlexProjectData(
|
|
496
|
+
_projectId
|
|
497
|
+
);
|
|
498
|
+
return uint256(flexProjectData.externalAssetDependencyCount);
|
|
499
|
+
}
|
|
500
|
+
|
|
501
|
+
/**
|
|
502
|
+
* @notice Returns external asset dependency for project `_projectId` at index `_index`.
|
|
503
|
+
* If the dependencyType is ONCHAIN, the `data` field will contain the extrated bytecode data and `cid`
|
|
504
|
+
* will be an empty string. Conversly, for any other dependencyType, the `data` field will be an empty string
|
|
505
|
+
* and the `bytecodeAddress` will point to the zero address.
|
|
506
|
+
* @param _projectId Project to get external asset dependency for.
|
|
507
|
+
* @param _index Index of the external asset dependency.
|
|
508
|
+
* @param _bytecodeStorageReaderContract The bytecode storage reader contract to use for reading on-chain
|
|
509
|
+
* dependencies; only used if the dependency is of type ONCHAIN.
|
|
510
|
+
*/
|
|
511
|
+
function projectExternalAssetDependencyByIndex(
|
|
512
|
+
uint256 _projectId,
|
|
513
|
+
uint256 _index,
|
|
514
|
+
IBytecodeStorageReader_Base _bytecodeStorageReaderContract
|
|
515
|
+
)
|
|
516
|
+
external
|
|
517
|
+
view
|
|
518
|
+
returns (
|
|
519
|
+
IGenArt721CoreContractV3_Engine_Flex.ExternalAssetDependencyWithData
|
|
520
|
+
memory
|
|
521
|
+
)
|
|
522
|
+
{
|
|
523
|
+
FlexProjectData storage flexProjectData = getFlexProjectData(
|
|
524
|
+
_projectId
|
|
525
|
+
);
|
|
526
|
+
IGenArt721CoreContractV3_Engine_Flex.ExternalAssetDependency
|
|
527
|
+
storage _dependency = flexProjectData.externalAssetDependencies[
|
|
528
|
+
_index
|
|
529
|
+
];
|
|
530
|
+
address _bytecodeAddress = _dependency.bytecodeAddress;
|
|
531
|
+
|
|
532
|
+
return
|
|
533
|
+
IGenArt721CoreContractV3_Engine_Flex
|
|
534
|
+
.ExternalAssetDependencyWithData({
|
|
535
|
+
dependencyType: _dependency.dependencyType,
|
|
536
|
+
cid: _dependency.cid,
|
|
537
|
+
bytecodeAddress: _bytecodeAddress,
|
|
538
|
+
data: (_dependency.dependencyType ==
|
|
539
|
+
IGenArt721CoreContractV3_Engine_Flex
|
|
540
|
+
.ExternalAssetDependencyType
|
|
541
|
+
.ONCHAIN)
|
|
542
|
+
? _bytecodeStorageReaderContract.readFromBytecode(
|
|
543
|
+
_bytecodeAddress
|
|
544
|
+
)
|
|
545
|
+
: ""
|
|
546
|
+
});
|
|
547
|
+
}
|
|
548
|
+
|
|
549
|
+
/**
|
|
550
|
+
* @notice Returns the preferred IPFS gateway.
|
|
551
|
+
*/
|
|
552
|
+
function preferredIPFSGateway() external view returns (string memory) {
|
|
553
|
+
return s().preferredIPFSGateway;
|
|
554
|
+
}
|
|
555
|
+
|
|
556
|
+
/**
|
|
557
|
+
* @notice Returns the preferred Arweave gateway.
|
|
558
|
+
*/
|
|
559
|
+
function preferredArweaveGateway() external view returns (string memory) {
|
|
560
|
+
return s().preferredArweaveGateway;
|
|
561
|
+
}
|
|
562
|
+
|
|
563
|
+
/**
|
|
564
|
+
* @notice Loads the FlexProjectData for a given project.
|
|
565
|
+
* @param projectId Project Id to get FlexProjectData for
|
|
566
|
+
*/
|
|
567
|
+
function getFlexProjectData(
|
|
568
|
+
uint256 projectId
|
|
569
|
+
) internal view returns (FlexProjectData storage) {
|
|
570
|
+
return s().flexProjectsData[projectId];
|
|
571
|
+
}
|
|
572
|
+
|
|
573
|
+
/**
|
|
574
|
+
* @notice Return the storage struct for reading and writing. This library
|
|
575
|
+
* uses a diamond storage pattern when managing storage.
|
|
576
|
+
* @return storageStruct The V3FlexLibStorage struct.
|
|
577
|
+
*/
|
|
578
|
+
function s()
|
|
579
|
+
internal
|
|
580
|
+
pure
|
|
581
|
+
returns (V3FlexLibStorage storage storageStruct)
|
|
582
|
+
{
|
|
583
|
+
bytes32 position = V3_FLEX_LIB_STORAGE_POSITION;
|
|
584
|
+
assembly ("memory-safe") {
|
|
585
|
+
storageStruct.slot := position
|
|
586
|
+
}
|
|
587
|
+
}
|
|
588
|
+
|
|
589
|
+
function _onlyUnlockedProjectExternalAssetDependencies(
|
|
590
|
+
FlexProjectData storage flexProjectData
|
|
591
|
+
) private view {
|
|
592
|
+
require(
|
|
593
|
+
!flexProjectData.externalAssetDependenciesLocked,
|
|
594
|
+
"External dependencies locked"
|
|
595
|
+
);
|
|
596
|
+
}
|
|
597
|
+
}
|
|
@@ -33,7 +33,6 @@ library DAExpLib {
|
|
|
33
33
|
uint256 startPrice,
|
|
34
34
|
uint256 basePrice
|
|
35
35
|
);
|
|
36
|
-
/// Minimum allowed price decay half life seconds updated.
|
|
37
36
|
|
|
38
37
|
/**
|
|
39
38
|
* @notice Minimum allowed price decay half life on the minter updated to
|
|
@@ -113,6 +112,9 @@ library DAExpLib {
|
|
|
113
112
|
startPrice > basePrice,
|
|
114
113
|
"Auction start price must be greater than auction end price"
|
|
115
114
|
);
|
|
115
|
+
// @dev no coverage, as minter auction min half life may be more
|
|
116
|
+
// restrictive than gt 0
|
|
117
|
+
require(priceDecayHalfLifeSeconds > 0, "Only half life gt 0");
|
|
116
118
|
|
|
117
119
|
// EFFECTS
|
|
118
120
|
DAProjectConfig_.timestampStart = auctionTimestampStart;
|
|
@@ -134,15 +136,10 @@ library DAExpLib {
|
|
|
134
136
|
uint256 projectId,
|
|
135
137
|
address coreContract
|
|
136
138
|
) internal {
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
DAProjectConfig_.timestampStart = 0;
|
|
143
|
-
DAProjectConfig_.priceDecayHalfLifeSeconds = 0;
|
|
144
|
-
DAProjectConfig_.startPrice = 0;
|
|
145
|
-
DAProjectConfig_.basePrice = 0;
|
|
139
|
+
// @dev all fields must be deleted, and none of them are a complex type
|
|
140
|
+
// @dev getDAProjectConfig not used, as deletion of storage pointers is
|
|
141
|
+
// not supported
|
|
142
|
+
delete s().DAProjectConfigs_[coreContract][projectId];
|
|
146
143
|
|
|
147
144
|
emit DALib.ResetAuctionDetails({
|
|
148
145
|
projectId: projectId,
|
|
@@ -172,9 +169,10 @@ library DAExpLib {
|
|
|
172
169
|
uint256 timestampStart = DAProjectConfig_.timestampStart;
|
|
173
170
|
uint256 priceDecayHalfLifeSeconds = DAProjectConfig_
|
|
174
171
|
.priceDecayHalfLifeSeconds;
|
|
175
|
-
|
|
176
|
-
|
|
172
|
+
// @dev check also ensures we don't divide by priceDecayHalfLifeSeconds
|
|
173
|
+
// of zero
|
|
177
174
|
require(priceDecayHalfLifeSeconds > 0, "Only configured auctions");
|
|
175
|
+
require(block.timestamp >= timestampStart, "Auction not yet started");
|
|
178
176
|
uint256 decayedPrice = DAProjectConfig_.startPrice;
|
|
179
177
|
uint256 elapsedTimeSeconds;
|
|
180
178
|
unchecked {
|
|
@@ -132,15 +132,10 @@ library DALinLib {
|
|
|
132
132
|
uint256 projectId,
|
|
133
133
|
address coreContract
|
|
134
134
|
) internal {
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
DAProjectConfig_.timestampStart = 0;
|
|
141
|
-
DAProjectConfig_.timestampEnd = 0;
|
|
142
|
-
DAProjectConfig_.startPrice = 0;
|
|
143
|
-
DAProjectConfig_.basePrice = 0;
|
|
135
|
+
// @dev all fields must be deleted, and none of them are a complex type
|
|
136
|
+
// @dev getDAProjectConfig not used, as deletion of storage pointers is
|
|
137
|
+
// not supported
|
|
138
|
+
delete s().DAProjectConfigs_[coreContract][projectId];
|
|
144
139
|
|
|
145
140
|
emit DALib.ResetAuctionDetails({
|
|
146
141
|
projectId: projectId,
|