@artblocks/contracts 1.0.3 → 1.0.4
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +32 -25
- package/artifacts/contracts/AdminACLV0.sol/AdminACLV0.json +2 -2
- package/artifacts/contracts/AdminACLV1.sol/AdminACLV1.json +2 -2
- package/artifacts/contracts/DependencyRegistryV0.sol/DependencyRegistryV0.json +125 -17
- package/artifacts/contracts/GenArt721CoreV3.sol/GenArt721CoreV3.json +6 -6
- package/artifacts/contracts/archive/minter-suite/Minters/MinterDAExp/MinterDAExpV0.sol/MinterDAExpV0.json +2 -2
- package/artifacts/contracts/archive/minter-suite/Minters/MinterDAExp/MinterDAExpV1.sol/MinterDAExpV1.json +2 -2
- package/artifacts/contracts/archive/minter-suite/Minters/MinterDAExp/MinterDAExpV2.sol/MinterDAExpV2.json +2 -2
- package/artifacts/contracts/archive/minter-suite/Minters/MinterDAExp/MinterDAExpV3.sol/MinterDAExpV3.json +2 -2
- package/artifacts/contracts/archive/minter-suite/Minters/MinterDAExpSettlement/MinterDAExpSettlementV0.sol/MinterDAExpSettlementV0.json +2 -2
- package/artifacts/contracts/archive/minter-suite/Minters/MinterDAExpSettlement/MinterDAExpSettlementV1.sol/MinterDAExpSettlementV1.json +2 -2
- package/artifacts/contracts/archive/minter-suite/Minters/MinterDALin/MinterDALinV0.sol/MinterDALinV0.json +2 -2
- package/artifacts/contracts/archive/minter-suite/Minters/MinterDALin/MinterDALinV1.sol/MinterDALinV1.json +2 -2
- package/artifacts/contracts/archive/minter-suite/Minters/MinterDALin/MinterDALinV2.sol/MinterDALinV2.json +2 -2
- package/artifacts/contracts/archive/minter-suite/Minters/MinterDALin/MinterDALinV3.sol/MinterDALinV3.json +2 -2
- package/artifacts/contracts/archive/minter-suite/Minters/MinterHolder/MinterHolderV0.sol/MinterHolderV0.json +2 -2
- package/artifacts/contracts/archive/minter-suite/Minters/MinterHolder/MinterHolderV1.sol/MinterHolderV1.json +2 -2
- package/artifacts/contracts/archive/minter-suite/Minters/MinterHolder/MinterHolderV2.sol/MinterHolderV2.json +2 -2
- package/artifacts/contracts/archive/minter-suite/Minters/MinterHolder/MinterHolderV3.sol/MinterHolderV3.json +2 -2
- package/artifacts/contracts/archive/minter-suite/Minters/MinterMerkle/MinterMerkleV0.sol/MinterMerkleV0.json +2 -2
- package/artifacts/contracts/archive/minter-suite/Minters/MinterMerkle/MinterMerkleV1.sol/MinterMerkleV1.json +2 -2
- package/artifacts/contracts/archive/minter-suite/Minters/MinterMerkle/MinterMerkleV2.sol/MinterMerkleV2.json +2 -2
- package/artifacts/contracts/archive/minter-suite/Minters/MinterMerkle/MinterMerkleV3.sol/MinterMerkleV3.json +2 -2
- package/artifacts/contracts/archive/minter-suite/Minters/MinterMerkle/MinterMerkleV4.sol/MinterMerkleV4.json +2 -2
- package/artifacts/contracts/archive/minter-suite/Minters/MinterSetPrice/MinterSetPriceV0.sol/MinterSetPriceV0.json +2 -2
- package/artifacts/contracts/archive/minter-suite/Minters/MinterSetPrice/MinterSetPriceV1.sol/MinterSetPriceV1.json +2 -2
- package/artifacts/contracts/archive/minter-suite/Minters/MinterSetPrice/MinterSetPriceV2.sol/MinterSetPriceV2.json +2 -2
- package/artifacts/contracts/archive/minter-suite/Minters/MinterSetPrice/MinterSetPriceV3.sol/MinterSetPriceV3.json +2 -2
- package/artifacts/contracts/archive/minter-suite/Minters/MinterSetPriceERC20/MinterSetPriceERC20V0.sol/MinterSetPriceERC20V0.json +2 -2
- package/artifacts/contracts/archive/minter-suite/Minters/MinterSetPriceERC20/MinterSetPriceERC20V1.sol/MinterSetPriceERC20V1.json +2 -2
- package/artifacts/contracts/archive/minter-suite/Minters/MinterSetPriceERC20/MinterSetPriceERC20V2.sol/MinterSetPriceERC20V2.json +2 -2
- package/artifacts/contracts/archive/minter-suite/Minters/MinterSetPriceERC20/MinterSetPriceERC20V3.sol/MinterSetPriceERC20V3.json +2 -2
- package/artifacts/contracts/engine/V2/GenArt721CoreV2_ENGINE_FLEX.sol/GenArt721CoreV2_ENGINE_FLEX.json +2 -2
- package/artifacts/contracts/engine/V2/GenArt721CoreV2_PBAB.sol/GenArt721CoreV2_PBAB.json +2 -2
- package/artifacts/contracts/engine/V2/GenArt721CoreV2_PRTNR.sol/GenArt721CoreV2_PRTNR.json +2 -2
- package/artifacts/contracts/engine/V2/GenArt721MinterBurner_PBAB.sol/GenArt721MinterBurner_PBAB.json +2 -2
- package/artifacts/contracts/engine/V2/GenArt721MinterDAExp_PBAB.sol/GenArt721MinterDAExp_PBAB.json +2 -2
- package/artifacts/contracts/engine/V2/GenArt721Minter_PBAB.sol/GenArt721Minter_PBAB.json +2 -2
- package/artifacts/contracts/engine/V3/GenArt721CoreV3_Engine.sol/GenArt721CoreV3_Engine.json +6 -6
- package/artifacts/contracts/engine/V3/GenArt721CoreV3_Engine_Flex.sol/GenArt721CoreV3_Engine_Flex.json +6 -6
- package/artifacts/contracts/engine/V3/forks/GenArt721CoreV3_Engine_Flex_PROOF.sol/GenArt721CoreV3_Engine_Flex_PROOF.json +4 -4
- package/artifacts/contracts/engine/V3/forks/PROHIBITION/AdminACLV0_PROHIBITION.sol/AdminACLV0_PROHIBITION.json +2 -2
- package/artifacts/contracts/engine/V3/forks/PROHIBITION/GenArt721CoreV3_Engine_Flex_PROHIBITION.sol/GenArt721CoreV3_Engine_Flex_PROHIBITION.json +6 -6
- package/artifacts/contracts/engine-registry/CoreRegistryV1.sol/CoreRegistryV1.json +2 -2
- package/artifacts/contracts/engine-registry/EngineRegistryV0.sol/EngineRegistryV0.json +2 -2
- package/artifacts/contracts/explorations/GenArt721CoreV3_Explorations.sol/GenArt721CoreV3_Explorations.json +6 -6
- package/artifacts/contracts/interfaces/{0.5.x → v0.5.x}/IBonusContract.sol/IBonusContract.json +1 -1
- package/artifacts/contracts/interfaces/{0.5.x → v0.5.x}/IGenArt721CoreContractV1.sol/IGenArt721CoreContractV1.json +1 -1
- package/artifacts/contracts/interfaces/{0.5.x → v0.5.x}/IGenArt721CoreV2_PBAB.sol/IGenArt721CoreV2_PBAB.json +1 -1
- package/artifacts/contracts/interfaces/{0.5.x → v0.5.x}/IRandomizer.sol/IRandomizer.json +1 -1
- package/artifacts/contracts/interfaces/{0.8.x → v0.8.x}/IAdminACLV0.sol/IAdminACLV0.json +1 -1
- package/artifacts/contracts/interfaces/{0.8.x → v0.8.x}/IArtblocksRoyaltyOverride.sol/IArtblocksRoyaltyOverride.json +1 -1
- package/artifacts/contracts/interfaces/{0.8.x → v0.8.x}/IBonusContract.sol/IBonusContract.json +1 -1
- package/artifacts/contracts/interfaces/{0.8.x → v0.8.x}/IBytecodeStorageReader.sol/IBytecodeStorageReader.json +1 -1
- package/artifacts/contracts/interfaces/{0.8.x → v0.8.x}/ICoreRegistryV1.sol/ICoreRegistryV1.json +1 -1
- package/artifacts/contracts/interfaces/{0.8.x → v0.8.x}/IDelegationRegistry.sol/IDelegationRegistry.json +1 -1
- package/artifacts/contracts/interfaces/{0.8.x → v0.8.x}/IDependencyRegistryCompatibleV0.sol/IDependencyRegistryCompatibleV0.json +1 -1
- package/artifacts/contracts/interfaces/{0.8.x → v0.8.x}/IDependencyRegistryV0.sol/IDependencyRegistryV0.json +3 -3
- package/artifacts/contracts/interfaces/{0.8.x → v0.8.x}/IEngineRegistryV0.sol/IEngineRegistryV0.json +1 -1
- package/artifacts/contracts/interfaces/{0.8.x → v0.8.x}/IFilteredMinterDAExpSettlementV0.sol/IFilteredMinterDAExpSettlementV0.json +1 -1
- package/artifacts/contracts/interfaces/{0.8.x → v0.8.x}/IFilteredMinterDAExpSettlementV1.sol/IFilteredMinterDAExpSettlementV1.json +1 -1
- package/artifacts/contracts/interfaces/{0.8.x → v0.8.x}/IFilteredMinterDAExpSettlement_Mixin.sol/IFilteredMinterDAExpSettlement_Mixin.json +1 -1
- package/artifacts/contracts/interfaces/{0.8.x → v0.8.x}/IFilteredMinterDAExpV0.sol/IFilteredMinterDAExpV0.json +1 -1
- package/artifacts/contracts/interfaces/{0.8.x → v0.8.x}/IFilteredMinterDAExpV1.sol/IFilteredMinterDAExpV1.json +1 -1
- package/artifacts/contracts/interfaces/{0.8.x → v0.8.x}/IFilteredMinterDALinV0.sol/IFilteredMinterDALinV0.json +1 -1
- package/artifacts/contracts/interfaces/{0.8.x → v0.8.x}/IFilteredMinterDALinV1.sol/IFilteredMinterDALinV1.json +1 -1
- package/artifacts/contracts/interfaces/{0.8.x → v0.8.x}/IFilteredMinterHolderV0.sol/IFilteredMinterHolderV0.json +1 -1
- package/artifacts/contracts/interfaces/{0.8.x → v0.8.x}/IFilteredMinterHolderV1.sol/IFilteredMinterHolderV1.json +1 -1
- package/artifacts/contracts/interfaces/{0.8.x → v0.8.x}/IFilteredMinterHolderV2.sol/IFilteredMinterHolderV2.json +1 -1
- package/artifacts/contracts/interfaces/{0.8.x → v0.8.x}/IFilteredMinterMerkleV0.sol/IFilteredMinterMerkleV0.json +1 -1
- package/artifacts/contracts/interfaces/{0.8.x → v0.8.x}/IFilteredMinterMerkleV1.sol/IFilteredMinterMerkleV1.json +1 -1
- package/artifacts/contracts/interfaces/{0.8.x → v0.8.x}/IFilteredMinterMerkleV2.sol/IFilteredMinterMerkleV2.json +1 -1
- package/artifacts/contracts/interfaces/{0.8.x → v0.8.x}/IFilteredMinterSEAV0.sol/IFilteredMinterSEAV0.json +1 -1
- package/artifacts/contracts/interfaces/{0.8.x → v0.8.x}/IFilteredMinterV0.sol/IFilteredMinterV0.json +1 -1
- package/artifacts/contracts/interfaces/{0.8.x → v0.8.x}/IFilteredMinterV1.sol/IFilteredMinterV1.json +1 -1
- package/artifacts/contracts/interfaces/{0.8.x → v0.8.x}/IFilteredMinterV2.sol/IFilteredMinterV2.json +1 -1
- package/artifacts/contracts/interfaces/{0.8.x → v0.8.x}/IGenArt721CoreContractExposesHashSeed.sol/IGenArt721CoreContractExposesHashSeed.json +1 -1
- package/artifacts/contracts/interfaces/{0.8.x → v0.8.x}/IGenArt721CoreContractV1.sol/IGenArt721CoreContractV1.json +1 -1
- package/artifacts/contracts/interfaces/{0.8.x → v0.8.x}/IGenArt721CoreContractV3.sol/IGenArt721CoreContractV3.json +1 -1
- package/artifacts/contracts/interfaces/v0.8.x/IGenArt721CoreContractV3WithSharedRandomizer.sol/IGenArt721CoreContractV3WithSharedRandomizer.json +24 -0
- package/artifacts/contracts/interfaces/{0.8.x → v0.8.x}/IGenArt721CoreContractV3_Base.sol/IGenArt721CoreContractV3_Base.json +1 -1
- package/artifacts/contracts/interfaces/{0.8.x → v0.8.x}/IGenArt721CoreContractV3_Engine.sol/IGenArt721CoreContractV3_Engine.json +1 -1
- package/artifacts/contracts/interfaces/{0.8.x → v0.8.x}/IGenArt721CoreContractV3_Engine_Flex.sol/IGenArt721CoreContractV3_Engine_Flex.json +1 -1
- package/artifacts/contracts/interfaces/{0.8.x → v0.8.x}/IGenArt721CoreV2_PBAB.sol/IGenArt721CoreV2_PBAB.json +1 -1
- package/artifacts/contracts/interfaces/{0.8.x → v0.8.x}/IManifold.sol/IManifold.json +1 -1
- package/artifacts/contracts/interfaces/{0.8.x → v0.8.x}/IMinterBaseV0.sol/IMinterBaseV0.json +1 -1
- package/artifacts/contracts/interfaces/{0.8.x → v0.8.x}/IMinterFilterV0.sol/IMinterFilterV0.json +1 -1
- package/artifacts/contracts/interfaces/{0.8.x → v0.8.x}/IMinterFilterV1.sol/IMinterFilterV1.json +86 -1
- package/artifacts/contracts/interfaces/{0.8.x → v0.8.x}/IMintingAPICoreV0.sol/IMintingAPICoreV0.json +1 -1
- package/artifacts/contracts/interfaces/{0.8.x → v0.8.x}/IMintingAPIMinterV0.sol/IMintingAPIMinterV0.json +1 -1
- package/artifacts/contracts/interfaces/{0.8.x → v0.8.x}/IPseudorandomAtomic.sol/IPseudorandomAtomic.json +1 -1
- package/artifacts/contracts/interfaces/{0.8.x → v0.8.x}/IRandomizer.sol/IRandomizer.json +1 -1
- package/artifacts/contracts/interfaces/{0.8.x → v0.8.x}/IRandomizerPolyptychV0.sol/IRandomizerPolyptychV0.json +1 -1
- package/artifacts/contracts/interfaces/{0.8.x → v0.8.x}/IRandomizerV2.sol/IRandomizerV2.json +1 -1
- package/artifacts/contracts/interfaces/{0.8.x → v0.8.x}/IRandomizer_V3CoreBase.sol/IRandomizer_V3CoreBase.json +1 -1
- package/artifacts/contracts/interfaces/v0.8.x/ISharedMinterDAExpSettlementV0.sol/ISharedMinterDAExpSettlementV0.json +207 -0
- package/artifacts/contracts/interfaces/v0.8.x/ISharedMinterDAExpV0.sol/ISharedMinterDAExpV0.json +93 -0
- package/artifacts/contracts/interfaces/v0.8.x/ISharedMinterDALinV0.sol/ISharedMinterDALinV0.json +93 -0
- package/artifacts/contracts/interfaces/v0.8.x/ISharedMinterDAV0.sol/ISharedMinterDAV0.json +69 -0
- package/artifacts/contracts/interfaces/v0.8.x/ISharedMinterHolderV0.sol/ISharedMinterHolderV0.json +203 -0
- package/artifacts/contracts/interfaces/v0.8.x/ISharedMinterMerkleV0.sol/ISharedMinterMerkleV0.json +123 -0
- package/artifacts/contracts/interfaces/v0.8.x/ISharedMinterSEAV0.sol/ISharedMinterSEAV0.json +261 -0
- package/artifacts/contracts/interfaces/v0.8.x/ISharedMinterSimplePurchaseV0.sol/ISharedMinterSimplePurchaseV0.json +64 -0
- package/artifacts/contracts/interfaces/v0.8.x/ISharedMinterV0.sol/ISharedMinterV0.json +533 -0
- package/artifacts/contracts/interfaces/{0.8.x → v0.8.x}/ISharedRandomizerV0.sol/ISharedRandomizerV0.json +42 -26
- package/artifacts/contracts/interfaces/{0.8.x → v0.8.x}/IWETH.sol/IWETH.json +1 -1
- package/artifacts/contracts/legacy/GenArt721CoreV1.sol/Address.json +2 -2
- package/artifacts/contracts/legacy/GenArt721CoreV1.sol/Counters.json +2 -2
- package/artifacts/contracts/legacy/GenArt721CoreV1.sol/CustomERC721Metadata.json +2 -2
- package/artifacts/contracts/legacy/GenArt721CoreV1.sol/ERC721.json +2 -2
- package/artifacts/contracts/legacy/GenArt721CoreV1.sol/ERC721Enumerable.json +2 -2
- package/artifacts/contracts/legacy/GenArt721CoreV1.sol/GenArt721CoreV1.json +2 -2
- package/artifacts/contracts/legacy/GenArt721CoreV1.sol/SafeMath.json +2 -2
- package/artifacts/contracts/legacy/GenArt721CoreV1.sol/Strings.json +2 -2
- package/artifacts/contracts/legacy/GenArt721LegacyMinter.sol/GenArt721LegacyMinter.json +2 -2
- package/artifacts/contracts/libs/integration-refs/delegation-registry/DelegationRegistry.sol/DelegationRegistry.json +2 -2
- package/artifacts/contracts/libs/{0.5.x → v0.5.x}/CustomERC721Metadata.sol/CustomERC721Metadata.json +3 -3
- package/artifacts/contracts/libs/{0.5.x → v0.5.x}/IERC20.sol/IERC20.json +1 -1
- package/artifacts/contracts/libs/{0.5.x → v0.5.x}/SafeMath.sol/SafeMath.json +3 -3
- package/artifacts/contracts/libs/{0.5.x → v0.5.x}/Strings.sol/Strings.json +3 -3
- package/artifacts/contracts/libs/v0.8.x/ABHelpers.sol/ABHelpers.json +10 -0
- package/artifacts/contracts/libs/v0.8.x/AuthLib.sol/AuthLib.json +10 -0
- package/artifacts/contracts/libs/{0.8.x → v0.8.x}/BytecodeStorageV0.sol/BytecodeStorage.json +3 -3
- package/artifacts/contracts/libs/{0.8.x → v0.8.x}/BytecodeStorageV1.sol/BytecodeStorageReader.json +3 -3
- package/artifacts/contracts/libs/{0.8.x → v0.8.x}/BytecodeStorageV1.sol/BytecodeStorageWriter.json +3 -3
- package/artifacts/contracts/libs/{0.8.x → v0.8.x}/Bytes32Strings.sol/Bytes32Strings.json +3 -3
- package/artifacts/contracts/libs/{0.8.x → v0.8.x}/ERC721_PackedHashSeed.sol/ERC721_PackedHashSeed.json +3 -3
- package/artifacts/contracts/libs/{0.8.x → v0.8.x}/SSTORE2.sol/SSTORE2.json +3 -3
- package/artifacts/contracts/libs/v0.8.x/minter-libs/DAExpLib.sol/DAExpLib.json +10 -0
- package/artifacts/contracts/libs/v0.8.x/minter-libs/DALinLib.sol/DALinLib.json +10 -0
- package/artifacts/contracts/libs/v0.8.x/minter-libs/MaxInvocationsLib.sol/MaxInvocationsLib.json +10 -0
- package/artifacts/contracts/libs/v0.8.x/minter-libs/MerkleLib.sol/MerkleLib.json +10 -0
- package/artifacts/contracts/libs/v0.8.x/minter-libs/PolyptychLib.sol/PolyptychLib.json +10 -0
- package/artifacts/contracts/libs/v0.8.x/minter-libs/SEALib.sol/SEALib.json +10 -0
- package/artifacts/contracts/libs/v0.8.x/minter-libs/SetPriceLib.sol/SetPriceLib.json +10 -0
- package/artifacts/contracts/libs/v0.8.x/minter-libs/SettlementExpLib.sol/SettlementExpLib.json +10 -0
- package/artifacts/contracts/libs/v0.8.x/minter-libs/SplitFundsLib.sol/SplitFundsLib.json +10 -0
- package/artifacts/contracts/libs/v0.8.x/minter-libs/TokenHolderLib.sol/TokenHolderLib.json +10 -0
- package/artifacts/contracts/minter-suite/MinterFilter/MinterFilterV0.sol/MinterFilterV0.json +2 -2
- package/artifacts/contracts/minter-suite/MinterFilter/MinterFilterV1.sol/MinterFilterV1.json +2 -2
- package/artifacts/contracts/minter-suite/MinterFilter/MinterFilterV2.sol/MinterFilterV2.json +58 -2
- package/artifacts/contracts/minter-suite/Minters/MinterDAExpHolderV5.sol/MinterDAExpHolderV5.json +1228 -0
- package/artifacts/contracts/minter-suite/Minters/MinterDAExpSettlementV2.sol/MinterDAExpSettlementV2.json +2 -2
- package/artifacts/contracts/minter-suite/Minters/MinterDAExpSettlementV3.sol/MinterDAExpSettlementV3.json +1146 -0
- package/artifacts/contracts/minter-suite/Minters/MinterDAExpV4.sol/MinterDAExpV4.json +2 -2
- package/artifacts/contracts/minter-suite/Minters/MinterDAExpV5.sol/MinterDAExpV5.json +909 -0
- package/artifacts/contracts/minter-suite/Minters/MinterDALinHolderV5.sol/MinterDALinHolderV5.json +1228 -0
- package/artifacts/contracts/minter-suite/Minters/MinterDALinV4.sol/MinterDALinV4.json +2 -2
- package/artifacts/contracts/minter-suite/Minters/MinterDALinV5.sol/MinterDALinV5.json +909 -0
- package/artifacts/contracts/minter-suite/Minters/MinterHolderV4.sol/MinterHolderV4.json +2 -2
- package/artifacts/contracts/minter-suite/Minters/MinterMerkleV5.sol/MinterMerkleV5.json +2 -2
- package/artifacts/contracts/minter-suite/Minters/MinterPolyptychV0.sol/MinterPolyptychV0.json +2 -2
- package/artifacts/contracts/minter-suite/Minters/MinterSEAV0.sol/MinterSEAV0.json +2 -2
- package/artifacts/contracts/minter-suite/Minters/MinterSEAV1.sol/MinterSEAV1.json +1325 -0
- package/artifacts/contracts/minter-suite/Minters/MinterSetPriceERC20V4.sol/MinterSetPriceERC20V4.json +2 -2
- package/artifacts/contracts/minter-suite/Minters/MinterSetPriceERC20V5.sol/MinterSetPriceERC20V5.json +848 -0
- package/artifacts/contracts/minter-suite/Minters/MinterSetPriceHolderV5.sol/MinterSetPriceHolderV5.json +1091 -0
- package/artifacts/contracts/minter-suite/Minters/MinterSetPriceMerkleV5.sol/MinterSetPriceMerkleV5.json +1075 -0
- package/artifacts/contracts/minter-suite/Minters/MinterSetPricePolyptychERC20V5.sol/MinterSetPricePolyptychERC20V5.json +1243 -0
- package/artifacts/contracts/minter-suite/Minters/MinterSetPricePolyptychV5.sol/MinterSetPricePolyptychV5.json +1167 -0
- package/artifacts/contracts/minter-suite/Minters/MinterSetPriceV4.sol/MinterSetPriceV4.json +2 -2
- package/artifacts/contracts/minter-suite/Minters/MinterSetPriceV5.sol/MinterSetPriceV5.json +772 -0
- package/artifacts/contracts/mock/BytecodeV0TextCR_DMock.sol/BytecodeV0TextCR_DMock.json +2 -2
- package/artifacts/contracts/mock/BytecodeV1LibCallsMock.sol/BytecodeV1LibCallsMock.json +2 -2
- package/artifacts/contracts/mock/BytecodeV1TextCR_DMock.sol/BytecodeV1TextCR_DMock.json +4 -4
- package/artifacts/contracts/mock/DeadReceiverBidderMock.sol/DeadReceiverBidderMock.json +25 -2
- package/artifacts/contracts/mock/DummySharedMinter.sol/DummySharedMinter.json +2 -2
- package/artifacts/contracts/mock/ERC20Mock.sol/ERC20Mock.json +28 -2
- package/artifacts/contracts/mock/GenArt721CoreV3_Engine_IncorrectCoreType.sol/GenArt721CoreV3_Engine_IncorrectCoreType.json +4 -4
- package/artifacts/contracts/mock/MockAdminACLV0.sol/MockAdminACLV0Events.json +2 -2
- package/artifacts/contracts/mock/MockAdminACLV0_PROHIBITION.sol/MockAdminACLV0Events_PROHIBITION.json +2 -2
- package/artifacts/contracts/mock/OriginRegisterMock.sol/OriginRegisterMock.json +2 -2
- package/artifacts/contracts/mock/RandomizerV2_NoAssignMock.sol/RandomizerV2_NoAssignMock.json +2 -2
- package/artifacts/contracts/mock/ReentrancyHolderMock.sol/ReentrancyHolderMock.json +2 -2
- package/artifacts/contracts/mock/ReentrancyMerkleMock.sol/ReentrancyMerkleMock.json +2 -2
- package/artifacts/contracts/mock/ReentrancyMock.sol/ReentrancyMock.json +2 -2
- package/artifacts/contracts/mock/ReentrancySEAMock.sol/ReentrancySEAAutoBidderMock.json +2 -2
- package/artifacts/contracts/mock/SSTORE2Mock.sol/SSTORE2Mock.json +2 -2
- package/artifacts/contracts/randomizer/deprecated/BasicRandomizer.sol/BasicRandomizer.json +2 -2
- package/artifacts/contracts/randomizer/deprecated/PolyptychRandomizerV0.sol/BasicPolyptychRandomizerV0.json +2 -2
- package/artifacts/contracts/randomizer/deprecated/RandomizerV2.sol/BasicRandomizerV2.json +2 -2
- package/artifacts/contracts/randomizer/primitive/PseudorandomAtomicBasic.sol/PseudorandomAtomic.json +2 -2
- package/artifacts/contracts/randomizer/shared/SharedRandomizerV0.sol/SharedRandomizerV0.json +48 -32
- package/artifacts/contracts/royalty-registry/GenArt721RoyaltyOverride.sol/GenArt721RoyaltyOverride.json +2 -2
- package/artifacts/contracts/royalty-registry/GenArt721RoyaltyOverride_PBAB.sol/GenArt721RoyaltyOverride_PBAB.json +2 -2
- package/contracts/AdminACLV0.sol +1 -1
- package/contracts/AdminACLV1.sol +1 -1
- package/contracts/DependencyRegistryV0.sol +216 -107
- package/contracts/GenArt721CoreV3.sol +27 -12
- package/contracts/archive/minter-suite/Minters/MinterDAExp/MinterDAExpV0.sol +3 -3
- package/contracts/archive/minter-suite/Minters/MinterDAExp/MinterDAExpV1.sol +3 -3
- package/contracts/archive/minter-suite/Minters/MinterDAExp/MinterDAExpV2.sol +3 -3
- package/contracts/archive/minter-suite/Minters/MinterDAExp/MinterDAExpV3.sol +3 -3
- package/contracts/archive/minter-suite/Minters/MinterDAExpSettlement/MinterDAExpSettlementV0.sol +3 -3
- package/contracts/archive/minter-suite/Minters/MinterDAExpSettlement/MinterDAExpSettlementV1.sol +3 -3
- package/contracts/archive/minter-suite/Minters/MinterDALin/MinterDALinV0.sol +3 -3
- package/contracts/archive/minter-suite/Minters/MinterDALin/MinterDALinV1.sol +3 -3
- package/contracts/archive/minter-suite/Minters/MinterDALin/MinterDALinV2.sol +3 -3
- package/contracts/archive/minter-suite/Minters/MinterDALin/MinterDALinV3.sol +3 -3
- package/contracts/archive/minter-suite/Minters/MinterHolder/MinterHolderV0.sol +3 -3
- package/contracts/archive/minter-suite/Minters/MinterHolder/MinterHolderV1.sol +3 -3
- package/contracts/archive/minter-suite/Minters/MinterHolder/MinterHolderV2.sol +4 -4
- package/contracts/archive/minter-suite/Minters/MinterHolder/MinterHolderV3.sol +4 -4
- package/contracts/archive/minter-suite/Minters/MinterMerkle/MinterMerkleV0.sol +3 -3
- package/contracts/archive/minter-suite/Minters/MinterMerkle/MinterMerkleV1.sol +3 -3
- package/contracts/archive/minter-suite/Minters/MinterMerkle/MinterMerkleV2.sol +4 -4
- package/contracts/archive/minter-suite/Minters/MinterMerkle/MinterMerkleV3.sol +4 -4
- package/contracts/archive/minter-suite/Minters/MinterMerkle/MinterMerkleV4.sol +4 -4
- package/contracts/archive/minter-suite/Minters/MinterSetPrice/MinterSetPriceV0.sol +3 -3
- package/contracts/archive/minter-suite/Minters/MinterSetPrice/MinterSetPriceV1.sol +3 -3
- package/contracts/archive/minter-suite/Minters/MinterSetPrice/MinterSetPriceV2.sol +3 -3
- package/contracts/archive/minter-suite/Minters/MinterSetPrice/MinterSetPriceV3.sol +3 -3
- package/contracts/archive/minter-suite/Minters/MinterSetPriceERC20/MinterSetPriceERC20V0.sol +3 -3
- package/contracts/archive/minter-suite/Minters/MinterSetPriceERC20/MinterSetPriceERC20V1.sol +3 -3
- package/contracts/archive/minter-suite/Minters/MinterSetPriceERC20/MinterSetPriceERC20V2.sol +3 -3
- package/contracts/archive/minter-suite/Minters/MinterSetPriceERC20/MinterSetPriceERC20V3.sol +3 -3
- package/contracts/engine/V2/GenArt721CoreV2_ENGINE_FLEX.sol +2 -2
- package/contracts/engine/V2/GenArt721CoreV2_PBAB.sol +2 -2
- package/contracts/engine/V2/GenArt721CoreV2_PRTNR.sol +3 -3
- package/contracts/engine/V2/GenArt721MinterBurner_PBAB.sol +2 -2
- package/contracts/engine/V2/GenArt721MinterDAExp_PBAB.sol +1 -1
- package/contracts/engine/V2/GenArt721Minter_PBAB.sol +2 -2
- package/contracts/engine/V3/GenArt721CoreV3_Engine.sol +29 -14
- package/contracts/engine/V3/GenArt721CoreV3_Engine_Flex.sol +29 -14
- package/contracts/engine/V3/forks/GenArt721CoreV3_Engine_Flex_PROOF.sol +9 -9
- package/contracts/engine/V3/forks/PROHIBITION/AdminACLV0_PROHIBITION.sol +1 -1
- package/contracts/engine/V3/forks/PROHIBITION/GenArt721CoreV3_Engine_Flex_PROHIBITION.sol +20 -15
- package/contracts/engine/V3/forks/PROHIBITION/interfaces/IAdminACLV0_PROHIBITION.sol +1 -1
- package/contracts/engine/V3/forks/PROHIBITION/interfaces/IGenArt721CoreContractV3_Engine_Flex_PROHIBITION.sol +1 -1
- package/contracts/engine-registry/CoreRegistryV1.sol +1 -1
- package/contracts/engine-registry/EngineRegistryV0.sol +1 -1
- package/contracts/explorations/GenArt721CoreV3_Explorations.sol +27 -12
- package/contracts/interfaces/{0.8.x → v0.8.x}/IDependencyRegistryV0.sol +2 -2
- package/contracts/interfaces/v0.8.x/IGenArt721CoreContractV3WithSharedRandomizer.sol +23 -0
- package/contracts/interfaces/{0.8.x → v0.8.x}/IMinterFilterV1.sol +26 -0
- package/contracts/interfaces/v0.8.x/IRandomizer_V3CoreBase.sol +23 -0
- package/contracts/interfaces/v0.8.x/ISharedMinterDAExpSettlementV0.sol +37 -0
- package/contracts/interfaces/v0.8.x/ISharedMinterDAExpV0.sol +25 -0
- package/contracts/interfaces/v0.8.x/ISharedMinterDALinV0.sol +26 -0
- package/contracts/interfaces/v0.8.x/ISharedMinterDAV0.sol +19 -0
- package/contracts/interfaces/v0.8.x/ISharedMinterHolderV0.sol +69 -0
- package/contracts/interfaces/v0.8.x/ISharedMinterMerkleV0.sol +44 -0
- package/contracts/interfaces/v0.8.x/ISharedMinterSEAV0.sol +78 -0
- package/contracts/interfaces/v0.8.x/ISharedMinterSimplePurchaseV0.sol +28 -0
- package/contracts/interfaces/v0.8.x/ISharedMinterV0.sol +191 -0
- package/contracts/interfaces/{0.8.x → v0.8.x}/ISharedRandomizerV0.sol +42 -24
- package/contracts/legacy/GenArt721CoreV1.sol +2 -2
- package/contracts/legacy/GenArt721LegacyMinter.sol +5 -5
- package/contracts/libs/integration-refs/delegation-registry/DelegationRegistry.sol +1 -1
- package/contracts/libs/v0.8.x/ABHelpers.sol +55 -0
- package/contracts/libs/v0.8.x/AuthLib.sol +197 -0
- package/contracts/libs/v0.8.x/minter-libs/DAExpLib.sol +125 -0
- package/contracts/libs/v0.8.x/minter-libs/DALinLib.sol +109 -0
- package/contracts/libs/v0.8.x/minter-libs/MaxInvocationsLib.sol +348 -0
- package/contracts/libs/v0.8.x/minter-libs/MerkleLib.sol +175 -0
- package/contracts/libs/v0.8.x/minter-libs/PolyptychLib.sol +160 -0
- package/contracts/libs/v0.8.x/minter-libs/SEALib.sol +320 -0
- package/contracts/libs/v0.8.x/minter-libs/SetPriceLib.sol +44 -0
- package/contracts/libs/v0.8.x/minter-libs/SettlementExpLib.sol +390 -0
- package/contracts/libs/v0.8.x/minter-libs/SplitFundsLib.sol +583 -0
- package/contracts/libs/v0.8.x/minter-libs/TokenHolderLib.sol +153 -0
- package/contracts/minter-suite/MinterFilter/MinterFilterV0.sol +3 -3
- package/contracts/minter-suite/MinterFilter/MinterFilterV1.sol +5 -5
- package/contracts/minter-suite/MinterFilter/MinterFilterV2.sol +83 -9
- package/contracts/minter-suite/Minters/MinterBase_v0_1_1.sol +4 -4
- package/contracts/minter-suite/Minters/MinterDAExpHolderV5.sol +966 -0
- package/contracts/minter-suite/Minters/MinterDAExpSettlementV2.sol +3 -3
- package/contracts/minter-suite/Minters/MinterDAExpSettlementV3.sol +1126 -0
- package/contracts/minter-suite/Minters/MinterDAExpV4.sol +3 -3
- package/contracts/minter-suite/Minters/MinterDAExpV5.sol +606 -0
- package/contracts/minter-suite/Minters/MinterDALinHolderV5.sol +952 -0
- package/contracts/minter-suite/Minters/MinterDALinV4.sol +3 -3
- package/contracts/minter-suite/Minters/MinterDALinV5.sol +591 -0
- package/contracts/minter-suite/Minters/MinterHolderV4.sol +4 -4
- package/contracts/minter-suite/Minters/MinterMerkleV5.sol +4 -4
- package/contracts/minter-suite/Minters/MinterPolyptychV0.sol +6 -6
- package/contracts/minter-suite/Minters/MinterSEAV0.sol +3 -3
- package/contracts/minter-suite/Minters/MinterSEAV1.sol +1190 -0
- package/contracts/minter-suite/Minters/MinterSetPriceERC20V4.sol +5 -5
- package/contracts/minter-suite/Minters/MinterSetPriceERC20V5.sol +570 -0
- package/contracts/minter-suite/Minters/MinterSetPriceHolderV5.sol +821 -0
- package/contracts/minter-suite/Minters/MinterSetPriceMerkleV5.sol +802 -0
- package/contracts/minter-suite/Minters/MinterSetPricePolyptychERC20V5.sol +1096 -0
- package/contracts/minter-suite/Minters/MinterSetPricePolyptychV5.sol +992 -0
- package/contracts/minter-suite/Minters/MinterSetPriceV4.sol +3 -3
- package/contracts/minter-suite/Minters/MinterSetPriceV5.sol +461 -0
- package/contracts/mock/BytecodeV0TextCR_DMock.sol +1 -1
- package/contracts/mock/BytecodeV1LibCallsMock.sol +1 -1
- package/contracts/mock/BytecodeV1TextCR_DMock.sol +1 -1
- package/contracts/mock/DeadReceiverBidderMock.sol +15 -0
- package/contracts/mock/DummySharedMinter.sol +2 -2
- package/contracts/mock/ERC20Mock.sol +16 -0
- package/contracts/mock/GenArt721CoreV3_Engine_IncorrectCoreType.sol +9 -9
- package/contracts/mock/MockAdminACLV0.sol +1 -1
- package/contracts/mock/MockAdminACLV0_PROHIBITION.sol +1 -1
- package/contracts/mock/OriginRegisterMock.sol +1 -1
- package/contracts/mock/ReentrancyHolderMock.sol +1 -1
- package/contracts/mock/ReentrancyMerkleMock.sol +1 -1
- package/contracts/mock/ReentrancyMock.sol +1 -1
- package/contracts/mock/ReentrancySEAMock.sol +1 -1
- package/contracts/mock/SSTORE2Mock.sol +1 -1
- package/contracts/randomizer/deprecated/BasicRandomizer.sol +1 -1
- package/contracts/randomizer/deprecated/PolyptychRandomizerV0.sol +2 -2
- package/contracts/randomizer/deprecated/RandomizerV2.sol +2 -2
- package/contracts/randomizer/primitive/PseudorandomAtomicBasic.sol +1 -1
- package/contracts/randomizer/shared/SharedRandomizerV0.sol +91 -76
- package/contracts/royalty-registry/GenArt721RoyaltyOverride.sol +2 -2
- package/contracts/royalty-registry/GenArt721RoyaltyOverride_PBAB.sol +2 -2
- package/package.json +46 -31
- package/LICENSE +0 -165
- package/contracts/interfaces/0.8.x/IRandomizer_V3CoreBase.sol +0 -10
- /package/contracts/interfaces/{0.5.x → v0.5.x}/IBonusContract.sol +0 -0
- /package/contracts/interfaces/{0.5.x → v0.5.x}/IGenArt721CoreContractV1.sol +0 -0
- /package/contracts/interfaces/{0.5.x → v0.5.x}/IGenArt721CoreV2_PBAB.sol +0 -0
- /package/contracts/interfaces/{0.5.x → v0.5.x}/IRandomizer.sol +0 -0
- /package/contracts/interfaces/{0.8.x → v0.8.x}/IAdminACLV0.sol +0 -0
- /package/contracts/interfaces/{0.8.x → v0.8.x}/IArtblocksRoyaltyOverride.sol +0 -0
- /package/contracts/interfaces/{0.8.x → v0.8.x}/IBonusContract.sol +0 -0
- /package/contracts/interfaces/{0.8.x → v0.8.x}/IBytecodeStorageReader.sol +0 -0
- /package/contracts/interfaces/{0.8.x → v0.8.x}/ICoreRegistryV1.sol +0 -0
- /package/contracts/interfaces/{0.8.x → v0.8.x}/IDelegationRegistry.sol +0 -0
- /package/contracts/interfaces/{0.8.x → v0.8.x}/IDependencyRegistryCompatibleV0.sol +0 -0
- /package/contracts/interfaces/{0.8.x → v0.8.x}/IEngineRegistryV0.sol +0 -0
- /package/contracts/interfaces/{0.8.x → v0.8.x}/IFilteredMinterDAExpSettlementV0.sol +0 -0
- /package/contracts/interfaces/{0.8.x → v0.8.x}/IFilteredMinterDAExpSettlementV1.sol +0 -0
- /package/contracts/interfaces/{0.8.x → v0.8.x}/IFilteredMinterDAExpSettlement_Mixin.sol +0 -0
- /package/contracts/interfaces/{0.8.x → v0.8.x}/IFilteredMinterDAExpV0.sol +0 -0
- /package/contracts/interfaces/{0.8.x → v0.8.x}/IFilteredMinterDAExpV1.sol +0 -0
- /package/contracts/interfaces/{0.8.x → v0.8.x}/IFilteredMinterDALinV0.sol +0 -0
- /package/contracts/interfaces/{0.8.x → v0.8.x}/IFilteredMinterDALinV1.sol +0 -0
- /package/contracts/interfaces/{0.8.x → v0.8.x}/IFilteredMinterHolderV0.sol +0 -0
- /package/contracts/interfaces/{0.8.x → v0.8.x}/IFilteredMinterHolderV1.sol +0 -0
- /package/contracts/interfaces/{0.8.x → v0.8.x}/IFilteredMinterHolderV2.sol +0 -0
- /package/contracts/interfaces/{0.8.x → v0.8.x}/IFilteredMinterMerkleV0.sol +0 -0
- /package/contracts/interfaces/{0.8.x → v0.8.x}/IFilteredMinterMerkleV1.sol +0 -0
- /package/contracts/interfaces/{0.8.x → v0.8.x}/IFilteredMinterMerkleV2.sol +0 -0
- /package/contracts/interfaces/{0.8.x → v0.8.x}/IFilteredMinterSEAV0.sol +0 -0
- /package/contracts/interfaces/{0.8.x → v0.8.x}/IFilteredMinterV0.sol +0 -0
- /package/contracts/interfaces/{0.8.x → v0.8.x}/IFilteredMinterV1.sol +0 -0
- /package/contracts/interfaces/{0.8.x → v0.8.x}/IFilteredMinterV2.sol +0 -0
- /package/contracts/interfaces/{0.8.x → v0.8.x}/IGenArt721CoreContractExposesHashSeed.sol +0 -0
- /package/contracts/interfaces/{0.8.x → v0.8.x}/IGenArt721CoreContractV1.sol +0 -0
- /package/contracts/interfaces/{0.8.x → v0.8.x}/IGenArt721CoreContractV3.sol +0 -0
- /package/contracts/interfaces/{0.8.x → v0.8.x}/IGenArt721CoreContractV3_Base.sol +0 -0
- /package/contracts/interfaces/{0.8.x → v0.8.x}/IGenArt721CoreContractV3_Engine.sol +0 -0
- /package/contracts/interfaces/{0.8.x → v0.8.x}/IGenArt721CoreContractV3_Engine_Flex.sol +0 -0
- /package/contracts/interfaces/{0.8.x → v0.8.x}/IGenArt721CoreV2_PBAB.sol +0 -0
- /package/contracts/interfaces/{0.8.x → v0.8.x}/IManifold.sol +0 -0
- /package/contracts/interfaces/{0.8.x → v0.8.x}/IMinterBaseV0.sol +0 -0
- /package/contracts/interfaces/{0.8.x → v0.8.x}/IMinterFilterV0.sol +0 -0
- /package/contracts/interfaces/{0.8.x → v0.8.x}/IMintingAPICoreV0.sol +0 -0
- /package/contracts/interfaces/{0.8.x → v0.8.x}/IMintingAPIMinterV0.sol +0 -0
- /package/contracts/interfaces/{0.8.x → v0.8.x}/IPseudorandomAtomic.sol +0 -0
- /package/contracts/interfaces/{0.8.x → v0.8.x}/IRandomizer.sol +0 -0
- /package/contracts/interfaces/{0.8.x → v0.8.x}/IRandomizerPolyptychV0.sol +0 -0
- /package/contracts/interfaces/{0.8.x → v0.8.x}/IRandomizerV2.sol +0 -0
- /package/contracts/interfaces/{0.8.x → v0.8.x}/IWETH.sol +0 -0
- /package/contracts/libs/{0.5.x → v0.5.x}/CustomERC721Metadata.sol +0 -0
- /package/contracts/libs/{0.5.x → v0.5.x}/IERC20.sol +0 -0
- /package/contracts/libs/{0.5.x → v0.5.x}/SafeMath.sol +0 -0
- /package/contracts/libs/{0.5.x → v0.5.x}/Strings.sol +0 -0
- /package/contracts/libs/{0.8.x → v0.8.x}/BytecodeStorageV0.sol +0 -0
- /package/contracts/libs/{0.8.x → v0.8.x}/BytecodeStorageV1.sol +0 -0
- /package/contracts/libs/{0.8.x → v0.8.x}/Bytes32Strings.sol +0 -0
- /package/contracts/libs/{0.8.x → v0.8.x}/ERC721_PackedHashSeed.sol +0 -0
- /package/contracts/libs/{0.8.x → v0.8.x}/SSTORE2.sol +0 -0
|
@@ -3,9 +3,9 @@ pragma solidity 0.8.19;
|
|
|
3
3
|
|
|
4
4
|
// Created By: Art Blocks Inc.
|
|
5
5
|
|
|
6
|
-
import "./interfaces/
|
|
7
|
-
import "./interfaces/
|
|
8
|
-
import "./interfaces/
|
|
6
|
+
import "./interfaces/v0.8.x/IAdminACLV0.sol";
|
|
7
|
+
import "./interfaces/v0.8.x/IDependencyRegistryCompatibleV0.sol";
|
|
8
|
+
import "./interfaces/v0.8.x/IDependencyRegistryV0.sol";
|
|
9
9
|
|
|
10
10
|
import "@openzeppelin-4.7/contracts/utils/Strings.sol";
|
|
11
11
|
import "@openzeppelin-4.7/contracts/utils/structs/EnumerableSet.sol";
|
|
@@ -13,8 +13,8 @@ import "@openzeppelin-4.8/contracts-upgradeable/access/OwnableUpgradeable.sol";
|
|
|
13
13
|
import "@openzeppelin-4.8/contracts-upgradeable/proxy/utils/Initializable.sol";
|
|
14
14
|
import "@openzeppelin-4.5/contracts/utils/math/SafeCast.sol";
|
|
15
15
|
|
|
16
|
-
import "./libs/
|
|
17
|
-
import "./libs/
|
|
16
|
+
import "./libs/v0.8.x/BytecodeStorageV1.sol";
|
|
17
|
+
import "./libs/v0.8.x/Bytes32Strings.sol";
|
|
18
18
|
|
|
19
19
|
/**
|
|
20
20
|
* @title Art Blocks Dependency Registry, V0.
|
|
@@ -47,8 +47,10 @@ contract DependencyRegistryV0 is
|
|
|
47
47
|
|
|
48
48
|
struct Dependency {
|
|
49
49
|
string preferredCDN;
|
|
50
|
+
// mapping from additional CDN index to CDN URLr
|
|
50
51
|
mapping(uint256 => string) additionalCDNs;
|
|
51
52
|
string preferredRepository;
|
|
53
|
+
// mapping from additional repository index to repository URL
|
|
52
54
|
mapping(uint256 => string) additionalRepositories;
|
|
53
55
|
string referenceWebsite;
|
|
54
56
|
// mapping from script index to address storing script in bytecode
|
|
@@ -97,6 +99,10 @@ contract DependencyRegistryV0 is
|
|
|
97
99
|
);
|
|
98
100
|
}
|
|
99
101
|
|
|
102
|
+
function _onlyInRangeIndex(uint256 _index, uint256 _length) internal pure {
|
|
103
|
+
require(_index < _length, "Index out of range");
|
|
104
|
+
}
|
|
105
|
+
|
|
100
106
|
/**
|
|
101
107
|
* @notice Initializes contract.
|
|
102
108
|
* @param _adminACLContract Address of admin access control contract, to be
|
|
@@ -134,10 +140,10 @@ contract DependencyRegistryV0 is
|
|
|
134
140
|
);
|
|
135
141
|
|
|
136
142
|
_dependencyTypes.add(_dependencyType);
|
|
137
|
-
Dependency storage
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
|
|
143
|
+
Dependency storage dependency = dependencyDetails[_dependencyType];
|
|
144
|
+
dependency.preferredCDN = _preferredCDN;
|
|
145
|
+
dependency.preferredRepository = _preferredRepository;
|
|
146
|
+
dependency.referenceWebsite = _referenceWebsite;
|
|
141
147
|
|
|
142
148
|
emit DependencyAdded(
|
|
143
149
|
_dependencyType,
|
|
@@ -149,7 +155,7 @@ contract DependencyRegistryV0 is
|
|
|
149
155
|
|
|
150
156
|
/**
|
|
151
157
|
* @notice Removes a dependency.
|
|
152
|
-
* @param _dependencyType Name of dependency type (i.e. "type@version")
|
|
158
|
+
* @param _dependencyType Name of dependency type (i.e. "type@version") used to identify dependency.
|
|
153
159
|
*/
|
|
154
160
|
function removeDependency(bytes32 _dependencyType) external {
|
|
155
161
|
_onlyAdminACL(this.removeDependency.selector);
|
|
@@ -169,10 +175,11 @@ contract DependencyRegistryV0 is
|
|
|
169
175
|
}
|
|
170
176
|
|
|
171
177
|
/**
|
|
172
|
-
* @notice Adds a script to dependency `_dependencyType
|
|
173
|
-
*
|
|
178
|
+
* @notice Adds a script to dependency `_dependencyType`, by way of
|
|
179
|
+
* providing a string to write to bytecode storage.
|
|
180
|
+
* @param _dependencyType Name of dependency type (i.e. "type@version") used to identify dependency.
|
|
174
181
|
* @param _script Script to be added. Required to be a non-empty string,
|
|
175
|
-
*
|
|
182
|
+
* but no further validation is performed.
|
|
176
183
|
*/
|
|
177
184
|
function addDependencyScript(
|
|
178
185
|
bytes32 _dependencyType,
|
|
@@ -191,36 +198,80 @@ contract DependencyRegistryV0 is
|
|
|
191
198
|
}
|
|
192
199
|
|
|
193
200
|
/**
|
|
194
|
-
* @notice Updates script for dependencyType `_dependencyType` at script
|
|
195
|
-
*
|
|
196
|
-
* @param
|
|
201
|
+
* @notice Updates script for dependencyType `_dependencyType` at script `_index`,
|
|
202
|
+
* by way of providing a string to write to bytecode storage.
|
|
203
|
+
* @param _dependencyType Name of dependency type (i.e. "type@version") used to identify dependency.
|
|
204
|
+
* @param _index The index of a given script, relative to the overall `scriptCount`.
|
|
197
205
|
* @param _script The updated script value. Required to be a non-empty
|
|
198
|
-
*
|
|
206
|
+
* string, but no further validation is performed.
|
|
199
207
|
*/
|
|
200
208
|
function updateDependencyScript(
|
|
201
209
|
bytes32 _dependencyType,
|
|
202
|
-
uint256
|
|
210
|
+
uint256 _index,
|
|
203
211
|
string memory _script
|
|
204
212
|
) external {
|
|
205
213
|
_onlyAdminACL(this.updateDependencyScript.selector);
|
|
206
214
|
_onlyNonEmptyString(_script);
|
|
207
215
|
_onlyExistingDependencyType(_dependencyType);
|
|
208
|
-
Dependency storage
|
|
209
|
-
|
|
210
|
-
_scriptId < dependencyType.scriptCount,
|
|
211
|
-
"scriptId out of range"
|
|
212
|
-
);
|
|
216
|
+
Dependency storage dependency = dependencyDetails[_dependencyType];
|
|
217
|
+
_onlyInRangeIndex({_index: _index, _length: dependency.scriptCount});
|
|
213
218
|
// store script in contract bytecode, replacing reference address from
|
|
214
219
|
// the contract that no longer exists with the newly created one
|
|
215
|
-
|
|
216
|
-
|
|
220
|
+
dependency.scriptBytecodeAddresses[_index] = _script.writeToBytecode();
|
|
221
|
+
|
|
222
|
+
emit DependencyScriptUpdated(_dependencyType);
|
|
223
|
+
}
|
|
224
|
+
|
|
225
|
+
/**
|
|
226
|
+
* @notice Adds a script to dependency `_dependencyType`, by way of
|
|
227
|
+
* providing an already written chunk of bytecode storage.
|
|
228
|
+
* @param _dependencyType Name of dependency type (i.e. "type@version") used to identify dependency.
|
|
229
|
+
* @param _scriptPointer Address of script to be added. Required to be a non-zero address,
|
|
230
|
+
* but no further validation is performed.
|
|
231
|
+
*/
|
|
232
|
+
function addDependencyScriptPointer(
|
|
233
|
+
bytes32 _dependencyType,
|
|
234
|
+
address _scriptPointer
|
|
235
|
+
) external {
|
|
236
|
+
_onlyAdminACL(this.addDependencyScriptPointer.selector);
|
|
237
|
+
_onlyNonZeroAddress(_scriptPointer);
|
|
238
|
+
_onlyExistingDependencyType(_dependencyType);
|
|
239
|
+
Dependency storage dependency = dependencyDetails[_dependencyType];
|
|
240
|
+
// store script in contract bytecode
|
|
241
|
+
dependency.scriptBytecodeAddresses[
|
|
242
|
+
dependency.scriptCount
|
|
243
|
+
] = _scriptPointer;
|
|
244
|
+
dependency.scriptCount = dependency.scriptCount + 1;
|
|
245
|
+
|
|
246
|
+
emit DependencyScriptUpdated(_dependencyType);
|
|
247
|
+
}
|
|
248
|
+
|
|
249
|
+
/**
|
|
250
|
+
* @notice Updates script for dependencyType `_dependencyType` at script `_index`,
|
|
251
|
+
* by way of providing an already written chunk of bytecode storage.
|
|
252
|
+
* @param _dependencyType Name of dependency type (i.e. "type@version") used to identify dependency.
|
|
253
|
+
* @param _index The index of a given script, relative to the overall `scriptCount`.
|
|
254
|
+
* @param _scriptPointer The updated script pointer (address of bytecode storage).
|
|
255
|
+
* Required to be a non-zero address, but no further validation is performed.
|
|
256
|
+
*/
|
|
257
|
+
function updateDependencyScriptPointer(
|
|
258
|
+
bytes32 _dependencyType,
|
|
259
|
+
uint256 _index,
|
|
260
|
+
address _scriptPointer
|
|
261
|
+
) external {
|
|
262
|
+
_onlyAdminACL(this.updateDependencyScriptPointer.selector);
|
|
263
|
+
_onlyNonZeroAddress(_scriptPointer);
|
|
264
|
+
_onlyExistingDependencyType(_dependencyType);
|
|
265
|
+
Dependency storage dependency = dependencyDetails[_dependencyType];
|
|
266
|
+
_onlyInRangeIndex({_index: _index, _length: dependency.scriptCount});
|
|
267
|
+
dependency.scriptBytecodeAddresses[_index] = _scriptPointer;
|
|
217
268
|
|
|
218
269
|
emit DependencyScriptUpdated(_dependencyType);
|
|
219
270
|
}
|
|
220
271
|
|
|
221
272
|
/**
|
|
222
273
|
* @notice Removes last script from dependency `_dependencyType`.
|
|
223
|
-
* @param _dependencyType dependency to
|
|
274
|
+
* @param _dependencyType Name of dependency type (i.e. "type@version") used to identify dependency.
|
|
224
275
|
*/
|
|
225
276
|
function removeDependencyLastScript(bytes32 _dependencyType) external {
|
|
226
277
|
_onlyAdminACL(this.removeDependencyLastScript.selector);
|
|
@@ -238,7 +289,7 @@ contract DependencyRegistryV0 is
|
|
|
238
289
|
|
|
239
290
|
/**
|
|
240
291
|
* @notice Updates preferred CDN for dependency `_dependencyType`.
|
|
241
|
-
* @param _dependencyType dependency to
|
|
292
|
+
* @param _dependencyType Name of dependency type (i.e. "type@version") used to identify dependency.
|
|
242
293
|
* @param _preferredCDN URL for preferred CDN.
|
|
243
294
|
*/
|
|
244
295
|
function updateDependencyPreferredCDN(
|
|
@@ -254,7 +305,7 @@ contract DependencyRegistryV0 is
|
|
|
254
305
|
|
|
255
306
|
/**
|
|
256
307
|
* @notice Updates preferred repository for dependency `_dependencyType`.
|
|
257
|
-
* @param _dependencyType dependency to
|
|
308
|
+
* @param _dependencyType Name of dependency type (i.e. "type@version") used to identify dependency.
|
|
258
309
|
* @param _preferredRepository URL for preferred repository.
|
|
259
310
|
*/
|
|
260
311
|
function updateDependencyPreferredRepository(
|
|
@@ -274,7 +325,7 @@ contract DependencyRegistryV0 is
|
|
|
274
325
|
|
|
275
326
|
/**
|
|
276
327
|
* @notice Updates project website for dependency `_dependencyType`.
|
|
277
|
-
* @param _dependencyType dependency to
|
|
328
|
+
* @param _dependencyType Name of dependency type (i.e. "type@version") used to identify dependency.
|
|
278
329
|
* @param _referenceWebsite URL for project website.
|
|
279
330
|
*/
|
|
280
331
|
function updateDependencyReferenceWebsite(
|
|
@@ -293,9 +344,9 @@ contract DependencyRegistryV0 is
|
|
|
293
344
|
|
|
294
345
|
/**
|
|
295
346
|
* @notice Adds a new CDN url to `_dependencyType`.
|
|
296
|
-
* @param _dependencyType dependency to
|
|
347
|
+
* @param _dependencyType Name of dependency type (i.e. "type@version") used to identify dependency.
|
|
297
348
|
* @param _additionalCDN CDN URL to be added. Required to be a non-empty string,
|
|
298
|
-
*
|
|
349
|
+
* but no further validation is performed.
|
|
299
350
|
*/
|
|
300
351
|
function addDependencyAdditionalCDN(
|
|
301
352
|
bytes32 _dependencyType,
|
|
@@ -321,19 +372,19 @@ contract DependencyRegistryV0 is
|
|
|
321
372
|
* @notice Removes additional CDN for dependency `_dependencyId` at index `_index`.
|
|
322
373
|
* Removal is done by swapping the element to be removed with the last element in the array, then deleting this last element.
|
|
323
374
|
* Assets with indices higher than `_index` can have their indices adjusted as a result of this operation.
|
|
324
|
-
* @param _dependencyType dependency to
|
|
325
|
-
* @param _index
|
|
375
|
+
* @param _dependencyType Name of dependency type (i.e. "type@version") used to identify dependency.
|
|
376
|
+
* @param _index The index of an additional CDN, relative to the overall `additionalCDNCount`.
|
|
326
377
|
*/
|
|
327
|
-
function
|
|
378
|
+
function removeDependencyAdditionalCDN(
|
|
328
379
|
bytes32 _dependencyType,
|
|
329
380
|
uint256 _index
|
|
330
381
|
) external {
|
|
331
|
-
_onlyAdminACL(this.
|
|
382
|
+
_onlyAdminACL(this.removeDependencyAdditionalCDN.selector);
|
|
332
383
|
_onlyExistingDependencyType(_dependencyType);
|
|
333
384
|
Dependency storage dependency = dependencyDetails[_dependencyType];
|
|
334
385
|
|
|
335
386
|
uint256 additionalCDNCount = dependency.additionalCDNCount;
|
|
336
|
-
|
|
387
|
+
_onlyInRangeIndex({_index: _index, _length: additionalCDNCount});
|
|
337
388
|
|
|
338
389
|
uint256 lastElementIndex = additionalCDNCount - 1;
|
|
339
390
|
|
|
@@ -349,21 +400,23 @@ contract DependencyRegistryV0 is
|
|
|
349
400
|
|
|
350
401
|
/**
|
|
351
402
|
* @notice Updates additional CDN for dependency `_dependencyType` at `_index`.
|
|
352
|
-
* @param _dependencyType dependency to
|
|
353
|
-
* @param _index
|
|
403
|
+
* @param _dependencyType Name of dependency type (i.e. "type@version") used to identify dependency.
|
|
404
|
+
* @param _index The index of an additional CDN, relative to the overall `additionalCDNCount`.
|
|
354
405
|
* @param _additionalCDN New CDN URL.
|
|
355
406
|
*/
|
|
356
|
-
function
|
|
407
|
+
function updateDependencyAdditionalCDN(
|
|
357
408
|
bytes32 _dependencyType,
|
|
358
409
|
uint256 _index,
|
|
359
410
|
string memory _additionalCDN
|
|
360
411
|
) external {
|
|
361
|
-
_onlyAdminACL(this.
|
|
412
|
+
_onlyAdminACL(this.updateDependencyAdditionalCDN.selector);
|
|
362
413
|
_onlyNonEmptyString(_additionalCDN);
|
|
363
414
|
_onlyExistingDependencyType(_dependencyType);
|
|
364
415
|
Dependency storage dependency = dependencyDetails[_dependencyType];
|
|
365
|
-
|
|
366
|
-
|
|
416
|
+
_onlyInRangeIndex({
|
|
417
|
+
_index: _index,
|
|
418
|
+
_length: dependency.additionalCDNCount
|
|
419
|
+
});
|
|
367
420
|
|
|
368
421
|
dependency.additionalCDNs[_index] = _additionalCDN;
|
|
369
422
|
|
|
@@ -376,7 +429,7 @@ contract DependencyRegistryV0 is
|
|
|
376
429
|
|
|
377
430
|
/**
|
|
378
431
|
* @notice Adds a new repository URL to dependency `_dependencyType`.
|
|
379
|
-
* @param _dependencyType dependency to
|
|
432
|
+
* @param _dependencyType Name of dependency type (i.e. "type@version") used to identify dependency.
|
|
380
433
|
* @param _additionalRepository Repository URL to be added. Required to be a non-empty string,
|
|
381
434
|
* but no further validation is performed.
|
|
382
435
|
*/
|
|
@@ -409,22 +462,19 @@ contract DependencyRegistryV0 is
|
|
|
409
462
|
* @notice Removes additional repository for depenency `_dependencyId` at index `_index`.
|
|
410
463
|
* Removal is done by swapping the element to be removed with the last element in the array, then deleting this last element.
|
|
411
464
|
* Assets with indices higher than `_index` can have their indices adjusted as a result of this operation.
|
|
412
|
-
* @param _dependencyType dependency to
|
|
413
|
-
* @param _index
|
|
465
|
+
* @param _dependencyType Name of dependency type (i.e. "type@version") used to identify dependency.
|
|
466
|
+
* @param _index The index of an additional repository, relative to the overall `additionalRepositoryCount`.
|
|
414
467
|
*/
|
|
415
|
-
function
|
|
468
|
+
function removeDependencyAdditionalRepository(
|
|
416
469
|
bytes32 _dependencyType,
|
|
417
470
|
uint256 _index
|
|
418
471
|
) external {
|
|
419
|
-
_onlyAdminACL(
|
|
420
|
-
this.removeDependencyAdditionalRepositoryAtIndex.selector
|
|
421
|
-
);
|
|
472
|
+
_onlyAdminACL(this.removeDependencyAdditionalRepository.selector);
|
|
422
473
|
_onlyExistingDependencyType(_dependencyType);
|
|
423
474
|
Dependency storage dependency = dependencyDetails[_dependencyType];
|
|
424
|
-
uint256 additionalRepositoryCount =
|
|
425
|
-
|
|
426
|
-
);
|
|
427
|
-
require(_index < additionalRepositoryCount, "Asset index out of range");
|
|
475
|
+
uint256 additionalRepositoryCount = dependency
|
|
476
|
+
.additionalRepositoryCount;
|
|
477
|
+
_onlyInRangeIndex({_index: _index, _length: additionalRepositoryCount});
|
|
428
478
|
|
|
429
479
|
uint256 lastElementIndex = additionalRepositoryCount - 1;
|
|
430
480
|
|
|
@@ -440,23 +490,23 @@ contract DependencyRegistryV0 is
|
|
|
440
490
|
|
|
441
491
|
/**
|
|
442
492
|
* @notice Updates additional repository for dependency `_dependencyType` at `_index`.
|
|
443
|
-
* @param _dependencyType dependency to
|
|
444
|
-
* @param _index
|
|
493
|
+
* @param _dependencyType Name of dependency type (i.e. "type@version") used to identify dependency.
|
|
494
|
+
* @param _index The index of an additional repository, relative to the overall `additionalRepositoryCount`.
|
|
445
495
|
* @param _additionalRepository New Repository URL.
|
|
446
496
|
*/
|
|
447
|
-
function
|
|
497
|
+
function updateDependencyAdditionalRepository(
|
|
448
498
|
bytes32 _dependencyType,
|
|
449
499
|
uint256 _index,
|
|
450
500
|
string memory _additionalRepository
|
|
451
501
|
) external {
|
|
452
|
-
_onlyAdminACL(
|
|
453
|
-
this.updateDependencyAdditionalRepositoryAtIndex.selector
|
|
454
|
-
);
|
|
502
|
+
_onlyAdminACL(this.updateDependencyAdditionalRepository.selector);
|
|
455
503
|
_onlyNonEmptyString(_additionalRepository);
|
|
456
504
|
_onlyExistingDependencyType(_dependencyType);
|
|
457
505
|
Dependency storage dependency = dependencyDetails[_dependencyType];
|
|
458
|
-
|
|
459
|
-
|
|
506
|
+
_onlyInRangeIndex({
|
|
507
|
+
_index: _index,
|
|
508
|
+
_length: dependency.additionalRepositoryCount
|
|
509
|
+
});
|
|
460
510
|
|
|
461
511
|
dependency.additionalRepositories[_index] = _additionalRepository;
|
|
462
512
|
|
|
@@ -503,7 +553,7 @@ contract DependencyRegistryV0 is
|
|
|
503
553
|
* type (`_dependencyType`).
|
|
504
554
|
* @param _contractAddress Core contract address.
|
|
505
555
|
* @param _projectId Project to override script type and version for.
|
|
506
|
-
* @param _dependencyType
|
|
556
|
+
* @param _dependencyType Name of dependency type (i.e. "type@version") used to identify dependency.
|
|
507
557
|
*/
|
|
508
558
|
function addProjectDependencyTypeOverride(
|
|
509
559
|
address _contractAddress,
|
|
@@ -574,20 +624,20 @@ contract DependencyRegistryV0 is
|
|
|
574
624
|
|
|
575
625
|
/**
|
|
576
626
|
* @notice Returns registered depenedency type at index `_index`.
|
|
577
|
-
* @return Registered dependency at `_index
|
|
627
|
+
* @return Registered dependency at `_index`, relative to the overall length of the dependency type set.
|
|
578
628
|
*/
|
|
579
|
-
function
|
|
629
|
+
function getDependencyType(
|
|
580
630
|
uint256 _index
|
|
581
631
|
) external view returns (string memory) {
|
|
582
|
-
|
|
632
|
+
_onlyInRangeIndex({_index: _index, _length: _dependencyTypes.length()});
|
|
583
633
|
return _dependencyTypes.at(_index).toString();
|
|
584
634
|
}
|
|
585
635
|
|
|
586
636
|
/**
|
|
587
|
-
* @notice Returns details for depedency type `_dependencyType`.
|
|
588
|
-
* @param _dependencyType
|
|
637
|
+
* @notice Returns details for a given depedency type `_dependencyType`.
|
|
638
|
+
* @param _dependencyType Name of dependency type (i.e. "type@version") used to identify dependency.
|
|
589
639
|
* @return typeAndVersion String representation of `_dependencyType`.
|
|
590
|
-
*
|
|
640
|
+
* (e.g. "p5js(atSymbol)1.0.0")
|
|
591
641
|
* @return preferredCDN Preferred CDN URL for dependency
|
|
592
642
|
* @return additionalCDNCount Count of additional CDN URLs for dependency
|
|
593
643
|
* @return preferredRepository Preferred repository URL for dependency
|
|
@@ -636,19 +686,31 @@ contract DependencyRegistryV0 is
|
|
|
636
686
|
|
|
637
687
|
/**
|
|
638
688
|
* @notice Returns the address of the supported core contract at index `_index`.
|
|
639
|
-
* @param _index Index of the core contract to be returned
|
|
689
|
+
* @param _index Index of the core contract to be returned, relative to the overall
|
|
690
|
+
* list of supported core contracts.
|
|
640
691
|
* @return address of the core contract.
|
|
641
692
|
*/
|
|
642
|
-
function
|
|
693
|
+
function getSupportedCoreContract(
|
|
643
694
|
uint256 _index
|
|
644
695
|
) external view returns (address) {
|
|
645
|
-
|
|
646
|
-
|
|
647
|
-
|
|
648
|
-
);
|
|
696
|
+
_onlyInRangeIndex({
|
|
697
|
+
_index: _index,
|
|
698
|
+
_length: _supportedCoreContracts.length()
|
|
699
|
+
});
|
|
649
700
|
return _supportedCoreContracts.at(_index);
|
|
650
701
|
}
|
|
651
702
|
|
|
703
|
+
/**
|
|
704
|
+
* @notice Returns whether the given contract address is a supported core contract.
|
|
705
|
+
* @param coreContractAddress Address of the core contract to be queried.
|
|
706
|
+
* @return True if the given contract address is a supported core contract.
|
|
707
|
+
*/
|
|
708
|
+
function isSupportedCoreContract(
|
|
709
|
+
address coreContractAddress
|
|
710
|
+
) external view returns (bool) {
|
|
711
|
+
return _supportedCoreContracts.contains(coreContractAddress);
|
|
712
|
+
}
|
|
713
|
+
|
|
652
714
|
/**
|
|
653
715
|
* @notice Returns a list of supported core contracts.
|
|
654
716
|
* @return List of supported core contracts.
|
|
@@ -674,32 +736,41 @@ contract DependencyRegistryV0 is
|
|
|
674
736
|
|
|
675
737
|
/**
|
|
676
738
|
* @notice Returns the additional CDN URL at index `_index` for dependency `_dependencyType`.
|
|
677
|
-
* @param _dependencyType
|
|
678
|
-
* @param _index
|
|
739
|
+
* @param _dependencyType Name of dependency type (i.e. "type@version") used to identify dependency.
|
|
740
|
+
* @param _index The index of an additional CDN, relative to the overall `additionalCDNCount`.
|
|
679
741
|
*/
|
|
680
|
-
function
|
|
742
|
+
function getDependencyAdditionalCDN(
|
|
681
743
|
bytes32 _dependencyType,
|
|
682
744
|
uint256 _index
|
|
683
745
|
) external view returns (string memory) {
|
|
684
|
-
|
|
746
|
+
Dependency storage dependency = dependencyDetails[_dependencyType];
|
|
747
|
+
_onlyInRangeIndex({
|
|
748
|
+
_index: _index,
|
|
749
|
+
_length: dependency.additionalCDNCount
|
|
750
|
+
});
|
|
751
|
+
return dependency.additionalCDNs[_index];
|
|
685
752
|
}
|
|
686
753
|
|
|
687
754
|
/**
|
|
688
755
|
* @notice Returns the additional repository URL at index `_index` for dependency `_dependencyType`.
|
|
689
|
-
* @param _dependencyType
|
|
690
|
-
* @param _index
|
|
756
|
+
* @param _dependencyType Name of dependency type (i.e. "type@version") used to identify dependency.
|
|
757
|
+
* @param _index The index of an additional repository, relative to the overall `additionalRepositoryCount`.
|
|
691
758
|
*/
|
|
692
|
-
function
|
|
759
|
+
function getDependencyAdditionalRepository(
|
|
693
760
|
bytes32 _dependencyType,
|
|
694
761
|
uint256 _index
|
|
695
762
|
) external view returns (string memory) {
|
|
696
|
-
|
|
697
|
-
|
|
763
|
+
Dependency storage dependency = dependencyDetails[_dependencyType];
|
|
764
|
+
_onlyInRangeIndex({
|
|
765
|
+
_index: _index,
|
|
766
|
+
_length: dependency.additionalRepositoryCount
|
|
767
|
+
});
|
|
768
|
+
return dependency.additionalRepositories[_index];
|
|
698
769
|
}
|
|
699
770
|
|
|
700
771
|
/**
|
|
701
772
|
* @notice Returns the count of scripts for dependency `_dependencyType`.
|
|
702
|
-
* @param _dependencyType
|
|
773
|
+
* @param _dependencyType Name of dependency type (i.e. "type@version") used to identify dependency.
|
|
703
774
|
*/
|
|
704
775
|
function getDependencyScriptCount(
|
|
705
776
|
bytes32 _dependencyType
|
|
@@ -709,32 +780,80 @@ contract DependencyRegistryV0 is
|
|
|
709
780
|
|
|
710
781
|
/**
|
|
711
782
|
* @notice Returns address with bytecode containing script for
|
|
712
|
-
*
|
|
783
|
+
* dependency `_dependencyTypes` at script index `_index`.
|
|
784
|
+
* @param _dependencyType Name of dependency type (i.e. "type@version") used to identify dependency.
|
|
785
|
+
* @param _index The index of a given script, relative to the overall `scriptCount`.
|
|
786
|
+
* @return The address of the bytecode storage for the script at the given index, if it can be determined.
|
|
713
787
|
*/
|
|
714
|
-
function
|
|
788
|
+
function getDependencyScriptBytecodeAddress(
|
|
715
789
|
bytes32 _dependencyType,
|
|
716
790
|
uint256 _index
|
|
717
791
|
) external view returns (address) {
|
|
792
|
+
Dependency storage dependency = dependencyDetails[_dependencyType];
|
|
793
|
+
_onlyInRangeIndex({_index: _index, _length: dependency.scriptCount});
|
|
794
|
+
return dependency.scriptBytecodeAddresses[_index];
|
|
795
|
+
}
|
|
796
|
+
|
|
797
|
+
/**
|
|
798
|
+
* @notice Returns the storage library version for
|
|
799
|
+
* dependency `_dependencyTypes` at script index `_index`.
|
|
800
|
+
* @param _dependencyType Name of dependency type (i.e. "type@version") used to identify dependency.
|
|
801
|
+
* @param _index The index of a given script, relative to the overall `scriptCount`.
|
|
802
|
+
* @return The storage library version for the script at the given index, if it can be determined.
|
|
803
|
+
* @dev Note that we only expect this to be determinable if the script was written using a version
|
|
804
|
+
* of the Art Blocks `BytecodeStorage` library, and in other cases the fallback will be the
|
|
805
|
+
* unknown version string, as defined by the `BytecodeStorage` UNKNOWN_VERSION_STRING – this
|
|
806
|
+
* is inclusive of the in the case of `SSTORE2` written data blobs, which are an unknown version
|
|
807
|
+
* that can be fallback-read optimistically.
|
|
808
|
+
*/
|
|
809
|
+
function getDependencyScriptBytecodeStorageVersion(
|
|
810
|
+
bytes32 _dependencyType,
|
|
811
|
+
uint256 _index
|
|
812
|
+
) external view returns (bytes32) {
|
|
813
|
+
Dependency storage dependency = dependencyDetails[_dependencyType];
|
|
814
|
+
_onlyInRangeIndex({_index: _index, _length: dependency.scriptCount});
|
|
718
815
|
return
|
|
719
|
-
|
|
816
|
+
BytecodeStorageReader.getLibraryVersionForBytecode(
|
|
817
|
+
dependencyDetails[_dependencyType].scriptBytecodeAddresses[
|
|
818
|
+
_index
|
|
819
|
+
]
|
|
820
|
+
);
|
|
720
821
|
}
|
|
721
822
|
|
|
722
823
|
/**
|
|
723
824
|
* @notice Returns script for dependency `_dependencyType` at script index `_index`.
|
|
724
|
-
* @param _dependencyType dependency to
|
|
725
|
-
* @param _index
|
|
726
|
-
|
|
727
|
-
|
|
825
|
+
* @param _dependencyType Name of dependency type (i.e. "type@version") used to identify dependency.
|
|
826
|
+
* @param _index The index of a given script, relative to the overall `scriptCount`.
|
|
827
|
+
* @return A string containing the script content at the given script chunk index for a given dependency.
|
|
828
|
+
* @dev This method attempts to introspectively determine which library version of
|
|
829
|
+
* `BytecodeStorage` was used to write the stored script string that is being
|
|
830
|
+
* read back, in order to use the proper read approach. If the version is
|
|
831
|
+
* non-determinate, a fall-back to reading using the assumption that the bytes
|
|
832
|
+
* were written with `SSTORE2` is used.
|
|
833
|
+
* Also note that in this `SSTORE2` fallback handling, the approach of casting bytes to string
|
|
834
|
+
* can cause failure (e.g. unexpected continuation byte).
|
|
835
|
+
*/
|
|
836
|
+
function getDependencyScript(
|
|
728
837
|
bytes32 _dependencyType,
|
|
729
838
|
uint256 _index
|
|
730
839
|
) external view returns (string memory) {
|
|
731
840
|
Dependency storage dependency = dependencyDetails[_dependencyType];
|
|
732
|
-
|
|
733
|
-
|
|
734
|
-
|
|
841
|
+
_onlyInRangeIndex({_index: _index, _length: dependency.scriptCount});
|
|
842
|
+
|
|
843
|
+
address scriptAddress = dependency.scriptBytecodeAddresses[_index];
|
|
844
|
+
bytes32 storageVersion = BytecodeStorageReader
|
|
845
|
+
.getLibraryVersionForBytecode(scriptAddress);
|
|
846
|
+
|
|
847
|
+
if (storageVersion == BytecodeStorageReader.UNKNOWN_VERSION_STRING) {
|
|
848
|
+
return
|
|
849
|
+
string(
|
|
850
|
+
BytecodeStorageReader.readBytesFromSSTORE2Bytecode(
|
|
851
|
+
scriptAddress
|
|
852
|
+
)
|
|
853
|
+
);
|
|
854
|
+
} else {
|
|
855
|
+
return BytecodeStorageReader.readFromBytecode(scriptAddress);
|
|
735
856
|
}
|
|
736
|
-
|
|
737
|
-
return _readFromBytecode(dependency.scriptBytecodeAddresses[_index]);
|
|
738
857
|
}
|
|
739
858
|
|
|
740
859
|
/**
|
|
@@ -745,7 +864,7 @@ contract DependencyRegistryV0 is
|
|
|
745
864
|
* an override set, this will revert.
|
|
746
865
|
* @param _contractAddress Core contract address.
|
|
747
866
|
* @param _projectId Project to return dependency type for.
|
|
748
|
-
* @return dependencyType
|
|
867
|
+
* @return dependencyType Identifier for the dependency (i.e. "type@version") used by project.
|
|
749
868
|
*/
|
|
750
869
|
function getDependencyTypeForProject(
|
|
751
870
|
address _contractAddress,
|
|
@@ -828,14 +947,4 @@ contract DependencyRegistryV0 is
|
|
|
828
947
|
OwnableUpgradeable._transferOwnership(newOwner);
|
|
829
948
|
adminACLContract = IAdminACLV0(newOwner);
|
|
830
949
|
}
|
|
831
|
-
|
|
832
|
-
/**
|
|
833
|
-
* Helper for calling `BytecodeStorageReader` external library reader method,
|
|
834
|
-
* added for bytecode size reduction purposes.
|
|
835
|
-
*/
|
|
836
|
-
function _readFromBytecode(
|
|
837
|
-
address _address
|
|
838
|
-
) internal view returns (string memory) {
|
|
839
|
-
return BytecodeStorageReader.readFromBytecode(_address);
|
|
840
|
-
}
|
|
841
950
|
}
|
|
@@ -3,17 +3,17 @@ pragma solidity 0.8.19;
|
|
|
3
3
|
|
|
4
4
|
// Created By: Art Blocks Inc.
|
|
5
5
|
|
|
6
|
-
import "./interfaces/
|
|
7
|
-
import "./interfaces/
|
|
8
|
-
import "./interfaces/
|
|
9
|
-
import "./interfaces/
|
|
10
|
-
import "./interfaces/
|
|
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 "./libs/
|
|
15
|
-
import "./libs/
|
|
16
|
-
import "./libs/
|
|
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.
|
|
@@ -186,7 +186,7 @@ contract GenArt721CoreV3 is
|
|
|
186
186
|
bool paused;
|
|
187
187
|
string name;
|
|
188
188
|
string artist;
|
|
189
|
-
|
|
189
|
+
address descriptionAddress;
|
|
190
190
|
string website;
|
|
191
191
|
string license;
|
|
192
192
|
string projectBaseURI;
|
|
@@ -241,7 +241,7 @@ contract GenArt721CoreV3 is
|
|
|
241
241
|
bool public newProjectsForbidden;
|
|
242
242
|
|
|
243
243
|
/// version & type of this core contract
|
|
244
|
-
string public constant coreVersion = "v3.2.
|
|
244
|
+
string public constant coreVersion = "v3.2.2";
|
|
245
245
|
string public constant coreType = "GenArt721CoreV3";
|
|
246
246
|
|
|
247
247
|
/// default base URI to initialize all new project projectBaseURI values to
|
|
@@ -944,6 +944,13 @@ contract GenArt721CoreV3 is
|
|
|
944
944
|
/**
|
|
945
945
|
* @notice Updates description of project `_projectId`.
|
|
946
946
|
* Only artist may call when unlocked, only admin may call when locked.
|
|
947
|
+
* Note: The BytecodeStorage library is used to store the description to
|
|
948
|
+
* reduce initial upload cost, however, even minor edits will require an
|
|
949
|
+
* expensive, entirely new bytecode storage contract to be deployed instead
|
|
950
|
+
* of relatively cheap updates to already-warm storage slots. This results
|
|
951
|
+
* in an increased gas cost for minor edits to the description after the
|
|
952
|
+
* initial upload, but an overall decrease in gas cost for projects with
|
|
953
|
+
* less than ~3-5 edits (depending on the length of the description).
|
|
947
954
|
* @param _projectId Project ID.
|
|
948
955
|
* @param _projectDescription New project description.
|
|
949
956
|
*/
|
|
@@ -963,7 +970,10 @@ contract GenArt721CoreV3 is
|
|
|
963
970
|
"Only artist when unlocked, owner when locked"
|
|
964
971
|
);
|
|
965
972
|
// effects
|
|
966
|
-
|
|
973
|
+
// store description in contract bytecode, replacing reference address from
|
|
974
|
+
// the old storage description with the newly created one
|
|
975
|
+
projects[_projectId].descriptionAddress = _projectDescription
|
|
976
|
+
.writeToBytecode();
|
|
967
977
|
emit ProjectUpdated(_projectId, FIELD_PROJECT_DESCRIPTION);
|
|
968
978
|
}
|
|
969
979
|
|
|
@@ -1354,7 +1364,12 @@ contract GenArt721CoreV3 is
|
|
|
1354
1364
|
Project storage project = projects[_projectId];
|
|
1355
1365
|
projectName = project.name;
|
|
1356
1366
|
artist = project.artist;
|
|
1357
|
-
|
|
1367
|
+
address projectDescriptionBytecodeAddress = project.descriptionAddress;
|
|
1368
|
+
if (projectDescriptionBytecodeAddress == address(0)) {
|
|
1369
|
+
description = "";
|
|
1370
|
+
} else {
|
|
1371
|
+
description = _readFromBytecode(projectDescriptionBytecodeAddress);
|
|
1372
|
+
}
|
|
1358
1373
|
website = project.website;
|
|
1359
1374
|
license = project.license;
|
|
1360
1375
|
}
|