@artblocks/contracts 1.0.1 → 1.0.3
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 +67 -154
- 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 +22 -4
- package/artifacts/contracts/GenArt721CoreV3.sol/GenArt721CoreV3.json +42 -5
- 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/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/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/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/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/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.8.x/IBytecodeStorageReader.sol/IBytecodeStorageReader.json +111 -0
- package/artifacts/contracts/interfaces/0.8.x/ICoreRegistryV1.sol/ICoreRegistryV1.json +172 -0
- package/artifacts/contracts/interfaces/0.8.x/IFilteredMinterSEAV0.sol/IFilteredMinterSEAV0.json +1034 -0
- package/artifacts/contracts/interfaces/0.8.x/IGenArt721CoreContractExposesHashSeed.sol/IGenArt721CoreContractExposesHashSeed.json +30 -0
- package/artifacts/contracts/interfaces/0.8.x/IGenArt721CoreContractV3.sol/IGenArt721CoreContractV3.json +162 -0
- package/artifacts/contracts/interfaces/0.8.x/IGenArt721CoreContractV3_Base.sol/IGenArt721CoreContractV3_Base.json +162 -0
- package/artifacts/contracts/interfaces/0.8.x/IGenArt721CoreContractV3_Engine.sol/IGenArt721CoreContractV3_Engine.json +137 -13
- package/artifacts/contracts/interfaces/0.8.x/IGenArt721CoreContractV3_Engine_Flex.sol/IGenArt721CoreContractV3_Engine_Flex.json +1060 -0
- package/artifacts/contracts/interfaces/0.8.x/IMinterFilterV1.sol/IMinterFilterV1.json +429 -0
- package/artifacts/contracts/interfaces/0.8.x/IPseudorandomAtomic.sol/IPseudorandomAtomic.json +30 -0
- package/artifacts/contracts/interfaces/0.8.x/IRandomizer_V3CoreBase.sol/IRandomizer_V3CoreBase.json +24 -0
- package/artifacts/contracts/interfaces/0.8.x/ISharedRandomizerV0.sol/ISharedRandomizerV0.json +207 -0
- package/artifacts/contracts/interfaces/0.8.x/IWETH.sol/IWETH.json +55 -0
- package/artifacts/contracts/libs/0.8.x/{BytecodeStorage.sol → BytecodeStorageV0.sol}/BytecodeStorage.json +3 -3
- package/artifacts/contracts/libs/0.8.x/BytecodeStorageV1.sol/BytecodeStorageReader.json +163 -0
- package/artifacts/contracts/libs/0.8.x/BytecodeStorageV1.sol/BytecodeStorageWriter.json +10 -0
- package/artifacts/contracts/libs/0.8.x/Bytes32Strings.sol/Bytes32Strings.json +2 -2
- package/artifacts/contracts/libs/0.8.x/ERC721_PackedHashSeed.sol/ERC721_PackedHashSeed.json +2 -2
- package/artifacts/contracts/libs/0.8.x/SSTORE2.sol/SSTORE2.json +10 -0
- package/artifacts/contracts/libs/integration-refs/delegation-registry/DelegationRegistry.sol/DelegationRegistry.json +2 -2
- package/artifacts/contracts/libs/integration-refs/gnosis-safe/GnosisSafeMock.sol/GnosisSafeMock.json +2 -2
- package/artifacts/contracts/libs/integration-refs/gnosis-safe/GnosisSafeProxyFactoryMock.sol/GnosisSafeProxyFactoryMock.json +2 -2
- package/artifacts/contracts/libs/integration-refs/gnosis-safe/MultiSendMock.sol/MultiSendMock.json +2 -2
- package/artifacts/contracts/libs/integration-refs/weth9/weth9.sol/WETH9_.json +295 -0
- package/artifacts/contracts/minter-suite/MinterFilter/MinterFilterV1.sol/MinterFilterV1.json +2 -2
- package/artifacts/contracts/minter-suite/MinterFilter/MinterFilterV2.sol/MinterFilterV2.json +692 -0
- package/artifacts/contracts/minter-suite/Minters/MinterDAExpSettlementV2.sol/MinterDAExpSettlementV2.json +2 -2
- package/artifacts/contracts/minter-suite/Minters/MinterDAExpV4.sol/MinterDAExpV4.json +2 -2
- package/artifacts/contracts/minter-suite/Minters/MinterDALinV4.sol/MinterDALinV4.json +2 -2
- 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 +104 -124
- package/artifacts/contracts/minter-suite/Minters/MinterPolyptychV0.sol/MinterPolyptychV0.json +2 -2
- package/artifacts/contracts/minter-suite/Minters/MinterSEAV0.sol/MinterSEAV0.json +1289 -0
- package/artifacts/contracts/minter-suite/Minters/MinterSetPriceERC20V4.sol/MinterSetPriceERC20V4.json +2 -2
- package/artifacts/contracts/minter-suite/Minters/MinterSetPriceV4.sol/MinterSetPriceV4.json +2 -2
- 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 +33 -0
- 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 +2 -2
- package/artifacts/contracts/mock/GasLimitReceiverBidderMock.sol/GasLimitReceiverBidderMock.json +46 -0
- package/artifacts/contracts/mock/GasLimitReceiverMock.sol/GasLimitReceiverMock.json +28 -0
- 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 +51 -0
- package/artifacts/contracts/mock/SSTORE2Mock.sol/SSTORE2Mock.json +118 -0
- package/artifacts/contracts/{BasicRandomizer.sol → randomizer/deprecated/BasicRandomizer.sol}/BasicRandomizer.json +3 -3
- package/artifacts/contracts/randomizer/deprecated/BasicRandomizerBase_v0_0_0.sol/RandomizerBase.json +10 -0
- package/artifacts/contracts/randomizer/deprecated/PolyptychRandomizerV0.sol/BasicPolyptychRandomizerV0.json +229 -0
- package/artifacts/contracts/randomizer/deprecated/RandomizerV2.sol/BasicRandomizerV2.json +102 -0
- package/artifacts/contracts/randomizer/primitive/PseudorandomAtomicBasic.sol/PseudorandomAtomic.json +30 -0
- package/artifacts/contracts/randomizer/shared/SharedRandomizerV0.sol/SharedRandomizerV0.json +231 -0
- package/artifacts/contracts/royalty-registry/GenArt721RoyaltyOverride.sol/GenArt721RoyaltyOverride.json +2 -2
- package/contracts/AdminACLV0.sol +1 -1
- package/contracts/AdminACLV1.sol +1 -1
- package/contracts/DependencyRegistryV0.sol +89 -141
- package/contracts/GenArt721CoreV3.sol +160 -204
- package/contracts/archive/minter-suite/Minters/MinterDAExp/MinterDAExpV2.sol +1 -1
- package/contracts/archive/minter-suite/Minters/MinterDAExp/MinterDAExpV3.sol +1 -1
- package/contracts/archive/minter-suite/Minters/MinterDAExpSettlement/MinterDAExpSettlementV0.sol +1 -1
- package/contracts/archive/minter-suite/Minters/MinterDAExpSettlement/MinterDAExpSettlementV1.sol +1 -1
- package/contracts/archive/minter-suite/Minters/MinterDALin/MinterDALinV2.sol +1 -1
- package/contracts/archive/minter-suite/Minters/MinterDALin/MinterDALinV3.sol +1 -1
- package/contracts/archive/minter-suite/Minters/MinterHolder/MinterHolderV1.sol +1 -1
- package/contracts/archive/minter-suite/Minters/MinterHolder/MinterHolderV2.sol +1 -1
- package/contracts/archive/minter-suite/Minters/MinterHolder/MinterHolderV3.sol +1 -1
- package/contracts/archive/minter-suite/Minters/MinterMerkle/MinterMerkleV1.sol +1 -1
- package/contracts/archive/minter-suite/Minters/MinterMerkle/MinterMerkleV2.sol +1 -1
- package/contracts/archive/minter-suite/Minters/MinterMerkle/MinterMerkleV3.sol +1 -1
- package/contracts/archive/minter-suite/Minters/MinterMerkle/MinterMerkleV4.sol +1 -1
- package/contracts/archive/minter-suite/Minters/MinterSetPrice/MinterSetPriceV2.sol +1 -1
- package/contracts/archive/minter-suite/Minters/MinterSetPrice/MinterSetPriceV3.sol +1 -1
- package/contracts/archive/minter-suite/Minters/MinterSetPriceERC20/MinterSetPriceERC20V2.sol +1 -1
- package/contracts/archive/minter-suite/Minters/MinterSetPriceERC20/MinterSetPriceERC20V3.sol +1 -1
- 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} +163 -216
- package/contracts/engine/V3/GenArt721CoreV3_Engine_Flex.sol +2283 -0
- package/contracts/engine/V3/forks/GenArt721CoreV3_Engine_Flex_PROOF.sol +2293 -0
- package/contracts/engine/V3/forks/PROHIBITION/AdminACLV0_PROHIBITION.sol +281 -0
- package/contracts/engine/V3/forks/PROHIBITION/GenArt721CoreV3_Engine_Flex_PROHIBITION.sol +2354 -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 +1 -1
- package/contracts/explorations/GenArt721CoreV3_Explorations.sol +164 -190
- package/contracts/interfaces/0.8.x/IBytecodeStorageReader.sol +62 -0
- package/contracts/interfaces/0.8.x/ICoreRegistryV1.sol +27 -0
- package/contracts/interfaces/0.8.x/IDelegationRegistry.sol +1 -1
- package/contracts/interfaces/0.8.x/IDependencyRegistryCompatibleV0.sol +1 -1
- package/contracts/interfaces/0.8.x/IDependencyRegistryV0.sol +1 -1
- package/contracts/interfaces/0.8.x/IEngineRegistryV0.sol +1 -1
- package/contracts/interfaces/0.8.x/IFilteredMinterSEAV0.sol +164 -0
- package/contracts/interfaces/0.8.x/IGenArt721CoreContractExposesHashSeed.sol +11 -0
- package/contracts/interfaces/0.8.x/IGenArt721CoreContractV3_Base.sol +42 -0
- package/contracts/interfaces/0.8.x/IGenArt721CoreContractV3_Engine.sol +0 -8
- package/contracts/interfaces/0.8.x/IGenArt721CoreContractV3_Engine_Flex.sol +132 -0
- package/contracts/interfaces/0.8.x/IMinterFilterV1.sol +158 -0
- package/contracts/interfaces/0.8.x/IPseudorandomAtomic.sol +16 -0
- package/contracts/interfaces/0.8.x/IRandomizerPolyptychV0.sol +1 -1
- package/contracts/interfaces/0.8.x/IRandomizerV2.sol +2 -5
- package/contracts/interfaces/0.8.x/IRandomizer_V3CoreBase.sol +10 -0
- package/contracts/interfaces/0.8.x/ISharedRandomizerV0.sol +105 -0
- package/contracts/interfaces/0.8.x/IWETH.sol +11 -0
- package/contracts/libs/0.8.x/BytecodeStorageV1.sol +399 -0
- package/contracts/libs/0.8.x/SSTORE2.sol +109 -0
- package/contracts/libs/integration-refs/delegation-registry/DelegationRegistry.sol +1 -1
- package/contracts/libs/integration-refs/weth9/weth9.sol +765 -0
- package/contracts/minter-suite/MinterFilter/MinterFilterV1.sol +36 -48
- package/contracts/minter-suite/MinterFilter/MinterFilterV2.sol +756 -0
- package/contracts/minter-suite/Minters/MinterDAExpSettlementV2.sol +27 -35
- package/contracts/minter-suite/Minters/MinterDAExpV4.sol +17 -22
- package/contracts/minter-suite/Minters/MinterDALinV4.sol +16 -18
- package/contracts/minter-suite/Minters/MinterHolderV4.sol +20 -20
- package/contracts/minter-suite/Minters/MinterMerkleV5.sol +14 -16
- package/contracts/minter-suite/Minters/MinterPolyptychV0.sol +37 -36
- package/contracts/minter-suite/Minters/MinterSEAV0.sol +1273 -0
- package/contracts/minter-suite/Minters/MinterSetPriceERC20V4.sol +12 -12
- package/contracts/minter-suite/Minters/MinterSetPriceV4.sol +10 -11
- 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 +23 -0
- package/contracts/mock/DeadReceiverMock.sol +1 -1
- package/contracts/mock/DummySharedMinter.sol +75 -0
- package/contracts/mock/GasLimitReceiverBidderMock.sol +23 -0
- package/contracts/mock/GasLimitReceiverMock.sol +19 -0
- package/contracts/mock/GenArt721CoreV3_Engine_IncorrectCoreType.sol +14 -27
- package/contracts/mock/MockAdminACLV0.sol +1 -1
- package/contracts/mock/MockAdminACLV0_PROHIBITION.sol +207 -0
- package/contracts/mock/OriginRegisterMock.sol +27 -0
- package/contracts/mock/RandomizerV2_NoAssignMock.sol +3 -12
- package/contracts/mock/ReentrancySEAMock.sol +36 -0
- package/contracts/mock/SSTORE2Mock.sol +93 -0
- package/contracts/{BasicRandomizer.sol → randomizer/deprecated/BasicRandomizer.sol} +1 -1
- package/contracts/randomizer/deprecated/BasicRandomizerBase_v0_0_0.sol +23 -0
- package/contracts/{BasicPolyptychRandomizerV0.sol → randomizer/deprecated/PolyptychRandomizerV0.sol} +20 -29
- package/contracts/{BasicRandomizerV2.sol → randomizer/deprecated/RandomizerV2.sol} +6 -14
- package/contracts/randomizer/primitive/PseudorandomAtomicBasic.sol +30 -0
- package/contracts/randomizer/shared/SharedRandomizerV0.sol +245 -0
- package/package.json +36 -30
- package/.env.example +0 -10
- package/artifacts/contracts/BasicPolyptychRandomizerV0.sol/BasicPolyptychRandomizerV0.json +0 -229
- package/artifacts/contracts/BasicRandomizerV2.sol/BasicRandomizerV2.json +0 -102
- package/artifacts/contracts/GenArt721CoreV3_Engine.sol/GenArt721CoreV3_Engine.json +0 -1942
- package/artifacts/contracts/engine-registry/future/EngineRegistryV1.sol/EngineRegistryV1.json +0 -109
- package/contracts/engine-registry/future/EngineRegistryV1.sol +0 -86
- /package/contracts/libs/0.8.x/{BytecodeStorage.sol → BytecodeStorageV0.sol} +0 -0
|
@@ -0,0 +1,123 @@
|
|
|
1
|
+
// SPDX-License-Identifier: LGPL-3.0-only
|
|
2
|
+
// Created By: Art Blocks Inc.
|
|
3
|
+
|
|
4
|
+
pragma solidity ^0.8.0;
|
|
5
|
+
|
|
6
|
+
import "../../../../../interfaces/0.8.x/IAdminACLV0.sol";
|
|
7
|
+
|
|
8
|
+
interface IAdminACLV0_PROHIBITION is IAdminACLV0 {
|
|
9
|
+
/**
|
|
10
|
+
* @notice Emitted when function caller is updated.
|
|
11
|
+
* @param contractAddress Contract that the selector caller is being set for.
|
|
12
|
+
* @param selector Selector of the function we're giving the privilege to call.
|
|
13
|
+
* @param caller Caller address that is allowed to call the function.
|
|
14
|
+
* @param approved Boolean value indicating if the caller is approved or not.
|
|
15
|
+
*/
|
|
16
|
+
event ContractSelectorApprovalUpdated(
|
|
17
|
+
address indexed contractAddress,
|
|
18
|
+
bytes4 indexed selector,
|
|
19
|
+
address indexed caller,
|
|
20
|
+
bool approved
|
|
21
|
+
);
|
|
22
|
+
|
|
23
|
+
/**
|
|
24
|
+
* @notice Emitted when verified artist is updated.
|
|
25
|
+
* @param contractAddress Contract that the selector caller is being set for.
|
|
26
|
+
* @param caller Address of the artist.
|
|
27
|
+
* @param approved Boolean value indicating if the caller is approved or not.
|
|
28
|
+
*/
|
|
29
|
+
event ContractArtistApprovalUpdated(
|
|
30
|
+
address indexed contractAddress,
|
|
31
|
+
address indexed caller,
|
|
32
|
+
bool approved
|
|
33
|
+
);
|
|
34
|
+
|
|
35
|
+
/**
|
|
36
|
+
* @notice Retrieve whether of the caller is allowed to call a contract's function
|
|
37
|
+
* @param _contract The contract address.
|
|
38
|
+
* @param _selector The function selector.
|
|
39
|
+
* @param _caller The caller address.
|
|
40
|
+
* @return isApproved The approval status.
|
|
41
|
+
*/
|
|
42
|
+
function getContractSelectorApproval(
|
|
43
|
+
address _contract,
|
|
44
|
+
bytes4 _selector,
|
|
45
|
+
address _caller
|
|
46
|
+
) external view returns (bool);
|
|
47
|
+
|
|
48
|
+
/**
|
|
49
|
+
* @notice Retrieve whether of the caller is allowed to call a functions for a project
|
|
50
|
+
* @param _contract The contract address.
|
|
51
|
+
* @param _caller The caller address.
|
|
52
|
+
* @return isApproved The approval status.
|
|
53
|
+
*/
|
|
54
|
+
function getContractArtistApproval(
|
|
55
|
+
address _contract,
|
|
56
|
+
address _caller
|
|
57
|
+
) external view returns (bool);
|
|
58
|
+
|
|
59
|
+
/**
|
|
60
|
+
* @notice Allowed caller can to set a contract function caller.
|
|
61
|
+
* @param _contract The contract address.
|
|
62
|
+
* @param _selector The function selector.
|
|
63
|
+
* @param _caller The caller address.
|
|
64
|
+
* @dev this function is gated to only superAdmin address or allowed caller.
|
|
65
|
+
*/
|
|
66
|
+
function toggleContractSelectorApproval(
|
|
67
|
+
address _contract,
|
|
68
|
+
bytes4 _selector,
|
|
69
|
+
address _caller
|
|
70
|
+
) external;
|
|
71
|
+
|
|
72
|
+
/**
|
|
73
|
+
* @notice Toggles verification for artists to call functions relating to their projects on a contract
|
|
74
|
+
* @param _contract The contract address.
|
|
75
|
+
* @param _caller The caller address.
|
|
76
|
+
* @dev this function is gated to only allwed addressed.
|
|
77
|
+
*/
|
|
78
|
+
function toggleContractArtistApproval(
|
|
79
|
+
address _contract,
|
|
80
|
+
address _caller
|
|
81
|
+
) external;
|
|
82
|
+
|
|
83
|
+
/**
|
|
84
|
+
* @notice Checks if sender `_sender` is allowed to call function (or functions for projects) with
|
|
85
|
+
* method `_selector` on `_contract`. Returns true if sender is superAdmin.
|
|
86
|
+
* @param _sender The sender address.
|
|
87
|
+
* @param _contract The contract address.
|
|
88
|
+
* @param _selector The function selector.
|
|
89
|
+
* @param _projectId The project ID.
|
|
90
|
+
* @return isApproved The approval status.
|
|
91
|
+
* @dev this function is public insteaad of internal so that the right to toggle approvals can also be delegated
|
|
92
|
+
*/
|
|
93
|
+
function allowed(
|
|
94
|
+
address _sender,
|
|
95
|
+
address _contract,
|
|
96
|
+
bytes4 _selector,
|
|
97
|
+
uint256 _projectId
|
|
98
|
+
) external returns (bool);
|
|
99
|
+
|
|
100
|
+
/**
|
|
101
|
+
* @notice Hash the contract address, selector, and caller address.
|
|
102
|
+
* @param _contract The contract address.
|
|
103
|
+
* @param _selector The function selector.
|
|
104
|
+
* @param _caller The caller address.
|
|
105
|
+
* @return hash The hash.
|
|
106
|
+
*/
|
|
107
|
+
function hashSelectorApprovalKey(
|
|
108
|
+
address _contract,
|
|
109
|
+
bytes4 _selector,
|
|
110
|
+
address _caller
|
|
111
|
+
) external pure returns (bytes32);
|
|
112
|
+
|
|
113
|
+
/**
|
|
114
|
+
* @notice Hash the contract address and artist address.
|
|
115
|
+
* @param _contract The contract address.
|
|
116
|
+
* @param _caller The artist address.
|
|
117
|
+
* @return hash The hash.
|
|
118
|
+
*/
|
|
119
|
+
function hashArtistApprovalKey(
|
|
120
|
+
address _contract,
|
|
121
|
+
address _caller
|
|
122
|
+
) external pure returns (bytes32);
|
|
123
|
+
}
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
// SPDX-License-Identifier: LGPL-3.0-only
|
|
2
|
+
// Created By: Art Blocks Inc.
|
|
3
|
+
|
|
4
|
+
pragma solidity ^0.8.0;
|
|
5
|
+
|
|
6
|
+
import "./IAdminACLV0_PROHIBITION.sol";
|
|
7
|
+
import "../../../../../interfaces/0.8.x/IGenArt721CoreContractV3_Engine_Flex.sol";
|
|
8
|
+
|
|
9
|
+
/**
|
|
10
|
+
* @title This interface is intended to house interface items that are common
|
|
11
|
+
* across all GenArt721CoreContractV3 Engine Flex and derivative implementations.
|
|
12
|
+
* @author Art Blocks Inc.
|
|
13
|
+
*/
|
|
14
|
+
interface IGenArt721CoreContractV3_Engine_Flex_PROHIBITION is
|
|
15
|
+
IGenArt721CoreContractV3_Engine_Flex
|
|
16
|
+
{
|
|
17
|
+
/**
|
|
18
|
+
* Function determining if _sender is allowed to call function with
|
|
19
|
+
* selector _selector on contract `_contract` for project `_projectId`.
|
|
20
|
+
* Intended to be used with peripheral contracts such as minters, as well
|
|
21
|
+
* as internally by the core contract itself.
|
|
22
|
+
*/
|
|
23
|
+
function adminACLAllowed(
|
|
24
|
+
address _sender,
|
|
25
|
+
address _contract,
|
|
26
|
+
bytes4 _selector,
|
|
27
|
+
uint256 _projectId
|
|
28
|
+
) external returns (bool);
|
|
29
|
+
}
|
|
@@ -0,0 +1,254 @@
|
|
|
1
|
+
// SPDX-License-Identifier: MIT
|
|
2
|
+
|
|
3
|
+
pragma solidity 0.8.19;
|
|
4
|
+
|
|
5
|
+
import "../interfaces/0.8.x/ICoreRegistryV1.sol";
|
|
6
|
+
import "@openzeppelin-4.7/contracts/access/Ownable.sol";
|
|
7
|
+
import "@openzeppelin-4.7/contracts/utils/structs/EnumerableSet.sol";
|
|
8
|
+
|
|
9
|
+
/**
|
|
10
|
+
* @title Art Blocks Core Contract Registry, V1.
|
|
11
|
+
* @author Art Blocks Inc.
|
|
12
|
+
* @notice Privileged Roles and Ownership:
|
|
13
|
+
* This contract has a single owner, and is intended to be deployed with a
|
|
14
|
+
* permissioned owner that has elevated privileges on this contract.
|
|
15
|
+
* If in the future multiple deployer addresses are needed to interact with
|
|
16
|
+
* this registry, a new registry version with more complex logic should be
|
|
17
|
+
* implemented and deployed to replace this.
|
|
18
|
+
*
|
|
19
|
+
* This contract builds on the EngineRegistryV0 contract, but encompases more
|
|
20
|
+
* than just Engine contracts. It is updated to be named CoreRegistry, and is
|
|
21
|
+
* V1 because it is the next iteration of the V0 Engine Registry.
|
|
22
|
+
*
|
|
23
|
+
* This contract is intended to be able to act as a registry of all core
|
|
24
|
+
* contracts that are allowed to interact with a specific MinterFilter V2.
|
|
25
|
+
* This includes, but is not limited to:
|
|
26
|
+
* - Flagship contracts
|
|
27
|
+
* - Collaboration contracts
|
|
28
|
+
* - Engine contracts
|
|
29
|
+
* - Engine Flex contracts
|
|
30
|
+
*
|
|
31
|
+
* Note that not all contracts will be registered in this registry, as some
|
|
32
|
+
* contracts may not need to interact with a MinterFilterV2 contract. For
|
|
33
|
+
* example, the original Art Blocks V0 contract does not need to interact with
|
|
34
|
+
* a MinterFilterV2 contract, as it uses a different minting mechanism.
|
|
35
|
+
*
|
|
36
|
+
* A view function is provided to determine if a contract is registered.
|
|
37
|
+
*
|
|
38
|
+
* This contract is designed to be managed by an owner with privileged roles
|
|
39
|
+
* and abilities.
|
|
40
|
+
* ----------------------------------------------------------------------------
|
|
41
|
+
* The following function is restricted to the engine registry owner sending,
|
|
42
|
+
* or the core contract being registered during a transaction originating from
|
|
43
|
+
* the engine registry owner:
|
|
44
|
+
* - registerContract
|
|
45
|
+
* ----------------------------------------------------------------------------
|
|
46
|
+
* The following functions are restricted to the engine registry owner sending:
|
|
47
|
+
* - unregisterContract
|
|
48
|
+
* - registerContracts
|
|
49
|
+
* - unregisterContracts
|
|
50
|
+
* - Ownable: transferOwnership
|
|
51
|
+
* - Ownable: renounceOwnership
|
|
52
|
+
* ----------------------------------------------------------------------------
|
|
53
|
+
* Additional privileged roles may be described on minters, registries, and
|
|
54
|
+
* other contracts that may interact with this contract.
|
|
55
|
+
*/
|
|
56
|
+
contract CoreRegistryV1 is Ownable, ICoreRegistryV1 {
|
|
57
|
+
using EnumerableSet for EnumerableSet.AddressSet;
|
|
58
|
+
|
|
59
|
+
/// private enumerable set of registered contracts
|
|
60
|
+
EnumerableSet.AddressSet private registeredContracts;
|
|
61
|
+
|
|
62
|
+
/// private mapping of registered contract addresses to
|
|
63
|
+
EnumerableSet.AddressSet
|
|
64
|
+
private registeredMinterFilterV2CompatibleContracts;
|
|
65
|
+
|
|
66
|
+
/**
|
|
67
|
+
* @notice Reverts if `tx.origin` is not the owner.
|
|
68
|
+
* @dev Warning that this check is only against tx.origin, which may be
|
|
69
|
+
* misleading when used for security.
|
|
70
|
+
*/
|
|
71
|
+
function _onlyOwnerOrigin() internal view {
|
|
72
|
+
require(tx.origin == owner(), "Only tx origin of owner");
|
|
73
|
+
}
|
|
74
|
+
|
|
75
|
+
constructor() Ownable() {}
|
|
76
|
+
|
|
77
|
+
/**
|
|
78
|
+
* @notice Register a contract and emit a `ContractRegistered` event with
|
|
79
|
+
* the provided information. Only callable by the owner or the contract
|
|
80
|
+
* being registered, and only if tx.origin == owner.
|
|
81
|
+
* Reverts if authorization fails, or if the contract is already
|
|
82
|
+
* registered.
|
|
83
|
+
*/
|
|
84
|
+
function registerContract(
|
|
85
|
+
address _contractAddress,
|
|
86
|
+
bytes32 _coreVersion,
|
|
87
|
+
bytes32 _coreType
|
|
88
|
+
) external {
|
|
89
|
+
// CHECKS
|
|
90
|
+
// Validate against `tx.origin` rather than `msg.sender` as it is
|
|
91
|
+
// intended that this registration be performed in an automated
|
|
92
|
+
// fashion at the time of contract deployment of `_contractAddress`.
|
|
93
|
+
// @dev Security implications of using `tx.origin` are acknowledged
|
|
94
|
+
_onlyOwnerOrigin();
|
|
95
|
+
// only allow registration of a contract registering itself, or allow
|
|
96
|
+
// the owner to register any contract.
|
|
97
|
+
require(
|
|
98
|
+
msg.sender == _contractAddress || msg.sender == owner(),
|
|
99
|
+
"Only owner or registrant"
|
|
100
|
+
);
|
|
101
|
+
// EFFECTS
|
|
102
|
+
_registerContract(_contractAddress, _coreVersion, _coreType);
|
|
103
|
+
}
|
|
104
|
+
|
|
105
|
+
/**
|
|
106
|
+
* @notice Unregister a contract and emit a `ContractUnregistered` event.
|
|
107
|
+
* Only callable by the owner of this registry contract.
|
|
108
|
+
* Reverts if authorization fails, or if the contract is not already
|
|
109
|
+
* registered.
|
|
110
|
+
*/
|
|
111
|
+
function unregisterContract(address _contractAddress) external {
|
|
112
|
+
// CHECKS
|
|
113
|
+
// revert if not called by owner
|
|
114
|
+
Ownable._checkOwner();
|
|
115
|
+
// EFFECTS
|
|
116
|
+
_unregisterContract(_contractAddress);
|
|
117
|
+
}
|
|
118
|
+
|
|
119
|
+
/**
|
|
120
|
+
* @notice Register multiple contracts at once.
|
|
121
|
+
* Only callable by the owner.
|
|
122
|
+
* Reverts if any contract is already registered.
|
|
123
|
+
* @dev This should primarily be used for backfilling the registry with
|
|
124
|
+
* existing contracts shortly after deployment.
|
|
125
|
+
* @param _contractAddresses Array of contract addresses to register.
|
|
126
|
+
* @param _coreVersions Array of core versions for each contract (aligned).
|
|
127
|
+
* @param _coreTypes Array of core types for each contract (aligned).
|
|
128
|
+
*/
|
|
129
|
+
function registerContracts(
|
|
130
|
+
address[] calldata _contractAddresses,
|
|
131
|
+
bytes32[] calldata _coreVersions,
|
|
132
|
+
bytes32[] calldata _coreTypes
|
|
133
|
+
) external {
|
|
134
|
+
// CHECKS
|
|
135
|
+
// revert if not called by owner
|
|
136
|
+
Ownable._checkOwner();
|
|
137
|
+
// validate same length arrays
|
|
138
|
+
uint256 numContracts = _contractAddresses.length;
|
|
139
|
+
require(
|
|
140
|
+
numContracts == _coreVersions.length &&
|
|
141
|
+
numContracts == _coreTypes.length,
|
|
142
|
+
"Mismatched array lengths"
|
|
143
|
+
);
|
|
144
|
+
// EFFECTS
|
|
145
|
+
for (uint256 i = 0; i < numContracts; ) {
|
|
146
|
+
_registerContract(
|
|
147
|
+
_contractAddresses[i],
|
|
148
|
+
_coreVersions[i],
|
|
149
|
+
_coreTypes[i]
|
|
150
|
+
);
|
|
151
|
+
unchecked {
|
|
152
|
+
++i;
|
|
153
|
+
}
|
|
154
|
+
}
|
|
155
|
+
}
|
|
156
|
+
|
|
157
|
+
/**
|
|
158
|
+
* @notice Unregister multiple contracts at once.
|
|
159
|
+
* Only callable by the owner.
|
|
160
|
+
* Reverts if any contract is not already registered.
|
|
161
|
+
* @param _contractAddresses Array of contract addresses to unregister.
|
|
162
|
+
*/
|
|
163
|
+
function unregisterContracts(
|
|
164
|
+
address[] calldata _contractAddresses
|
|
165
|
+
) external {
|
|
166
|
+
// CHECKS
|
|
167
|
+
// revert if not called by owner
|
|
168
|
+
Ownable._checkOwner();
|
|
169
|
+
// EFFECTS
|
|
170
|
+
uint256 numContracts = _contractAddresses.length;
|
|
171
|
+
for (uint256 i = 0; i < numContracts; ) {
|
|
172
|
+
_unregisterContract(_contractAddresses[i]);
|
|
173
|
+
unchecked {
|
|
174
|
+
++i;
|
|
175
|
+
}
|
|
176
|
+
}
|
|
177
|
+
}
|
|
178
|
+
|
|
179
|
+
/**
|
|
180
|
+
* @notice Get the number of registered contracts.
|
|
181
|
+
* @return The number of registered contracts.
|
|
182
|
+
*/
|
|
183
|
+
function getNumRegisteredContracts() external view returns (uint256) {
|
|
184
|
+
return registeredContracts.length();
|
|
185
|
+
}
|
|
186
|
+
|
|
187
|
+
/**
|
|
188
|
+
* @notice Get the address of a registered contract by index.
|
|
189
|
+
* @param _index The index of the contract to get.
|
|
190
|
+
* @return The address of the contract at the given index.
|
|
191
|
+
*/
|
|
192
|
+
function getRegisteredContractAt(
|
|
193
|
+
uint256 _index
|
|
194
|
+
) external view returns (address) {
|
|
195
|
+
return registeredContracts.at(_index);
|
|
196
|
+
}
|
|
197
|
+
|
|
198
|
+
/**
|
|
199
|
+
* @notice Gets an array of all registered contract addresses.
|
|
200
|
+
* Warning: Unbounded gas limit. This function is gas intensive and should
|
|
201
|
+
* only be used for off-chain analysis. Please use
|
|
202
|
+
* `getNumRegisteredContracts` and `getRegisteredContractAt` for bounded
|
|
203
|
+
* gas usage.
|
|
204
|
+
*/
|
|
205
|
+
function getAllRegisteredContracts()
|
|
206
|
+
external
|
|
207
|
+
view
|
|
208
|
+
returns (address[] memory)
|
|
209
|
+
{
|
|
210
|
+
return registeredContracts.values();
|
|
211
|
+
}
|
|
212
|
+
|
|
213
|
+
/**
|
|
214
|
+
* @notice Returns boolean representing if contract is registered on this
|
|
215
|
+
* registry.
|
|
216
|
+
* @param _contractAddress The address of the contract to check.
|
|
217
|
+
* @return isRegistered True if the contract is registered.
|
|
218
|
+
*/
|
|
219
|
+
function isRegisteredContract(
|
|
220
|
+
address _contractAddress
|
|
221
|
+
) external view returns (bool isRegistered) {
|
|
222
|
+
return registeredContracts.contains(_contractAddress);
|
|
223
|
+
}
|
|
224
|
+
|
|
225
|
+
/**
|
|
226
|
+
* @notice Internal function to register a contract.
|
|
227
|
+
* Reverts if the contract is already registered.
|
|
228
|
+
*/
|
|
229
|
+
function _registerContract(
|
|
230
|
+
address _contractAddress,
|
|
231
|
+
bytes32 _coreVersion,
|
|
232
|
+
bytes32 _coreType
|
|
233
|
+
) internal {
|
|
234
|
+
// @dev add returns true only if not already registered
|
|
235
|
+
require(
|
|
236
|
+
registeredContracts.add(_contractAddress),
|
|
237
|
+
"Contract already registered"
|
|
238
|
+
);
|
|
239
|
+
emit ContractRegistered(_contractAddress, _coreVersion, _coreType);
|
|
240
|
+
}
|
|
241
|
+
|
|
242
|
+
/**
|
|
243
|
+
* @notice Internal function to unregister a contract.
|
|
244
|
+
* Reverts if the contract is not already registered.
|
|
245
|
+
*/
|
|
246
|
+
function _unregisterContract(address _contractAddress) internal {
|
|
247
|
+
// @dev remove returns true only if already in set
|
|
248
|
+
require(
|
|
249
|
+
registeredContracts.remove(_contractAddress),
|
|
250
|
+
"Only registered contracts"
|
|
251
|
+
);
|
|
252
|
+
emit ContractUnregistered(_contractAddress);
|
|
253
|
+
}
|
|
254
|
+
}
|