@artblocks/contracts 1.0.2 → 1.0.4
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +56 -21
- package/artifacts/contracts/AdminACLV0.sol/AdminACLV0.json +2 -2
- package/artifacts/contracts/AdminACLV1.sol/AdminACLV1.json +2 -2
- package/artifacts/contracts/DependencyRegistryV0.sol/DependencyRegistryV0.json +141 -15
- package/artifacts/contracts/GenArt721CoreV3.sol/GenArt721CoreV3.json +42 -5
- package/artifacts/contracts/archive/minter-suite/Minters/MinterDAExp/MinterDAExpV0.sol/MinterDAExpV0.json +2 -2
- package/artifacts/contracts/archive/minter-suite/Minters/MinterDAExp/MinterDAExpV1.sol/MinterDAExpV1.json +2 -2
- package/artifacts/contracts/archive/minter-suite/Minters/MinterDAExp/MinterDAExpV2.sol/MinterDAExpV2.json +2 -2
- package/artifacts/contracts/archive/minter-suite/Minters/MinterDAExp/MinterDAExpV3.sol/MinterDAExpV3.json +2 -2
- package/artifacts/contracts/archive/minter-suite/Minters/MinterDAExpSettlement/MinterDAExpSettlementV0.sol/MinterDAExpSettlementV0.json +2 -2
- package/artifacts/contracts/archive/minter-suite/Minters/MinterDAExpSettlement/MinterDAExpSettlementV1.sol/MinterDAExpSettlementV1.json +2 -2
- package/artifacts/contracts/archive/minter-suite/Minters/MinterDALin/MinterDALinV0.sol/MinterDALinV0.json +2 -2
- package/artifacts/contracts/archive/minter-suite/Minters/MinterDALin/MinterDALinV1.sol/MinterDALinV1.json +2 -2
- package/artifacts/contracts/archive/minter-suite/Minters/MinterDALin/MinterDALinV2.sol/MinterDALinV2.json +2 -2
- package/artifacts/contracts/archive/minter-suite/Minters/MinterDALin/MinterDALinV3.sol/MinterDALinV3.json +2 -2
- package/artifacts/contracts/archive/minter-suite/Minters/MinterHolder/MinterHolderV0.sol/MinterHolderV0.json +2 -2
- package/artifacts/contracts/archive/minter-suite/Minters/MinterHolder/MinterHolderV1.sol/MinterHolderV1.json +2 -2
- package/artifacts/contracts/archive/minter-suite/Minters/MinterHolder/MinterHolderV2.sol/MinterHolderV2.json +2 -2
- package/artifacts/contracts/archive/minter-suite/Minters/MinterHolder/MinterHolderV3.sol/MinterHolderV3.json +2 -2
- package/artifacts/contracts/archive/minter-suite/Minters/MinterMerkle/MinterMerkleV0.sol/MinterMerkleV0.json +2 -2
- package/artifacts/contracts/archive/minter-suite/Minters/MinterMerkle/MinterMerkleV1.sol/MinterMerkleV1.json +2 -2
- package/artifacts/contracts/archive/minter-suite/Minters/MinterMerkle/MinterMerkleV2.sol/MinterMerkleV2.json +2 -2
- package/artifacts/contracts/archive/minter-suite/Minters/MinterMerkle/MinterMerkleV3.sol/MinterMerkleV3.json +2 -2
- package/artifacts/contracts/archive/minter-suite/Minters/MinterMerkle/MinterMerkleV4.sol/MinterMerkleV4.json +2 -2
- package/artifacts/contracts/archive/minter-suite/Minters/MinterSetPrice/MinterSetPriceV0.sol/MinterSetPriceV0.json +2 -2
- package/artifacts/contracts/archive/minter-suite/Minters/MinterSetPrice/MinterSetPriceV1.sol/MinterSetPriceV1.json +2 -2
- package/artifacts/contracts/archive/minter-suite/Minters/MinterSetPrice/MinterSetPriceV2.sol/MinterSetPriceV2.json +2 -2
- package/artifacts/contracts/archive/minter-suite/Minters/MinterSetPrice/MinterSetPriceV3.sol/MinterSetPriceV3.json +2 -2
- package/artifacts/contracts/archive/minter-suite/Minters/MinterSetPriceERC20/MinterSetPriceERC20V0.sol/MinterSetPriceERC20V0.json +2 -2
- package/artifacts/contracts/archive/minter-suite/Minters/MinterSetPriceERC20/MinterSetPriceERC20V1.sol/MinterSetPriceERC20V1.json +2 -2
- package/artifacts/contracts/archive/minter-suite/Minters/MinterSetPriceERC20/MinterSetPriceERC20V2.sol/MinterSetPriceERC20V2.json +2 -2
- package/artifacts/contracts/archive/minter-suite/Minters/MinterSetPriceERC20/MinterSetPriceERC20V3.sol/MinterSetPriceERC20V3.json +2 -2
- package/artifacts/contracts/engine/{GenArt721CoreV2_ENGINE_FLEX.sol → V2/GenArt721CoreV2_ENGINE_FLEX.sol}/GenArt721CoreV2_ENGINE_FLEX.json +3 -3
- package/artifacts/contracts/engine/{GenArt721CoreV2_PBAB.sol → V2/GenArt721CoreV2_PBAB.sol}/GenArt721CoreV2_PBAB.json +3 -3
- package/artifacts/contracts/engine/{GenArt721CoreV2_PRTNR.sol → V2/GenArt721CoreV2_PRTNR.sol}/GenArt721CoreV2_PRTNR.json +3 -3
- package/artifacts/contracts/engine/{GenArt721MinterBurner_PBAB.sol → V2/GenArt721MinterBurner_PBAB.sol}/GenArt721MinterBurner_PBAB.json +3 -3
- package/artifacts/contracts/engine/{GenArt721MinterDAExp_PBAB.sol → V2/GenArt721MinterDAExp_PBAB.sol}/GenArt721MinterDAExp_PBAB.json +3 -3
- package/artifacts/contracts/engine/{GenArt721Minter_PBAB.sol → V2/GenArt721Minter_PBAB.sol}/GenArt721Minter_PBAB.json +3 -3
- package/artifacts/contracts/engine/V3/GenArt721CoreV3_Engine.sol/GenArt721CoreV3_Engine.json +1960 -0
- package/artifacts/contracts/engine/V3/GenArt721CoreV3_Engine_Flex.sol/GenArt721CoreV3_Engine_Flex.json +2247 -0
- package/artifacts/contracts/engine/V3/forks/GenArt721CoreV3_Engine_Flex_PROOF.sol/GenArt721CoreV3_Engine_Flex_PROOF.json +2247 -0
- package/artifacts/contracts/engine/V3/forks/PROHIBITION/AdminACLV0_PROHIBITION.sol/AdminACLV0_PROHIBITION.json +401 -0
- package/artifacts/contracts/engine/V3/forks/PROHIBITION/GenArt721CoreV3_Engine_Flex_PROHIBITION.sol/GenArt721CoreV3_Engine_Flex_PROHIBITION.json +2281 -0
- package/artifacts/contracts/engine/V3/forks/PROHIBITION/interfaces/IAdminACLV0_PROHIBITION.sol/IAdminACLV0_PROHIBITION.json +359 -0
- package/artifacts/contracts/engine/V3/forks/PROHIBITION/interfaces/IGenArt721CoreContractV3_Engine_Flex_PROHIBITION.sol/IGenArt721CoreContractV3_Engine_Flex_PROHIBITION.json +1094 -0
- package/artifacts/contracts/engine-registry/CoreRegistryV1.sol/CoreRegistryV1.json +242 -0
- package/artifacts/contracts/engine-registry/EngineRegistryV0.sol/EngineRegistryV0.json +2 -2
- package/artifacts/contracts/explorations/GenArt721CoreV3_Explorations.sol/GenArt721CoreV3_Explorations.json +41 -4
- package/artifacts/contracts/interfaces/{0.5.x → v0.5.x}/IBonusContract.sol/IBonusContract.json +1 -1
- package/artifacts/contracts/interfaces/{0.5.x → v0.5.x}/IGenArt721CoreContractV1.sol/IGenArt721CoreContractV1.json +1 -1
- package/artifacts/contracts/interfaces/{0.5.x → v0.5.x}/IGenArt721CoreV2_PBAB.sol/IGenArt721CoreV2_PBAB.json +1 -1
- package/artifacts/contracts/interfaces/{0.5.x → v0.5.x}/IRandomizer.sol/IRandomizer.json +1 -1
- package/artifacts/contracts/interfaces/{0.8.x → v0.8.x}/IAdminACLV0.sol/IAdminACLV0.json +1 -1
- package/artifacts/contracts/interfaces/{0.8.x → v0.8.x}/IArtblocksRoyaltyOverride.sol/IArtblocksRoyaltyOverride.json +1 -1
- package/artifacts/contracts/interfaces/{0.8.x → v0.8.x}/IBonusContract.sol/IBonusContract.json +1 -1
- package/artifacts/contracts/interfaces/v0.8.x/IBytecodeStorageReader.sol/IBytecodeStorageReader.json +111 -0
- package/artifacts/contracts/interfaces/v0.8.x/ICoreRegistryV1.sol/ICoreRegistryV1.json +172 -0
- package/artifacts/contracts/interfaces/{0.8.x → v0.8.x}/IDelegationRegistry.sol/IDelegationRegistry.json +1 -1
- package/artifacts/contracts/interfaces/{0.8.x → v0.8.x}/IDependencyRegistryCompatibleV0.sol/IDependencyRegistryCompatibleV0.json +1 -1
- package/artifacts/contracts/interfaces/{0.8.x → v0.8.x}/IDependencyRegistryV0.sol/IDependencyRegistryV0.json +3 -3
- package/artifacts/contracts/interfaces/{0.8.x → v0.8.x}/IEngineRegistryV0.sol/IEngineRegistryV0.json +1 -1
- package/artifacts/contracts/interfaces/{0.8.x → v0.8.x}/IFilteredMinterDAExpSettlementV0.sol/IFilteredMinterDAExpSettlementV0.json +1 -1
- package/artifacts/contracts/interfaces/{0.8.x → v0.8.x}/IFilteredMinterDAExpSettlementV1.sol/IFilteredMinterDAExpSettlementV1.json +1 -1
- package/artifacts/contracts/interfaces/{0.8.x → v0.8.x}/IFilteredMinterDAExpSettlement_Mixin.sol/IFilteredMinterDAExpSettlement_Mixin.json +1 -1
- package/artifacts/contracts/interfaces/{0.8.x → v0.8.x}/IFilteredMinterDAExpV0.sol/IFilteredMinterDAExpV0.json +1 -1
- package/artifacts/contracts/interfaces/{0.8.x → v0.8.x}/IFilteredMinterDAExpV1.sol/IFilteredMinterDAExpV1.json +1 -1
- package/artifacts/contracts/interfaces/{0.8.x → v0.8.x}/IFilteredMinterDALinV0.sol/IFilteredMinterDALinV0.json +1 -1
- package/artifacts/contracts/interfaces/{0.8.x → v0.8.x}/IFilteredMinterDALinV1.sol/IFilteredMinterDALinV1.json +1 -1
- package/artifacts/contracts/interfaces/{0.8.x → v0.8.x}/IFilteredMinterHolderV0.sol/IFilteredMinterHolderV0.json +1 -1
- package/artifacts/contracts/interfaces/{0.8.x → v0.8.x}/IFilteredMinterHolderV1.sol/IFilteredMinterHolderV1.json +1 -1
- package/artifacts/contracts/interfaces/{0.8.x → v0.8.x}/IFilteredMinterHolderV2.sol/IFilteredMinterHolderV2.json +1 -1
- package/artifacts/contracts/interfaces/{0.8.x → v0.8.x}/IFilteredMinterMerkleV0.sol/IFilteredMinterMerkleV0.json +1 -1
- package/artifacts/contracts/interfaces/{0.8.x → v0.8.x}/IFilteredMinterMerkleV1.sol/IFilteredMinterMerkleV1.json +1 -1
- package/artifacts/contracts/interfaces/{0.8.x → v0.8.x}/IFilteredMinterMerkleV2.sol/IFilteredMinterMerkleV2.json +1 -1
- package/artifacts/contracts/interfaces/{0.8.x → v0.8.x}/IFilteredMinterSEAV0.sol/IFilteredMinterSEAV0.json +56 -54
- package/artifacts/contracts/interfaces/{0.8.x → v0.8.x}/IFilteredMinterV0.sol/IFilteredMinterV0.json +1 -1
- package/artifacts/contracts/interfaces/{0.8.x → v0.8.x}/IFilteredMinterV1.sol/IFilteredMinterV1.json +1 -1
- package/artifacts/contracts/interfaces/{0.8.x → v0.8.x}/IFilteredMinterV2.sol/IFilteredMinterV2.json +1 -1
- package/artifacts/contracts/interfaces/v0.8.x/IGenArt721CoreContractExposesHashSeed.sol/IGenArt721CoreContractExposesHashSeed.json +30 -0
- package/artifacts/contracts/interfaces/{0.8.x → v0.8.x}/IGenArt721CoreContractV1.sol/IGenArt721CoreContractV1.json +1 -1
- package/artifacts/contracts/interfaces/{0.8.x → v0.8.x}/IGenArt721CoreContractV3.sol/IGenArt721CoreContractV3.json +14 -1
- package/artifacts/contracts/interfaces/v0.8.x/IGenArt721CoreContractV3WithSharedRandomizer.sol/IGenArt721CoreContractV3WithSharedRandomizer.json +24 -0
- package/artifacts/contracts/interfaces/{0.8.x → v0.8.x}/IGenArt721CoreContractV3_Base.sol/IGenArt721CoreContractV3_Base.json +14 -1
- package/artifacts/contracts/interfaces/{0.8.x → v0.8.x}/IGenArt721CoreContractV3_Engine.sol/IGenArt721CoreContractV3_Engine.json +8 -14
- package/artifacts/contracts/interfaces/{0.8.x → v0.8.x}/IGenArt721CoreContractV3_Engine_Flex.sol/IGenArt721CoreContractV3_Engine_Flex.json +8 -14
- package/artifacts/contracts/interfaces/{0.8.x → v0.8.x}/IGenArt721CoreV2_PBAB.sol/IGenArt721CoreV2_PBAB.json +1 -1
- package/artifacts/contracts/interfaces/{0.8.x → v0.8.x}/IManifold.sol/IManifold.json +1 -1
- package/artifacts/contracts/interfaces/{0.8.x → v0.8.x}/IMinterBaseV0.sol/IMinterBaseV0.json +1 -1
- package/artifacts/contracts/interfaces/{0.8.x → v0.8.x}/IMinterFilterV0.sol/IMinterFilterV0.json +1 -1
- package/artifacts/contracts/interfaces/v0.8.x/IMinterFilterV1.sol/IMinterFilterV1.json +514 -0
- package/artifacts/contracts/interfaces/{0.8.x → v0.8.x}/IMintingAPICoreV0.sol/IMintingAPICoreV0.json +1 -1
- package/artifacts/contracts/interfaces/{0.8.x → v0.8.x}/IMintingAPIMinterV0.sol/IMintingAPIMinterV0.json +1 -1
- package/artifacts/contracts/interfaces/v0.8.x/IPseudorandomAtomic.sol/IPseudorandomAtomic.json +30 -0
- package/artifacts/contracts/interfaces/{0.8.x → v0.8.x}/IRandomizer.sol/IRandomizer.json +1 -1
- package/artifacts/contracts/interfaces/{0.8.x → v0.8.x}/IRandomizerPolyptychV0.sol/IRandomizerPolyptychV0.json +1 -1
- package/artifacts/contracts/interfaces/{0.8.x → v0.8.x}/IRandomizerV2.sol/IRandomizerV2.json +1 -1
- package/artifacts/contracts/interfaces/v0.8.x/IRandomizer_V3CoreBase.sol/IRandomizer_V3CoreBase.json +24 -0
- package/artifacts/contracts/interfaces/v0.8.x/ISharedMinterDAExpSettlementV0.sol/ISharedMinterDAExpSettlementV0.json +207 -0
- package/artifacts/contracts/interfaces/v0.8.x/ISharedMinterDAExpV0.sol/ISharedMinterDAExpV0.json +93 -0
- package/artifacts/contracts/interfaces/v0.8.x/ISharedMinterDALinV0.sol/ISharedMinterDALinV0.json +93 -0
- package/artifacts/contracts/interfaces/v0.8.x/ISharedMinterDAV0.sol/ISharedMinterDAV0.json +69 -0
- package/artifacts/contracts/interfaces/v0.8.x/ISharedMinterHolderV0.sol/ISharedMinterHolderV0.json +203 -0
- package/artifacts/contracts/interfaces/v0.8.x/ISharedMinterMerkleV0.sol/ISharedMinterMerkleV0.json +123 -0
- package/artifacts/contracts/interfaces/v0.8.x/ISharedMinterSEAV0.sol/ISharedMinterSEAV0.json +261 -0
- package/artifacts/contracts/interfaces/v0.8.x/ISharedMinterSimplePurchaseV0.sol/ISharedMinterSimplePurchaseV0.json +64 -0
- package/artifacts/contracts/interfaces/v0.8.x/ISharedMinterV0.sol/ISharedMinterV0.json +533 -0
- package/artifacts/contracts/interfaces/v0.8.x/ISharedRandomizerV0.sol/ISharedRandomizerV0.json +223 -0
- package/artifacts/contracts/interfaces/{0.8.x → v0.8.x}/IWETH.sol/IWETH.json +1 -1
- package/artifacts/contracts/legacy/GenArt721CoreV1.sol/Address.json +2 -2
- package/artifacts/contracts/legacy/GenArt721CoreV1.sol/Counters.json +2 -2
- package/artifacts/contracts/legacy/GenArt721CoreV1.sol/CustomERC721Metadata.json +2 -2
- package/artifacts/contracts/legacy/GenArt721CoreV1.sol/ERC721.json +2 -2
- package/artifacts/contracts/legacy/GenArt721CoreV1.sol/ERC721Enumerable.json +2 -2
- package/artifacts/contracts/legacy/GenArt721CoreV1.sol/GenArt721CoreV1.json +2 -2
- package/artifacts/contracts/legacy/GenArt721CoreV1.sol/SafeMath.json +2 -2
- package/artifacts/contracts/legacy/GenArt721CoreV1.sol/Strings.json +2 -2
- package/artifacts/contracts/legacy/GenArt721LegacyMinter.sol/GenArt721LegacyMinter.json +2 -2
- package/artifacts/contracts/libs/integration-refs/delegation-registry/DelegationRegistry.sol/DelegationRegistry.json +2 -2
- package/artifacts/contracts/libs/integration-refs/gnosis-safe/GnosisSafeMock.sol/GnosisSafeMock.json +2 -2
- package/artifacts/contracts/libs/integration-refs/gnosis-safe/GnosisSafeProxyFactoryMock.sol/GnosisSafeProxyFactoryMock.json +2 -2
- package/artifacts/contracts/libs/integration-refs/gnosis-safe/MultiSendMock.sol/MultiSendMock.json +2 -2
- package/artifacts/contracts/libs/integration-refs/weth9/weth9.sol/WETH9_.json +2 -2
- package/artifacts/contracts/libs/{0.5.x → v0.5.x}/CustomERC721Metadata.sol/CustomERC721Metadata.json +3 -3
- package/artifacts/contracts/libs/{0.5.x → v0.5.x}/IERC20.sol/IERC20.json +1 -1
- package/artifacts/contracts/libs/{0.5.x → v0.5.x}/SafeMath.sol/SafeMath.json +3 -3
- package/artifacts/contracts/libs/{0.5.x → v0.5.x}/Strings.sol/Strings.json +3 -3
- package/artifacts/contracts/libs/v0.8.x/ABHelpers.sol/ABHelpers.json +10 -0
- package/artifacts/contracts/libs/v0.8.x/AuthLib.sol/AuthLib.json +10 -0
- package/artifacts/contracts/libs/{0.8.x/BytecodeStorage.sol → v0.8.x/BytecodeStorageV0.sol}/BytecodeStorage.json +3 -3
- package/artifacts/contracts/libs/v0.8.x/BytecodeStorageV1.sol/BytecodeStorageReader.json +163 -0
- package/artifacts/contracts/libs/v0.8.x/BytecodeStorageV1.sol/BytecodeStorageWriter.json +10 -0
- package/artifacts/contracts/libs/{0.8.x → v0.8.x}/Bytes32Strings.sol/Bytes32Strings.json +3 -3
- package/artifacts/contracts/libs/{0.8.x → v0.8.x}/ERC721_PackedHashSeed.sol/ERC721_PackedHashSeed.json +3 -3
- package/artifacts/contracts/libs/v0.8.x/SSTORE2.sol/SSTORE2.json +10 -0
- package/artifacts/contracts/libs/v0.8.x/minter-libs/DAExpLib.sol/DAExpLib.json +10 -0
- package/artifacts/contracts/libs/v0.8.x/minter-libs/DALinLib.sol/DALinLib.json +10 -0
- package/artifacts/contracts/libs/v0.8.x/minter-libs/MaxInvocationsLib.sol/MaxInvocationsLib.json +10 -0
- package/artifacts/contracts/libs/v0.8.x/minter-libs/MerkleLib.sol/MerkleLib.json +10 -0
- package/artifacts/contracts/libs/v0.8.x/minter-libs/PolyptychLib.sol/PolyptychLib.json +10 -0
- package/artifacts/contracts/libs/v0.8.x/minter-libs/SEALib.sol/SEALib.json +10 -0
- package/artifacts/contracts/libs/v0.8.x/minter-libs/SetPriceLib.sol/SetPriceLib.json +10 -0
- package/artifacts/contracts/libs/v0.8.x/minter-libs/SettlementExpLib.sol/SettlementExpLib.json +10 -0
- package/artifacts/contracts/libs/v0.8.x/minter-libs/SplitFundsLib.sol/SplitFundsLib.json +10 -0
- package/artifacts/contracts/libs/v0.8.x/minter-libs/TokenHolderLib.sol/TokenHolderLib.json +10 -0
- package/artifacts/contracts/minter-suite/MinterFilter/MinterFilterV0.sol/MinterFilterV0.json +2 -2
- package/artifacts/contracts/minter-suite/MinterFilter/MinterFilterV1.sol/MinterFilterV1.json +2 -2
- package/artifacts/contracts/minter-suite/MinterFilter/MinterFilterV2.sol/MinterFilterV2.json +748 -0
- package/artifacts/contracts/minter-suite/Minters/MinterDAExpHolderV5.sol/MinterDAExpHolderV5.json +1228 -0
- package/artifacts/contracts/minter-suite/Minters/MinterDAExpSettlementV2.sol/MinterDAExpSettlementV2.json +2 -2
- package/artifacts/contracts/minter-suite/Minters/MinterDAExpSettlementV3.sol/MinterDAExpSettlementV3.json +1146 -0
- package/artifacts/contracts/minter-suite/Minters/MinterDAExpV4.sol/MinterDAExpV4.json +2 -2
- package/artifacts/contracts/minter-suite/Minters/MinterDAExpV5.sol/MinterDAExpV5.json +909 -0
- package/artifacts/contracts/minter-suite/Minters/MinterDALinHolderV5.sol/MinterDALinHolderV5.json +1228 -0
- package/artifacts/contracts/minter-suite/Minters/MinterDALinV4.sol/MinterDALinV4.json +2 -2
- package/artifacts/contracts/minter-suite/Minters/MinterDALinV5.sol/MinterDALinV5.json +909 -0
- package/artifacts/contracts/minter-suite/Minters/MinterHolderV4.sol/MinterHolderV4.json +2 -2
- package/artifacts/contracts/minter-suite/Minters/MinterMerkleV5.sol/MinterMerkleV5.json +2 -2
- package/artifacts/contracts/minter-suite/Minters/MinterPolyptychV0.sol/IGenArt721CoreContractV3WithRandomizer.json +10 -160
- package/artifacts/contracts/minter-suite/Minters/MinterPolyptychV0.sol/MinterPolyptychV0.json +2 -2
- package/artifacts/contracts/minter-suite/Minters/MinterSEAV0.sol/MinterSEAV0.json +59 -80
- package/artifacts/contracts/minter-suite/Minters/MinterSEAV1.sol/MinterSEAV1.json +1325 -0
- package/artifacts/contracts/minter-suite/Minters/MinterSetPriceERC20V4.sol/MinterSetPriceERC20V4.json +2 -2
- package/artifacts/contracts/minter-suite/Minters/MinterSetPriceERC20V5.sol/MinterSetPriceERC20V5.json +848 -0
- package/artifacts/contracts/minter-suite/Minters/MinterSetPriceHolderV5.sol/MinterSetPriceHolderV5.json +1091 -0
- package/artifacts/contracts/minter-suite/Minters/MinterSetPriceMerkleV5.sol/MinterSetPriceMerkleV5.json +1075 -0
- package/artifacts/contracts/minter-suite/Minters/MinterSetPricePolyptychERC20V5.sol/MinterSetPricePolyptychERC20V5.json +1243 -0
- package/artifacts/contracts/minter-suite/Minters/MinterSetPricePolyptychV5.sol/MinterSetPricePolyptychV5.json +1167 -0
- package/artifacts/contracts/minter-suite/Minters/MinterSetPriceV4.sol/MinterSetPriceV4.json +2 -2
- package/artifacts/contracts/minter-suite/Minters/MinterSetPriceV5.sol/MinterSetPriceV5.json +772 -0
- package/artifacts/contracts/mock/{BytecodeTextCR_DMock.sol/BytecodeTextCR_DMock.json → BytecodeV0TextCR_DMock.sol/BytecodeV0TextCR_DMock.json} +4 -4
- package/artifacts/contracts/mock/BytecodeV1LibCallsMock.sol/BytecodeV1LibCallsMock.json +135 -0
- package/artifacts/contracts/mock/BytecodeV1TextCR_DMock.sol/BytecodeV1TextCR_DMock.json +301 -0
- package/artifacts/contracts/mock/DeadReceiverBidderMock.sol/DeadReceiverBidderMock.json +25 -2
- package/artifacts/contracts/mock/DeadReceiverMock.sol/DeadReceiverMock.json +2 -2
- package/artifacts/contracts/mock/DummySharedMinter.sol/DummySharedMinter.json +114 -0
- package/artifacts/contracts/mock/ERC20Mock.sol/ERC20Mock.json +28 -2
- package/artifacts/contracts/mock/GasLimitReceiverBidderMock.sol/GasLimitReceiverBidderMock.json +2 -2
- package/artifacts/contracts/mock/GasLimitReceiverMock.sol/GasLimitReceiverMock.json +2 -2
- package/artifacts/contracts/mock/GenArt721CoreV3_Engine_IncorrectCoreType.sol/GenArt721CoreV3_Engine_IncorrectCoreType.json +22 -4
- package/artifacts/contracts/mock/MockAdminACLV0.sol/MockAdminACLV0Events.json +2 -2
- package/artifacts/contracts/mock/MockAdminACLV0_PROHIBITION.sol/MockAdminACLV0Events_PROHIBITION.json +440 -0
- package/artifacts/contracts/mock/OriginRegisterMock.sol/OriginRegisterMock.json +39 -0
- package/artifacts/contracts/mock/RandomizerV2_NoAssignMock.sol/RandomizerV2_NoAssignMock.json +2 -2
- package/artifacts/contracts/mock/ReentrancyHolderMock.sol/ReentrancyHolderMock.json +2 -2
- package/artifacts/contracts/mock/ReentrancyMerkleMock.sol/ReentrancyMerkleMock.json +2 -2
- package/artifacts/contracts/mock/ReentrancyMock.sol/ReentrancyMock.json +2 -2
- package/artifacts/contracts/mock/ReentrancySEAMock.sol/ReentrancySEAAutoBidderMock.json +2 -2
- package/artifacts/contracts/mock/SSTORE2Mock.sol/SSTORE2Mock.json +118 -0
- package/artifacts/contracts/randomizer/{BasicRandomizer.sol → deprecated/BasicRandomizer.sol}/BasicRandomizer.json +3 -3
- package/artifacts/contracts/randomizer/{BasicRandomizerBase_v0_0_0.sol → deprecated/BasicRandomizerBase_v0_0_0.sol}/RandomizerBase.json +1 -1
- package/artifacts/contracts/randomizer/{PolyptychRandomizerV0.sol → deprecated/PolyptychRandomizerV0.sol}/BasicPolyptychRandomizerV0.json +3 -3
- package/artifacts/contracts/randomizer/{RandomizerV2.sol → deprecated/RandomizerV2.sol}/BasicRandomizerV2.json +3 -3
- package/artifacts/contracts/randomizer/primitive/PseudorandomAtomicBasic.sol/PseudorandomAtomic.json +30 -0
- package/artifacts/contracts/randomizer/shared/SharedRandomizerV0.sol/SharedRandomizerV0.json +247 -0
- package/artifacts/contracts/royalty-registry/GenArt721RoyaltyOverride.sol/GenArt721RoyaltyOverride.json +2 -2
- package/artifacts/contracts/royalty-registry/GenArt721RoyaltyOverride_PBAB.sol/GenArt721RoyaltyOverride_PBAB.json +2 -2
- package/contracts/AdminACLV0.sol +2 -2
- package/contracts/AdminACLV1.sol +2 -2
- package/contracts/DependencyRegistryV0.sol +219 -123
- package/contracts/GenArt721CoreV3.sol +60 -42
- package/contracts/archive/minter-suite/Minters/MinterDAExp/MinterDAExpV0.sol +3 -3
- package/contracts/archive/minter-suite/Minters/MinterDAExp/MinterDAExpV1.sol +3 -3
- package/contracts/archive/minter-suite/Minters/MinterDAExp/MinterDAExpV2.sol +4 -4
- package/contracts/archive/minter-suite/Minters/MinterDAExp/MinterDAExpV3.sol +4 -4
- package/contracts/archive/minter-suite/Minters/MinterDAExpSettlement/MinterDAExpSettlementV0.sol +4 -4
- package/contracts/archive/minter-suite/Minters/MinterDAExpSettlement/MinterDAExpSettlementV1.sol +4 -4
- package/contracts/archive/minter-suite/Minters/MinterDALin/MinterDALinV0.sol +3 -3
- package/contracts/archive/minter-suite/Minters/MinterDALin/MinterDALinV1.sol +3 -3
- package/contracts/archive/minter-suite/Minters/MinterDALin/MinterDALinV2.sol +4 -4
- package/contracts/archive/minter-suite/Minters/MinterDALin/MinterDALinV3.sol +4 -4
- package/contracts/archive/minter-suite/Minters/MinterHolder/MinterHolderV0.sol +3 -3
- package/contracts/archive/minter-suite/Minters/MinterHolder/MinterHolderV1.sol +4 -4
- package/contracts/archive/minter-suite/Minters/MinterHolder/MinterHolderV2.sol +5 -5
- package/contracts/archive/minter-suite/Minters/MinterHolder/MinterHolderV3.sol +5 -5
- package/contracts/archive/minter-suite/Minters/MinterMerkle/MinterMerkleV0.sol +3 -3
- package/contracts/archive/minter-suite/Minters/MinterMerkle/MinterMerkleV1.sol +4 -4
- package/contracts/archive/minter-suite/Minters/MinterMerkle/MinterMerkleV2.sol +5 -5
- package/contracts/archive/minter-suite/Minters/MinterMerkle/MinterMerkleV3.sol +5 -5
- package/contracts/archive/minter-suite/Minters/MinterMerkle/MinterMerkleV4.sol +5 -5
- package/contracts/archive/minter-suite/Minters/MinterSetPrice/MinterSetPriceV0.sol +3 -3
- package/contracts/archive/minter-suite/Minters/MinterSetPrice/MinterSetPriceV1.sol +3 -3
- package/contracts/archive/minter-suite/Minters/MinterSetPrice/MinterSetPriceV2.sol +4 -4
- package/contracts/archive/minter-suite/Minters/MinterSetPrice/MinterSetPriceV3.sol +4 -4
- package/contracts/archive/minter-suite/Minters/MinterSetPriceERC20/MinterSetPriceERC20V0.sol +3 -3
- package/contracts/archive/minter-suite/Minters/MinterSetPriceERC20/MinterSetPriceERC20V1.sol +3 -3
- package/contracts/archive/minter-suite/Minters/MinterSetPriceERC20/MinterSetPriceERC20V2.sol +4 -4
- package/contracts/archive/minter-suite/Minters/MinterSetPriceERC20/MinterSetPriceERC20V3.sol +4 -4
- package/contracts/engine/{GenArt721CoreV2_ENGINE_FLEX.sol → V2/GenArt721CoreV2_ENGINE_FLEX.sol} +2 -2
- package/contracts/engine/{GenArt721CoreV2_PBAB.sol → V2/GenArt721CoreV2_PBAB.sol} +2 -2
- package/contracts/engine/{GenArt721CoreV2_PRTNR.sol → V2/GenArt721CoreV2_PRTNR.sol} +3 -3
- package/contracts/engine/{GenArt721MinterBurner_PBAB.sol → V2/GenArt721MinterBurner_PBAB.sol} +2 -2
- package/contracts/engine/{GenArt721MinterDAExp_PBAB.sol → V2/GenArt721MinterDAExp_PBAB.sol} +2 -2
- package/contracts/engine/{GenArt721Minter_PBAB.sol → V2/GenArt721Minter_PBAB.sol} +2 -2
- package/contracts/{GenArt721CoreV3_Engine.sol → engine/V3/GenArt721CoreV3_Engine.sol} +48 -24
- package/contracts/engine/V3/GenArt721CoreV3_Engine_Flex.sol +2298 -0
- package/contracts/{GenArt721CoreV3_Engine_Flex.sol → engine/V3/forks/GenArt721CoreV3_Engine_Flex_PROOF.sol} +50 -31
- package/contracts/engine/V3/forks/PROHIBITION/AdminACLV0_PROHIBITION.sol +281 -0
- package/contracts/engine/V3/forks/PROHIBITION/GenArt721CoreV3_Engine_Flex_PROHIBITION.sol +2359 -0
- package/contracts/engine/V3/forks/PROHIBITION/interfaces/IAdminACLV0_PROHIBITION.sol +123 -0
- package/contracts/engine/V3/forks/PROHIBITION/interfaces/IGenArt721CoreContractV3_Engine_Flex_PROHIBITION.sol +29 -0
- package/contracts/engine-registry/CoreRegistryV1.sol +254 -0
- package/contracts/engine-registry/EngineRegistryV0.sol +2 -2
- package/contracts/explorations/GenArt721CoreV3_Explorations.sol +58 -40
- package/contracts/interfaces/v0.8.x/IBytecodeStorageReader.sol +62 -0
- package/contracts/interfaces/v0.8.x/ICoreRegistryV1.sol +27 -0
- package/contracts/interfaces/{0.8.x → v0.8.x}/IDelegationRegistry.sol +1 -1
- package/contracts/interfaces/{0.8.x → v0.8.x}/IDependencyRegistryCompatibleV0.sol +1 -1
- package/contracts/interfaces/{0.8.x → v0.8.x}/IDependencyRegistryV0.sol +3 -3
- package/contracts/interfaces/{0.8.x → v0.8.x}/IEngineRegistryV0.sol +1 -1
- package/contracts/interfaces/{0.8.x → v0.8.x}/IFilteredMinterSEAV0.sol +34 -15
- package/contracts/interfaces/v0.8.x/IGenArt721CoreContractExposesHashSeed.sol +11 -0
- package/contracts/interfaces/v0.8.x/IGenArt721CoreContractV3WithSharedRandomizer.sol +23 -0
- package/contracts/interfaces/{0.8.x → v0.8.x}/IGenArt721CoreContractV3_Base.sol +3 -0
- package/contracts/interfaces/{0.8.x → v0.8.x}/IGenArt721CoreContractV3_Engine.sol +0 -5
- package/contracts/interfaces/v0.8.x/IMinterFilterV1.sol +184 -0
- package/contracts/interfaces/v0.8.x/IPseudorandomAtomic.sol +16 -0
- package/contracts/interfaces/{0.8.x → v0.8.x}/IRandomizerPolyptychV0.sol +1 -1
- package/contracts/interfaces/{0.8.x → v0.8.x}/IRandomizerV2.sol +2 -5
- package/contracts/interfaces/v0.8.x/IRandomizer_V3CoreBase.sol +23 -0
- package/contracts/interfaces/v0.8.x/ISharedMinterDAExpSettlementV0.sol +37 -0
- package/contracts/interfaces/v0.8.x/ISharedMinterDAExpV0.sol +25 -0
- package/contracts/interfaces/v0.8.x/ISharedMinterDALinV0.sol +26 -0
- package/contracts/interfaces/v0.8.x/ISharedMinterDAV0.sol +19 -0
- package/contracts/interfaces/v0.8.x/ISharedMinterHolderV0.sol +69 -0
- package/contracts/interfaces/v0.8.x/ISharedMinterMerkleV0.sol +44 -0
- package/contracts/interfaces/v0.8.x/ISharedMinterSEAV0.sol +78 -0
- package/contracts/interfaces/v0.8.x/ISharedMinterSimplePurchaseV0.sol +28 -0
- package/contracts/interfaces/v0.8.x/ISharedMinterV0.sol +191 -0
- package/contracts/interfaces/v0.8.x/ISharedRandomizerV0.sol +123 -0
- package/contracts/legacy/GenArt721CoreV1.sol +2 -2
- package/contracts/legacy/GenArt721LegacyMinter.sol +5 -5
- package/contracts/libs/integration-refs/delegation-registry/DelegationRegistry.sol +2 -2
- package/contracts/libs/integration-refs/weth9/weth9.sol +2 -0
- package/contracts/libs/v0.8.x/ABHelpers.sol +55 -0
- package/contracts/libs/v0.8.x/AuthLib.sol +197 -0
- package/contracts/libs/v0.8.x/BytecodeStorageV1.sol +399 -0
- package/contracts/libs/v0.8.x/SSTORE2.sol +109 -0
- package/contracts/libs/v0.8.x/minter-libs/DAExpLib.sol +125 -0
- package/contracts/libs/v0.8.x/minter-libs/DALinLib.sol +109 -0
- package/contracts/libs/v0.8.x/minter-libs/MaxInvocationsLib.sol +348 -0
- package/contracts/libs/v0.8.x/minter-libs/MerkleLib.sol +175 -0
- package/contracts/libs/v0.8.x/minter-libs/PolyptychLib.sol +160 -0
- package/contracts/libs/v0.8.x/minter-libs/SEALib.sol +320 -0
- package/contracts/libs/v0.8.x/minter-libs/SetPriceLib.sol +44 -0
- package/contracts/libs/v0.8.x/minter-libs/SettlementExpLib.sol +390 -0
- package/contracts/libs/v0.8.x/minter-libs/SplitFundsLib.sol +583 -0
- package/contracts/libs/v0.8.x/minter-libs/TokenHolderLib.sol +153 -0
- package/contracts/minter-suite/MinterFilter/MinterFilterV0.sol +3 -3
- package/contracts/minter-suite/MinterFilter/MinterFilterV1.sol +6 -6
- package/contracts/minter-suite/MinterFilter/MinterFilterV2.sol +830 -0
- package/contracts/minter-suite/Minters/MinterBase_v0_1_1.sol +4 -4
- package/contracts/minter-suite/Minters/MinterDAExpHolderV5.sol +966 -0
- package/contracts/minter-suite/Minters/MinterDAExpSettlementV2.sol +4 -4
- package/contracts/minter-suite/Minters/MinterDAExpSettlementV3.sol +1126 -0
- package/contracts/minter-suite/Minters/MinterDAExpV4.sol +4 -4
- package/contracts/minter-suite/Minters/MinterDAExpV5.sol +606 -0
- package/contracts/minter-suite/Minters/MinterDALinHolderV5.sol +952 -0
- package/contracts/minter-suite/Minters/MinterDALinV4.sol +4 -4
- package/contracts/minter-suite/Minters/MinterDALinV5.sol +591 -0
- package/contracts/minter-suite/Minters/MinterHolderV4.sol +5 -5
- package/contracts/minter-suite/Minters/MinterMerkleV5.sol +5 -5
- package/contracts/minter-suite/Minters/MinterPolyptychV0.sol +18 -17
- package/contracts/minter-suite/Minters/MinterSEAV0.sol +235 -186
- package/contracts/minter-suite/Minters/MinterSEAV1.sol +1190 -0
- package/contracts/minter-suite/Minters/MinterSetPriceERC20V4.sol +6 -6
- package/contracts/minter-suite/Minters/MinterSetPriceERC20V5.sol +570 -0
- package/contracts/minter-suite/Minters/MinterSetPriceHolderV5.sol +821 -0
- package/contracts/minter-suite/Minters/MinterSetPriceMerkleV5.sol +802 -0
- package/contracts/minter-suite/Minters/MinterSetPricePolyptychERC20V5.sol +1096 -0
- package/contracts/minter-suite/Minters/MinterSetPricePolyptychV5.sol +992 -0
- package/contracts/minter-suite/Minters/MinterSetPriceV4.sol +4 -4
- package/contracts/minter-suite/Minters/MinterSetPriceV5.sol +461 -0
- package/contracts/mock/{BytecodeTextCR_DMock.sol → BytecodeV0TextCR_DMock.sol} +5 -5
- package/contracts/mock/BytecodeV1LibCallsMock.sol +114 -0
- package/contracts/mock/BytecodeV1TextCR_DMock.sol +233 -0
- package/contracts/mock/DeadReceiverBidderMock.sol +16 -1
- package/contracts/mock/DeadReceiverMock.sol +1 -1
- package/contracts/mock/DummySharedMinter.sol +75 -0
- package/contracts/mock/ERC20Mock.sol +16 -0
- package/contracts/mock/GasLimitReceiverBidderMock.sol +1 -1
- package/contracts/mock/GasLimitReceiverMock.sol +1 -1
- package/contracts/mock/GenArt721CoreV3_Engine_IncorrectCoreType.sol +22 -35
- package/contracts/mock/MockAdminACLV0.sol +2 -2
- package/contracts/mock/MockAdminACLV0_PROHIBITION.sol +207 -0
- package/contracts/mock/OriginRegisterMock.sol +27 -0
- package/contracts/mock/RandomizerV2_NoAssignMock.sol +2 -2
- package/contracts/mock/ReentrancyHolderMock.sol +1 -1
- package/contracts/mock/ReentrancyMerkleMock.sol +1 -1
- package/contracts/mock/ReentrancyMock.sol +1 -1
- package/contracts/mock/ReentrancySEAMock.sol +1 -1
- package/contracts/mock/SSTORE2Mock.sol +93 -0
- package/contracts/randomizer/{BasicRandomizer.sol → deprecated/BasicRandomizer.sol} +1 -1
- package/contracts/randomizer/{BasicRandomizerBase_v0_0_0.sol → deprecated/BasicRandomizerBase_v0_0_0.sol} +1 -1
- package/contracts/randomizer/{PolyptychRandomizerV0.sol → deprecated/PolyptychRandomizerV0.sol} +3 -3
- package/contracts/randomizer/{RandomizerV2.sol → deprecated/RandomizerV2.sol} +3 -3
- package/contracts/randomizer/primitive/PseudorandomAtomicBasic.sol +30 -0
- package/contracts/randomizer/shared/SharedRandomizerV0.sol +260 -0
- package/contracts/royalty-registry/GenArt721RoyaltyOverride.sol +2 -2
- package/contracts/royalty-registry/GenArt721RoyaltyOverride_PBAB.sol +2 -2
- package/package.json +51 -43
- package/.env.example +0 -17
- package/LICENSE +0 -165
- package/artifacts/contracts/GenArt721CoreV3_Engine.sol/GenArt721CoreV3_Engine.json +0 -1942
- package/artifacts/contracts/GenArt721CoreV3_Engine_Flex.sol/GenArt721CoreV3_Engine_Flex.json +0 -2229
- package/artifacts/contracts/engine-registry/future/EngineRegistryV1.sol/EngineRegistryV1.json +0 -109
- package/contracts/engine-registry/future/EngineRegistryV1.sol +0 -86
- /package/contracts/interfaces/{0.5.x → v0.5.x}/IBonusContract.sol +0 -0
- /package/contracts/interfaces/{0.5.x → v0.5.x}/IGenArt721CoreContractV1.sol +0 -0
- /package/contracts/interfaces/{0.5.x → v0.5.x}/IGenArt721CoreV2_PBAB.sol +0 -0
- /package/contracts/interfaces/{0.5.x → v0.5.x}/IRandomizer.sol +0 -0
- /package/contracts/interfaces/{0.8.x → v0.8.x}/IAdminACLV0.sol +0 -0
- /package/contracts/interfaces/{0.8.x → v0.8.x}/IArtblocksRoyaltyOverride.sol +0 -0
- /package/contracts/interfaces/{0.8.x → v0.8.x}/IBonusContract.sol +0 -0
- /package/contracts/interfaces/{0.8.x → v0.8.x}/IFilteredMinterDAExpSettlementV0.sol +0 -0
- /package/contracts/interfaces/{0.8.x → v0.8.x}/IFilteredMinterDAExpSettlementV1.sol +0 -0
- /package/contracts/interfaces/{0.8.x → v0.8.x}/IFilteredMinterDAExpSettlement_Mixin.sol +0 -0
- /package/contracts/interfaces/{0.8.x → v0.8.x}/IFilteredMinterDAExpV0.sol +0 -0
- /package/contracts/interfaces/{0.8.x → v0.8.x}/IFilteredMinterDAExpV1.sol +0 -0
- /package/contracts/interfaces/{0.8.x → v0.8.x}/IFilteredMinterDALinV0.sol +0 -0
- /package/contracts/interfaces/{0.8.x → v0.8.x}/IFilteredMinterDALinV1.sol +0 -0
- /package/contracts/interfaces/{0.8.x → v0.8.x}/IFilteredMinterHolderV0.sol +0 -0
- /package/contracts/interfaces/{0.8.x → v0.8.x}/IFilteredMinterHolderV1.sol +0 -0
- /package/contracts/interfaces/{0.8.x → v0.8.x}/IFilteredMinterHolderV2.sol +0 -0
- /package/contracts/interfaces/{0.8.x → v0.8.x}/IFilteredMinterMerkleV0.sol +0 -0
- /package/contracts/interfaces/{0.8.x → v0.8.x}/IFilteredMinterMerkleV1.sol +0 -0
- /package/contracts/interfaces/{0.8.x → v0.8.x}/IFilteredMinterMerkleV2.sol +0 -0
- /package/contracts/interfaces/{0.8.x → v0.8.x}/IFilteredMinterV0.sol +0 -0
- /package/contracts/interfaces/{0.8.x → v0.8.x}/IFilteredMinterV1.sol +0 -0
- /package/contracts/interfaces/{0.8.x → v0.8.x}/IFilteredMinterV2.sol +0 -0
- /package/contracts/interfaces/{0.8.x → v0.8.x}/IGenArt721CoreContractV1.sol +0 -0
- /package/contracts/interfaces/{0.8.x → v0.8.x}/IGenArt721CoreContractV3.sol +0 -0
- /package/contracts/interfaces/{0.8.x → v0.8.x}/IGenArt721CoreContractV3_Engine_Flex.sol +0 -0
- /package/contracts/interfaces/{0.8.x → v0.8.x}/IGenArt721CoreV2_PBAB.sol +0 -0
- /package/contracts/interfaces/{0.8.x → v0.8.x}/IManifold.sol +0 -0
- /package/contracts/interfaces/{0.8.x → v0.8.x}/IMinterBaseV0.sol +0 -0
- /package/contracts/interfaces/{0.8.x → v0.8.x}/IMinterFilterV0.sol +0 -0
- /package/contracts/interfaces/{0.8.x → v0.8.x}/IMintingAPICoreV0.sol +0 -0
- /package/contracts/interfaces/{0.8.x → v0.8.x}/IMintingAPIMinterV0.sol +0 -0
- /package/contracts/interfaces/{0.8.x → v0.8.x}/IRandomizer.sol +0 -0
- /package/contracts/interfaces/{0.8.x → v0.8.x}/IWETH.sol +0 -0
- /package/contracts/libs/{0.5.x → v0.5.x}/CustomERC721Metadata.sol +0 -0
- /package/contracts/libs/{0.5.x → v0.5.x}/IERC20.sol +0 -0
- /package/contracts/libs/{0.5.x → v0.5.x}/SafeMath.sol +0 -0
- /package/contracts/libs/{0.5.x → v0.5.x}/Strings.sol +0 -0
- /package/contracts/libs/{0.8.x/BytecodeStorage.sol → v0.8.x/BytecodeStorageV0.sol} +0 -0
- /package/contracts/libs/{0.8.x → v0.8.x}/Bytes32Strings.sol +0 -0
- /package/contracts/libs/{0.8.x → v0.8.x}/ERC721_PackedHashSeed.sol +0 -0
|
@@ -1,11 +1,11 @@
|
|
|
1
1
|
// SPDX-License-Identifier: LGPL-3.0-only
|
|
2
|
-
pragma solidity 0.8.
|
|
2
|
+
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.
|
|
@@ -33,8 +33,7 @@ contract DependencyRegistryV0 is
|
|
|
33
33
|
OwnableUpgradeable,
|
|
34
34
|
IDependencyRegistryV0
|
|
35
35
|
{
|
|
36
|
-
using
|
|
37
|
-
using BytecodeStorage for address;
|
|
36
|
+
using BytecodeStorageWriter for string;
|
|
38
37
|
using Bytes32Strings for bytes32;
|
|
39
38
|
using Strings for uint256;
|
|
40
39
|
using EnumerableSet for EnumerableSet.Bytes32Set;
|
|
@@ -48,8 +47,10 @@ contract DependencyRegistryV0 is
|
|
|
48
47
|
|
|
49
48
|
struct Dependency {
|
|
50
49
|
string preferredCDN;
|
|
50
|
+
// mapping from additional CDN index to CDN URLr
|
|
51
51
|
mapping(uint256 => string) additionalCDNs;
|
|
52
52
|
string preferredRepository;
|
|
53
|
+
// mapping from additional repository index to repository URL
|
|
53
54
|
mapping(uint256 => string) additionalRepositories;
|
|
54
55
|
string referenceWebsite;
|
|
55
56
|
// mapping from script index to address storing script in bytecode
|
|
@@ -98,6 +99,10 @@ contract DependencyRegistryV0 is
|
|
|
98
99
|
);
|
|
99
100
|
}
|
|
100
101
|
|
|
102
|
+
function _onlyInRangeIndex(uint256 _index, uint256 _length) internal pure {
|
|
103
|
+
require(_index < _length, "Index out of range");
|
|
104
|
+
}
|
|
105
|
+
|
|
101
106
|
/**
|
|
102
107
|
* @notice Initializes contract.
|
|
103
108
|
* @param _adminACLContract Address of admin access control contract, to be
|
|
@@ -135,10 +140,10 @@ contract DependencyRegistryV0 is
|
|
|
135
140
|
);
|
|
136
141
|
|
|
137
142
|
_dependencyTypes.add(_dependencyType);
|
|
138
|
-
Dependency storage
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
|
|
143
|
+
Dependency storage dependency = dependencyDetails[_dependencyType];
|
|
144
|
+
dependency.preferredCDN = _preferredCDN;
|
|
145
|
+
dependency.preferredRepository = _preferredRepository;
|
|
146
|
+
dependency.referenceWebsite = _referenceWebsite;
|
|
142
147
|
|
|
143
148
|
emit DependencyAdded(
|
|
144
149
|
_dependencyType,
|
|
@@ -150,7 +155,7 @@ contract DependencyRegistryV0 is
|
|
|
150
155
|
|
|
151
156
|
/**
|
|
152
157
|
* @notice Removes a dependency.
|
|
153
|
-
* @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.
|
|
154
159
|
*/
|
|
155
160
|
function removeDependency(bytes32 _dependencyType) external {
|
|
156
161
|
_onlyAdminACL(this.removeDependency.selector);
|
|
@@ -170,10 +175,11 @@ contract DependencyRegistryV0 is
|
|
|
170
175
|
}
|
|
171
176
|
|
|
172
177
|
/**
|
|
173
|
-
* @notice Adds a script to dependency `_dependencyType
|
|
174
|
-
*
|
|
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.
|
|
175
181
|
* @param _script Script to be added. Required to be a non-empty string,
|
|
176
|
-
*
|
|
182
|
+
* but no further validation is performed.
|
|
177
183
|
*/
|
|
178
184
|
function addDependencyScript(
|
|
179
185
|
bytes32 _dependencyType,
|
|
@@ -192,65 +198,87 @@ contract DependencyRegistryV0 is
|
|
|
192
198
|
}
|
|
193
199
|
|
|
194
200
|
/**
|
|
195
|
-
* @notice Updates script for dependencyType `_dependencyType` at script
|
|
196
|
-
*
|
|
197
|
-
* @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`.
|
|
198
205
|
* @param _script The updated script value. Required to be a non-empty
|
|
199
|
-
*
|
|
206
|
+
* string, but no further validation is performed.
|
|
200
207
|
*/
|
|
201
208
|
function updateDependencyScript(
|
|
202
209
|
bytes32 _dependencyType,
|
|
203
|
-
uint256
|
|
210
|
+
uint256 _index,
|
|
204
211
|
string memory _script
|
|
205
212
|
) external {
|
|
206
213
|
_onlyAdminACL(this.updateDependencyScript.selector);
|
|
207
214
|
_onlyNonEmptyString(_script);
|
|
208
215
|
_onlyExistingDependencyType(_dependencyType);
|
|
209
|
-
Dependency storage
|
|
210
|
-
|
|
211
|
-
_scriptId < dependencyType.scriptCount,
|
|
212
|
-
"scriptId out of range"
|
|
213
|
-
);
|
|
214
|
-
// purge old contract bytecode contract from the blockchain state
|
|
215
|
-
// note: Although this does reduce usage of Ethereum state, it does not
|
|
216
|
-
// reduce the gas costs of removal transactions. We believe this is the
|
|
217
|
-
// best behavior at the time of writing, and do not expect this to
|
|
218
|
-
// result in any breaking changes in the future. All current proposals
|
|
219
|
-
// to change the self-destruct opcode are backwards compatible, but may
|
|
220
|
-
// result in not removing the bytecode from the blockchain state. This
|
|
221
|
-
// implementation is compatible with that architecture, as it does not
|
|
222
|
-
// rely on the bytecode being removed from the blockchain state.
|
|
223
|
-
dependencyType.scriptBytecodeAddresses[_scriptId].purgeBytecode();
|
|
216
|
+
Dependency storage dependency = dependencyDetails[_dependencyType];
|
|
217
|
+
_onlyInRangeIndex({_index: _index, _length: dependency.scriptCount});
|
|
224
218
|
// store script in contract bytecode, replacing reference address from
|
|
225
219
|
// the contract that no longer exists with the newly created one
|
|
226
|
-
|
|
227
|
-
|
|
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;
|
|
228
268
|
|
|
229
269
|
emit DependencyScriptUpdated(_dependencyType);
|
|
230
270
|
}
|
|
231
271
|
|
|
232
272
|
/**
|
|
233
273
|
* @notice Removes last script from dependency `_dependencyType`.
|
|
234
|
-
* @param _dependencyType dependency to
|
|
274
|
+
* @param _dependencyType Name of dependency type (i.e. "type@version") used to identify dependency.
|
|
235
275
|
*/
|
|
236
276
|
function removeDependencyLastScript(bytes32 _dependencyType) external {
|
|
237
277
|
_onlyAdminACL(this.removeDependencyLastScript.selector);
|
|
238
278
|
_onlyExistingDependencyType(_dependencyType);
|
|
239
279
|
Dependency storage dependency = dependencyDetails[_dependencyType];
|
|
240
280
|
require(dependency.scriptCount > 0, "there are no scripts to remove");
|
|
241
|
-
//
|
|
242
|
-
// note: Although this does reduce usage of Ethereum state, it does not
|
|
243
|
-
// reduce the gas costs of removal transactions. We believe this is the
|
|
244
|
-
// best behavior at the time of writing, and do not expect this to
|
|
245
|
-
// result in any breaking changes in the future. All current proposals
|
|
246
|
-
// to change the self-destruct opcode are backwards compatible, but may
|
|
247
|
-
// result in not removing the bytecode from the blockchain state. This
|
|
248
|
-
// implementation is compatible with that architecture, as it does not
|
|
249
|
-
// rely on the bytecode being removed from the blockchain state.
|
|
250
|
-
dependency
|
|
251
|
-
.scriptBytecodeAddresses[dependency.scriptCount - 1]
|
|
252
|
-
.purgeBytecode();
|
|
253
|
-
// delete reference to contract address that no longer exists
|
|
281
|
+
// delete reference to old storage contract address
|
|
254
282
|
delete dependency.scriptBytecodeAddresses[dependency.scriptCount - 1];
|
|
255
283
|
unchecked {
|
|
256
284
|
dependency.scriptCount = dependency.scriptCount - 1;
|
|
@@ -261,7 +289,7 @@ contract DependencyRegistryV0 is
|
|
|
261
289
|
|
|
262
290
|
/**
|
|
263
291
|
* @notice Updates preferred CDN for dependency `_dependencyType`.
|
|
264
|
-
* @param _dependencyType dependency to
|
|
292
|
+
* @param _dependencyType Name of dependency type (i.e. "type@version") used to identify dependency.
|
|
265
293
|
* @param _preferredCDN URL for preferred CDN.
|
|
266
294
|
*/
|
|
267
295
|
function updateDependencyPreferredCDN(
|
|
@@ -277,7 +305,7 @@ contract DependencyRegistryV0 is
|
|
|
277
305
|
|
|
278
306
|
/**
|
|
279
307
|
* @notice Updates preferred repository for dependency `_dependencyType`.
|
|
280
|
-
* @param _dependencyType dependency to
|
|
308
|
+
* @param _dependencyType Name of dependency type (i.e. "type@version") used to identify dependency.
|
|
281
309
|
* @param _preferredRepository URL for preferred repository.
|
|
282
310
|
*/
|
|
283
311
|
function updateDependencyPreferredRepository(
|
|
@@ -297,7 +325,7 @@ contract DependencyRegistryV0 is
|
|
|
297
325
|
|
|
298
326
|
/**
|
|
299
327
|
* @notice Updates project website for dependency `_dependencyType`.
|
|
300
|
-
* @param _dependencyType dependency to
|
|
328
|
+
* @param _dependencyType Name of dependency type (i.e. "type@version") used to identify dependency.
|
|
301
329
|
* @param _referenceWebsite URL for project website.
|
|
302
330
|
*/
|
|
303
331
|
function updateDependencyReferenceWebsite(
|
|
@@ -316,9 +344,9 @@ contract DependencyRegistryV0 is
|
|
|
316
344
|
|
|
317
345
|
/**
|
|
318
346
|
* @notice Adds a new CDN url to `_dependencyType`.
|
|
319
|
-
* @param _dependencyType dependency to
|
|
347
|
+
* @param _dependencyType Name of dependency type (i.e. "type@version") used to identify dependency.
|
|
320
348
|
* @param _additionalCDN CDN URL to be added. Required to be a non-empty string,
|
|
321
|
-
*
|
|
349
|
+
* but no further validation is performed.
|
|
322
350
|
*/
|
|
323
351
|
function addDependencyAdditionalCDN(
|
|
324
352
|
bytes32 _dependencyType,
|
|
@@ -344,19 +372,19 @@ contract DependencyRegistryV0 is
|
|
|
344
372
|
* @notice Removes additional CDN for dependency `_dependencyId` at index `_index`.
|
|
345
373
|
* Removal is done by swapping the element to be removed with the last element in the array, then deleting this last element.
|
|
346
374
|
* Assets with indices higher than `_index` can have their indices adjusted as a result of this operation.
|
|
347
|
-
* @param _dependencyType dependency to
|
|
348
|
-
* @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`.
|
|
349
377
|
*/
|
|
350
|
-
function
|
|
378
|
+
function removeDependencyAdditionalCDN(
|
|
351
379
|
bytes32 _dependencyType,
|
|
352
380
|
uint256 _index
|
|
353
381
|
) external {
|
|
354
|
-
_onlyAdminACL(this.
|
|
382
|
+
_onlyAdminACL(this.removeDependencyAdditionalCDN.selector);
|
|
355
383
|
_onlyExistingDependencyType(_dependencyType);
|
|
356
384
|
Dependency storage dependency = dependencyDetails[_dependencyType];
|
|
357
385
|
|
|
358
386
|
uint256 additionalCDNCount = dependency.additionalCDNCount;
|
|
359
|
-
|
|
387
|
+
_onlyInRangeIndex({_index: _index, _length: additionalCDNCount});
|
|
360
388
|
|
|
361
389
|
uint256 lastElementIndex = additionalCDNCount - 1;
|
|
362
390
|
|
|
@@ -372,21 +400,23 @@ contract DependencyRegistryV0 is
|
|
|
372
400
|
|
|
373
401
|
/**
|
|
374
402
|
* @notice Updates additional CDN for dependency `_dependencyType` at `_index`.
|
|
375
|
-
* @param _dependencyType dependency to
|
|
376
|
-
* @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`.
|
|
377
405
|
* @param _additionalCDN New CDN URL.
|
|
378
406
|
*/
|
|
379
|
-
function
|
|
407
|
+
function updateDependencyAdditionalCDN(
|
|
380
408
|
bytes32 _dependencyType,
|
|
381
409
|
uint256 _index,
|
|
382
410
|
string memory _additionalCDN
|
|
383
411
|
) external {
|
|
384
|
-
_onlyAdminACL(this.
|
|
412
|
+
_onlyAdminACL(this.updateDependencyAdditionalCDN.selector);
|
|
385
413
|
_onlyNonEmptyString(_additionalCDN);
|
|
386
414
|
_onlyExistingDependencyType(_dependencyType);
|
|
387
415
|
Dependency storage dependency = dependencyDetails[_dependencyType];
|
|
388
|
-
|
|
389
|
-
|
|
416
|
+
_onlyInRangeIndex({
|
|
417
|
+
_index: _index,
|
|
418
|
+
_length: dependency.additionalCDNCount
|
|
419
|
+
});
|
|
390
420
|
|
|
391
421
|
dependency.additionalCDNs[_index] = _additionalCDN;
|
|
392
422
|
|
|
@@ -399,7 +429,7 @@ contract DependencyRegistryV0 is
|
|
|
399
429
|
|
|
400
430
|
/**
|
|
401
431
|
* @notice Adds a new repository URL to dependency `_dependencyType`.
|
|
402
|
-
* @param _dependencyType dependency to
|
|
432
|
+
* @param _dependencyType Name of dependency type (i.e. "type@version") used to identify dependency.
|
|
403
433
|
* @param _additionalRepository Repository URL to be added. Required to be a non-empty string,
|
|
404
434
|
* but no further validation is performed.
|
|
405
435
|
*/
|
|
@@ -432,22 +462,19 @@ contract DependencyRegistryV0 is
|
|
|
432
462
|
* @notice Removes additional repository for depenency `_dependencyId` at index `_index`.
|
|
433
463
|
* Removal is done by swapping the element to be removed with the last element in the array, then deleting this last element.
|
|
434
464
|
* Assets with indices higher than `_index` can have their indices adjusted as a result of this operation.
|
|
435
|
-
* @param _dependencyType dependency to
|
|
436
|
-
* @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`.
|
|
437
467
|
*/
|
|
438
|
-
function
|
|
468
|
+
function removeDependencyAdditionalRepository(
|
|
439
469
|
bytes32 _dependencyType,
|
|
440
470
|
uint256 _index
|
|
441
471
|
) external {
|
|
442
|
-
_onlyAdminACL(
|
|
443
|
-
this.removeDependencyAdditionalRepositoryAtIndex.selector
|
|
444
|
-
);
|
|
472
|
+
_onlyAdminACL(this.removeDependencyAdditionalRepository.selector);
|
|
445
473
|
_onlyExistingDependencyType(_dependencyType);
|
|
446
474
|
Dependency storage dependency = dependencyDetails[_dependencyType];
|
|
447
|
-
uint256 additionalRepositoryCount =
|
|
448
|
-
|
|
449
|
-
);
|
|
450
|
-
require(_index < additionalRepositoryCount, "Asset index out of range");
|
|
475
|
+
uint256 additionalRepositoryCount = dependency
|
|
476
|
+
.additionalRepositoryCount;
|
|
477
|
+
_onlyInRangeIndex({_index: _index, _length: additionalRepositoryCount});
|
|
451
478
|
|
|
452
479
|
uint256 lastElementIndex = additionalRepositoryCount - 1;
|
|
453
480
|
|
|
@@ -463,23 +490,23 @@ contract DependencyRegistryV0 is
|
|
|
463
490
|
|
|
464
491
|
/**
|
|
465
492
|
* @notice Updates additional repository for dependency `_dependencyType` at `_index`.
|
|
466
|
-
* @param _dependencyType dependency to
|
|
467
|
-
* @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`.
|
|
468
495
|
* @param _additionalRepository New Repository URL.
|
|
469
496
|
*/
|
|
470
|
-
function
|
|
497
|
+
function updateDependencyAdditionalRepository(
|
|
471
498
|
bytes32 _dependencyType,
|
|
472
499
|
uint256 _index,
|
|
473
500
|
string memory _additionalRepository
|
|
474
501
|
) external {
|
|
475
|
-
_onlyAdminACL(
|
|
476
|
-
this.updateDependencyAdditionalRepositoryAtIndex.selector
|
|
477
|
-
);
|
|
502
|
+
_onlyAdminACL(this.updateDependencyAdditionalRepository.selector);
|
|
478
503
|
_onlyNonEmptyString(_additionalRepository);
|
|
479
504
|
_onlyExistingDependencyType(_dependencyType);
|
|
480
505
|
Dependency storage dependency = dependencyDetails[_dependencyType];
|
|
481
|
-
|
|
482
|
-
|
|
506
|
+
_onlyInRangeIndex({
|
|
507
|
+
_index: _index,
|
|
508
|
+
_length: dependency.additionalRepositoryCount
|
|
509
|
+
});
|
|
483
510
|
|
|
484
511
|
dependency.additionalRepositories[_index] = _additionalRepository;
|
|
485
512
|
|
|
@@ -526,7 +553,7 @@ contract DependencyRegistryV0 is
|
|
|
526
553
|
* type (`_dependencyType`).
|
|
527
554
|
* @param _contractAddress Core contract address.
|
|
528
555
|
* @param _projectId Project to override script type and version for.
|
|
529
|
-
* @param _dependencyType
|
|
556
|
+
* @param _dependencyType Name of dependency type (i.e. "type@version") used to identify dependency.
|
|
530
557
|
*/
|
|
531
558
|
function addProjectDependencyTypeOverride(
|
|
532
559
|
address _contractAddress,
|
|
@@ -597,20 +624,20 @@ contract DependencyRegistryV0 is
|
|
|
597
624
|
|
|
598
625
|
/**
|
|
599
626
|
* @notice Returns registered depenedency type at index `_index`.
|
|
600
|
-
* @return Registered dependency at `_index
|
|
627
|
+
* @return Registered dependency at `_index`, relative to the overall length of the dependency type set.
|
|
601
628
|
*/
|
|
602
|
-
function
|
|
629
|
+
function getDependencyType(
|
|
603
630
|
uint256 _index
|
|
604
631
|
) external view returns (string memory) {
|
|
605
|
-
|
|
632
|
+
_onlyInRangeIndex({_index: _index, _length: _dependencyTypes.length()});
|
|
606
633
|
return _dependencyTypes.at(_index).toString();
|
|
607
634
|
}
|
|
608
635
|
|
|
609
636
|
/**
|
|
610
|
-
* @notice Returns details for depedency type `_dependencyType`.
|
|
611
|
-
* @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.
|
|
612
639
|
* @return typeAndVersion String representation of `_dependencyType`.
|
|
613
|
-
*
|
|
640
|
+
* (e.g. "p5js(atSymbol)1.0.0")
|
|
614
641
|
* @return preferredCDN Preferred CDN URL for dependency
|
|
615
642
|
* @return additionalCDNCount Count of additional CDN URLs for dependency
|
|
616
643
|
* @return preferredRepository Preferred repository URL for dependency
|
|
@@ -659,19 +686,31 @@ contract DependencyRegistryV0 is
|
|
|
659
686
|
|
|
660
687
|
/**
|
|
661
688
|
* @notice Returns the address of the supported core contract at index `_index`.
|
|
662
|
-
* @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.
|
|
663
691
|
* @return address of the core contract.
|
|
664
692
|
*/
|
|
665
|
-
function
|
|
693
|
+
function getSupportedCoreContract(
|
|
666
694
|
uint256 _index
|
|
667
695
|
) external view returns (address) {
|
|
668
|
-
|
|
669
|
-
|
|
670
|
-
|
|
671
|
-
);
|
|
696
|
+
_onlyInRangeIndex({
|
|
697
|
+
_index: _index,
|
|
698
|
+
_length: _supportedCoreContracts.length()
|
|
699
|
+
});
|
|
672
700
|
return _supportedCoreContracts.at(_index);
|
|
673
701
|
}
|
|
674
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
|
+
|
|
675
714
|
/**
|
|
676
715
|
* @notice Returns a list of supported core contracts.
|
|
677
716
|
* @return List of supported core contracts.
|
|
@@ -697,32 +736,41 @@ contract DependencyRegistryV0 is
|
|
|
697
736
|
|
|
698
737
|
/**
|
|
699
738
|
* @notice Returns the additional CDN URL at index `_index` for dependency `_dependencyType`.
|
|
700
|
-
* @param _dependencyType
|
|
701
|
-
* @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`.
|
|
702
741
|
*/
|
|
703
|
-
function
|
|
742
|
+
function getDependencyAdditionalCDN(
|
|
704
743
|
bytes32 _dependencyType,
|
|
705
744
|
uint256 _index
|
|
706
745
|
) external view returns (string memory) {
|
|
707
|
-
|
|
746
|
+
Dependency storage dependency = dependencyDetails[_dependencyType];
|
|
747
|
+
_onlyInRangeIndex({
|
|
748
|
+
_index: _index,
|
|
749
|
+
_length: dependency.additionalCDNCount
|
|
750
|
+
});
|
|
751
|
+
return dependency.additionalCDNs[_index];
|
|
708
752
|
}
|
|
709
753
|
|
|
710
754
|
/**
|
|
711
755
|
* @notice Returns the additional repository URL at index `_index` for dependency `_dependencyType`.
|
|
712
|
-
* @param _dependencyType
|
|
713
|
-
* @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`.
|
|
714
758
|
*/
|
|
715
|
-
function
|
|
759
|
+
function getDependencyAdditionalRepository(
|
|
716
760
|
bytes32 _dependencyType,
|
|
717
761
|
uint256 _index
|
|
718
762
|
) external view returns (string memory) {
|
|
719
|
-
|
|
720
|
-
|
|
763
|
+
Dependency storage dependency = dependencyDetails[_dependencyType];
|
|
764
|
+
_onlyInRangeIndex({
|
|
765
|
+
_index: _index,
|
|
766
|
+
_length: dependency.additionalRepositoryCount
|
|
767
|
+
});
|
|
768
|
+
return dependency.additionalRepositories[_index];
|
|
721
769
|
}
|
|
722
770
|
|
|
723
771
|
/**
|
|
724
772
|
* @notice Returns the count of scripts for dependency `_dependencyType`.
|
|
725
|
-
* @param _dependencyType
|
|
773
|
+
* @param _dependencyType Name of dependency type (i.e. "type@version") used to identify dependency.
|
|
726
774
|
*/
|
|
727
775
|
function getDependencyScriptCount(
|
|
728
776
|
bytes32 _dependencyType
|
|
@@ -732,32 +780,80 @@ contract DependencyRegistryV0 is
|
|
|
732
780
|
|
|
733
781
|
/**
|
|
734
782
|
* @notice Returns address with bytecode containing script for
|
|
735
|
-
*
|
|
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.
|
|
736
787
|
*/
|
|
737
|
-
function
|
|
788
|
+
function getDependencyScriptBytecodeAddress(
|
|
738
789
|
bytes32 _dependencyType,
|
|
739
790
|
uint256 _index
|
|
740
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});
|
|
741
815
|
return
|
|
742
|
-
|
|
816
|
+
BytecodeStorageReader.getLibraryVersionForBytecode(
|
|
817
|
+
dependencyDetails[_dependencyType].scriptBytecodeAddresses[
|
|
818
|
+
_index
|
|
819
|
+
]
|
|
820
|
+
);
|
|
743
821
|
}
|
|
744
822
|
|
|
745
823
|
/**
|
|
746
824
|
* @notice Returns script for dependency `_dependencyType` at script index `_index`.
|
|
747
|
-
* @param _dependencyType dependency to
|
|
748
|
-
* @param _index
|
|
749
|
-
|
|
750
|
-
|
|
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(
|
|
751
837
|
bytes32 _dependencyType,
|
|
752
838
|
uint256 _index
|
|
753
839
|
) external view returns (string memory) {
|
|
754
840
|
Dependency storage dependency = dependencyDetails[_dependencyType];
|
|
755
|
-
|
|
756
|
-
|
|
757
|
-
|
|
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);
|
|
758
856
|
}
|
|
759
|
-
|
|
760
|
-
return dependency.scriptBytecodeAddresses[_index].readFromBytecode();
|
|
761
857
|
}
|
|
762
858
|
|
|
763
859
|
/**
|
|
@@ -768,7 +864,7 @@ contract DependencyRegistryV0 is
|
|
|
768
864
|
* an override set, this will revert.
|
|
769
865
|
* @param _contractAddress Core contract address.
|
|
770
866
|
* @param _projectId Project to return dependency type for.
|
|
771
|
-
* @return dependencyType
|
|
867
|
+
* @return dependencyType Identifier for the dependency (i.e. "type@version") used by project.
|
|
772
868
|
*/
|
|
773
869
|
function getDependencyTypeForProject(
|
|
774
870
|
address _contractAddress,
|