@artblocks/contracts 1.0.0 → 1.0.2
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/.env.example +8 -1
- package/README.md +44 -165
- package/artifacts/contracts/AdminACLV1.sol/AdminACLV1.json +2 -2
- package/artifacts/contracts/DependencyRegistryV0.sol/DependencyRegistryV0.json +2 -2
- package/artifacts/contracts/GenArt721CoreV3.sol/GenArt721CoreV3.json +2 -2
- package/artifacts/contracts/GenArt721CoreV3_Engine.sol/GenArt721CoreV3_Engine.json +2 -2
- package/artifacts/contracts/GenArt721CoreV3_Engine_Flex.sol/GenArt721CoreV3_Engine_Flex.json +2229 -0
- 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/{minter-suite/Minters → archive/minter-suite/Minters/MinterDAExpSettlement}/MinterDAExpSettlementV1.sol/MinterDAExpSettlementV1.json +3 -3
- 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/explorations/GenArt721CoreV3_Explorations.sol/GenArt721CoreV3_Explorations.json +2 -2
- package/artifacts/contracts/interfaces/0.8.x/IFilteredMinterDAExpSettlementV1.sol/IFilteredMinterDAExpSettlementV1.json +767 -0
- package/artifacts/contracts/interfaces/0.8.x/IFilteredMinterSEAV0.sol/IFilteredMinterSEAV0.json +1032 -0
- package/artifacts/contracts/interfaces/0.8.x/IGenArt721CoreContractV3.sol/IGenArt721CoreContractV3.json +149 -0
- package/artifacts/contracts/interfaces/0.8.x/IGenArt721CoreContractV3_Base.sol/IGenArt721CoreContractV3_Base.json +149 -0
- package/artifacts/contracts/interfaces/0.8.x/IGenArt721CoreContractV3_Engine.sol/IGenArt721CoreContractV3_Engine.json +130 -0
- package/artifacts/contracts/interfaces/0.8.x/IGenArt721CoreContractV3_Engine_Flex.sol/IGenArt721CoreContractV3_Engine_Flex.json +1066 -0
- package/artifacts/contracts/interfaces/0.8.x/IMinterFilterV0.sol/IMinterFilterV0.json +6 -0
- package/artifacts/contracts/interfaces/0.8.x/IRandomizerPolyptychV0.sol/IRandomizerPolyptychV0.json +87 -0
- package/artifacts/contracts/interfaces/0.8.x/IRandomizerV2.sol/IRandomizerV2.json +1 -1
- package/artifacts/contracts/interfaces/0.8.x/IWETH.sol/IWETH.json +55 -0
- package/artifacts/contracts/libs/integration-refs/weth9/weth9.sol/WETH9_.json +295 -0
- package/artifacts/contracts/minter-suite/MinterFilter/MinterFilterV0.sol/MinterFilterV0.json +8 -2
- package/artifacts/contracts/minter-suite/MinterFilter/MinterFilterV1.sol/MinterFilterV1.json +34 -2
- package/artifacts/contracts/minter-suite/Minters/MinterDAExpSettlementV2.sol/MinterDAExpSettlementV2.json +1127 -0
- package/artifacts/contracts/minter-suite/Minters/MinterDAExpV4.sol/MinterDAExpV4.json +15 -2
- package/artifacts/contracts/minter-suite/Minters/MinterDALinV4.sol/MinterDALinV4.json +15 -2
- package/artifacts/contracts/minter-suite/Minters/MinterHolderV4.sol/MinterHolderV4.json +15 -2
- package/artifacts/contracts/minter-suite/Minters/MinterMerkleV5.sol/MinterMerkleV5.json +15 -2
- package/artifacts/contracts/minter-suite/Minters/MinterPolyptychV0.sol/IGenArt721CoreContractV3WithRandomizer.json +792 -0
- package/artifacts/contracts/minter-suite/Minters/MinterPolyptychV0.sol/MinterPolyptychV0.json +1268 -0
- package/artifacts/contracts/minter-suite/Minters/MinterSEAV0.sol/MinterSEAV0.json +1310 -0
- package/artifacts/contracts/minter-suite/Minters/MinterSetPriceERC20V4.sol/MinterSetPriceERC20V4.json +15 -2
- package/artifacts/contracts/minter-suite/Minters/MinterSetPriceV4.sol/MinterSetPriceV4.json +15 -2
- package/artifacts/contracts/mock/DeadReceiverBidderMock.sol/DeadReceiverBidderMock.json +33 -0
- package/artifacts/contracts/mock/GasLimitReceiverBidderMock.sol/GasLimitReceiverBidderMock.json +46 -0
- package/artifacts/contracts/mock/GasLimitReceiverMock.sol/GasLimitReceiverMock.json +28 -0
- package/artifacts/contracts/mock/GenArt721CoreV3_Engine_IncorrectCoreType.sol/GenArt721CoreV3_Engine_IncorrectCoreType.json +2 -2
- package/artifacts/contracts/mock/RandomizerV2_NoAssignMock.sol/RandomizerV2_NoAssignMock.json +3 -3
- package/artifacts/contracts/mock/ReentrancySEAMock.sol/ReentrancySEAAutoBidderMock.json +51 -0
- package/artifacts/contracts/{BasicRandomizer.sol → randomizer/BasicRandomizer.sol}/BasicRandomizer.json +3 -3
- package/artifacts/contracts/randomizer/BasicRandomizerBase_v0_0_0.sol/RandomizerBase.json +10 -0
- package/artifacts/contracts/randomizer/PolyptychRandomizerV0.sol/BasicPolyptychRandomizerV0.json +229 -0
- package/artifacts/contracts/randomizer/RandomizerV2.sol/BasicRandomizerV2.json +102 -0
- package/artifacts/contracts/royalty-registry/GenArt721RoyaltyOverride.sol/GenArt721RoyaltyOverride.json +2 -2
- package/contracts/DependencyRegistryV0.sol +74 -113
- package/contracts/GenArt721CoreV3.sol +124 -171
- package/contracts/GenArt721CoreV3_Engine.sol +136 -198
- package/contracts/GenArt721CoreV3_Engine_Flex.sol +2274 -0
- package/contracts/{minter-suite/Minters → archive/minter-suite/Minters/MinterDAExpSettlement}/MinterDAExpSettlementV1.sol +4 -4
- package/contracts/explorations/GenArt721CoreV3_Explorations.sol +147 -176
- package/contracts/interfaces/0.8.x/IFilteredMinterDAExpSettlementV1.sol +21 -0
- package/contracts/interfaces/0.8.x/IFilteredMinterSEAV0.sol +145 -0
- package/contracts/interfaces/0.8.x/IGenArt721CoreContractV3_Base.sol +39 -0
- package/contracts/interfaces/0.8.x/IGenArt721CoreContractV3_Engine.sol +0 -3
- package/contracts/interfaces/0.8.x/IGenArt721CoreContractV3_Engine_Flex.sol +132 -0
- package/contracts/interfaces/0.8.x/IMinterFilterV0.sol +6 -0
- package/contracts/interfaces/0.8.x/IRandomizerPolyptychV0.sol +31 -0
- package/contracts/interfaces/0.8.x/IRandomizerV2.sol +5 -2
- package/contracts/interfaces/0.8.x/IWETH.sol +11 -0
- package/contracts/libs/integration-refs/weth9/weth9.sol +763 -0
- package/contracts/minter-suite/MinterFilter/MinterFilterV1.sol +53 -47
- package/contracts/minter-suite/Minters/MinterDAExpSettlementV2.sol +1304 -0
- package/contracts/minter-suite/Minters/MinterDAExpV4.sol +47 -24
- package/contracts/minter-suite/Minters/MinterDALinV4.sol +46 -21
- package/contracts/minter-suite/Minters/MinterHolderV4.sol +54 -25
- package/contracts/minter-suite/Minters/MinterMerkleV5.sol +47 -20
- package/contracts/minter-suite/Minters/MinterPolyptychV0.sol +998 -0
- package/contracts/minter-suite/Minters/MinterSEAV0.sol +1224 -0
- package/contracts/minter-suite/Minters/MinterSetPriceERC20V4.sol +45 -16
- package/contracts/minter-suite/Minters/MinterSetPriceV4.sol +40 -13
- package/contracts/mock/DeadReceiverBidderMock.sol +23 -0
- package/contracts/mock/GasLimitReceiverBidderMock.sol +23 -0
- package/contracts/mock/GasLimitReceiverMock.sol +19 -0
- package/contracts/mock/RandomizerV2_NoAssignMock.sol +2 -11
- package/contracts/mock/ReentrancySEAMock.sol +36 -0
- package/contracts/{BasicRandomizer.sol → randomizer/BasicRandomizer.sol} +1 -1
- package/contracts/randomizer/BasicRandomizerBase_v0_0_0.sol +23 -0
- package/contracts/randomizer/PolyptychRandomizerV0.sol +117 -0
- package/contracts/{BasicRandomizerV2.sol → randomizer/RandomizerV2.sol} +7 -15
- package/package.json +32 -13
- package/artifacts/contracts/BasicRandomizerV2.sol/BasicRandomizerV2.json +0 -102
|
@@ -0,0 +1,145 @@
|
|
|
1
|
+
// SPDX-License-Identifier: GPL-3.0
|
|
2
|
+
// Created By: Art Blocks Inc.
|
|
3
|
+
|
|
4
|
+
import "./IFilteredMinterV2.sol";
|
|
5
|
+
|
|
6
|
+
pragma solidity ^0.8.0;
|
|
7
|
+
|
|
8
|
+
/**
|
|
9
|
+
* @title Interface for MinterSEA, inspired by nouns.wtf.
|
|
10
|
+
* This interface combines the set of interfaces that add support for
|
|
11
|
+
* a Serial English Auction Minter.
|
|
12
|
+
* @author Art Blocks Inc.
|
|
13
|
+
*/
|
|
14
|
+
interface IFilteredMinterSEAV0 is IFilteredMinterV2 {
|
|
15
|
+
/// Struct that defines a single token English auction
|
|
16
|
+
struct Auction {
|
|
17
|
+
// token number of NFT being auctioned
|
|
18
|
+
uint256 tokenId;
|
|
19
|
+
// The current highest bid amount (in wei)
|
|
20
|
+
uint256 currentBid;
|
|
21
|
+
// The address of the current highest bidder
|
|
22
|
+
address payable currentBidder;
|
|
23
|
+
// The time that the auction is scheduled to end
|
|
24
|
+
// max uint64 ~= 1.8e19 sec ~= 570 billion years
|
|
25
|
+
uint64 endTime;
|
|
26
|
+
// Whether or not the auction has been settled
|
|
27
|
+
bool settled;
|
|
28
|
+
// Whether or not the auction has been initialized (used to determine
|
|
29
|
+
// if auction is the default struct)
|
|
30
|
+
bool initialized;
|
|
31
|
+
}
|
|
32
|
+
|
|
33
|
+
/// Admin-controlled range of allowed auction durations updated
|
|
34
|
+
event AuctionDurationSecondsRangeUpdated(
|
|
35
|
+
uint32 minAuctionDurationSeconds,
|
|
36
|
+
uint32 maxAuctionDurationSeconds
|
|
37
|
+
);
|
|
38
|
+
|
|
39
|
+
/// Admin-controlled minimum bid increment percentage updated
|
|
40
|
+
event MinterMinBidIncrementPercentageUpdated(
|
|
41
|
+
uint8 minterMinBidIncrementPercentage
|
|
42
|
+
);
|
|
43
|
+
|
|
44
|
+
/// Admin-controlled time buffer updated
|
|
45
|
+
event MinterTimeBufferUpdated(uint32 minterTimeBufferSeconds);
|
|
46
|
+
|
|
47
|
+
// Admin-controlled refund gas limit updated
|
|
48
|
+
event MinterRefundGasLimitUpdated(uint16 refundGasLimit);
|
|
49
|
+
|
|
50
|
+
/// Artist configured future auction details
|
|
51
|
+
event ConfiguredFutureAuctions(
|
|
52
|
+
uint256 indexed projectId,
|
|
53
|
+
uint64 timestampStart,
|
|
54
|
+
uint32 auctionDurationSeconds,
|
|
55
|
+
uint256 basePrice
|
|
56
|
+
);
|
|
57
|
+
|
|
58
|
+
/// Future auction details for project `projectId` reset
|
|
59
|
+
event ResetAuctionDetails(uint256 indexed projectId);
|
|
60
|
+
|
|
61
|
+
/// New token auction created, token created and sent to minter
|
|
62
|
+
event AuctionInitialized(
|
|
63
|
+
uint256 indexed tokenId,
|
|
64
|
+
address indexed bidder,
|
|
65
|
+
uint256 bidAmount,
|
|
66
|
+
uint64 endTime
|
|
67
|
+
);
|
|
68
|
+
|
|
69
|
+
/// Successful bid placed on token auction
|
|
70
|
+
event AuctionBid(
|
|
71
|
+
uint256 indexed tokenId,
|
|
72
|
+
address indexed bidder,
|
|
73
|
+
uint256 bidAmount
|
|
74
|
+
);
|
|
75
|
+
|
|
76
|
+
/// Token auction was settled (token distributed to winner)
|
|
77
|
+
event AuctionSettled(
|
|
78
|
+
uint256 indexed tokenId,
|
|
79
|
+
address indexed winner,
|
|
80
|
+
uint256 price
|
|
81
|
+
);
|
|
82
|
+
|
|
83
|
+
// Next token ID for project `projectId` updated
|
|
84
|
+
event ProjectNextTokenUpdated(uint256 indexed projectId, uint256 tokenId);
|
|
85
|
+
|
|
86
|
+
// Next token ID for project `projectId` was ejected from the minter
|
|
87
|
+
// and is no longer populated
|
|
88
|
+
event ProjectNextTokenEjected(uint256 indexed projectId);
|
|
89
|
+
|
|
90
|
+
function configureFutureAuctions(
|
|
91
|
+
uint256 _projectId,
|
|
92
|
+
uint256 _timestampStart,
|
|
93
|
+
uint256 _auctionDurationSeconds,
|
|
94
|
+
uint256 _basePrice
|
|
95
|
+
) external;
|
|
96
|
+
|
|
97
|
+
function resetAuctionDetails(uint256 _projectId) external;
|
|
98
|
+
|
|
99
|
+
// artist-only function that populates the next token ID to be auctioned
|
|
100
|
+
// for project `projectId`
|
|
101
|
+
function tryPopulateNextToken(uint256 _projectId) external;
|
|
102
|
+
|
|
103
|
+
function settleAuctionAndCreateBid(
|
|
104
|
+
uint256 _settleTokenId,
|
|
105
|
+
uint256 _bidTokenId
|
|
106
|
+
) external payable;
|
|
107
|
+
|
|
108
|
+
function settleAuction(uint256 _tokenId) external;
|
|
109
|
+
|
|
110
|
+
function createBid(uint256 _tokenId) external payable;
|
|
111
|
+
|
|
112
|
+
function createBid_l34(uint256 _tokenId) external payable;
|
|
113
|
+
|
|
114
|
+
function minterConfigurationDetails()
|
|
115
|
+
external
|
|
116
|
+
view
|
|
117
|
+
returns (
|
|
118
|
+
uint32 minAuctionDurationSeconds_,
|
|
119
|
+
uint32 maxAuctionDurationSeconds_,
|
|
120
|
+
uint8 minterMinBidIncrementPercentage_,
|
|
121
|
+
uint32 minterTimeBufferSeconds_,
|
|
122
|
+
uint16 minterRefundGasLimit_
|
|
123
|
+
);
|
|
124
|
+
|
|
125
|
+
function projectConfigurationDetails(
|
|
126
|
+
uint256 _projectId
|
|
127
|
+
)
|
|
128
|
+
external
|
|
129
|
+
view
|
|
130
|
+
returns (
|
|
131
|
+
uint24 maxInvocations,
|
|
132
|
+
uint64 timestampStart,
|
|
133
|
+
uint32 auctionDurationSeconds,
|
|
134
|
+
uint256 basePrice,
|
|
135
|
+
bool nextTokenNumberIsPopulated,
|
|
136
|
+
uint24 nextTokenNumber,
|
|
137
|
+
Auction memory auction
|
|
138
|
+
);
|
|
139
|
+
|
|
140
|
+
function projectActiveAuctionDetails(
|
|
141
|
+
uint256 _projectId
|
|
142
|
+
) external view returns (Auction memory);
|
|
143
|
+
|
|
144
|
+
function getTokenToBid(uint256 _projectId) external view returns (uint256);
|
|
145
|
+
}
|
|
@@ -100,6 +100,14 @@ interface IGenArt721CoreContractV3_Base is IManifold {
|
|
|
100
100
|
uint256 _projectId
|
|
101
101
|
) external view returns (uint256);
|
|
102
102
|
|
|
103
|
+
function projectIdToSecondaryMarketRoyaltyPercentage(
|
|
104
|
+
uint256 _projectId
|
|
105
|
+
) external view returns (uint256);
|
|
106
|
+
|
|
107
|
+
function projectURIInfo(
|
|
108
|
+
uint256 _projectId
|
|
109
|
+
) external view returns (string memory projectBaseURI);
|
|
110
|
+
|
|
103
111
|
// @dev new function in V3
|
|
104
112
|
function projectStateData(
|
|
105
113
|
uint256 _projectId
|
|
@@ -115,6 +123,37 @@ interface IGenArt721CoreContractV3_Base is IManifold {
|
|
|
115
123
|
bool locked
|
|
116
124
|
);
|
|
117
125
|
|
|
126
|
+
function projectDetails(
|
|
127
|
+
uint256 _projectId
|
|
128
|
+
)
|
|
129
|
+
external
|
|
130
|
+
view
|
|
131
|
+
returns (
|
|
132
|
+
string memory projectName,
|
|
133
|
+
string memory artist,
|
|
134
|
+
string memory description,
|
|
135
|
+
string memory website,
|
|
136
|
+
string memory license
|
|
137
|
+
);
|
|
138
|
+
|
|
139
|
+
function projectScriptDetails(
|
|
140
|
+
uint256 _projectId
|
|
141
|
+
)
|
|
142
|
+
external
|
|
143
|
+
view
|
|
144
|
+
returns (
|
|
145
|
+
string memory scriptTypeAndVersion,
|
|
146
|
+
string memory aspectRatio,
|
|
147
|
+
uint256 scriptCount
|
|
148
|
+
);
|
|
149
|
+
|
|
150
|
+
function projectScriptByIndex(
|
|
151
|
+
uint256 _projectId,
|
|
152
|
+
uint256 _index
|
|
153
|
+
) external view returns (string memory);
|
|
154
|
+
|
|
155
|
+
function tokenIdToHash(uint256 _tokenId) external view returns (bytes32);
|
|
156
|
+
|
|
118
157
|
// function to set a token's hash (must be guarded)
|
|
119
158
|
function setTokenHash_8PT(uint256 _tokenId, bytes32 _hash) external;
|
|
120
159
|
|
|
@@ -70,9 +70,6 @@ interface IGenArt721CoreContractV3_Engine is IGenArt721CoreContractV3_Base {
|
|
|
70
70
|
view
|
|
71
71
|
returns (uint256);
|
|
72
72
|
|
|
73
|
-
// function to read the hash for a given tokenId
|
|
74
|
-
function tokenIdToHash(uint256 _tokenId) external view returns (bytes32);
|
|
75
|
-
|
|
76
73
|
// function to read the hash-seed for a given tokenId
|
|
77
74
|
function tokenIdToHashSeed(
|
|
78
75
|
uint256 _tokenId
|
|
@@ -0,0 +1,132 @@
|
|
|
1
|
+
// SPDX-License-Identifier: LGPL-3.0-only
|
|
2
|
+
// Created By: Art Blocks Inc.
|
|
3
|
+
|
|
4
|
+
pragma solidity ^0.8.0;
|
|
5
|
+
|
|
6
|
+
import "./IAdminACLV0.sol";
|
|
7
|
+
import "./IGenArt721CoreContractV3_Engine.sol";
|
|
8
|
+
|
|
9
|
+
/**
|
|
10
|
+
* @title This interface is intended to house interface items that are common
|
|
11
|
+
* across all GenArt721CoreContractV3 Engine Flex and derivative implementations.
|
|
12
|
+
* @author Art Blocks Inc.
|
|
13
|
+
*/
|
|
14
|
+
interface IGenArt721CoreContractV3_Engine_Flex is
|
|
15
|
+
IGenArt721CoreContractV3_Engine
|
|
16
|
+
{
|
|
17
|
+
/**
|
|
18
|
+
* @notice When an external asset dependency is updated or added, this event is emitted.
|
|
19
|
+
* @param _projectId The project ID of the project that was updated.
|
|
20
|
+
* @param _index The index of the external asset dependency that was updated.
|
|
21
|
+
* @param _cid The content ID of the external asset dependency. This is an empty string
|
|
22
|
+
* if the dependency type is ONCHAIN.
|
|
23
|
+
* @param _dependencyType The type of the external asset dependency.
|
|
24
|
+
* @param _externalAssetDependencyCount The number of external asset dependencies.
|
|
25
|
+
*/
|
|
26
|
+
event ExternalAssetDependencyUpdated(
|
|
27
|
+
uint256 indexed _projectId,
|
|
28
|
+
uint256 indexed _index,
|
|
29
|
+
string _cid,
|
|
30
|
+
ExternalAssetDependencyType _dependencyType,
|
|
31
|
+
uint24 _externalAssetDependencyCount
|
|
32
|
+
);
|
|
33
|
+
|
|
34
|
+
/**
|
|
35
|
+
* @notice The project id `_projectId` has had an external asset dependency removed at index `_index`.
|
|
36
|
+
*/
|
|
37
|
+
event ExternalAssetDependencyRemoved(
|
|
38
|
+
uint256 indexed _projectId,
|
|
39
|
+
uint256 indexed _index
|
|
40
|
+
);
|
|
41
|
+
|
|
42
|
+
/**
|
|
43
|
+
* @notice The preferred gateway for dependency type `_dependencyType` has been updated to `_gatewayAddress`.
|
|
44
|
+
*/
|
|
45
|
+
event GatewayUpdated(
|
|
46
|
+
ExternalAssetDependencyType indexed _dependencyType,
|
|
47
|
+
string _gatewayAddress
|
|
48
|
+
);
|
|
49
|
+
|
|
50
|
+
/**
|
|
51
|
+
* @notice The project id `_projectId` has had all external asset dependencies locked.
|
|
52
|
+
* @dev This is a one-way operation. Once locked, the external asset dependencies cannot be updated.
|
|
53
|
+
*/
|
|
54
|
+
event ProjectExternalAssetDependenciesLocked(uint256 indexed _projectId);
|
|
55
|
+
|
|
56
|
+
/**
|
|
57
|
+
* @notice An external asset dependency type. Can be one of IPFS, ARWEAVE, or ONCHAIN.
|
|
58
|
+
*/
|
|
59
|
+
enum ExternalAssetDependencyType {
|
|
60
|
+
IPFS,
|
|
61
|
+
ARWEAVE,
|
|
62
|
+
ONCHAIN
|
|
63
|
+
}
|
|
64
|
+
|
|
65
|
+
/**
|
|
66
|
+
* @notice An external asset dependency. This is a struct that contains the CID of the dependency,
|
|
67
|
+
* the type of the dependency, and the address of the bytecode for this dependency.
|
|
68
|
+
*/
|
|
69
|
+
struct ExternalAssetDependency {
|
|
70
|
+
string cid;
|
|
71
|
+
ExternalAssetDependencyType dependencyType;
|
|
72
|
+
address bytecodeAddress;
|
|
73
|
+
}
|
|
74
|
+
|
|
75
|
+
/**
|
|
76
|
+
* @notice An external asset dependency with data. This is a convenience struct that contains the CID of the dependency,
|
|
77
|
+
* the type of the dependency, the address of the bytecode for this dependency, and the data retrieved from this bytecode address.
|
|
78
|
+
*/
|
|
79
|
+
struct ExternalAssetDependencyWithData {
|
|
80
|
+
string cid;
|
|
81
|
+
ExternalAssetDependencyType dependencyType;
|
|
82
|
+
address bytecodeAddress;
|
|
83
|
+
string data;
|
|
84
|
+
}
|
|
85
|
+
|
|
86
|
+
// preferredIPFSGateway is a url string
|
|
87
|
+
function preferredIPFSGateway() external view returns (string memory);
|
|
88
|
+
|
|
89
|
+
// preferredArweaveGateway is a url string
|
|
90
|
+
function preferredArweaveGateway() external view returns (string memory);
|
|
91
|
+
|
|
92
|
+
// updates the preferred IPFS gateway
|
|
93
|
+
function updateIPFSGateway(string calldata _gateway) external;
|
|
94
|
+
|
|
95
|
+
// updates the preferred Arweave gateway
|
|
96
|
+
function updateArweaveGateway(string calldata _gateway) external;
|
|
97
|
+
|
|
98
|
+
// locks the external asset dependencies for a project
|
|
99
|
+
function lockProjectExternalAssetDependencies(uint256 _projectId) external;
|
|
100
|
+
|
|
101
|
+
// updates the external asset dependency for a project at a given index
|
|
102
|
+
function updateProjectExternalAssetDependency(
|
|
103
|
+
uint256 _projectId,
|
|
104
|
+
uint256 _index,
|
|
105
|
+
string memory _cidOrData,
|
|
106
|
+
ExternalAssetDependencyType _dependencyType
|
|
107
|
+
) external;
|
|
108
|
+
|
|
109
|
+
// adds an external asset dependency for a project
|
|
110
|
+
function addProjectExternalAssetDependency(
|
|
111
|
+
uint256 _projectId,
|
|
112
|
+
string memory _cidOrData,
|
|
113
|
+
ExternalAssetDependencyType _dependencyType
|
|
114
|
+
) external;
|
|
115
|
+
|
|
116
|
+
// removes an external asset dependency for a project at a given index
|
|
117
|
+
function removeProjectExternalAssetDependency(
|
|
118
|
+
uint256 _projectId,
|
|
119
|
+
uint256 _index
|
|
120
|
+
) external;
|
|
121
|
+
|
|
122
|
+
// getter function for project external asset dependencies
|
|
123
|
+
function projectExternalAssetDependencyByIndex(
|
|
124
|
+
uint256 _projectId,
|
|
125
|
+
uint256 _index
|
|
126
|
+
) external view returns (ExternalAssetDependencyWithData memory);
|
|
127
|
+
|
|
128
|
+
// getter function project external asset dependency count
|
|
129
|
+
function projectExternalAssetDependencyCount(
|
|
130
|
+
uint256 _projectId
|
|
131
|
+
) external view returns (uint256);
|
|
132
|
+
}
|
|
@@ -4,6 +4,12 @@
|
|
|
4
4
|
pragma solidity ^0.8.0;
|
|
5
5
|
|
|
6
6
|
interface IMinterFilterV0 {
|
|
7
|
+
/**
|
|
8
|
+
* @notice Emitted when contract is deployed to notify indexing services
|
|
9
|
+
* of the new contract deployment.
|
|
10
|
+
*/
|
|
11
|
+
event Deployed();
|
|
12
|
+
|
|
7
13
|
/**
|
|
8
14
|
* @notice Approved minter `_minterAddress`.
|
|
9
15
|
*/
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
// SPDX-License-Identifier: LGPL-3.0-only
|
|
2
|
+
// Creatd By: Art Blocks Inc.
|
|
3
|
+
|
|
4
|
+
pragma solidity 0.8.17;
|
|
5
|
+
|
|
6
|
+
import "./IRandomizerV2.sol";
|
|
7
|
+
|
|
8
|
+
interface IRandomizerPolyptychV0 is IRandomizerV2 {
|
|
9
|
+
/**
|
|
10
|
+
* @notice Minter contract at `_contractAddress` allowed to assign token hash seeds.
|
|
11
|
+
*/
|
|
12
|
+
event HashSeedSetterUpdated(address indexed _contractAddress);
|
|
13
|
+
|
|
14
|
+
/**
|
|
15
|
+
* @notice Project with ID `_projectId` is enabled/disabled for polyptych minting.
|
|
16
|
+
*/
|
|
17
|
+
event ProjectIsPolyptychUpdated(uint256 _projectId, bool _isPolyptych);
|
|
18
|
+
|
|
19
|
+
/**
|
|
20
|
+
* @notice When a core contract calls this, it can be assured that the randomizer
|
|
21
|
+
* will set a bytes32 hash for tokenId `_tokenId` on the core contract. This function
|
|
22
|
+
* may only be called by the contract configured as the `hashSeedSetterContract` via
|
|
23
|
+
* the `setHashSeedSetterContract` available to the core contract admin.
|
|
24
|
+
*/
|
|
25
|
+
function assignTokenHash(uint256 _tokenId) external;
|
|
26
|
+
|
|
27
|
+
/**
|
|
28
|
+
* @notice Store the token hash seed for an existing token to be re-used in a polyptych panel.
|
|
29
|
+
*/
|
|
30
|
+
function setPolyptychHashSeed(uint256 _tokenId, bytes12 _hashSeed) external;
|
|
31
|
+
}
|
|
@@ -3,11 +3,14 @@
|
|
|
3
3
|
|
|
4
4
|
pragma solidity ^0.8.0;
|
|
5
5
|
|
|
6
|
-
import "./
|
|
6
|
+
import "./IGenArt721CoreContractV3_Base.sol";
|
|
7
7
|
|
|
8
8
|
interface IRandomizerV2 {
|
|
9
9
|
// The core contract that may interact with this randomizer contract.
|
|
10
|
-
function genArt721Core()
|
|
10
|
+
function genArt721Core()
|
|
11
|
+
external
|
|
12
|
+
view
|
|
13
|
+
returns (IGenArt721CoreContractV3_Base);
|
|
11
14
|
|
|
12
15
|
// When a core contract calls this, it can be assured that the randomizer
|
|
13
16
|
// will set a bytes32 hash for tokenId `_tokenId` on the core contract.
|