@artblocks/contracts 1.0.3 → 1.1.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 +32 -25
- package/artifacts/contracts/AdminACLV0.sol/AdminACLV0.json +2 -2
- package/artifacts/contracts/AdminACLV1.sol/AdminACLV1.json +2 -2
- package/artifacts/contracts/DependencyRegistryV0.sol/DependencyRegistryV0.json +212 -17
- package/artifacts/contracts/GenArt721CoreV3.sol/GenArt721CoreV3.json +6 -6
- package/artifacts/contracts/archive/minter-suite/Minters/MinterDAExp/MinterDAExpV0.sol/MinterDAExpV0.json +2 -2
- package/artifacts/contracts/archive/minter-suite/Minters/MinterDAExp/MinterDAExpV1.sol/MinterDAExpV1.json +2 -2
- package/artifacts/contracts/archive/minter-suite/Minters/MinterDAExp/MinterDAExpV2.sol/MinterDAExpV2.json +2 -2
- package/artifacts/contracts/archive/minter-suite/Minters/MinterDAExp/MinterDAExpV3.sol/MinterDAExpV3.json +2 -2
- package/artifacts/contracts/archive/minter-suite/Minters/MinterDAExpSettlement/MinterDAExpSettlementV0.sol/MinterDAExpSettlementV0.json +2 -2
- package/artifacts/contracts/archive/minter-suite/Minters/MinterDAExpSettlement/MinterDAExpSettlementV1.sol/MinterDAExpSettlementV1.json +2 -2
- package/artifacts/contracts/archive/minter-suite/Minters/MinterDALin/MinterDALinV0.sol/MinterDALinV0.json +2 -2
- package/artifacts/contracts/archive/minter-suite/Minters/MinterDALin/MinterDALinV1.sol/MinterDALinV1.json +2 -2
- package/artifacts/contracts/archive/minter-suite/Minters/MinterDALin/MinterDALinV2.sol/MinterDALinV2.json +2 -2
- package/artifacts/contracts/archive/minter-suite/Minters/MinterDALin/MinterDALinV3.sol/MinterDALinV3.json +2 -2
- package/artifacts/contracts/archive/minter-suite/Minters/MinterHolder/MinterHolderV0.sol/MinterHolderV0.json +2 -2
- package/artifacts/contracts/archive/minter-suite/Minters/MinterHolder/MinterHolderV1.sol/MinterHolderV1.json +2 -2
- package/artifacts/contracts/archive/minter-suite/Minters/MinterHolder/MinterHolderV2.sol/MinterHolderV2.json +2 -2
- package/artifacts/contracts/archive/minter-suite/Minters/MinterHolder/MinterHolderV3.sol/MinterHolderV3.json +2 -2
- package/artifacts/contracts/archive/minter-suite/Minters/MinterMerkle/MinterMerkleV0.sol/MinterMerkleV0.json +2 -2
- package/artifacts/contracts/archive/minter-suite/Minters/MinterMerkle/MinterMerkleV1.sol/MinterMerkleV1.json +2 -2
- package/artifacts/contracts/archive/minter-suite/Minters/MinterMerkle/MinterMerkleV2.sol/MinterMerkleV2.json +2 -2
- package/artifacts/contracts/archive/minter-suite/Minters/MinterMerkle/MinterMerkleV3.sol/MinterMerkleV3.json +2 -2
- package/artifacts/contracts/archive/minter-suite/Minters/MinterMerkle/MinterMerkleV4.sol/MinterMerkleV4.json +2 -2
- package/artifacts/contracts/archive/minter-suite/Minters/MinterSetPrice/MinterSetPriceV0.sol/MinterSetPriceV0.json +2 -2
- package/artifacts/contracts/archive/minter-suite/Minters/MinterSetPrice/MinterSetPriceV1.sol/MinterSetPriceV1.json +2 -2
- package/artifacts/contracts/archive/minter-suite/Minters/MinterSetPrice/MinterSetPriceV2.sol/MinterSetPriceV2.json +2 -2
- package/artifacts/contracts/archive/minter-suite/Minters/MinterSetPrice/MinterSetPriceV3.sol/MinterSetPriceV3.json +2 -2
- package/artifacts/contracts/archive/minter-suite/Minters/MinterSetPriceERC20/MinterSetPriceERC20V0.sol/MinterSetPriceERC20V0.json +2 -2
- package/artifacts/contracts/archive/minter-suite/Minters/MinterSetPriceERC20/MinterSetPriceERC20V1.sol/MinterSetPriceERC20V1.json +2 -2
- package/artifacts/contracts/archive/minter-suite/Minters/MinterSetPriceERC20/MinterSetPriceERC20V2.sol/MinterSetPriceERC20V2.json +2 -2
- package/artifacts/contracts/archive/minter-suite/Minters/MinterSetPriceERC20/MinterSetPriceERC20V3.sol/MinterSetPriceERC20V3.json +2 -2
- package/artifacts/contracts/engine/V2/GenArt721CoreV2_ENGINE_FLEX.sol/GenArt721CoreV2_ENGINE_FLEX.json +2 -2
- package/artifacts/contracts/engine/V2/GenArt721CoreV2_PBAB.sol/GenArt721CoreV2_PBAB.json +2 -2
- package/artifacts/contracts/engine/V2/GenArt721CoreV2_PRTNR.sol/GenArt721CoreV2_PRTNR.json +2 -2
- package/artifacts/contracts/engine/V2/GenArt721MinterBurner_PBAB.sol/GenArt721MinterBurner_PBAB.json +2 -2
- package/artifacts/contracts/engine/V2/GenArt721MinterDAExp_PBAB.sol/GenArt721MinterDAExp_PBAB.json +2 -2
- package/artifacts/contracts/engine/V2/GenArt721Minter_PBAB.sol/GenArt721Minter_PBAB.json +2 -2
- package/artifacts/contracts/engine/V3/GenArt721CoreV3_Engine.sol/GenArt721CoreV3_Engine.json +6 -11
- package/artifacts/contracts/engine/V3/GenArt721CoreV3_Engine_Flex.sol/GenArt721CoreV3_Engine_Flex.json +6 -11
- package/artifacts/contracts/engine/V3/forks/GenArt721CoreV3_Engine_Flex_PROOF.sol/GenArt721CoreV3_Engine_Flex_PROOF.json +6 -11
- package/artifacts/contracts/engine/V3/forks/PROHIBITION/AdminACLV0_PROHIBITION.sol/AdminACLV0_PROHIBITION.json +2 -2
- package/artifacts/contracts/engine/V3/forks/PROHIBITION/GenArt721CoreV3_Engine_Flex_PROHIBITION.sol/GenArt721CoreV3_Engine_Flex_PROHIBITION.json +6 -11
- package/artifacts/contracts/engine-registry/CoreRegistryV1.sol/CoreRegistryV1.json +12 -12
- package/artifacts/contracts/engine-registry/EngineRegistryV0.sol/EngineRegistryV0.json +2 -2
- package/artifacts/contracts/explorations/GenArt721CoreV3_Explorations.sol/GenArt721CoreV3_Explorations.json +6 -6
- package/artifacts/contracts/interfaces/{0.5.x → v0.5.x}/IBonusContract.sol/IBonusContract.json +1 -1
- package/artifacts/contracts/interfaces/{0.5.x → v0.5.x}/IGenArt721CoreContractV1.sol/IGenArt721CoreContractV1.json +1 -1
- package/artifacts/contracts/interfaces/{0.5.x → v0.5.x}/IGenArt721CoreV2_PBAB.sol/IGenArt721CoreV2_PBAB.json +1 -1
- package/artifacts/contracts/interfaces/{0.5.x → v0.5.x}/IRandomizer.sol/IRandomizer.json +1 -1
- package/artifacts/contracts/interfaces/{0.8.x → v0.8.x}/IAdminACLV0.sol/IAdminACLV0.json +1 -1
- package/artifacts/contracts/interfaces/{0.8.x → v0.8.x}/IArtblocksRoyaltyOverride.sol/IArtblocksRoyaltyOverride.json +1 -1
- package/artifacts/contracts/interfaces/{0.8.x → v0.8.x}/IBonusContract.sol/IBonusContract.json +1 -1
- package/artifacts/contracts/interfaces/{0.8.x → v0.8.x}/IBytecodeStorageReader.sol/IBytecodeStorageReader.json +1 -1
- package/artifacts/contracts/interfaces/{0.8.x → v0.8.x}/ICoreRegistryV1.sol/ICoreRegistryV1.json +7 -7
- 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 +22 -3
- package/artifacts/contracts/interfaces/{0.8.x → v0.8.x}/IEngineRegistryV0.sol/IEngineRegistryV0.json +1 -1
- package/artifacts/contracts/interfaces/{0.8.x → v0.8.x}/IFilteredMinterDAExpSettlementV0.sol/IFilteredMinterDAExpSettlementV0.json +1 -1
- package/artifacts/contracts/interfaces/{0.8.x → v0.8.x}/IFilteredMinterDAExpSettlementV1.sol/IFilteredMinterDAExpSettlementV1.json +1 -1
- package/artifacts/contracts/interfaces/{0.8.x → v0.8.x}/IFilteredMinterDAExpSettlement_Mixin.sol/IFilteredMinterDAExpSettlement_Mixin.json +1 -1
- package/artifacts/contracts/interfaces/{0.8.x → v0.8.x}/IFilteredMinterDAExpV0.sol/IFilteredMinterDAExpV0.json +1 -1
- package/artifacts/contracts/interfaces/{0.8.x → v0.8.x}/IFilteredMinterDAExpV1.sol/IFilteredMinterDAExpV1.json +1 -1
- package/artifacts/contracts/interfaces/{0.8.x → v0.8.x}/IFilteredMinterDALinV0.sol/IFilteredMinterDALinV0.json +1 -1
- package/artifacts/contracts/interfaces/{0.8.x → v0.8.x}/IFilteredMinterDALinV1.sol/IFilteredMinterDALinV1.json +1 -1
- package/artifacts/contracts/interfaces/{0.8.x → v0.8.x}/IFilteredMinterHolderV0.sol/IFilteredMinterHolderV0.json +1 -1
- package/artifacts/contracts/interfaces/{0.8.x → v0.8.x}/IFilteredMinterHolderV1.sol/IFilteredMinterHolderV1.json +1 -1
- package/artifacts/contracts/interfaces/{0.8.x → v0.8.x}/IFilteredMinterHolderV2.sol/IFilteredMinterHolderV2.json +1 -1
- package/artifacts/contracts/interfaces/{0.8.x → v0.8.x}/IFilteredMinterMerkleV0.sol/IFilteredMinterMerkleV0.json +1 -1
- package/artifacts/contracts/interfaces/{0.8.x → v0.8.x}/IFilteredMinterMerkleV1.sol/IFilteredMinterMerkleV1.json +1 -1
- package/artifacts/contracts/interfaces/{0.8.x → v0.8.x}/IFilteredMinterMerkleV2.sol/IFilteredMinterMerkleV2.json +1 -1
- package/artifacts/contracts/interfaces/{0.8.x → v0.8.x}/IFilteredMinterSEAV0.sol/IFilteredMinterSEAV0.json +1 -1
- package/artifacts/contracts/interfaces/{0.8.x → v0.8.x}/IFilteredMinterV0.sol/IFilteredMinterV0.json +1 -1
- package/artifacts/contracts/interfaces/{0.8.x → v0.8.x}/IFilteredMinterV1.sol/IFilteredMinterV1.json +1 -1
- package/artifacts/contracts/interfaces/{0.8.x → v0.8.x}/IFilteredMinterV2.sol/IFilteredMinterV2.json +1 -1
- package/artifacts/contracts/interfaces/{0.8.x → v0.8.x}/IGenArt721CoreContractExposesHashSeed.sol/IGenArt721CoreContractExposesHashSeed.json +1 -1
- package/artifacts/contracts/interfaces/{0.8.x → v0.8.x}/IGenArt721CoreContractV1.sol/IGenArt721CoreContractV1.json +1 -1
- package/artifacts/contracts/interfaces/{0.8.x → v0.8.x}/IGenArt721CoreContractV3.sol/IGenArt721CoreContractV3.json +1 -1
- package/artifacts/contracts/interfaces/v0.8.x/IGenArt721CoreContractV3WithSharedRandomizer.sol/IGenArt721CoreContractV3WithSharedRandomizer.json +24 -0
- package/artifacts/contracts/interfaces/{0.8.x → v0.8.x}/IGenArt721CoreContractV3_Base.sol/IGenArt721CoreContractV3_Base.json +1 -1
- package/artifacts/contracts/interfaces/{0.8.x → v0.8.x}/IGenArt721CoreContractV3_Engine.sol/IGenArt721CoreContractV3_Engine.json +1 -1
- package/artifacts/contracts/interfaces/{0.8.x → v0.8.x}/IGenArt721CoreContractV3_Engine_Flex.sol/IGenArt721CoreContractV3_Engine_Flex.json +1 -1
- package/artifacts/contracts/interfaces/{0.8.x → v0.8.x}/IGenArt721CoreV2_PBAB.sol/IGenArt721CoreV2_PBAB.json +1 -1
- package/artifacts/contracts/interfaces/{0.8.x → v0.8.x}/IManifold.sol/IManifold.json +1 -1
- package/artifacts/contracts/interfaces/{0.8.x → v0.8.x}/IMinterBaseV0.sol/IMinterBaseV0.json +1 -1
- package/artifacts/contracts/interfaces/{0.8.x → v0.8.x}/IMinterFilterV0.sol/IMinterFilterV0.json +1 -1
- package/artifacts/contracts/interfaces/{0.8.x → v0.8.x}/IMinterFilterV1.sol/IMinterFilterV1.json +104 -19
- package/artifacts/contracts/interfaces/{0.8.x → v0.8.x}/IMintingAPICoreV0.sol/IMintingAPICoreV0.json +1 -1
- package/artifacts/contracts/interfaces/{0.8.x → v0.8.x}/IMintingAPIMinterV0.sol/IMintingAPIMinterV0.json +1 -1
- package/artifacts/contracts/interfaces/{0.8.x → v0.8.x}/IPseudorandomAtomic.sol/IPseudorandomAtomic.json +1 -1
- package/artifacts/contracts/interfaces/{0.8.x → v0.8.x}/IRandomizer.sol/IRandomizer.json +1 -1
- package/artifacts/contracts/interfaces/{0.8.x → v0.8.x}/IRandomizerPolyptychV0.sol/IRandomizerPolyptychV0.json +1 -1
- package/artifacts/contracts/interfaces/{0.8.x → v0.8.x}/IRandomizerV2.sol/IRandomizerV2.json +1 -1
- package/artifacts/contracts/interfaces/{0.8.x → v0.8.x}/IRandomizer_V3CoreBase.sol/IRandomizer_V3CoreBase.json +1 -1
- package/artifacts/contracts/interfaces/v0.8.x/ISharedMinterDAExpSettlementV0.sol/ISharedMinterDAExpSettlementV0.json +114 -0
- package/artifacts/contracts/interfaces/v0.8.x/ISharedMinterDAExpV0.sol/ISharedMinterDAExpV0.json +37 -0
- package/artifacts/contracts/interfaces/v0.8.x/ISharedMinterDALinV0.sol/ISharedMinterDALinV0.json +37 -0
- package/artifacts/contracts/interfaces/v0.8.x/ISharedMinterDAV0.sol/ISharedMinterDAV0.json +50 -0
- package/artifacts/contracts/interfaces/v0.8.x/ISharedMinterHolderERC20V0.sol/ISharedMinterHolderERC20V0.json +158 -0
- package/artifacts/contracts/interfaces/v0.8.x/ISharedMinterHolderV0.sol/ISharedMinterHolderV0.json +128 -0
- package/artifacts/contracts/interfaces/v0.8.x/ISharedMinterMerkleV0.sol/ISharedMinterMerkleV0.json +97 -0
- package/artifacts/contracts/interfaces/v0.8.x/ISharedMinterSEAV0.sol/ISharedMinterSEAV0.json +29 -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 +117 -0
- package/artifacts/contracts/interfaces/{0.8.x → v0.8.x}/ISharedRandomizerV0.sol/ISharedRandomizerV0.json +52 -36
- package/artifacts/contracts/interfaces/{0.8.x → v0.8.x}/IWETH.sol/IWETH.json +1 -1
- package/artifacts/contracts/legacy/GenArt721CoreV1.sol/Address.json +2 -2
- package/artifacts/contracts/legacy/GenArt721CoreV1.sol/Counters.json +2 -2
- package/artifacts/contracts/legacy/GenArt721CoreV1.sol/CustomERC721Metadata.json +2 -2
- package/artifacts/contracts/legacy/GenArt721CoreV1.sol/ERC721.json +2 -2
- package/artifacts/contracts/legacy/GenArt721CoreV1.sol/ERC721Enumerable.json +2 -2
- package/artifacts/contracts/legacy/GenArt721CoreV1.sol/GenArt721CoreV1.json +2 -2
- package/artifacts/contracts/legacy/GenArt721CoreV1.sol/SafeMath.json +2 -2
- package/artifacts/contracts/legacy/GenArt721CoreV1.sol/Strings.json +2 -2
- package/artifacts/contracts/legacy/GenArt721LegacyMinter.sol/GenArt721LegacyMinter.json +2 -2
- package/artifacts/contracts/libs/integration-refs/delegation-registry/DelegationRegistry.sol/DelegationRegistry.json +2 -2
- package/artifacts/contracts/libs/{0.5.x → v0.5.x}/CustomERC721Metadata.sol/CustomERC721Metadata.json +3 -3
- package/artifacts/contracts/libs/{0.5.x → v0.5.x}/IERC20.sol/IERC20.json +1 -1
- package/artifacts/contracts/libs/{0.5.x → v0.5.x}/SafeMath.sol/SafeMath.json +3 -3
- package/artifacts/contracts/libs/{0.5.x → v0.5.x}/Strings.sol/Strings.json +3 -3
- package/artifacts/contracts/libs/v0.8.x/ABHelpers.sol/ABHelpers.json +10 -0
- package/artifacts/contracts/libs/v0.8.x/AuthLib.sol/AuthLib.json +10 -0
- package/artifacts/contracts/libs/{0.8.x → v0.8.x}/BytecodeStorageV0.sol/BytecodeStorage.json +3 -3
- package/artifacts/contracts/libs/{0.8.x → v0.8.x}/BytecodeStorageV1.sol/BytecodeStorageReader.json +3 -3
- package/artifacts/contracts/libs/{0.8.x → v0.8.x}/BytecodeStorageV1.sol/BytecodeStorageWriter.json +3 -3
- package/artifacts/contracts/libs/{0.8.x → v0.8.x}/Bytes32Strings.sol/Bytes32Strings.json +3 -3
- package/artifacts/contracts/libs/{0.8.x → v0.8.x}/ERC721_PackedHashSeed.sol/ERC721_PackedHashSeed.json +3 -3
- package/artifacts/contracts/libs/{0.8.x → v0.8.x}/SSTORE2.sol/SSTORE2.json +3 -3
- package/artifacts/contracts/libs/v0.8.x/minter-libs/DAExpLib.sol/DAExpLib.json +67 -0
- 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 +67 -0
- 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 +36 -0
- package/artifacts/contracts/libs/v0.8.x/minter-libs/MerkleLib.sol/MerkleLib.json +37 -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 +261 -0
- package/artifacts/contracts/libs/v0.8.x/minter-libs/SetPriceLib.sol/SetPriceLib.json +55 -0
- package/artifacts/contracts/libs/v0.8.x/minter-libs/SettlementExpLib.sol/SettlementExpLib.json +48 -0
- package/artifacts/contracts/libs/v0.8.x/minter-libs/SplitFundsLib.sol/SplitFundsLib.json +42 -0
- package/artifacts/contracts/libs/v0.8.x/minter-libs/TokenHolderLib.sol/TokenHolderLib.json +86 -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 +96 -40
- package/artifacts/contracts/minter-suite/Minters/MinterDAExpHolderV5.sol/MinterDAExpHolderV5.json +662 -0
- package/artifacts/contracts/minter-suite/Minters/MinterDAExpSettlementV2.sol/MinterDAExpSettlementV2.json +2 -20
- package/artifacts/contracts/minter-suite/Minters/MinterDAExpSettlementV3.sol/MinterDAExpSettlementV3.json +619 -0
- package/artifacts/contracts/minter-suite/Minters/MinterDAExpV4.sol/MinterDAExpV4.json +2 -2
- package/artifacts/contracts/minter-suite/Minters/MinterDAExpV5.sol/MinterDAExpV5.json +418 -0
- package/artifacts/contracts/minter-suite/Minters/MinterDALinHolderV5.sol/MinterDALinHolderV5.json +662 -0
- package/artifacts/contracts/minter-suite/Minters/MinterDALinV4.sol/MinterDALinV4.json +2 -2
- package/artifacts/contracts/minter-suite/Minters/MinterDALinV5.sol/MinterDALinV5.json +418 -0
- package/artifacts/contracts/minter-suite/Minters/MinterHolderV4.sol/MinterHolderV4.json +2 -2
- package/artifacts/contracts/minter-suite/Minters/MinterMerkleV5.sol/MinterMerkleV5.json +2 -2
- package/artifacts/contracts/minter-suite/Minters/MinterPolyptychV0.sol/MinterPolyptychV0.json +2 -2
- package/artifacts/contracts/minter-suite/Minters/MinterSEAV0.sol/MinterSEAV0.json +2 -2
- package/artifacts/contracts/minter-suite/Minters/MinterSEAV1.sol/MinterSEAV1.json +659 -0
- package/artifacts/contracts/minter-suite/Minters/MinterSetPriceERC20V4.sol/MinterSetPriceERC20V4.json +2 -2
- package/artifacts/contracts/minter-suite/Minters/MinterSetPriceERC20V5.sol/MinterSetPriceERC20V5.json +452 -0
- package/artifacts/contracts/minter-suite/Minters/MinterSetPriceHolderV5.sol/MinterSetPriceHolderV5.json +600 -0
- package/artifacts/contracts/minter-suite/Minters/MinterSetPriceMerkleV5.sol/MinterSetPriceMerkleV5.json +633 -0
- package/artifacts/contracts/minter-suite/Minters/MinterSetPricePolyptychERC20V5.sol/MinterSetPricePolyptychERC20V5.json +782 -0
- package/artifacts/contracts/minter-suite/Minters/MinterSetPricePolyptychV5.sol/MinterSetPricePolyptychV5.json +676 -0
- package/artifacts/contracts/minter-suite/Minters/MinterSetPriceV4.sol/MinterSetPriceV4.json +2 -2
- package/artifacts/contracts/minter-suite/Minters/MinterSetPriceV5.sol/MinterSetPriceV5.json +356 -0
- package/artifacts/contracts/mock/BytecodeV0TextCR_DMock.sol/BytecodeV0TextCR_DMock.json +2 -2
- package/artifacts/contracts/mock/BytecodeV1LibCallsMock.sol/BytecodeV1LibCallsMock.json +2 -2
- package/artifacts/contracts/mock/BytecodeV1TextCR_DMock.sol/BytecodeV1TextCR_DMock.json +4 -4
- package/artifacts/contracts/mock/DeadReceiverBidderMock.sol/DeadReceiverBidderMock.json +25 -2
- package/artifacts/contracts/mock/DummySharedMinter.sol/DummySharedMinter.json +2 -2
- package/artifacts/contracts/mock/ERC20Mock.sol/ERC20Mock.json +28 -2
- package/artifacts/contracts/mock/GenArt721CoreV3_Engine_IncorrectCoreType.sol/GenArt721CoreV3_Engine_IncorrectCoreType.json +6 -11
- package/artifacts/contracts/mock/MockAdminACLV0.sol/MockAdminACLV0Events.json +2 -2
- package/artifacts/contracts/mock/MockAdminACLV0_PROHIBITION.sol/MockAdminACLV0Events_PROHIBITION.json +2 -2
- package/artifacts/contracts/mock/OriginRegisterMock.sol/OriginRegisterMock.json +2 -2
- package/artifacts/contracts/mock/RandomizerV2_NoAssignMock.sol/RandomizerV2_NoAssignMock.json +2 -2
- package/artifacts/contracts/mock/ReentrancyHolderMock.sol/ReentrancyHolderMock.json +2 -2
- package/artifacts/contracts/mock/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/SSTORE2Mock.sol/SSTORE2Mock.json +2 -2
- package/artifacts/contracts/randomizer/deprecated/BasicRandomizer.sol/BasicRandomizer.json +2 -2
- package/artifacts/contracts/randomizer/deprecated/PolyptychRandomizerV0.sol/BasicPolyptychRandomizerV0.json +2 -2
- package/artifacts/contracts/randomizer/deprecated/RandomizerV2.sol/BasicRandomizerV2.json +2 -2
- package/artifacts/contracts/randomizer/primitive/PseudorandomAtomicBasic.sol/PseudorandomAtomic.json +2 -2
- package/artifacts/contracts/randomizer/shared/SharedRandomizerV0.sol/SharedRandomizerV0.json +58 -42
- package/artifacts/contracts/royalty-registry/GenArt721RoyaltyOverride.sol/GenArt721RoyaltyOverride.json +2 -2
- package/artifacts/contracts/royalty-registry/GenArt721RoyaltyOverride_PBAB.sol/GenArt721RoyaltyOverride_PBAB.json +2 -2
- package/contracts/AdminACLV0.sol +1 -1
- package/contracts/AdminACLV1.sol +1 -1
- package/contracts/DependencyRegistryV0.sol +300 -123
- package/contracts/GenArt721CoreV3.sol +27 -12
- package/contracts/archive/minter-suite/Minters/MinterDAExp/MinterDAExpV0.sol +3 -3
- package/contracts/archive/minter-suite/Minters/MinterDAExp/MinterDAExpV1.sol +3 -3
- package/contracts/archive/minter-suite/Minters/MinterDAExp/MinterDAExpV2.sol +3 -3
- package/contracts/archive/minter-suite/Minters/MinterDAExp/MinterDAExpV3.sol +3 -3
- package/contracts/archive/minter-suite/Minters/MinterDAExpSettlement/MinterDAExpSettlementV0.sol +3 -3
- package/contracts/archive/minter-suite/Minters/MinterDAExpSettlement/MinterDAExpSettlementV1.sol +3 -3
- package/contracts/archive/minter-suite/Minters/MinterDALin/MinterDALinV0.sol +3 -3
- package/contracts/archive/minter-suite/Minters/MinterDALin/MinterDALinV1.sol +3 -3
- package/contracts/archive/minter-suite/Minters/MinterDALin/MinterDALinV2.sol +3 -3
- package/contracts/archive/minter-suite/Minters/MinterDALin/MinterDALinV3.sol +3 -3
- package/contracts/archive/minter-suite/Minters/MinterHolder/MinterHolderV0.sol +3 -3
- package/contracts/archive/minter-suite/Minters/MinterHolder/MinterHolderV1.sol +3 -3
- package/contracts/archive/minter-suite/Minters/MinterHolder/MinterHolderV2.sol +4 -4
- package/contracts/archive/minter-suite/Minters/MinterHolder/MinterHolderV3.sol +4 -4
- package/contracts/archive/minter-suite/Minters/MinterMerkle/MinterMerkleV0.sol +3 -3
- package/contracts/archive/minter-suite/Minters/MinterMerkle/MinterMerkleV1.sol +3 -3
- package/contracts/archive/minter-suite/Minters/MinterMerkle/MinterMerkleV2.sol +4 -4
- package/contracts/archive/minter-suite/Minters/MinterMerkle/MinterMerkleV3.sol +4 -4
- package/contracts/archive/minter-suite/Minters/MinterMerkle/MinterMerkleV4.sol +4 -4
- package/contracts/archive/minter-suite/Minters/MinterSetPrice/MinterSetPriceV0.sol +3 -3
- package/contracts/archive/minter-suite/Minters/MinterSetPrice/MinterSetPriceV1.sol +3 -3
- package/contracts/archive/minter-suite/Minters/MinterSetPrice/MinterSetPriceV2.sol +3 -3
- package/contracts/archive/minter-suite/Minters/MinterSetPrice/MinterSetPriceV3.sol +3 -3
- package/contracts/archive/minter-suite/Minters/MinterSetPriceERC20/MinterSetPriceERC20V0.sol +3 -3
- package/contracts/archive/minter-suite/Minters/MinterSetPriceERC20/MinterSetPriceERC20V1.sol +3 -3
- package/contracts/archive/minter-suite/Minters/MinterSetPriceERC20/MinterSetPriceERC20V2.sol +3 -3
- package/contracts/archive/minter-suite/Minters/MinterSetPriceERC20/MinterSetPriceERC20V3.sol +3 -3
- package/contracts/archive/readme.md +16 -0
- package/contracts/engine/README.md +21 -0
- package/contracts/engine/V2/GenArt721CoreV2_ENGINE_FLEX.sol +2 -2
- package/contracts/engine/V2/GenArt721CoreV2_PBAB.sol +2 -2
- package/contracts/engine/V2/GenArt721CoreV2_PRTNR.sol +3 -3
- package/contracts/engine/V2/GenArt721MinterBurner_PBAB.sol +2 -2
- package/contracts/engine/V2/GenArt721MinterDAExp_PBAB.sol +1 -1
- package/contracts/engine/V2/GenArt721Minter_PBAB.sol +2 -2
- package/contracts/engine/V3/GenArt721CoreV3_Engine.sol +31 -22
- package/contracts/engine/V3/GenArt721CoreV3_Engine_Flex.sol +31 -22
- package/contracts/engine/V3/forks/GenArt721CoreV3_Engine_Flex_PROOF.sol +12 -18
- package/contracts/engine/V3/forks/PROHIBITION/AdminACLV0_PROHIBITION.sol +1 -1
- package/contracts/engine/V3/forks/PROHIBITION/GenArt721CoreV3_Engine_Flex_PROHIBITION.sol +23 -24
- package/contracts/engine/V3/forks/PROHIBITION/interfaces/IAdminACLV0_PROHIBITION.sol +1 -1
- package/contracts/engine/V3/forks/PROHIBITION/interfaces/IGenArt721CoreContractV3_Engine_Flex_PROHIBITION.sol +1 -1
- package/contracts/engine-registry/CoreRegistryV1.sol +58 -65
- package/contracts/engine-registry/EngineRegistryV0.sol +1 -1
- package/contracts/explorations/GenArt721CoreV3_Explorations.sol +27 -12
- package/contracts/interfaces/{0.8.x → v0.8.x}/ICoreRegistryV1.sol +6 -8
- package/contracts/interfaces/{0.8.x → v0.8.x}/IDependencyRegistryV0.sol +5 -2
- package/contracts/interfaces/v0.8.x/IGenArt721CoreContractV3WithSharedRandomizer.sol +23 -0
- package/contracts/interfaces/{0.8.x → v0.8.x}/IMinterFilterV1.sol +45 -19
- package/contracts/interfaces/v0.8.x/IRandomizer_V3CoreBase.sol +23 -0
- package/contracts/interfaces/v0.8.x/ISharedMinterDAExpSettlementV0.sol +28 -0
- package/contracts/interfaces/v0.8.x/ISharedMinterDAExpV0.sol +12 -0
- package/contracts/interfaces/v0.8.x/ISharedMinterDALinV0.sol +12 -0
- package/contracts/interfaces/v0.8.x/ISharedMinterDAV0.sol +13 -0
- package/contracts/interfaces/v0.8.x/ISharedMinterHolderERC20V0.sol +47 -0
- package/contracts/interfaces/v0.8.x/ISharedMinterHolderV0.sol +41 -0
- package/contracts/interfaces/v0.8.x/ISharedMinterMerkleV0.sol +34 -0
- package/contracts/interfaces/v0.8.x/ISharedMinterSEAV0.sol +15 -0
- package/contracts/interfaces/v0.8.x/ISharedMinterSimplePurchaseV0.sol +28 -0
- package/contracts/interfaces/v0.8.x/ISharedMinterV0.sol +43 -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 +1 -1
- package/contracts/libs/v0.8.x/ABHelpers.sol +55 -0
- package/contracts/libs/v0.8.x/AuthLib.sol +196 -0
- package/contracts/libs/{0.8.x → v0.8.x}/Bytes32Strings.sol +5 -5
- package/contracts/libs/v0.8.x/minter-libs/DAExpLib.sol +250 -0
- package/contracts/libs/v0.8.x/minter-libs/DALib.sol +26 -0
- package/contracts/libs/v0.8.x/minter-libs/DALinLib.sol +216 -0
- package/contracts/libs/v0.8.x/minter-libs/GenericMinterEventsLib.sol +171 -0
- package/contracts/libs/v0.8.x/minter-libs/MaxInvocationsLib.sol +488 -0
- package/contracts/libs/v0.8.x/minter-libs/MerkleLib.sol +384 -0
- package/contracts/libs/v0.8.x/minter-libs/PolyptychLib.sol +240 -0
- package/contracts/libs/v0.8.x/minter-libs/SEALib.sol +995 -0
- package/contracts/libs/v0.8.x/minter-libs/SetPriceLib.sol +166 -0
- package/contracts/libs/v0.8.x/minter-libs/SettlementExpLib.sol +770 -0
- package/contracts/libs/v0.8.x/minter-libs/SplitFundsLib.sol +741 -0
- package/contracts/libs/v0.8.x/minter-libs/TokenHolderLib.sol +291 -0
- package/contracts/minter-suite/MinterFilter/MinterFilterV0.sol +3 -3
- package/contracts/minter-suite/MinterFilter/MinterFilterV1.sol +5 -5
- package/contracts/minter-suite/MinterFilter/MinterFilterV2.sol +414 -297
- package/contracts/minter-suite/Minters/MinterBase_v0_1_1.sol +4 -4
- package/contracts/minter-suite/Minters/MinterDAExpHolderV5.sol +866 -0
- package/contracts/minter-suite/Minters/MinterDAExpSettlementV2.sol +4 -57
- package/contracts/minter-suite/Minters/MinterDAExpSettlementV3.sol +886 -0
- package/contracts/minter-suite/Minters/MinterDAExpV4.sol +3 -3
- package/contracts/minter-suite/Minters/MinterDAExpV5.sol +545 -0
- package/contracts/minter-suite/Minters/MinterDALinHolderV5.sol +857 -0
- package/contracts/minter-suite/Minters/MinterDALinV4.sol +3 -3
- package/contracts/minter-suite/Minters/MinterDALinV5.sol +534 -0
- package/contracts/minter-suite/Minters/MinterHolderV4.sol +4 -4
- package/contracts/minter-suite/Minters/MinterMerkleV5.sol +4 -4
- package/contracts/minter-suite/Minters/MinterPolyptychV0.sol +6 -6
- package/contracts/minter-suite/Minters/MinterSEAV0.sol +3 -3
- package/contracts/minter-suite/Minters/MinterSEAV1.sol +853 -0
- package/contracts/minter-suite/Minters/MinterSetPriceERC20V4.sol +5 -5
- package/contracts/minter-suite/Minters/MinterSetPriceERC20V5.sol +545 -0
- package/contracts/minter-suite/Minters/MinterSetPriceHolderV5.sol +730 -0
- package/contracts/minter-suite/Minters/MinterSetPriceMerkleV5.sol +714 -0
- package/contracts/minter-suite/Minters/MinterSetPricePolyptychERC20V5.sol +1012 -0
- package/contracts/minter-suite/Minters/MinterSetPricePolyptychV5.sol +868 -0
- package/contracts/minter-suite/Minters/MinterSetPriceV4.sol +3 -3
- package/contracts/minter-suite/Minters/MinterSetPriceV5.sol +414 -0
- package/contracts/mock/BytecodeV0TextCR_DMock.sol +1 -1
- package/contracts/mock/BytecodeV1LibCallsMock.sol +1 -1
- package/contracts/mock/BytecodeV1TextCR_DMock.sol +1 -1
- package/contracts/mock/DeadReceiverBidderMock.sol +15 -0
- package/contracts/mock/DummySharedMinter.sol +2 -2
- package/contracts/mock/ERC20Mock.sol +16 -0
- package/contracts/mock/GenArt721CoreV3_Engine_IncorrectCoreType.sol +11 -18
- package/contracts/mock/MockAdminACLV0.sol +1 -1
- package/contracts/mock/MockAdminACLV0_PROHIBITION.sol +1 -1
- package/contracts/mock/OriginRegisterMock.sol +1 -1
- package/contracts/mock/ReentrancyHolderMock.sol +1 -1
- package/contracts/mock/ReentrancyHolderMockShared.sol +59 -0
- package/contracts/mock/ReentrancyMerkleMock.sol +1 -1
- package/contracts/mock/ReentrancyMerkleMockShared.sol +58 -0
- package/contracts/mock/ReentrancyMock.sol +1 -1
- package/contracts/mock/ReentrancyMockShared.sol +48 -0
- package/contracts/mock/ReentrancySEAMock.sol +1 -1
- package/contracts/mock/ReentrancySEAMockShared.sol +40 -0
- package/contracts/mock/SSTORE2Mock.sol +1 -1
- package/contracts/randomizer/deprecated/BasicRandomizer.sol +1 -1
- package/contracts/randomizer/deprecated/PolyptychRandomizerV0.sol +2 -2
- package/contracts/randomizer/deprecated/RandomizerV2.sol +2 -2
- package/contracts/randomizer/primitive/PseudorandomAtomicBasic.sol +1 -1
- package/contracts/randomizer/shared/SharedRandomizerV0.sol +134 -111
- package/contracts/royalty-registry/GenArt721RoyaltyOverride.sol +2 -2
- package/contracts/royalty-registry/GenArt721RoyaltyOverride_PBAB.sol +2 -2
- package/package.json +57 -36
- package/LICENSE +0 -165
- package/contracts/interfaces/0.8.x/IRandomizer_V3CoreBase.sol +0 -10
- package/contracts/interfaces/0.8.x/ISharedRandomizerV0.sol +0 -105
- /package/contracts/interfaces/{0.5.x → v0.5.x}/IBonusContract.sol +0 -0
- /package/contracts/interfaces/{0.5.x → v0.5.x}/IGenArt721CoreContractV1.sol +0 -0
- /package/contracts/interfaces/{0.5.x → v0.5.x}/IGenArt721CoreV2_PBAB.sol +0 -0
- /package/contracts/interfaces/{0.5.x → v0.5.x}/IRandomizer.sol +0 -0
- /package/contracts/interfaces/{0.8.x → v0.8.x}/IAdminACLV0.sol +0 -0
- /package/contracts/interfaces/{0.8.x → v0.8.x}/IArtblocksRoyaltyOverride.sol +0 -0
- /package/contracts/interfaces/{0.8.x → v0.8.x}/IBonusContract.sol +0 -0
- /package/contracts/interfaces/{0.8.x → v0.8.x}/IBytecodeStorageReader.sol +0 -0
- /package/contracts/interfaces/{0.8.x → v0.8.x}/IDelegationRegistry.sol +0 -0
- /package/contracts/interfaces/{0.8.x → v0.8.x}/IDependencyRegistryCompatibleV0.sol +0 -0
- /package/contracts/interfaces/{0.8.x → v0.8.x}/IEngineRegistryV0.sol +0 -0
- /package/contracts/interfaces/{0.8.x → v0.8.x}/IFilteredMinterDAExpSettlementV0.sol +0 -0
- /package/contracts/interfaces/{0.8.x → v0.8.x}/IFilteredMinterDAExpSettlementV1.sol +0 -0
- /package/contracts/interfaces/{0.8.x → v0.8.x}/IFilteredMinterDAExpSettlement_Mixin.sol +0 -0
- /package/contracts/interfaces/{0.8.x → v0.8.x}/IFilteredMinterDAExpV0.sol +0 -0
- /package/contracts/interfaces/{0.8.x → v0.8.x}/IFilteredMinterDAExpV1.sol +0 -0
- /package/contracts/interfaces/{0.8.x → v0.8.x}/IFilteredMinterDALinV0.sol +0 -0
- /package/contracts/interfaces/{0.8.x → v0.8.x}/IFilteredMinterDALinV1.sol +0 -0
- /package/contracts/interfaces/{0.8.x → v0.8.x}/IFilteredMinterHolderV0.sol +0 -0
- /package/contracts/interfaces/{0.8.x → v0.8.x}/IFilteredMinterHolderV1.sol +0 -0
- /package/contracts/interfaces/{0.8.x → v0.8.x}/IFilteredMinterHolderV2.sol +0 -0
- /package/contracts/interfaces/{0.8.x → v0.8.x}/IFilteredMinterMerkleV0.sol +0 -0
- /package/contracts/interfaces/{0.8.x → v0.8.x}/IFilteredMinterMerkleV1.sol +0 -0
- /package/contracts/interfaces/{0.8.x → v0.8.x}/IFilteredMinterMerkleV2.sol +0 -0
- /package/contracts/interfaces/{0.8.x → v0.8.x}/IFilteredMinterSEAV0.sol +0 -0
- /package/contracts/interfaces/{0.8.x → v0.8.x}/IFilteredMinterV0.sol +0 -0
- /package/contracts/interfaces/{0.8.x → v0.8.x}/IFilteredMinterV1.sol +0 -0
- /package/contracts/interfaces/{0.8.x → v0.8.x}/IFilteredMinterV2.sol +0 -0
- /package/contracts/interfaces/{0.8.x → v0.8.x}/IGenArt721CoreContractExposesHashSeed.sol +0 -0
- /package/contracts/interfaces/{0.8.x → v0.8.x}/IGenArt721CoreContractV1.sol +0 -0
- /package/contracts/interfaces/{0.8.x → v0.8.x}/IGenArt721CoreContractV3.sol +0 -0
- /package/contracts/interfaces/{0.8.x → v0.8.x}/IGenArt721CoreContractV3_Base.sol +0 -0
- /package/contracts/interfaces/{0.8.x → v0.8.x}/IGenArt721CoreContractV3_Engine.sol +0 -0
- /package/contracts/interfaces/{0.8.x → v0.8.x}/IGenArt721CoreContractV3_Engine_Flex.sol +0 -0
- /package/contracts/interfaces/{0.8.x → v0.8.x}/IGenArt721CoreV2_PBAB.sol +0 -0
- /package/contracts/interfaces/{0.8.x → v0.8.x}/IManifold.sol +0 -0
- /package/contracts/interfaces/{0.8.x → v0.8.x}/IMinterBaseV0.sol +0 -0
- /package/contracts/interfaces/{0.8.x → v0.8.x}/IMinterFilterV0.sol +0 -0
- /package/contracts/interfaces/{0.8.x → v0.8.x}/IMintingAPICoreV0.sol +0 -0
- /package/contracts/interfaces/{0.8.x → v0.8.x}/IMintingAPIMinterV0.sol +0 -0
- /package/contracts/interfaces/{0.8.x → v0.8.x}/IPseudorandomAtomic.sol +0 -0
- /package/contracts/interfaces/{0.8.x → v0.8.x}/IRandomizer.sol +0 -0
- /package/contracts/interfaces/{0.8.x → v0.8.x}/IRandomizerPolyptychV0.sol +0 -0
- /package/contracts/interfaces/{0.8.x → v0.8.x}/IRandomizerV2.sol +0 -0
- /package/contracts/interfaces/{0.8.x → v0.8.x}/IWETH.sol +0 -0
- /package/contracts/libs/{0.5.x → v0.5.x}/CustomERC721Metadata.sol +0 -0
- /package/contracts/libs/{0.5.x → v0.5.x}/IERC20.sol +0 -0
- /package/contracts/libs/{0.5.x → v0.5.x}/SafeMath.sol +0 -0
- /package/contracts/libs/{0.5.x → v0.5.x}/Strings.sol +0 -0
- /package/contracts/libs/{0.8.x → v0.8.x}/BytecodeStorageV0.sol +0 -0
- /package/contracts/libs/{0.8.x → v0.8.x}/BytecodeStorageV1.sol +0 -0
- /package/contracts/libs/{0.8.x → v0.8.x}/ERC721_PackedHashSeed.sol +0 -0
- /package/contracts/libs/{0.8.x → v0.8.x}/SSTORE2.sol +0 -0
|
@@ -0,0 +1,58 @@
|
|
|
1
|
+
// SPDX-License-Identifier: LGPL-3.0-only
|
|
2
|
+
// Created By: Art Blocks Inc.
|
|
3
|
+
|
|
4
|
+
import "../interfaces/v0.8.x/ISharedMinterMerkleV0.sol";
|
|
5
|
+
|
|
6
|
+
pragma solidity ^0.8.0;
|
|
7
|
+
|
|
8
|
+
contract ReentrancyMerkleMockShared {
|
|
9
|
+
uint256 public currentQtyToPurchase;
|
|
10
|
+
uint256 public currentProjectId;
|
|
11
|
+
address public currentCoreContract;
|
|
12
|
+
uint256 public currentPriceToPay;
|
|
13
|
+
bytes32[3] currentProof;
|
|
14
|
+
|
|
15
|
+
/**
|
|
16
|
+
@notice This function can be called to induce controlled reentrency attacks
|
|
17
|
+
on the shared AB minter filter suite.
|
|
18
|
+
Note that _priceToPay should be > project price per token to induce refund,
|
|
19
|
+
making reentrency possible via fallback function.
|
|
20
|
+
*/
|
|
21
|
+
function attack(
|
|
22
|
+
uint256 _qtyToPurchase,
|
|
23
|
+
address _minterContractAddress,
|
|
24
|
+
uint256 _projectId,
|
|
25
|
+
address _coreContract,
|
|
26
|
+
uint256 _priceToPay,
|
|
27
|
+
bytes32[] memory _proof
|
|
28
|
+
) external payable {
|
|
29
|
+
// update state variables so that receive() knows what to do
|
|
30
|
+
currentQtyToPurchase = _qtyToPurchase;
|
|
31
|
+
currentProjectId = _projectId;
|
|
32
|
+
currentCoreContract = _coreContract;
|
|
33
|
+
currentPriceToPay = _priceToPay;
|
|
34
|
+
currentProof[0] = _proof[0];
|
|
35
|
+
currentProof[1] = _proof[1];
|
|
36
|
+
currentProof[2] = _proof[2];
|
|
37
|
+
ISharedMinterMerkleV0(_minterContractAddress).purchase{
|
|
38
|
+
value: _priceToPay
|
|
39
|
+
}(_projectId, _coreContract, _proof);
|
|
40
|
+
}
|
|
41
|
+
|
|
42
|
+
// receiver is called when minter sends refunded Ether to this contract.
|
|
43
|
+
receive() external payable {
|
|
44
|
+
// decrement num to be purchased
|
|
45
|
+
currentQtyToPurchase--;
|
|
46
|
+
if (currentQtyToPurchase > 0) {
|
|
47
|
+
// rebuild _proof
|
|
48
|
+
bytes32[] memory _proof = new bytes32[](3);
|
|
49
|
+
_proof[0] = currentProof[0];
|
|
50
|
+
_proof[1] = currentProof[1];
|
|
51
|
+
_proof[2] = currentProof[2];
|
|
52
|
+
// purchase again!
|
|
53
|
+
ISharedMinterMerkleV0(msg.sender).purchase{
|
|
54
|
+
value: currentPriceToPay
|
|
55
|
+
}(currentProjectId, currentCoreContract, _proof);
|
|
56
|
+
}
|
|
57
|
+
}
|
|
58
|
+
}
|
|
@@ -0,0 +1,48 @@
|
|
|
1
|
+
// SPDX-License-Identifier: LGPL-3.0-only
|
|
2
|
+
// Created By: Art Blocks Inc.
|
|
3
|
+
|
|
4
|
+
import "../interfaces/v0.8.x/ISharedMinterSimplePurchaseV0.sol";
|
|
5
|
+
|
|
6
|
+
pragma solidity ^0.8.0;
|
|
7
|
+
|
|
8
|
+
contract ReentrancyMockShared {
|
|
9
|
+
uint256 public currentQtyToPurchase;
|
|
10
|
+
uint256 public currentProjectId;
|
|
11
|
+
address public currentCoreContract;
|
|
12
|
+
uint256 public currentPriceToPay;
|
|
13
|
+
|
|
14
|
+
/**
|
|
15
|
+
@notice This function can be called to induce controlled reentrency attacks
|
|
16
|
+
on the shared AB minter filter suite.
|
|
17
|
+
Note that _priceToPay should be > project price per token to induce refund,
|
|
18
|
+
making reentrency possible via fallback function.
|
|
19
|
+
*/
|
|
20
|
+
function attack(
|
|
21
|
+
uint256 _qtyToPurchase,
|
|
22
|
+
address _minterContractAddress,
|
|
23
|
+
uint256 _projectId,
|
|
24
|
+
address _coreContract,
|
|
25
|
+
uint256 _priceToPay
|
|
26
|
+
) external payable {
|
|
27
|
+
// update state variables so that receive() knows what to do
|
|
28
|
+
currentQtyToPurchase = _qtyToPurchase;
|
|
29
|
+
currentProjectId = _projectId;
|
|
30
|
+
currentCoreContract = _coreContract;
|
|
31
|
+
currentPriceToPay = _priceToPay;
|
|
32
|
+
ISharedMinterSimplePurchaseV0(_minterContractAddress).purchase{
|
|
33
|
+
value: _priceToPay
|
|
34
|
+
}(_projectId, _coreContract);
|
|
35
|
+
}
|
|
36
|
+
|
|
37
|
+
// receiver is called when minter sends refunded Ether to this contract.
|
|
38
|
+
receive() external payable {
|
|
39
|
+
// decrement num to be purchased
|
|
40
|
+
currentQtyToPurchase--;
|
|
41
|
+
if (currentQtyToPurchase > 0) {
|
|
42
|
+
// purchase again!
|
|
43
|
+
ISharedMinterSimplePurchaseV0(msg.sender).purchase{
|
|
44
|
+
value: currentPriceToPay
|
|
45
|
+
}(currentProjectId, currentCoreContract);
|
|
46
|
+
}
|
|
47
|
+
}
|
|
48
|
+
}
|
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
// SPDX-License-Identifier: LGPL-3.0-only
|
|
2
|
+
// Created By: Art Blocks Inc.
|
|
3
|
+
|
|
4
|
+
import "../interfaces/v0.8.x/ISharedMinterSEAV0.sol";
|
|
5
|
+
|
|
6
|
+
pragma solidity ^0.8.0;
|
|
7
|
+
|
|
8
|
+
contract ReentrancySEAAutoBidderMockShared {
|
|
9
|
+
uint256 public targetTokenId;
|
|
10
|
+
address public targetCoreContract;
|
|
11
|
+
|
|
12
|
+
/**
|
|
13
|
+
@notice This function can be called to induce controlled reentrency attacks
|
|
14
|
+
on AB minter filter suite.
|
|
15
|
+
Note that _priceToPay should be > project price per token to induce refund,
|
|
16
|
+
making reentrency possible via fallback function.
|
|
17
|
+
*/
|
|
18
|
+
function attack(
|
|
19
|
+
uint256 _targetTokenId,
|
|
20
|
+
address _targetCoreContract,
|
|
21
|
+
address _minterContractAddress,
|
|
22
|
+
uint256 _initialBidValue
|
|
23
|
+
) external payable {
|
|
24
|
+
targetTokenId = _targetTokenId;
|
|
25
|
+
targetCoreContract = _targetCoreContract;
|
|
26
|
+
ISharedMinterSEAV0(_minterContractAddress).createBid{
|
|
27
|
+
value: _initialBidValue
|
|
28
|
+
}(_targetTokenId, _targetCoreContract);
|
|
29
|
+
}
|
|
30
|
+
|
|
31
|
+
// receiver is called when minter sends refunded Ether to this contract, when outbid
|
|
32
|
+
receive() external payable {
|
|
33
|
+
// auto-rebid
|
|
34
|
+
uint256 newBidValue = (msg.value * 110) / 100;
|
|
35
|
+
ISharedMinterSEAV0(msg.sender).createBid{value: newBidValue}(
|
|
36
|
+
targetTokenId,
|
|
37
|
+
targetCoreContract
|
|
38
|
+
);
|
|
39
|
+
}
|
|
40
|
+
}
|
|
@@ -3,8 +3,8 @@
|
|
|
3
3
|
|
|
4
4
|
pragma solidity 0.8.19;
|
|
5
5
|
|
|
6
|
-
import "../../interfaces/
|
|
7
|
-
import "../../interfaces/
|
|
6
|
+
import "../../interfaces/v0.8.x/IGenArt721CoreContractV3_Base.sol";
|
|
7
|
+
import "../../interfaces/v0.8.x/IRandomizerPolyptychV0.sol";
|
|
8
8
|
import "./BasicRandomizerBase_v0_0_0.sol";
|
|
9
9
|
|
|
10
10
|
import "@openzeppelin-4.7/contracts/access/Ownable.sol";
|
|
@@ -3,8 +3,8 @@
|
|
|
3
3
|
|
|
4
4
|
pragma solidity 0.8.19;
|
|
5
5
|
|
|
6
|
-
import "../../interfaces/
|
|
7
|
-
import "../../interfaces/
|
|
6
|
+
import "../../interfaces/v0.8.x/IRandomizerV2.sol";
|
|
7
|
+
import "../../interfaces/v0.8.x/IGenArt721CoreContractV3_Base.sol";
|
|
8
8
|
import "./BasicRandomizerBase_v0_0_0.sol";
|
|
9
9
|
|
|
10
10
|
import "@openzeppelin-4.7/contracts/access/Ownable.sol";
|
|
@@ -1,11 +1,13 @@
|
|
|
1
1
|
// SPDX-License-Identifier: LGPL-3.0-only
|
|
2
2
|
// Creatd By: Art Blocks Inc.
|
|
3
3
|
|
|
4
|
+
// @dev fixed to specific solidity version for clarity and for more clear
|
|
5
|
+
// source code verification purposes.
|
|
4
6
|
pragma solidity 0.8.19;
|
|
5
7
|
|
|
6
|
-
import "../../interfaces/
|
|
7
|
-
import "../../interfaces/
|
|
8
|
-
import "../../interfaces/
|
|
8
|
+
import "../../interfaces/v0.8.x/IGenArt721CoreContractV3_Base.sol";
|
|
9
|
+
import "../../interfaces/v0.8.x/ISharedRandomizerV0.sol";
|
|
10
|
+
import "../../interfaces/v0.8.x/IPseudorandomAtomic.sol";
|
|
9
11
|
|
|
10
12
|
/**
|
|
11
13
|
* @title A shared randomizer contract that enables support of many Art Blocks
|
|
@@ -16,36 +18,35 @@ import "../../interfaces/0.8.x/IPseudorandomAtomic.sol";
|
|
|
16
18
|
* `assignTokenHash` function, as long as the call does not revert.
|
|
17
19
|
*
|
|
18
20
|
* The randomizer generates a token's hash seed in one of two ways:
|
|
19
|
-
* 1. If the project of the token is specified as a
|
|
20
|
-
* will assign the token the hash seed as previously
|
|
21
|
-
* seed setter contract. If no hash seed has
|
|
22
|
-
* revert.
|
|
23
|
-
* 2. If the project of the token is not specified as a
|
|
24
|
-
* randomizer will generate a new hash seed using the
|
|
25
|
-
* contract, which is immutable and set during
|
|
21
|
+
* 1. If the project of the token is specified as using a hash seed setter
|
|
22
|
+
* contract, the randomizer will assign the token the hash seed as previously
|
|
23
|
+
* pre-set by the project's hash seed setter contract. If no hash seed has
|
|
24
|
+
* been set, the randomizer will revert (will not assign null token hash).
|
|
25
|
+
* 2. If the project of the token is not specified as using a hash seed setter
|
|
26
|
+
* contract, the randomizer will generate a new hash seed using the
|
|
27
|
+
* `IPseudorandomAtomic` contract, which is immutable and set during
|
|
28
|
+
* deployment.
|
|
26
29
|
*
|
|
27
|
-
* When using this randomizer for ployptych minting, several requirements
|
|
28
|
-
* be required by the hash seed setter contract, including the possibility
|
|
30
|
+
* @dev When using this randomizer for ployptych minting, several requirements
|
|
31
|
+
* may be required by the hash seed setter contract, including the possibility
|
|
29
32
|
* that a token's hash seed must be available in a public getter function on
|
|
30
33
|
* the core contract. Please inspect the hash seed setter contract to ensure
|
|
31
34
|
* that all requirements are met.
|
|
32
35
|
*
|
|
33
36
|
* @notice Privileged Roles and Ownership:
|
|
34
|
-
* Privileged roles and abilities are controlled by each core contract's
|
|
35
|
-
*
|
|
36
|
-
* influence the behavior of this
|
|
37
|
-
*
|
|
38
|
-
*
|
|
39
|
-
* ----------------------------------------------------------------------------
|
|
40
|
-
* The following function is restricted to each core's Admin ACL contract:
|
|
41
|
-
* - setHashSeedSetterContract
|
|
37
|
+
* Privileged roles and abilities are controlled by each core contract's
|
|
38
|
+
* artists.
|
|
39
|
+
* These roles hold extensive power and can influence the behavior of this
|
|
40
|
+
* randomizer.
|
|
41
|
+
* Care must be taken to ensure that the artist addresses are secure.
|
|
42
42
|
* ----------------------------------------------------------------------------
|
|
43
43
|
* The following functions are restricted to only the Artist address:
|
|
44
|
-
* -
|
|
44
|
+
* - setHashSeedSetterContract
|
|
45
|
+
* - toggleProjectUseAssignedHashSeed
|
|
45
46
|
* ----------------------------------------------------------------------------
|
|
46
47
|
* The following function is restricted to only the hash seed setter contract
|
|
47
48
|
* of a given core contract:
|
|
48
|
-
* -
|
|
49
|
+
* - preSetHashSeed
|
|
49
50
|
* ----------------------------------------------------------------------------
|
|
50
51
|
* Additional admin and artist privileged roles may be described on minters,
|
|
51
52
|
* registries, and other contracts that may interact with this randomizer.
|
|
@@ -56,66 +57,63 @@ contract SharedRandomizerV0 is ISharedRandomizerV0 {
|
|
|
56
57
|
// constant used to obtain the project ID from the token ID
|
|
57
58
|
uint256 internal constant ONE_MILLION = 1_000_000;
|
|
58
59
|
|
|
59
|
-
// mapping of core contract => token ID => hash seed
|
|
60
|
-
|
|
60
|
+
// mapping of core contract => token ID => pre-assigned hash seed
|
|
61
|
+
// @dev this mapping is only used when the project is configured as using
|
|
62
|
+
// a hash seed setter contract. It is not populated when the project is
|
|
63
|
+
// using pseudorandomAtomicContract.
|
|
64
|
+
mapping(address coreContract => mapping(uint256 tokenId => bytes12 preAssignedHashSeed))
|
|
65
|
+
private _preAssignedHashSeeds;
|
|
61
66
|
|
|
62
|
-
// mapping of core contract => project ID =>
|
|
63
|
-
mapping(address => mapping(uint256 => bool))
|
|
67
|
+
// mapping of core contract => project ID => usesHashSeedSetter Contract
|
|
68
|
+
mapping(address coreContract => mapping(uint256 projectId => bool usesHashSeedSetter))
|
|
69
|
+
private _projectUsesHashSeedSetter;
|
|
64
70
|
|
|
65
|
-
// mapping of core contract => hash seed setter contract
|
|
66
|
-
mapping(address => address)
|
|
67
|
-
|
|
68
|
-
// modifier to restrict access to only AdminACL allowed calls
|
|
69
|
-
// @dev defers to ACL contract being used to the core contract
|
|
70
|
-
function _onlyCoreAdminACL(
|
|
71
|
-
address _coreContract,
|
|
72
|
-
bytes4 _selector
|
|
73
|
-
) internal {
|
|
74
|
-
require(
|
|
75
|
-
IGenArt721CoreContractV3_Base(_coreContract).adminACLAllowed(
|
|
76
|
-
msg.sender,
|
|
77
|
-
address(this),
|
|
78
|
-
_selector
|
|
79
|
-
),
|
|
80
|
-
"Only Core AdminACL allowed"
|
|
81
|
-
);
|
|
82
|
-
}
|
|
71
|
+
// mapping of core contract => projectId => hash seed setter contract
|
|
72
|
+
mapping(address coreContract => mapping(uint256 projectId => address hashSeedSetterContract))
|
|
73
|
+
private _hashSeedSetterContracts;
|
|
83
74
|
|
|
84
75
|
// modifier to restrict access to only Artist allowed calls
|
|
85
76
|
function _onlyArtist(
|
|
86
|
-
address
|
|
87
|
-
uint256
|
|
77
|
+
address coreContract,
|
|
78
|
+
uint256 projectId
|
|
88
79
|
) internal view {
|
|
89
80
|
require(
|
|
90
81
|
msg.sender ==
|
|
91
|
-
IGenArt721CoreContractV3_Base(
|
|
92
|
-
.projectIdToArtistAddress(
|
|
82
|
+
IGenArt721CoreContractV3_Base(coreContract)
|
|
83
|
+
.projectIdToArtistAddress(projectId),
|
|
93
84
|
"Only Artist"
|
|
94
85
|
);
|
|
95
86
|
}
|
|
96
87
|
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
88
|
+
/**
|
|
89
|
+
* Modifier to restrict access to only calls by the hash seed setter
|
|
90
|
+
* contract of a given project.
|
|
91
|
+
* @param coreContract core contract address associated with the project
|
|
92
|
+
* @param projectId project ID being set
|
|
93
|
+
*/
|
|
94
|
+
function _onlyHashSeedSetterContract(
|
|
95
|
+
address coreContract,
|
|
96
|
+
uint256 projectId
|
|
97
|
+
) internal view {
|
|
100
98
|
require(
|
|
101
|
-
msg.sender == _hashSeedSetterContracts[
|
|
99
|
+
msg.sender == _hashSeedSetterContracts[coreContract][projectId],
|
|
102
100
|
"Only Hash Seed Setter Contract"
|
|
103
101
|
);
|
|
104
102
|
}
|
|
105
103
|
|
|
106
104
|
/**
|
|
107
105
|
*
|
|
108
|
-
* @param
|
|
106
|
+
* @param pseudorandomAtomicContract_ Address of the pseudorandom atomic
|
|
109
107
|
* contract to use for atomically generating random values. This contract
|
|
110
108
|
* does not have an owner, and therefore the pseudorandom atomic contract
|
|
111
109
|
* address cannot be changed after deployment.
|
|
112
110
|
*/
|
|
113
|
-
constructor(address
|
|
111
|
+
constructor(address pseudorandomAtomicContract_) {
|
|
114
112
|
pseudorandomAtomicContract = IPseudorandomAtomic(
|
|
115
|
-
|
|
113
|
+
pseudorandomAtomicContract_
|
|
116
114
|
);
|
|
117
115
|
emit PseudorandomAtomicContractUpdated({
|
|
118
|
-
pseudorandomAtomicContract:
|
|
116
|
+
pseudorandomAtomicContract: pseudorandomAtomicContract_
|
|
119
117
|
});
|
|
120
118
|
}
|
|
121
119
|
|
|
@@ -123,48 +121,55 @@ contract SharedRandomizerV0 is ISharedRandomizerV0 {
|
|
|
123
121
|
* @inheritdoc ISharedRandomizerV0
|
|
124
122
|
*/
|
|
125
123
|
function setHashSeedSetterContract(
|
|
126
|
-
address
|
|
127
|
-
|
|
124
|
+
address coreContract,
|
|
125
|
+
uint256 projectId,
|
|
126
|
+
address hashSeedSetterContract
|
|
128
127
|
) external {
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
hashSeedSetterContract:
|
|
128
|
+
_onlyArtist({projectId: projectId, coreContract: coreContract});
|
|
129
|
+
_hashSeedSetterContracts[coreContract][
|
|
130
|
+
projectId
|
|
131
|
+
] = hashSeedSetterContract;
|
|
132
|
+
emit HashSeedSetterForProjectUpdated({
|
|
133
|
+
coreContract: coreContract,
|
|
134
|
+
projectId: projectId,
|
|
135
|
+
hashSeedSetterContract: hashSeedSetterContract
|
|
137
136
|
});
|
|
138
137
|
}
|
|
139
138
|
|
|
140
139
|
/**
|
|
141
140
|
* @inheritdoc ISharedRandomizerV0
|
|
142
141
|
*/
|
|
143
|
-
function
|
|
144
|
-
address
|
|
145
|
-
uint256
|
|
142
|
+
function toggleProjectUseAssignedHashSeed(
|
|
143
|
+
address coreContract,
|
|
144
|
+
uint256 projectId
|
|
146
145
|
) external {
|
|
147
|
-
_onlyArtist(
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
][
|
|
151
|
-
emit
|
|
152
|
-
coreContract:
|
|
153
|
-
projectId:
|
|
154
|
-
|
|
146
|
+
_onlyArtist({projectId: projectId, coreContract: coreContract});
|
|
147
|
+
_projectUsesHashSeedSetter[coreContract][
|
|
148
|
+
projectId
|
|
149
|
+
] = !_projectUsesHashSeedSetter[coreContract][projectId];
|
|
150
|
+
emit ProjectUsingHashSeedSetterUpdated({
|
|
151
|
+
coreContract: coreContract,
|
|
152
|
+
projectId: projectId,
|
|
153
|
+
usingHashSeedSetter: _projectUsesHashSeedSetter[coreContract][
|
|
154
|
+
projectId
|
|
155
|
+
]
|
|
155
156
|
});
|
|
156
157
|
}
|
|
157
158
|
|
|
158
159
|
/**
|
|
159
160
|
* @inheritdoc ISharedRandomizerV0
|
|
160
161
|
*/
|
|
161
|
-
function
|
|
162
|
-
address
|
|
163
|
-
uint256
|
|
164
|
-
bytes12
|
|
162
|
+
function preSetHashSeed(
|
|
163
|
+
address coreContract,
|
|
164
|
+
uint256 tokenId,
|
|
165
|
+
bytes12 hashSeed
|
|
165
166
|
) external {
|
|
166
|
-
|
|
167
|
-
|
|
167
|
+
uint256 projectId = _tokenIdToProjectId(tokenId);
|
|
168
|
+
_onlyHashSeedSetterContract({
|
|
169
|
+
projectId: projectId,
|
|
170
|
+
coreContract: coreContract
|
|
171
|
+
});
|
|
172
|
+
_preAssignedHashSeeds[coreContract][tokenId] = hashSeed;
|
|
168
173
|
// @dev event indicating token hash seed assigned is not required for
|
|
169
174
|
// subgraph indexing because token hash seeds are still assigned
|
|
170
175
|
// atomically in `assignTokenHash` function. If token hash seeds were
|
|
@@ -175,71 +180,89 @@ contract SharedRandomizerV0 is ISharedRandomizerV0 {
|
|
|
175
180
|
/**
|
|
176
181
|
* @inheritdoc IRandomizer_V3CoreBase
|
|
177
182
|
*/
|
|
178
|
-
function assignTokenHash(uint256
|
|
179
|
-
// @dev
|
|
180
|
-
//
|
|
181
|
-
//
|
|
183
|
+
function assignTokenHash(uint256 tokenId) external {
|
|
184
|
+
// @dev This function is not specifically gated to any specific caller,
|
|
185
|
+
// but will only call back to the calling contract, `msg.sender`, to
|
|
186
|
+
// set the specified token's hash seed.
|
|
187
|
+
// A third party contract calling this function will not be able to set
|
|
188
|
+
// the token hash seed on a different core contract.
|
|
189
|
+
// @dev variables are named to improve readability
|
|
182
190
|
address coreContract = msg.sender;
|
|
183
|
-
uint256 projectId =
|
|
191
|
+
uint256 projectId = _tokenIdToProjectId(tokenId);
|
|
184
192
|
bytes32 hashSeed;
|
|
185
|
-
if (
|
|
186
|
-
hashSeed =
|
|
193
|
+
if (_projectUsesHashSeedSetter[coreContract][projectId]) {
|
|
194
|
+
hashSeed = _preAssignedHashSeeds[coreContract][tokenId];
|
|
187
195
|
} else {
|
|
188
|
-
hashSeed = _getPseudorandomAtomic(
|
|
196
|
+
hashSeed = _getPseudorandomAtomic({
|
|
197
|
+
coreContract: coreContract,
|
|
198
|
+
tokenId: tokenId
|
|
199
|
+
});
|
|
189
200
|
}
|
|
190
201
|
// verify that the hash seed is non-zero
|
|
191
202
|
require(hashSeed != 0, "Only non-zero hash seed");
|
|
192
203
|
// assign the token hash seed on the core contract
|
|
193
|
-
IGenArt721CoreContractV3_Base(coreContract).setTokenHash_8PT(
|
|
194
|
-
_tokenId,
|
|
195
|
-
hashSeed
|
|
196
|
-
);
|
|
204
|
+
IGenArt721CoreContractV3_Base(coreContract).setTokenHash_8PT({
|
|
205
|
+
_tokenId: tokenId,
|
|
206
|
+
_hash: hashSeed
|
|
207
|
+
});
|
|
197
208
|
}
|
|
198
209
|
|
|
199
210
|
/**
|
|
200
211
|
* @inheritdoc ISharedRandomizerV0
|
|
201
212
|
*/
|
|
202
|
-
function
|
|
203
|
-
address
|
|
204
|
-
uint256
|
|
205
|
-
) external view returns (bool
|
|
206
|
-
return
|
|
213
|
+
function projectUsesHashSeedSetter(
|
|
214
|
+
address coreContract,
|
|
215
|
+
uint256 projectId
|
|
216
|
+
) external view returns (bool usingHashSeedSetter) {
|
|
217
|
+
return _projectUsesHashSeedSetter[coreContract][projectId];
|
|
207
218
|
}
|
|
208
219
|
|
|
209
220
|
/**
|
|
210
221
|
* @inheritdoc ISharedRandomizerV0
|
|
211
222
|
*/
|
|
212
223
|
function hashSeedSetterContracts(
|
|
213
|
-
address
|
|
224
|
+
address coreContract,
|
|
225
|
+
uint256 projectId
|
|
214
226
|
) external view returns (address _hashSeedSetterContract) {
|
|
215
|
-
return _hashSeedSetterContracts[
|
|
227
|
+
return _hashSeedSetterContracts[coreContract][projectId];
|
|
216
228
|
}
|
|
217
229
|
|
|
218
230
|
/**
|
|
219
231
|
* @inheritdoc ISharedRandomizerV0
|
|
220
232
|
*/
|
|
221
|
-
function
|
|
222
|
-
address
|
|
223
|
-
uint256
|
|
233
|
+
function preAssignedHashSeed(
|
|
234
|
+
address coreContract,
|
|
235
|
+
uint256 tokenId
|
|
224
236
|
) external view returns (bytes12 _hashSeed) {
|
|
225
|
-
return
|
|
237
|
+
return _preAssignedHashSeeds[coreContract][tokenId];
|
|
226
238
|
}
|
|
227
239
|
|
|
228
240
|
/**
|
|
229
241
|
* @notice Internal function to atomically obtain a pseudorandom number
|
|
230
242
|
* from the configured pseudorandom contract.
|
|
231
|
-
* @param
|
|
243
|
+
* @param coreContract - The core contract that is requesting an atomic
|
|
232
244
|
* pseudorandom number.
|
|
233
|
-
* @param
|
|
245
|
+
* @param tokenId - The token ID on `coreContract` that is associated
|
|
234
246
|
* with the pseudorandom number request.
|
|
235
247
|
*/
|
|
236
248
|
function _getPseudorandomAtomic(
|
|
237
|
-
address
|
|
238
|
-
uint256
|
|
249
|
+
address coreContract,
|
|
250
|
+
uint256 tokenId
|
|
239
251
|
) internal view returns (bytes32) {
|
|
240
252
|
return
|
|
241
253
|
pseudorandomAtomicContract.getPseudorandomAtomic(
|
|
242
|
-
keccak256(abi.encodePacked(
|
|
254
|
+
keccak256(abi.encodePacked(coreContract, tokenId))
|
|
243
255
|
);
|
|
244
256
|
}
|
|
257
|
+
|
|
258
|
+
/**
|
|
259
|
+
* @notice Gets the project ID for a given `tokenId`.
|
|
260
|
+
* @param tokenId Token ID to be queried.
|
|
261
|
+
* @return projectId Project ID for given `tokenId`.
|
|
262
|
+
*/
|
|
263
|
+
function _tokenIdToProjectId(
|
|
264
|
+
uint256 tokenId
|
|
265
|
+
) internal pure returns (uint256 projectId) {
|
|
266
|
+
return tokenId / ONE_MILLION;
|
|
267
|
+
}
|
|
245
268
|
}
|
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
// SPDX-License-Identifier: LGPL-3.0-only
|
|
2
2
|
// Created By: Art Blocks Inc.
|
|
3
3
|
|
|
4
|
-
import "../interfaces/
|
|
5
|
-
import "../interfaces/
|
|
4
|
+
import "../interfaces/v0.8.x/IArtblocksRoyaltyOverride.sol";
|
|
5
|
+
import "../interfaces/v0.8.x/IGenArt721CoreContractV3.sol";
|
|
6
6
|
|
|
7
7
|
import "@openzeppelin-4.5/contracts/utils/introspection/ERC165.sol";
|
|
8
8
|
|
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
// SPDX-License-Identifier: LGPL-3.0-only
|
|
2
2
|
// Created By: Art Blocks Inc.
|
|
3
3
|
|
|
4
|
-
import "../interfaces/
|
|
5
|
-
import "../interfaces/
|
|
4
|
+
import "../interfaces/v0.8.x/IArtblocksRoyaltyOverride.sol";
|
|
5
|
+
import "../interfaces/v0.8.x/IGenArt721CoreV2_PBAB.sol";
|
|
6
6
|
|
|
7
7
|
import "@openzeppelin-4.5/contracts/utils/introspection/ERC165.sol";
|
|
8
8
|
|