@artblocks/contracts 1.0.4 → 1.2.0
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 +75 -7
- 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 +336 -131
- package/artifacts/contracts/archive/GenArt721CoreV3.sol/GenArt721CoreV3.json +2047 -0
- package/artifacts/contracts/archive/GenArt721CoreV3_Explorations.sol/GenArt721CoreV3_Explorations.json +2021 -0
- package/artifacts/contracts/{minter-suite → archive/minter-suite}/Minters/MinterBase_v0_1_1.sol/MinterBase.json +1 -1
- package/artifacts/contracts/archive/minter-suite/Minters/MinterDAExp/MinterDAExpV2.sol/MinterDAExpV2.json +2 -2
- package/artifacts/contracts/archive/minter-suite/Minters/MinterDAExp/MinterDAExpV3.sol/MinterDAExpV3.json +2 -2
- package/artifacts/contracts/{minter-suite/Minters → archive/minter-suite/Minters/MinterDAExp}/MinterDAExpV4.sol/MinterDAExpV4.json +3 -3
- package/artifacts/contracts/archive/minter-suite/Minters/MinterDAExpSettlement/MinterDAExpSettlementV0.sol/MinterDAExpSettlementV0.json +2 -2
- package/artifacts/contracts/archive/minter-suite/Minters/MinterDAExpSettlement/MinterDAExpSettlementV1.sol/MinterDAExpSettlementV1.json +2 -2
- package/artifacts/contracts/archive/minter-suite/Minters/MinterDAExpSettlement/MinterDAExpSettlementV2.sol/MinterDAExpSettlementV2.json +1109 -0
- package/artifacts/contracts/archive/minter-suite/Minters/MinterDALin/MinterDALinV2.sol/MinterDALinV2.json +2 -2
- package/artifacts/contracts/archive/minter-suite/Minters/MinterDALin/MinterDALinV3.sol/MinterDALinV3.json +2 -2
- package/artifacts/contracts/{minter-suite/Minters → archive/minter-suite/Minters/MinterDALin}/MinterDALinV4.sol/MinterDALinV4.json +3 -3
- package/artifacts/contracts/archive/minter-suite/Minters/MinterHolder/MinterHolderV1.sol/MinterHolderV1.json +2 -2
- package/artifacts/contracts/archive/minter-suite/Minters/MinterHolder/MinterHolderV2.sol/MinterHolderV2.json +2 -2
- package/artifacts/contracts/archive/minter-suite/Minters/MinterHolder/MinterHolderV3.sol/MinterHolderV3.json +2 -2
- package/artifacts/contracts/{minter-suite/Minters → archive/minter-suite/Minters/MinterHolder}/MinterHolderV4.sol/MinterHolderV4.json +3 -3
- package/artifacts/contracts/archive/minter-suite/Minters/MinterMerkle/MinterMerkleV1.sol/MinterMerkleV1.json +2 -2
- package/artifacts/contracts/archive/minter-suite/Minters/MinterMerkle/MinterMerkleV2.sol/MinterMerkleV2.json +2 -2
- package/artifacts/contracts/archive/minter-suite/Minters/MinterMerkle/MinterMerkleV3.sol/MinterMerkleV3.json +2 -2
- package/artifacts/contracts/archive/minter-suite/Minters/MinterMerkle/MinterMerkleV4.sol/MinterMerkleV4.json +2 -2
- package/artifacts/contracts/{minter-suite/Minters → archive/minter-suite/Minters/MinterMerkle}/MinterMerkleV5.sol/MinterMerkleV5.json +3 -3
- package/artifacts/contracts/{minter-suite/Minters → archive/minter-suite/Minters/MinterPolyptych}/MinterPolyptychV0.sol/IGenArt721CoreContractV3WithRandomizer.json +31 -63
- package/artifacts/contracts/{minter-suite/Minters → archive/minter-suite/Minters/MinterPolyptych}/MinterPolyptychV0.sol/MinterPolyptychV0.json +3 -3
- package/artifacts/contracts/{minter-suite/Minters → archive/minter-suite/Minters/MinterSEA}/MinterSEAV0.sol/MinterSEAV0.json +3 -3
- package/artifacts/contracts/archive/minter-suite/Minters/MinterSetPrice/MinterSetPriceV2.sol/MinterSetPriceV2.json +2 -2
- package/artifacts/contracts/archive/minter-suite/Minters/MinterSetPrice/MinterSetPriceV3.sol/MinterSetPriceV3.json +2 -2
- package/artifacts/contracts/{minter-suite/Minters → archive/minter-suite/Minters/MinterSetPrice}/MinterSetPriceV4.sol/MinterSetPriceV4.json +3 -3
- package/artifacts/contracts/archive/minter-suite/Minters/MinterSetPriceERC20/MinterSetPriceERC20V0.sol/MinterSetPriceERC20V0.json +65 -2
- package/artifacts/contracts/archive/minter-suite/Minters/MinterSetPriceERC20/MinterSetPriceERC20V1.sol/MinterSetPriceERC20V1.json +65 -2
- package/artifacts/contracts/archive/minter-suite/Minters/MinterSetPriceERC20/MinterSetPriceERC20V2.sol/MinterSetPriceERC20V2.json +2 -2
- package/artifacts/contracts/archive/minter-suite/Minters/MinterSetPriceERC20/MinterSetPriceERC20V3.sol/MinterSetPriceERC20V3.json +2 -2
- package/artifacts/contracts/archive/minter-suite/Minters/MinterSetPriceERC20/MinterSetPriceERC20V4.sol/MinterSetPriceERC20V4.json +807 -0
- package/artifacts/contracts/engine/V2/GenArt721MinterBurner_PBAB.sol/GenArt721MinterBurner_PBAB.json +65 -2
- package/artifacts/contracts/engine/V2/GenArt721Minter_PBAB.sol/GenArt721Minter_PBAB.json +65 -2
- package/artifacts/contracts/engine/V3/EngineFactoryV0.sol/EngineFactoryV0.json +606 -0
- package/artifacts/contracts/engine/V3/GenArt721CoreV3_Engine.sol/GenArt721CoreV3_Engine.json +565 -209
- package/artifacts/contracts/engine/V3/GenArt721CoreV3_Engine_Flex.sol/GenArt721CoreV3_Engine_Flex.json +785 -227
- package/artifacts/contracts/engine/V3/forks/GenArt721CoreV3_Engine_Flex_PROOF.sol/GenArt721CoreV3_Engine_Flex_PROOF.json +40 -15
- package/artifacts/contracts/engine/V3/forks/PROHIBITION/AdminACLV0_PROHIBITION.sol/AdminACLV0_PROHIBITION.json +2 -2
- package/artifacts/contracts/engine/V3/forks/PROHIBITION/GenArt721CoreV3_Engine_Flex_PROHIBITION.sol/GenArt721CoreV3_Engine_Flex_PROHIBITION.json +40 -15
- package/artifacts/contracts/engine/V3/forks/PROHIBITION/interfaces/IGenArt721CoreContractV3_Engine_Flex_PROHIBITION.sol/IGenArt721CoreContractV3_Engine_Flex_PROHIBITION.json +36 -68
- package/artifacts/contracts/engine-registry/CoreRegistryV1.sol/CoreRegistryV1.json +12 -12
- package/artifacts/contracts/interfaces/v0.8.x/IAdminACLV0_Extended.sol/IAdminACLV0_Extended.json +140 -0
- package/artifacts/contracts/interfaces/v0.8.x/IBytecodeStorageReaderV2.sol/IBytecodeStorageReaderV2.json +130 -0
- package/artifacts/contracts/interfaces/v0.8.x/ICoreRegistryV1.sol/ICoreRegistryV1.json +6 -6
- package/artifacts/contracts/interfaces/v0.8.x/IDependencyRegistryV0.sol/IDependencyRegistryV0.json +71 -39
- package/artifacts/contracts/interfaces/v0.8.x/IEngineFactoryV0.sol/IEngineFactoryV0.json +283 -0
- package/artifacts/contracts/interfaces/v0.8.x/IFilteredMinterDAExpSettlementV0.sol/IFilteredMinterDAExpSettlementV0.json +12 -12
- package/artifacts/contracts/interfaces/v0.8.x/IFilteredMinterDAExpSettlementV1.sol/IFilteredMinterDAExpSettlementV1.json +12 -12
- package/artifacts/contracts/interfaces/v0.8.x/IGenArt721CoreContractV3.sol/IGenArt721CoreContractV3.json +30 -62
- package/artifacts/contracts/interfaces/v0.8.x/IGenArt721CoreContractV3_Base.sol/IGenArt721CoreContractV3_Base.json +30 -62
- package/artifacts/contracts/interfaces/v0.8.x/IGenArt721CoreContractV3_Engine.sol/IGenArt721CoreContractV3_Engine.json +170 -104
- package/artifacts/contracts/interfaces/v0.8.x/IGenArt721CoreContractV3_Engine_Flex.sol/IGenArt721CoreContractV3_Engine_Flex.json +170 -104
- package/artifacts/contracts/interfaces/v0.8.x/IGenArt721CoreContractV3_Engine_Flex_PreV3p2.sol/IGenArt721CoreContractV3_Engine_Flex_PreV3p2.json +1028 -0
- package/artifacts/contracts/interfaces/v0.8.x/IGenArt721CoreContractV3_Engine_PreV3p2.sol/IGenArt721CoreContractV3_Engine_PreV3p2.json +741 -0
- package/artifacts/contracts/interfaces/v0.8.x/IGenArt721CoreContractV3_ProjectFinance.sol/IGenArt721CoreContractV3_ProjectFinance.json +87 -0
- package/artifacts/contracts/interfaces/v0.8.x/IGenArt721Minter_PBAB.sol/IGenArt721Minter_PBAB.json +279 -0
- package/artifacts/contracts/interfaces/v0.8.x/IMinterFilterV1.sol/IMinterFilterV1.json +22 -22
- package/artifacts/contracts/interfaces/v0.8.x/IPseudorandomAtomic.sol/IPseudorandomAtomic.json +1 -1
- package/artifacts/contracts/interfaces/v0.8.x/ISharedMinterDAExpSettlementV0.sol/ISharedMinterDAExpSettlementV0.json +26 -101
- package/artifacts/contracts/interfaces/v0.8.x/ISharedMinterDAExpV0.sol/ISharedMinterDAExpV0.json +1 -57
- package/artifacts/contracts/interfaces/v0.8.x/ISharedMinterDALinV0.sol/ISharedMinterDALinV0.json +1 -57
- package/artifacts/contracts/interfaces/v0.8.x/ISharedMinterDAV0.sol/ISharedMinterDAV0.json +2 -21
- package/artifacts/contracts/interfaces/v0.8.x/ISharedMinterHolderERC20V0.sol/ISharedMinterHolderERC20V0.json +158 -0
- package/artifacts/contracts/interfaces/v0.8.x/ISharedMinterHolderV0.sol/ISharedMinterHolderV0.json +15 -90
- package/artifacts/contracts/interfaces/v0.8.x/ISharedMinterMerkleV0.sol/ISharedMinterMerkleV0.json +10 -36
- package/artifacts/contracts/interfaces/v0.8.x/ISharedMinterRAMV0.sol/ISharedMinterRAMV0.json +62 -0
- package/artifacts/contracts/interfaces/v0.8.x/ISharedMinterRequired.sol/ISharedMinterRequired.json +37 -0
- package/artifacts/contracts/interfaces/v0.8.x/ISharedMinterSEAV0.sol/ISharedMinterSEAV0.json +4 -236
- package/artifacts/contracts/interfaces/v0.8.x/ISharedMinterSimplePurchaseV0.sol/ISharedMinterSimplePurchaseV0.json +5 -5
- package/artifacts/contracts/interfaces/v0.8.x/ISharedMinterV0.sol/ISharedMinterV0.json +7 -423
- package/artifacts/contracts/interfaces/v0.8.x/ISharedRandomizerV0.sol/ISharedRandomizerV0.json +17 -17
- package/artifacts/contracts/interfaces/v0.8.x/ISplitAtomicFactoryV0.sol/ISplitAtomicFactoryV0.json +170 -0
- package/artifacts/contracts/interfaces/v0.8.x/ISplitAtomicV0.sol/ISplitAtomicV0.json +126 -0
- package/artifacts/contracts/interfaces/v0.8.x/ISplitProviderV0.sol/ISplitProviderV0.json +98 -0
- package/artifacts/contracts/interfaces/v0.8.x/integration-refs/splits-0x-v2/ISplitFactoryV2.sol/ISplitFactoryV2.json +123 -0
- package/artifacts/contracts/libs/integration-refs/delegation-registry/DelegationRegistry.sol/DelegationRegistry.json +2 -2
- package/artifacts/contracts/libs/integration-refs/gnosis-safe/GnosisSafeMock.sol/GnosisSafeMock.json +2 -2
- package/artifacts/contracts/libs/integration-refs/gnosis-safe/GnosisSafeProxyFactoryMock.sol/GnosisSafeProxyFactoryMock.json +2 -2
- package/artifacts/contracts/libs/integration-refs/gnosis-safe/MultiSendMock.sol/MultiSendMock.json +2 -2
- package/artifacts/contracts/libs/integration-refs/weth9/weth9.sol/WETH9_.json +2 -2
- package/artifacts/contracts/libs/v0.8.x/ABHelpers.sol/ABHelpers.json +2 -2
- package/artifacts/contracts/libs/v0.8.x/AuthLib.sol/AuthLib.json +2 -2
- package/artifacts/contracts/libs/v0.8.x/BitMap.sol/BitMaps256.json +10 -0
- package/artifacts/contracts/libs/v0.8.x/BytecodeStorageV0.sol/BytecodeStorage.json +2 -2
- package/artifacts/contracts/libs/v0.8.x/BytecodeStorageV1.sol/BytecodeStorageReader.json +2 -2
- package/artifacts/contracts/libs/v0.8.x/BytecodeStorageV1.sol/BytecodeStorageWriter.json +2 -2
- package/artifacts/contracts/libs/v0.8.x/BytecodeStorageV2.sol/BytecodeStorageReader.json +214 -0
- package/artifacts/contracts/libs/v0.8.x/BytecodeStorageV2.sol/BytecodeStorageWriter.json +10 -0
- package/artifacts/contracts/libs/v0.8.x/Bytes32Strings.sol/Bytes32Strings.json +2 -2
- package/artifacts/contracts/libs/v0.8.x/DependencyRegistryStorageLib.sol/DependencyRegistryStorageLib.json +10 -0
- package/artifacts/contracts/libs/v0.8.x/ERC721_PackedHashSeed.sol/ERC721_PackedHashSeed.json +2 -2
- package/artifacts/contracts/libs/v0.8.x/ERC721_PackedHashSeedV1.sol/ERC721_PackedHashSeedV1.json +444 -0
- package/artifacts/contracts/libs/v0.8.x/PackedBools.sol/PackedBools.json +10 -0
- package/artifacts/contracts/libs/v0.8.x/SSTORE2.sol/SSTORE2.json +2 -2
- package/artifacts/contracts/libs/v0.8.x/V3FlexLib.sol/V3FlexLib.json +208 -0
- package/artifacts/contracts/libs/v0.8.x/minter-libs/DAExpLib.sol/DAExpLib.json +60 -3
- package/artifacts/contracts/libs/v0.8.x/minter-libs/DALib.sol/DALib.json +30 -0
- package/artifacts/contracts/libs/v0.8.x/minter-libs/DALinLib.sol/DALinLib.json +60 -3
- package/artifacts/contracts/libs/v0.8.x/minter-libs/GenericMinterEventsLib.sol/GenericMinterEventsLib.json +346 -0
- package/artifacts/contracts/libs/v0.8.x/minter-libs/MaxInvocationsLib.sol/MaxInvocationsLib.json +29 -3
- package/artifacts/contracts/libs/v0.8.x/minter-libs/MerkleLib.sol/MerkleLib.json +30 -3
- package/artifacts/contracts/libs/v0.8.x/minter-libs/PolyptychLib.sol/PolyptychLib.json +2 -2
- package/artifacts/contracts/libs/v0.8.x/minter-libs/RAMLib.sol/RAMLib.json +398 -0
- package/artifacts/contracts/libs/v0.8.x/minter-libs/SEALib.sol/SEALib.json +254 -3
- package/artifacts/contracts/libs/v0.8.x/minter-libs/SetPriceLib.sol/SetPriceLib.json +48 -3
- package/artifacts/contracts/libs/v0.8.x/minter-libs/SettlementExpLib.sol/SettlementExpLib.json +41 -3
- package/artifacts/contracts/libs/v0.8.x/minter-libs/SplitFundsLib.sol/SplitFundsLib.json +35 -3
- package/artifacts/contracts/libs/v0.8.x/minter-libs/TokenHolderLib.sol/TokenHolderLib.json +79 -3
- package/artifacts/contracts/minter-suite/MinterFilter/MinterFilterV1.sol/MinterFilterV1.json +2 -2
- package/artifacts/contracts/minter-suite/MinterFilter/MinterFilterV2.sol/MinterFilterV2.json +41 -41
- package/artifacts/contracts/minter-suite/Minters/MinterDAExpHolderV5.sol/MinterDAExpHolderV5.json +66 -632
- package/artifacts/contracts/minter-suite/Minters/MinterDAExpSettlementV3.sol/MinterDAExpSettlementV3.json +67 -594
- package/artifacts/contracts/minter-suite/Minters/MinterDAExpV5.sol/MinterDAExpV5.json +33 -524
- package/artifacts/contracts/minter-suite/Minters/MinterDALinHolderV5.sol/MinterDALinHolderV5.json +66 -632
- package/artifacts/contracts/minter-suite/Minters/MinterDALinV5.sol/MinterDALinV5.json +33 -524
- package/artifacts/contracts/minter-suite/Minters/MinterRAMV0.sol/MinterRAMV0.json +1374 -0
- package/artifacts/contracts/minter-suite/Minters/MinterSEAV1.sol/MinterSEAV1.json +56 -722
- package/artifacts/contracts/minter-suite/Minters/MinterSetPriceERC20V5.sol/MinterSetPriceERC20V5.json +58 -454
- package/artifacts/contracts/minter-suite/Minters/MinterSetPriceHolderV5.sol/MinterSetPriceHolderV5.json +61 -552
- package/artifacts/contracts/minter-suite/Minters/MinterSetPriceMerkleV5.sol/MinterSetPriceMerkleV5.json +55 -497
- package/artifacts/contracts/minter-suite/Minters/MinterSetPricePolyptychERC20V5.sol/MinterSetPricePolyptychERC20V5.json +110 -571
- package/artifacts/contracts/minter-suite/Minters/MinterSetPricePolyptychV5.sol/MinterSetPricePolyptychV5.json +69 -560
- package/artifacts/contracts/minter-suite/Minters/MinterSetPriceV5.sol/MinterSetPriceV5.json +28 -444
- package/artifacts/contracts/minter-suite/Minters/one-off/MinterSetPriceV5_SingleCore.sol/MinterSetPriceV5_SingleCore.json +417 -0
- package/artifacts/contracts/mock/BytecodeV2LibCallsMock.sol/BytecodeV2LibCallsMock.json +154 -0
- package/artifacts/contracts/mock/BytecodeV2TextCR_DMock.sol/BytecodeV2TextCR_DMock.json +428 -0
- package/artifacts/contracts/mock/DummySharedMinter.sol/DummySharedMinter.json +2 -2
- package/artifacts/contracts/mock/ERC20Mock.sol/ERC20Mock.json +2 -2
- package/artifacts/contracts/mock/ForceSendMock.sol/ForceSendMock.json +24 -0
- package/artifacts/contracts/mock/GenArt721CoreV3_Engine_IncorrectCoreType.sol/GenArt721CoreV3_Engine_IncorrectCoreType.json +4 -9
- package/artifacts/contracts/mock/Mock0xSplitsV2PullFactory.sol/Mock0xSplitsV2PullFactory.json +149 -0
- package/artifacts/contracts/mock/Mock0xSplitsV2Splitter.sol/Mock0xSplitsV2Splitter.json +99 -0
- package/artifacts/contracts/mock/MockAdminACLV0.sol/MockAdminACLV0Events.json +20 -2
- package/artifacts/contracts/mock/MockAdminACLV0_PROHIBITION.sol/MockAdminACLV0Events_PROHIBITION.json +20 -2
- package/artifacts/contracts/mock/OriginRegisterMock.sol/OriginRegisterMock.json +2 -2
- package/artifacts/contracts/mock/RandomizerV2_NoAssignMock.sol/RandomizerV2_NoAssignMock.json +2 -2
- package/artifacts/contracts/mock/ReentrancyGenArt721MinterMock.sol/ReentrancyGenArt721MinterMock.json +100 -0
- package/artifacts/contracts/mock/ReentrancyHolderMock.sol/ReentrancyHolderMock.json +2 -2
- package/artifacts/contracts/mock/ReentrancyHolderMockShared.sol/ReentrancyHolderMockShared.json +136 -0
- package/artifacts/contracts/mock/ReentrancyMerkleMock.sol/ReentrancyMerkleMock.json +2 -2
- package/artifacts/contracts/mock/ReentrancyMerkleMockShared.sol/ReentrancyMerkleMockShared.json +105 -0
- package/artifacts/contracts/mock/ReentrancyMock.sol/ReentrancyMock.json +2 -2
- package/artifacts/contracts/mock/ReentrancyMockShared.sol/ReentrancyMockShared.json +100 -0
- package/artifacts/contracts/mock/ReentrancySEAMock.sol/ReentrancySEAAutoBidderMock.json +2 -2
- package/artifacts/contracts/mock/ReentrancySEAMockShared.sol/ReentrancySEAAutoBidderMockShared.json +69 -0
- package/artifacts/contracts/mock/ReentrancySplitterMocks.sol/ReentrancySplitterDrainETHMock.json +54 -0
- package/artifacts/contracts/mock/ReentrancySplitterMocks.sol/ReentrancySplitterSendETHMock.json +54 -0
- package/artifacts/contracts/randomizer/deprecated/PolyptychRandomizerV0.sol/BasicPolyptychRandomizerV0.json +2 -2
- package/artifacts/contracts/randomizer/deprecated/RandomizerV2.sol/BasicRandomizerV2.json +2 -2
- package/artifacts/contracts/randomizer/primitive/PseudorandomAtomicBasic.sol/PseudorandomAtomic.json +2 -2
- package/artifacts/contracts/randomizer/shared/SharedRandomizerV0.sol/SharedRandomizerV0.json +19 -19
- package/artifacts/contracts/split/SplitAtomicFactoryV0.sol/SplitAtomicFactoryV0.json +203 -0
- package/artifacts/contracts/split/SplitAtomicV0.sol/SplitAtomicV0.json +168 -0
- package/artifacts/contracts/split/split-provider/SplitProviderV0.sol/SplitProviderV0.json +141 -0
- package/contracts/AdminACLV0.sol +6 -2
- package/contracts/AdminACLV1.sol +2 -2
- package/contracts/DependencyRegistryV0.sol +737 -390
- package/contracts/{GenArt721CoreV3.sol → archive/GenArt721CoreV3.sol} +56 -20
- package/contracts/{explorations → archive}/GenArt721CoreV3_Explorations.sol +49 -13
- package/contracts/{minter-suite → archive/minter-suite}/Minters/MinterBase_v0_1_1.sol +4 -4
- package/contracts/{minter-suite/Minters → archive/minter-suite/Minters/MinterDAExp}/MinterDAExpV4.sol +4 -4
- package/contracts/archive/minter-suite/Minters/MinterDAExpSettlement/MinterDAExpSettlementV0.sol +4 -4
- package/contracts/archive/minter-suite/Minters/MinterDAExpSettlement/MinterDAExpSettlementV1.sol +5 -5
- package/contracts/{minter-suite/Minters → archive/minter-suite/Minters/MinterDAExpSettlement}/MinterDAExpSettlementV2.sol +9 -62
- package/contracts/{minter-suite/Minters → archive/minter-suite/Minters/MinterDALin}/MinterDALinV4.sol +4 -4
- package/contracts/{minter-suite/Minters → archive/minter-suite/Minters/MinterHolder}/MinterHolderV4.sol +5 -5
- package/contracts/{minter-suite/Minters → archive/minter-suite/Minters/MinterMerkle}/MinterMerkleV5.sol +5 -5
- package/contracts/{minter-suite/Minters → archive/minter-suite/Minters/MinterPolyptych}/MinterPolyptychV0.sol +7 -7
- package/contracts/{minter-suite/Minters → archive/minter-suite/Minters/MinterSEA}/MinterSEAV0.sol +13 -13
- package/contracts/{minter-suite/Minters → archive/minter-suite/Minters/MinterSetPrice}/MinterSetPriceV4.sol +4 -4
- package/contracts/archive/minter-suite/Minters/MinterSetPriceERC20/MinterSetPriceERC20V0.sol +82 -10
- package/contracts/archive/minter-suite/Minters/MinterSetPriceERC20/MinterSetPriceERC20V1.sol +82 -10
- package/contracts/{minter-suite/Minters → archive/minter-suite/Minters/MinterSetPriceERC20}/MinterSetPriceERC20V4.sol +88 -21
- package/contracts/engine/V2/GenArt721MinterBurner_PBAB.sol +81 -22
- package/contracts/engine/V2/GenArt721Minter_PBAB.sol +80 -22
- package/contracts/engine/V3/EngineFactoryV0.sol +419 -0
- package/contracts/engine/V3/GenArt721CoreV3_Engine.sol +893 -493
- package/contracts/engine/V3/GenArt721CoreV3_Engine_Flex.sol +1053 -655
- package/contracts/engine/V3/forks/GenArt721CoreV3_Engine_Flex_PROOF.sol +7 -13
- package/contracts/engine/V3/forks/PROHIBITION/GenArt721CoreV3_Engine_Flex_PROHIBITION.sol +5 -11
- package/contracts/engine/V3/forks/PROHIBITION/interfaces/IGenArt721CoreContractV3_Engine_Flex_PROHIBITION.sol +2 -2
- package/contracts/engine-registry/CoreRegistryV1.sol +58 -65
- package/contracts/interfaces/v0.8.x/IAdminACLV0_Extended.sol +20 -0
- package/contracts/interfaces/v0.8.x/IBytecodeStorageReaderV2.sol +23 -0
- package/contracts/interfaces/v0.8.x/ICoreRegistryV1.sol +6 -8
- package/contracts/interfaces/v0.8.x/IDependencyRegistryV0.sol +48 -43
- package/contracts/interfaces/v0.8.x/IEngineFactoryV0.sol +124 -0
- package/contracts/interfaces/v0.8.x/IFilteredMinterDAExpSettlementV0.sol +1 -3
- package/contracts/interfaces/v0.8.x/IFilteredMinterDAExpSettlementV1.sol +1 -3
- package/contracts/interfaces/v0.8.x/IFilteredMinterDAExpV1.sol +1 -3
- package/contracts/interfaces/v0.8.x/IFilteredMinterDALinV1.sol +1 -3
- package/contracts/interfaces/v0.8.x/IFilteredMinterHolderV2.sol +1 -3
- package/contracts/interfaces/v0.8.x/IFilteredMinterMerkleV2.sol +1 -3
- package/contracts/interfaces/v0.8.x/IGenArt721CoreContractV3_Base.sol +115 -11
- package/contracts/interfaces/v0.8.x/IGenArt721CoreContractV3_Engine.sol +84 -8
- package/contracts/interfaces/v0.8.x/IGenArt721CoreContractV3_Engine_Flex.sol +26 -8
- package/contracts/interfaces/v0.8.x/IGenArt721CoreContractV3_Engine_Flex_PreV3p2.sol +141 -0
- package/contracts/interfaces/v0.8.x/IGenArt721CoreContractV3_Engine_PreV3p2.sol +78 -0
- package/contracts/interfaces/v0.8.x/IGenArt721CoreContractV3_ProjectFinance.sol +47 -0
- package/contracts/interfaces/v0.8.x/IGenArt721Minter_PBAB.sol +91 -0
- package/contracts/interfaces/v0.8.x/IMinterFilterV1.sol +25 -25
- package/contracts/interfaces/v0.8.x/IPseudorandomAtomic.sol +1 -3
- package/contracts/interfaces/v0.8.x/ISharedMinterDAExpSettlementV0.sol +30 -20
- package/contracts/interfaces/v0.8.x/ISharedMinterDAExpV0.sol +1 -14
- package/contracts/interfaces/v0.8.x/ISharedMinterDALinV0.sol +1 -15
- package/contracts/interfaces/v0.8.x/ISharedMinterDAV0.sol +2 -8
- package/contracts/interfaces/v0.8.x/ISharedMinterHolderERC20V0.sol +47 -0
- package/contracts/interfaces/v0.8.x/ISharedMinterHolderV0.sol +15 -43
- package/contracts/interfaces/v0.8.x/ISharedMinterMerkleV0.sol +10 -20
- package/contracts/interfaces/v0.8.x/ISharedMinterRAMV0.sol +23 -0
- package/contracts/interfaces/v0.8.x/ISharedMinterRequired.sol +20 -0
- package/contracts/interfaces/v0.8.x/ISharedMinterSEAV0.sol +1 -67
- package/contracts/interfaces/v0.8.x/ISharedMinterSimplePurchaseV0.sol +5 -5
- package/contracts/interfaces/v0.8.x/ISharedMinterV0.sol +18 -160
- package/contracts/interfaces/v0.8.x/ISharedRandomizerV0.sol +37 -37
- package/contracts/interfaces/v0.8.x/ISplitAtomicFactoryV0.sol +81 -0
- package/contracts/interfaces/v0.8.x/ISplitAtomicV0.sol +72 -0
- package/contracts/interfaces/v0.8.x/ISplitProviderV0.sol +49 -0
- package/contracts/interfaces/v0.8.x/integration-refs/splits-0x-v2/ISplitFactoryV2.sol +62 -0
- package/contracts/libs/v0.8.x/ABHelpers.sol +31 -17
- package/contracts/libs/v0.8.x/AuthLib.sol +101 -102
- package/contracts/libs/v0.8.x/BitMap.sol +112 -0
- package/contracts/libs/v0.8.x/BytecodeStorageV2.sol +593 -0
- package/contracts/libs/v0.8.x/Bytes32Strings.sol +5 -5
- package/contracts/libs/v0.8.x/DependencyRegistryStorageLib.sol +90 -0
- package/contracts/libs/v0.8.x/ERC721_PackedHashSeedV1.sol +591 -0
- package/contracts/libs/v0.8.x/PackedBools.sol +42 -0
- package/contracts/libs/v0.8.x/V3FlexLib.sol +591 -0
- package/contracts/libs/v0.8.x/minter-libs/DAExpLib.sol +162 -39
- package/contracts/libs/v0.8.x/minter-libs/DALib.sol +26 -0
- package/contracts/libs/v0.8.x/minter-libs/DALinLib.sol +139 -37
- package/contracts/libs/v0.8.x/minter-libs/GenericMinterEventsLib.sol +171 -0
- package/contracts/libs/v0.8.x/minter-libs/MaxInvocationsLib.sol +299 -158
- package/contracts/libs/v0.8.x/minter-libs/MerkleLib.sol +268 -55
- package/contracts/libs/v0.8.x/minter-libs/PolyptychLib.sol +138 -58
- package/contracts/libs/v0.8.x/minter-libs/RAMLib.sol +2927 -0
- package/contracts/libs/v0.8.x/minter-libs/SEALib.sol +796 -123
- package/contracts/libs/v0.8.x/minter-libs/SetPriceLib.sol +131 -13
- package/contracts/libs/v0.8.x/minter-libs/SettlementExpLib.sol +607 -224
- package/contracts/libs/v0.8.x/minter-libs/SplitFundsLib.sol +494 -330
- package/contracts/libs/v0.8.x/minter-libs/TokenHolderLib.sol +217 -78
- package/contracts/minter-suite/MinterFilter/MinterFilterV2.sol +358 -309
- package/contracts/minter-suite/Minters/MinterDAExpHolderV5.sol +391 -491
- package/contracts/minter-suite/Minters/MinterDAExpSettlementV3.sol +396 -632
- package/contracts/minter-suite/Minters/MinterDAExpV5.sol +212 -273
- package/contracts/minter-suite/Minters/MinterDALinHolderV5.sol +393 -488
- package/contracts/minter-suite/Minters/MinterDALinV5.sol +220 -277
- package/contracts/minter-suite/Minters/MinterRAMV0.sol +1205 -0
- package/contracts/minter-suite/Minters/MinterSEAV1.sol +329 -677
- package/contracts/minter-suite/Minters/MinterSetPriceERC20V5.sol +287 -303
- package/contracts/minter-suite/Minters/MinterSetPriceHolderV5.sol +355 -446
- package/contracts/minter-suite/Minters/MinterSetPriceMerkleV5.sol +328 -416
- package/contracts/minter-suite/Minters/MinterSetPricePolyptychERC20V5.sol +552 -622
- package/contracts/minter-suite/Minters/MinterSetPricePolyptychV5.sol +429 -553
- package/contracts/minter-suite/Minters/MinterSetPriceV5.sol +180 -227
- package/contracts/minter-suite/Minters/one-off/MinterSetPriceV5_SingleCore.sol +446 -0
- package/contracts/mock/BytecodeV2LibCallsMock.sol +128 -0
- package/contracts/mock/BytecodeV2TextCR_DMock.sol +316 -0
- package/contracts/mock/ForceSendMock.sol +22 -0
- package/contracts/mock/GenArt721CoreV3_Engine_IncorrectCoreType.sol +3 -10
- package/contracts/mock/Mock0xSplitsV2PullFactory.sol +75 -0
- package/contracts/mock/Mock0xSplitsV2Splitter.sol +47 -0
- package/contracts/mock/MockAdminACLV0.sol +21 -0
- package/contracts/mock/MockAdminACLV0_PROHIBITION.sol +21 -0
- package/contracts/mock/ReentrancyGenArt721MinterMock.sol +47 -0
- package/contracts/mock/ReentrancyHolderMockShared.sol +59 -0
- package/contracts/mock/ReentrancyMerkleMockShared.sol +58 -0
- package/contracts/mock/ReentrancyMockShared.sol +48 -0
- package/contracts/mock/ReentrancySEAMockShared.sol +40 -0
- package/contracts/mock/ReentrancySplitterMocks.sol +67 -0
- package/contracts/randomizer/primitive/PseudorandomAtomicBasic.sol +1 -1
- package/contracts/randomizer/shared/SharedRandomizerV0.sol +79 -71
- package/contracts/split/SplitAtomicFactoryV0.sol +121 -0
- package/contracts/split/SplitAtomicV0.sol +265 -0
- package/contracts/split/split-provider/SplitProviderV0.sol +201 -0
- package/package.json +79 -45
- package/artifacts/contracts/GenArt721CoreV3.sol/GenArt721CoreV3.json +0 -1965
- package/artifacts/contracts/explorations/GenArt721CoreV3_Explorations.sol/GenArt721CoreV3_Explorations.json +0 -1939
- package/artifacts/contracts/minter-suite/Minters/MinterDAExpSettlementV2.sol/MinterDAExpSettlementV2.json +0 -1127
- package/artifacts/contracts/minter-suite/Minters/MinterSetPriceERC20V4.sol/MinterSetPriceERC20V4.json +0 -768
- package/artifacts/contracts/royalty-registry/GenArt721RoyaltyOverride.sol/GenArt721RoyaltyOverride.json +0 -208
- package/artifacts/contracts/royalty-registry/GenArt721RoyaltyOverride_PBAB.sol/GenArt721RoyaltyOverride_PBAB.json +0 -301
- package/contracts/royalty-registry/GenArt721RoyaltyOverride.sol +0 -168
- package/contracts/royalty-registry/GenArt721RoyaltyOverride_PBAB.sol +0 -221
|
@@ -0,0 +1,62 @@
|
|
|
1
|
+
// SPDX-License-Identifier: LGPL-3.0-only
|
|
2
|
+
// Created By: Art Blocks Inc. to support the 0xSplits V2 integration
|
|
3
|
+
// Sourced from:
|
|
4
|
+
// - https://github.com/0xSplits/splits-contracts-monorepo/blob/main/packages/splits-v2/src/libraries/SplitV2.sol
|
|
5
|
+
// - https://github.com/0xSplits/splits-contracts-monorepo/blob/main/packages/splits-v2/src/splitters/SplitFactoryV2.sol
|
|
6
|
+
|
|
7
|
+
pragma solidity ^0.8.0;
|
|
8
|
+
|
|
9
|
+
interface ISplitFactoryV2 {
|
|
10
|
+
/* -------------------------------------------------------------------------- */
|
|
11
|
+
/* STRUCTS */
|
|
12
|
+
/* -------------------------------------------------------------------------- */
|
|
13
|
+
|
|
14
|
+
/**
|
|
15
|
+
* @notice Split struct
|
|
16
|
+
* @dev This struct is used to store the split information.
|
|
17
|
+
* @dev There are no hard caps on the number of recipients/totalAllocation/allocation unit. Thus the chain and its
|
|
18
|
+
* gas limits will dictate these hard caps. Please double check if the split you are creating can be distributed on
|
|
19
|
+
* the chain.
|
|
20
|
+
* @param recipients The recipients of the split.
|
|
21
|
+
* @param allocations The allocations of the split.
|
|
22
|
+
* @param totalAllocation The total allocation of the split.
|
|
23
|
+
* @param distributionIncentive The incentive for distribution. Limits max incentive to 6.5%.
|
|
24
|
+
*/
|
|
25
|
+
struct Split {
|
|
26
|
+
address[] recipients;
|
|
27
|
+
uint256[] allocations;
|
|
28
|
+
uint256 totalAllocation;
|
|
29
|
+
uint16 distributionIncentive;
|
|
30
|
+
}
|
|
31
|
+
|
|
32
|
+
/* -------------------------------------------------------------------------- */
|
|
33
|
+
/* FUNCTIONS */
|
|
34
|
+
/* -------------------------------------------------------------------------- */
|
|
35
|
+
|
|
36
|
+
/**
|
|
37
|
+
* @notice Create a new split with params and owner.
|
|
38
|
+
* @param _splitParams Params to create split with.
|
|
39
|
+
* @param _owner Owner of created split.
|
|
40
|
+
* @param _creator Creator of created split.
|
|
41
|
+
* @param _salt Salt for create2.
|
|
42
|
+
* @return split Address of the created split.
|
|
43
|
+
*/
|
|
44
|
+
function createSplitDeterministic(
|
|
45
|
+
Split calldata _splitParams,
|
|
46
|
+
address _owner,
|
|
47
|
+
address _creator,
|
|
48
|
+
bytes32 _salt
|
|
49
|
+
) external returns (address split);
|
|
50
|
+
|
|
51
|
+
/**
|
|
52
|
+
* @notice Predict the address of a new split and check if it is deployed.
|
|
53
|
+
* @param _splitParams Params to create split with.
|
|
54
|
+
* @param _owner Owner of created split.
|
|
55
|
+
* @param _salt Salt for create2.
|
|
56
|
+
*/
|
|
57
|
+
function isDeployed(
|
|
58
|
+
Split calldata _splitParams,
|
|
59
|
+
address _owner,
|
|
60
|
+
bytes32 _salt
|
|
61
|
+
) external view returns (address split, bool exists);
|
|
62
|
+
}
|
|
@@ -14,42 +14,56 @@ library ABHelpers {
|
|
|
14
14
|
uint256 constant ONE_MILLION = 1_000_000;
|
|
15
15
|
|
|
16
16
|
/**
|
|
17
|
-
*
|
|
18
|
-
* @param
|
|
17
|
+
* @notice Function to convert token id to project id.
|
|
18
|
+
* @param tokenId The id of the token.
|
|
19
19
|
*/
|
|
20
20
|
function tokenIdToProjectId(
|
|
21
|
-
uint256
|
|
21
|
+
uint256 tokenId
|
|
22
22
|
) internal pure returns (uint256) {
|
|
23
23
|
// int division properly rounds down
|
|
24
|
-
// @dev
|
|
25
|
-
|
|
26
|
-
return _tokenId / ONE_MILLION;
|
|
27
|
-
}
|
|
24
|
+
// @dev no way to disable division by zero check in solidity v0.8.24, so not unchecked
|
|
25
|
+
return tokenId / ONE_MILLION;
|
|
28
26
|
}
|
|
29
27
|
|
|
30
28
|
/**
|
|
31
|
-
*
|
|
32
|
-
* @param
|
|
29
|
+
* @notice Function to convert token id to token number.
|
|
30
|
+
* @param tokenId The id of the token.
|
|
33
31
|
*/
|
|
34
32
|
function tokenIdToTokenNumber(
|
|
35
|
-
uint256
|
|
33
|
+
uint256 tokenId
|
|
36
34
|
) internal pure returns (uint256) {
|
|
37
35
|
// mod returns remainder, which is the token number
|
|
38
36
|
// @dev no way to disable mod zero check in solidity, so not unchecked
|
|
39
|
-
return
|
|
37
|
+
return tokenId % ONE_MILLION;
|
|
38
|
+
}
|
|
39
|
+
|
|
40
|
+
/**
|
|
41
|
+
* @notice Function to convert token id to token invocation.
|
|
42
|
+
* @dev token invocation is the token number plus one, because token #0 is
|
|
43
|
+
* invocation 1.
|
|
44
|
+
* @param tokenId The id of the token.
|
|
45
|
+
*/
|
|
46
|
+
function tokenIdToTokenInvocation(
|
|
47
|
+
uint256 tokenId
|
|
48
|
+
) internal pure returns (uint256) {
|
|
49
|
+
unchecked {
|
|
50
|
+
// mod returns remainder, which is the token number
|
|
51
|
+
// @dev no way to disable mod zero check in solidity, unchecked to optimize gas for addition
|
|
52
|
+
return (tokenId % ONE_MILLION) + 1;
|
|
53
|
+
}
|
|
40
54
|
}
|
|
41
55
|
|
|
42
56
|
/**
|
|
43
|
-
*
|
|
44
|
-
* @param
|
|
45
|
-
* @param
|
|
57
|
+
* @notice Function to convert project id and token number to token id.
|
|
58
|
+
* @param projectId The id of the project.
|
|
59
|
+
* @param tokenNumber The token number.
|
|
46
60
|
*/
|
|
47
61
|
function tokenIdFromProjectIdAndTokenNumber(
|
|
48
|
-
uint256
|
|
49
|
-
uint256
|
|
62
|
+
uint256 projectId,
|
|
63
|
+
uint256 tokenNumber
|
|
50
64
|
) internal pure returns (uint256) {
|
|
51
65
|
// @dev intentionally not unchecked to ensure overflow detection, which
|
|
52
66
|
// would likley only occur in a malicious call
|
|
53
|
-
return (
|
|
67
|
+
return (projectId * ONE_MILLION) + tokenNumber;
|
|
54
68
|
}
|
|
55
69
|
}
|
|
@@ -3,8 +3,8 @@
|
|
|
3
3
|
|
|
4
4
|
pragma solidity ^0.8.0;
|
|
5
5
|
|
|
6
|
-
import "../../interfaces/v0.8.x/IGenArt721CoreContractV3_Base.sol";
|
|
7
|
-
import "../../interfaces/v0.8.x/IMinterFilterV1.sol";
|
|
6
|
+
import {IGenArt721CoreContractV3_Base} from "../../interfaces/v0.8.x/IGenArt721CoreContractV3_Base.sol";
|
|
7
|
+
import {IMinterFilterV1} from "../../interfaces/v0.8.x/IMinterFilterV1.sol";
|
|
8
8
|
|
|
9
9
|
/**
|
|
10
10
|
* @title Art Blocks Authorization Minter Library
|
|
@@ -16,111 +16,110 @@ import "../../interfaces/v0.8.x/IMinterFilterV1.sol";
|
|
|
16
16
|
|
|
17
17
|
library AuthLib {
|
|
18
18
|
/**
|
|
19
|
-
*
|
|
19
|
+
* @notice Function to restrict access to only AdminACL allowed calls, where
|
|
20
20
|
* AdminACL is the admin of an IMinterFilterV1.
|
|
21
21
|
* Reverts if not allowed.
|
|
22
|
-
* @param
|
|
22
|
+
* @param minterFilterAddress address of the minter filter to be checked,
|
|
23
23
|
* should implement IMinterFilterV1
|
|
24
|
-
* @param
|
|
25
|
-
* @param
|
|
26
|
-
* @param
|
|
24
|
+
* @param sender address of the caller
|
|
25
|
+
* @param contract_ address of the contract being called
|
|
26
|
+
* @param selector selector of the function being called
|
|
27
27
|
*/
|
|
28
28
|
function onlyMinterFilterAdminACL(
|
|
29
|
-
address
|
|
30
|
-
address
|
|
31
|
-
address
|
|
32
|
-
bytes4
|
|
29
|
+
address minterFilterAddress,
|
|
30
|
+
address sender,
|
|
31
|
+
address contract_,
|
|
32
|
+
bytes4 selector
|
|
33
33
|
) internal {
|
|
34
34
|
require(
|
|
35
35
|
_minterFilterAdminACLAllowed({
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
36
|
+
minterFilterAddress: minterFilterAddress,
|
|
37
|
+
sender: sender,
|
|
38
|
+
contract_: contract_,
|
|
39
|
+
selector: selector
|
|
40
40
|
}),
|
|
41
41
|
"Only MinterFilter AdminACL"
|
|
42
42
|
);
|
|
43
43
|
}
|
|
44
44
|
|
|
45
45
|
/**
|
|
46
|
-
* Function to restrict access to only AdminACL allowed calls, where
|
|
47
|
-
* AdminACL is the admin of a core contract at `
|
|
46
|
+
* @notice Function to restrict access to only AdminACL allowed calls, where
|
|
47
|
+
* AdminACL is the admin of a core contract at `coreContract`.
|
|
48
48
|
* Reverts if not allowed.
|
|
49
|
-
* @param
|
|
50
|
-
* @param
|
|
51
|
-
* @param
|
|
52
|
-
* @param
|
|
49
|
+
* @param coreContract address of the core contract to be checked
|
|
50
|
+
* @param sender address of the caller
|
|
51
|
+
* @param contract_ address of the contract being called
|
|
52
|
+
* @param selector selector of the function being called
|
|
53
53
|
*/
|
|
54
54
|
function onlyCoreAdminACL(
|
|
55
|
-
address
|
|
56
|
-
address
|
|
57
|
-
address
|
|
58
|
-
bytes4
|
|
55
|
+
address coreContract,
|
|
56
|
+
address sender,
|
|
57
|
+
address contract_,
|
|
58
|
+
bytes4 selector
|
|
59
59
|
) internal {
|
|
60
60
|
require(
|
|
61
61
|
_coreAdminACLAllowed({
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
62
|
+
coreContract: coreContract,
|
|
63
|
+
sender: sender,
|
|
64
|
+
contract_: contract_,
|
|
65
|
+
selector: selector
|
|
66
66
|
}),
|
|
67
67
|
"Only Core AdminACL allowed"
|
|
68
68
|
);
|
|
69
69
|
}
|
|
70
70
|
|
|
71
71
|
/**
|
|
72
|
-
* @notice Throws if `
|
|
73
|
-
* specified project `
|
|
74
|
-
*
|
|
75
|
-
*
|
|
76
|
-
* @param _projectId The ID of the project being checked.
|
|
77
|
-
* @param _coreContract The address of the GenArt721CoreContractV3_Base
|
|
72
|
+
* @notice Throws if `sender` is any account other than the artist of the
|
|
73
|
+
* specified project `projectId` on core contract `coreContract`.
|
|
74
|
+
* @param projectId The ID of the project being checked.
|
|
75
|
+
* @param coreContract The address of the GenArt721CoreContractV3_Base
|
|
78
76
|
* contract.
|
|
79
|
-
* @param
|
|
77
|
+
* @param sender Wallet to check. Typically, the address of the caller.
|
|
78
|
+
* @dev `sender` must be the artist associated with `projectId` on `coreContract`.
|
|
80
79
|
*/
|
|
81
80
|
function onlyArtist(
|
|
82
|
-
uint256
|
|
83
|
-
address
|
|
84
|
-
address
|
|
81
|
+
uint256 projectId,
|
|
82
|
+
address coreContract,
|
|
83
|
+
address sender
|
|
85
84
|
) internal view {
|
|
86
85
|
require(
|
|
87
86
|
_senderIsArtist({
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
87
|
+
projectId: projectId,
|
|
88
|
+
coreContract: coreContract,
|
|
89
|
+
sender: sender
|
|
91
90
|
}),
|
|
92
91
|
"Only Artist"
|
|
93
92
|
);
|
|
94
93
|
}
|
|
95
94
|
|
|
96
95
|
/**
|
|
97
|
-
*
|
|
96
|
+
* @notice Function to restrict access to only the artist of a project, or AdminACL
|
|
98
97
|
* allowed calls, where AdminACL is the admin of a core contract at
|
|
99
|
-
* `
|
|
100
|
-
* @param
|
|
101
|
-
* @param
|
|
102
|
-
* @param
|
|
103
|
-
* @param
|
|
104
|
-
* @param
|
|
98
|
+
* `coreContract`.
|
|
99
|
+
* @param projectId id of the project
|
|
100
|
+
* @param coreContract address of the core contract to be checked
|
|
101
|
+
* @param sender address of the caller
|
|
102
|
+
* @param contract_ address of the contract being called
|
|
103
|
+
* @param selector selector of the function being called
|
|
105
104
|
*/
|
|
106
105
|
function onlyCoreAdminACLOrArtist(
|
|
107
|
-
uint256
|
|
108
|
-
address
|
|
109
|
-
address
|
|
110
|
-
address
|
|
111
|
-
bytes4
|
|
106
|
+
uint256 projectId,
|
|
107
|
+
address coreContract,
|
|
108
|
+
address sender,
|
|
109
|
+
address contract_,
|
|
110
|
+
bytes4 selector
|
|
112
111
|
) internal {
|
|
113
112
|
require(
|
|
114
113
|
_senderIsArtist({
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
114
|
+
projectId: projectId,
|
|
115
|
+
coreContract: coreContract,
|
|
116
|
+
sender: sender
|
|
118
117
|
}) ||
|
|
119
118
|
_coreAdminACLAllowed({
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
119
|
+
coreContract: coreContract,
|
|
120
|
+
sender: sender,
|
|
121
|
+
contract_: contract_,
|
|
122
|
+
selector: selector
|
|
124
123
|
}),
|
|
125
124
|
"Only Artist or Core Admin ACL"
|
|
126
125
|
);
|
|
@@ -131,67 +130,67 @@ library AuthLib {
|
|
|
131
130
|
// ------------------------------------------------------------------------
|
|
132
131
|
|
|
133
132
|
/**
|
|
134
|
-
* Private function that returns if minter filter contract's AdminACL
|
|
135
|
-
* allows `
|
|
136
|
-
* `
|
|
137
|
-
* @param
|
|
133
|
+
* @notice Private function that returns if minter filter contract's AdminACL
|
|
134
|
+
* allows `sender` to call function with selector `selector` on contract
|
|
135
|
+
* `contract`.
|
|
136
|
+
* @param minterFilterAddress address of the minter filter to be checked.
|
|
138
137
|
* Should implement IMinterFilterV1.
|
|
139
|
-
* @param
|
|
140
|
-
* @param
|
|
141
|
-
* @param
|
|
138
|
+
* @param sender address of the caller
|
|
139
|
+
* @param contract_ address of the contract being called
|
|
140
|
+
* @param selector selector of the function being called
|
|
142
141
|
*/
|
|
143
142
|
function _minterFilterAdminACLAllowed(
|
|
144
|
-
address
|
|
145
|
-
address
|
|
146
|
-
address
|
|
147
|
-
bytes4
|
|
143
|
+
address minterFilterAddress,
|
|
144
|
+
address sender,
|
|
145
|
+
address contract_,
|
|
146
|
+
bytes4 selector
|
|
148
147
|
) private returns (bool) {
|
|
149
148
|
return
|
|
150
|
-
IMinterFilterV1(
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
|
|
149
|
+
IMinterFilterV1(minterFilterAddress).adminACLAllowed({
|
|
150
|
+
sender: sender,
|
|
151
|
+
contract_: contract_,
|
|
152
|
+
selector: selector
|
|
154
153
|
});
|
|
155
154
|
}
|
|
156
155
|
|
|
157
156
|
/**
|
|
158
|
-
* Private function that returns if core contract's AdminACL allows
|
|
159
|
-
* `
|
|
160
|
-
* `
|
|
161
|
-
* @param
|
|
162
|
-
* @param
|
|
163
|
-
* @param
|
|
164
|
-
* @param
|
|
157
|
+
* @notice Private function that returns if core contract's AdminACL allows
|
|
158
|
+
* `sender` to call function with selector `selector` on contract
|
|
159
|
+
* `contract`.
|
|
160
|
+
* @param coreContract address of the core contract to be checked
|
|
161
|
+
* @param sender address of the caller
|
|
162
|
+
* @param contract_ address of the contract being called
|
|
163
|
+
* @param selector selector of the function being called
|
|
165
164
|
*/
|
|
166
165
|
function _coreAdminACLAllowed(
|
|
167
|
-
address
|
|
168
|
-
address
|
|
169
|
-
address
|
|
170
|
-
bytes4
|
|
166
|
+
address coreContract,
|
|
167
|
+
address sender,
|
|
168
|
+
address contract_,
|
|
169
|
+
bytes4 selector
|
|
171
170
|
) private returns (bool) {
|
|
172
171
|
return
|
|
173
|
-
IGenArt721CoreContractV3_Base(
|
|
174
|
-
_sender:
|
|
175
|
-
_contract:
|
|
176
|
-
_selector:
|
|
172
|
+
IGenArt721CoreContractV3_Base(coreContract).adminACLAllowed({
|
|
173
|
+
_sender: sender,
|
|
174
|
+
_contract: contract_,
|
|
175
|
+
_selector: selector
|
|
177
176
|
});
|
|
178
177
|
}
|
|
179
178
|
|
|
180
179
|
/**
|
|
181
|
-
* Private function that returns if `
|
|
182
|
-
* on `
|
|
183
|
-
* @param
|
|
184
|
-
* @param
|
|
185
|
-
* @param
|
|
180
|
+
* @notice Private function that returns if `sender` is the artist of `projectId`
|
|
181
|
+
* on `coreContract`.
|
|
182
|
+
* @param projectId project ID to check
|
|
183
|
+
* @param coreContract core contract to check
|
|
184
|
+
* @param sender wallet to check
|
|
186
185
|
*/
|
|
187
186
|
function _senderIsArtist(
|
|
188
|
-
uint256
|
|
189
|
-
address
|
|
190
|
-
address
|
|
187
|
+
uint256 projectId,
|
|
188
|
+
address coreContract,
|
|
189
|
+
address sender
|
|
191
190
|
) private view returns (bool senderIsArtist) {
|
|
192
191
|
return
|
|
193
|
-
|
|
194
|
-
IGenArt721CoreContractV3_Base(
|
|
195
|
-
.projectIdToArtistAddress(
|
|
192
|
+
sender ==
|
|
193
|
+
IGenArt721CoreContractV3_Base(coreContract)
|
|
194
|
+
.projectIdToArtistAddress(projectId);
|
|
196
195
|
}
|
|
197
196
|
}
|
|
@@ -0,0 +1,112 @@
|
|
|
1
|
+
// SPDX-License-Identifier: LGPL-3.0-only
|
|
2
|
+
// Created By: Art Blocks Inc.
|
|
3
|
+
|
|
4
|
+
pragma solidity ^0.8.0;
|
|
5
|
+
|
|
6
|
+
/**
|
|
7
|
+
* @dev Library for using uint256 as a mapping to 256 bool values via a bit map.
|
|
8
|
+
* This is useful for storing a large number of bool values in a compact way.
|
|
9
|
+
* @dev This implementation is similar to OpenZeppelin's BitMaps library, but a
|
|
10
|
+
* single uint256 is used directly in memory instead of operating within a
|
|
11
|
+
* a mapping within a storage struct.
|
|
12
|
+
* This design limits the number of indices to 256, but is more gas efficient
|
|
13
|
+
* for use cases that fit within that limit. This is especially true for
|
|
14
|
+
* operations that require many reads/writes, since SLOAD/SSTORE can be managed
|
|
15
|
+
* outside of the library.
|
|
16
|
+
*/
|
|
17
|
+
library BitMaps256 {
|
|
18
|
+
/**
|
|
19
|
+
* @notice Checks if the bit at a specific index in the bit map is set.
|
|
20
|
+
* A bit is considered set if it is 1, and unset if it is 0.
|
|
21
|
+
* @param bitMap BitMap to check.
|
|
22
|
+
* @param index The index of the bit to check.
|
|
23
|
+
* @return Indicating if the bit at the specified index is set, false otherwise.
|
|
24
|
+
*/
|
|
25
|
+
function get(uint256 bitMap, uint8 index) internal pure returns (bool) {
|
|
26
|
+
uint256 mask = 1 << index;
|
|
27
|
+
return bitMap & mask != 0;
|
|
28
|
+
}
|
|
29
|
+
|
|
30
|
+
/**
|
|
31
|
+
* @notice Sets the bit at a specific index in the bit map to 1.
|
|
32
|
+
* This function creates a new bit map where the bit at the specified index is set,
|
|
33
|
+
* leaving other bits unchanged.
|
|
34
|
+
* @param bitMap The original BitMap.
|
|
35
|
+
* @param index The index of the bit to set.
|
|
36
|
+
* @return newBitMap The new bit map after setting the bit at the specified index.
|
|
37
|
+
*/
|
|
38
|
+
function set(
|
|
39
|
+
uint256 bitMap,
|
|
40
|
+
uint8 index
|
|
41
|
+
) internal pure returns (uint256 newBitMap) {
|
|
42
|
+
uint256 mask = 1 << index;
|
|
43
|
+
return bitMap | mask;
|
|
44
|
+
}
|
|
45
|
+
|
|
46
|
+
/**
|
|
47
|
+
* @notice Unsets the bit at a specific index in the bit map, setting it to 0.
|
|
48
|
+
* This function creates a new bit map where the bit at the specified index is unset,
|
|
49
|
+
* leaving other bits unchanged.
|
|
50
|
+
* @param bitMap The original BitMap.
|
|
51
|
+
* @param index The index of the bit to unset.
|
|
52
|
+
* @return newBitMap The new bit map after unsetting the bit at the specified index.
|
|
53
|
+
*/
|
|
54
|
+
function unset(
|
|
55
|
+
uint256 bitMap,
|
|
56
|
+
uint8 index
|
|
57
|
+
) internal pure returns (uint256 newBitMap) {
|
|
58
|
+
uint256 mask = 1 << index;
|
|
59
|
+
return bitMap & ~mask;
|
|
60
|
+
}
|
|
61
|
+
|
|
62
|
+
/**
|
|
63
|
+
* @notice Finds the index of the first bit that is set in the bit map
|
|
64
|
+
* starting from a given index.
|
|
65
|
+
* Returns (255, false) if no set bits were found.
|
|
66
|
+
* @param bitMap BitMap to search
|
|
67
|
+
* @param startIndex Index to start searching from, inclusive
|
|
68
|
+
* @return minIndex Index of first set bit, or 255 if no bits were found
|
|
69
|
+
* @return foundSetBit True if a set bit was found, false otherwise
|
|
70
|
+
*/
|
|
71
|
+
function minBitSet(
|
|
72
|
+
uint256 bitMap,
|
|
73
|
+
uint8 startIndex
|
|
74
|
+
) internal pure returns (uint256 minIndex, bool foundSetBit) {
|
|
75
|
+
// check if there's any set bit at or above startIndex
|
|
76
|
+
if ((bitMap >> startIndex) == 0) {
|
|
77
|
+
return (255, false);
|
|
78
|
+
}
|
|
79
|
+
minIndex = startIndex;
|
|
80
|
+
// @dev this is a linear search, optimized to start only if there's a set bit at or above startIndex
|
|
81
|
+
// worst case 255 iterations in memory
|
|
82
|
+
while (minIndex < 255 && !get(bitMap, uint8(minIndex))) {
|
|
83
|
+
minIndex++;
|
|
84
|
+
}
|
|
85
|
+
foundSetBit = get(bitMap, uint8(minIndex));
|
|
86
|
+
}
|
|
87
|
+
|
|
88
|
+
/**
|
|
89
|
+
* @notice Finds the index of the highest bit that is set in the bit map
|
|
90
|
+
* starting from a given index and counting down.
|
|
91
|
+
* Returns (0, false) if no set bits were found.
|
|
92
|
+
* @param bitMap BitMap to search
|
|
93
|
+
* @param startIndex Index to start searching from, inclusive
|
|
94
|
+
* @return maxIndex Index of last set bit, or 0 if no bits were found
|
|
95
|
+
* @return foundSetBit True if a set bit was found, false otherwise
|
|
96
|
+
*/
|
|
97
|
+
function maxBitSet(
|
|
98
|
+
uint256 bitMap,
|
|
99
|
+
uint8 startIndex
|
|
100
|
+
) internal pure returns (uint256 maxIndex, bool foundSetBit) {
|
|
101
|
+
if ((bitMap << (255 - startIndex)) == 0) {
|
|
102
|
+
return (0, false);
|
|
103
|
+
}
|
|
104
|
+
|
|
105
|
+
maxIndex = startIndex;
|
|
106
|
+
// @dev this is a linear search, worst case 255 iterations in memory
|
|
107
|
+
while (maxIndex > 0 && !get(bitMap, uint8(maxIndex))) {
|
|
108
|
+
maxIndex--;
|
|
109
|
+
}
|
|
110
|
+
foundSetBit = get(bitMap, uint8(maxIndex));
|
|
111
|
+
}
|
|
112
|
+
}
|