@artblocks/contracts 1.0.1 → 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 +42 -157
- 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/MinterDAExpV2.sol/MinterDAExpV2.json +2 -2
- package/artifacts/contracts/archive/minter-suite/Minters/MinterDAExp/MinterDAExpV3.sol/MinterDAExpV3.json +2 -2
- package/artifacts/contracts/archive/minter-suite/Minters/MinterDAExpSettlement/MinterDAExpSettlementV0.sol/MinterDAExpSettlementV0.json +2 -2
- package/artifacts/contracts/archive/minter-suite/Minters/MinterDAExpSettlement/MinterDAExpSettlementV1.sol/MinterDAExpSettlementV1.json +2 -2
- package/artifacts/contracts/archive/minter-suite/Minters/MinterDALin/MinterDALinV2.sol/MinterDALinV2.json +2 -2
- package/artifacts/contracts/archive/minter-suite/Minters/MinterDALin/MinterDALinV3.sol/MinterDALinV3.json +2 -2
- package/artifacts/contracts/archive/minter-suite/Minters/MinterHolder/MinterHolderV1.sol/MinterHolderV1.json +2 -2
- package/artifacts/contracts/archive/minter-suite/Minters/MinterHolder/MinterHolderV2.sol/MinterHolderV2.json +2 -2
- package/artifacts/contracts/archive/minter-suite/Minters/MinterHolder/MinterHolderV3.sol/MinterHolderV3.json +2 -2
- package/artifacts/contracts/archive/minter-suite/Minters/MinterMerkle/MinterMerkleV1.sol/MinterMerkleV1.json +2 -2
- package/artifacts/contracts/archive/minter-suite/Minters/MinterMerkle/MinterMerkleV2.sol/MinterMerkleV2.json +2 -2
- package/artifacts/contracts/archive/minter-suite/Minters/MinterMerkle/MinterMerkleV3.sol/MinterMerkleV3.json +2 -2
- package/artifacts/contracts/archive/minter-suite/Minters/MinterMerkle/MinterMerkleV4.sol/MinterMerkleV4.json +2 -2
- package/artifacts/contracts/archive/minter-suite/Minters/MinterSetPrice/MinterSetPriceV2.sol/MinterSetPriceV2.json +2 -2
- package/artifacts/contracts/archive/minter-suite/Minters/MinterSetPrice/MinterSetPriceV3.sol/MinterSetPriceV3.json +2 -2
- package/artifacts/contracts/archive/minter-suite/Minters/MinterSetPriceERC20/MinterSetPriceERC20V2.sol/MinterSetPriceERC20V2.json +2 -2
- package/artifacts/contracts/archive/minter-suite/Minters/MinterSetPriceERC20/MinterSetPriceERC20V3.sol/MinterSetPriceERC20V3.json +2 -2
- package/artifacts/contracts/explorations/GenArt721CoreV3_Explorations.sol/GenArt721CoreV3_Explorations.json +2 -2
- 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/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/MinterFilterV1.sol/MinterFilterV1.json +2 -2
- package/artifacts/contracts/minter-suite/Minters/MinterDAExpSettlementV2.sol/MinterDAExpSettlementV2.json +2 -2
- package/artifacts/contracts/minter-suite/Minters/MinterDAExpV4.sol/MinterDAExpV4.json +2 -2
- package/artifacts/contracts/minter-suite/Minters/MinterDALinV4.sol/MinterDALinV4.json +2 -2
- package/artifacts/contracts/minter-suite/Minters/MinterHolderV4.sol/MinterHolderV4.json +2 -2
- package/artifacts/contracts/minter-suite/Minters/MinterMerkleV5.sol/MinterMerkleV5.json +2 -2
- package/artifacts/contracts/minter-suite/Minters/MinterPolyptychV0.sol/IGenArt721CoreContractV3WithRandomizer.json +130 -0
- package/artifacts/contracts/minter-suite/Minters/MinterPolyptychV0.sol/MinterPolyptychV0.json +2 -2
- package/artifacts/contracts/minter-suite/Minters/MinterSEAV0.sol/MinterSEAV0.json +1310 -0
- package/artifacts/contracts/minter-suite/Minters/MinterSetPriceERC20V4.sol/MinterSetPriceERC20V4.json +2 -2
- package/artifacts/contracts/minter-suite/Minters/MinterSetPriceV4.sol/MinterSetPriceV4.json +2 -2
- package/artifacts/contracts/mock/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 +2 -2
- 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/explorations/GenArt721CoreV3_Explorations.sol +147 -176
- 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/IWETH.sol +11 -0
- package/contracts/libs/integration-refs/weth9/weth9.sol +763 -0
- package/contracts/minter-suite/MinterFilter/MinterFilterV1.sol +35 -47
- package/contracts/minter-suite/Minters/MinterDAExpSettlementV2.sol +26 -34
- package/contracts/minter-suite/Minters/MinterDAExpV4.sol +16 -21
- package/contracts/minter-suite/Minters/MinterDALinV4.sol +15 -17
- package/contracts/minter-suite/Minters/MinterHolderV4.sol +19 -19
- package/contracts/minter-suite/Minters/MinterMerkleV5.sol +13 -15
- package/contracts/minter-suite/Minters/MinterPolyptychV0.sol +23 -23
- package/contracts/minter-suite/Minters/MinterSEAV0.sol +1224 -0
- package/contracts/minter-suite/Minters/MinterSetPriceERC20V4.sol +11 -11
- package/contracts/minter-suite/Minters/MinterSetPriceV4.sol +9 -10
- 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/{BasicPolyptychRandomizerV0.sol → randomizer/PolyptychRandomizerV0.sol} +19 -28
- package/contracts/{BasicRandomizerV2.sol → randomizer/RandomizerV2.sol} +5 -13
- package/package.json +27 -14
- package/artifacts/contracts/BasicPolyptychRandomizerV0.sol/BasicPolyptychRandomizerV0.json +0 -229
- package/artifacts/contracts/BasicRandomizerV2.sol/BasicRandomizerV2.json +0 -102
|
@@ -115,13 +115,12 @@ contract MinterMerkleV5 is
|
|
|
115
115
|
mapping(uint256 => mapping(address => uint256))
|
|
116
116
|
public projectUserMintInvocations;
|
|
117
117
|
|
|
118
|
-
|
|
118
|
+
function _onlyArtist(uint256 _projectId) internal view {
|
|
119
119
|
require(
|
|
120
120
|
msg.sender ==
|
|
121
121
|
genArtCoreContract_Base.projectIdToArtistAddress(_projectId),
|
|
122
122
|
"Only Artist"
|
|
123
123
|
);
|
|
124
|
-
_;
|
|
125
124
|
}
|
|
126
125
|
|
|
127
126
|
/**
|
|
@@ -169,10 +168,8 @@ contract MinterMerkleV5 is
|
|
|
169
168
|
* @param _root root of Merkle tree defining addresses allowed to mint
|
|
170
169
|
* on project `_projectId`.
|
|
171
170
|
*/
|
|
172
|
-
function updateMerkleRoot(
|
|
173
|
-
|
|
174
|
-
bytes32 _root
|
|
175
|
-
) external onlyArtist(_projectId) {
|
|
171
|
+
function updateMerkleRoot(uint256 _projectId, bytes32 _root) external {
|
|
172
|
+
_onlyArtist(_projectId);
|
|
176
173
|
require(_root != bytes32(0), "Root must be provided");
|
|
177
174
|
projectMerkleRoot[_projectId] = _root;
|
|
178
175
|
emit ConfigValueSet(_projectId, CONFIG_MERKLE_ROOT, _root);
|
|
@@ -224,7 +221,8 @@ contract MinterMerkleV5 is
|
|
|
224
221
|
function setProjectInvocationsPerAddress(
|
|
225
222
|
uint256 _projectId,
|
|
226
223
|
uint24 _maxInvocationsPerAddress
|
|
227
|
-
) external
|
|
224
|
+
) external {
|
|
225
|
+
_onlyArtist(_projectId);
|
|
228
226
|
ProjectConfig storage _projectConfig = projectConfig[_projectId];
|
|
229
227
|
// use override value instead of the contract's default
|
|
230
228
|
// @dev this never changes from true to false; default value is only
|
|
@@ -253,9 +251,8 @@ contract MinterMerkleV5 is
|
|
|
253
251
|
* @dev this enables gas reduction after maxInvocations have been reached -
|
|
254
252
|
* core contracts shall still enforce a maxInvocation check during mint.
|
|
255
253
|
*/
|
|
256
|
-
function setProjectMaxInvocations(
|
|
257
|
-
|
|
258
|
-
) public onlyArtist(_projectId) {
|
|
254
|
+
function setProjectMaxInvocations(uint256 _projectId) public {
|
|
255
|
+
_onlyArtist(_projectId);
|
|
259
256
|
uint256 maxInvocations;
|
|
260
257
|
uint256 invocations;
|
|
261
258
|
(invocations, maxInvocations, , , , ) = genArtCoreContract_Base
|
|
@@ -287,7 +284,8 @@ contract MinterMerkleV5 is
|
|
|
287
284
|
function manuallyLimitProjectMaxInvocations(
|
|
288
285
|
uint256 _projectId,
|
|
289
286
|
uint256 _maxInvocations
|
|
290
|
-
) external
|
|
287
|
+
) external {
|
|
288
|
+
_onlyArtist(_projectId);
|
|
291
289
|
// CHECKS
|
|
292
290
|
// ensure that the manually set maxInvocations is not greater than what is set on the core contract
|
|
293
291
|
uint256 maxInvocations;
|
|
@@ -318,9 +316,8 @@ contract MinterMerkleV5 is
|
|
|
318
316
|
* @notice Warning: Disabling purchaseTo is not supported on this minter.
|
|
319
317
|
* This method exists purely for interface-conformance purposes.
|
|
320
318
|
*/
|
|
321
|
-
function togglePurchaseToDisabled(
|
|
322
|
-
|
|
323
|
-
) external view onlyArtist(_projectId) {
|
|
319
|
+
function togglePurchaseToDisabled(uint256 _projectId) external view {
|
|
320
|
+
_onlyArtist(_projectId);
|
|
324
321
|
revert("Action not supported");
|
|
325
322
|
}
|
|
326
323
|
|
|
@@ -377,7 +374,8 @@ contract MinterMerkleV5 is
|
|
|
377
374
|
function updatePricePerTokenInWei(
|
|
378
375
|
uint256 _projectId,
|
|
379
376
|
uint256 _pricePerTokenInWei
|
|
380
|
-
) external
|
|
377
|
+
) external {
|
|
378
|
+
_onlyArtist(_projectId);
|
|
381
379
|
ProjectConfig storage _projectConfig = projectConfig[_projectId];
|
|
382
380
|
_projectConfig.pricePerTokenInWei = _pricePerTokenInWei;
|
|
383
381
|
_projectConfig.priceIsConfigured = true;
|
|
@@ -146,9 +146,9 @@ contract MinterPolyptychV0 is
|
|
|
146
146
|
mapping(uint256 => mapping(address => mapping(uint256 => bool)))
|
|
147
147
|
public allowedProjectHolders;
|
|
148
148
|
|
|
149
|
-
//
|
|
149
|
+
// function to restrict access to only AdminACL allowed calls
|
|
150
150
|
// @dev defers which ACL contract is used to the core contract
|
|
151
|
-
|
|
151
|
+
function _onlyCoreAdminACL(bytes4 _selector) internal {
|
|
152
152
|
require(
|
|
153
153
|
genArtCoreContract.adminACLAllowed(
|
|
154
154
|
msg.sender,
|
|
@@ -157,16 +157,14 @@ contract MinterPolyptychV0 is
|
|
|
157
157
|
),
|
|
158
158
|
"Only Core AdminACL allowed"
|
|
159
159
|
);
|
|
160
|
-
_;
|
|
161
160
|
}
|
|
162
161
|
|
|
163
|
-
|
|
162
|
+
function _onlyArtist(uint256 _projectId) internal view {
|
|
164
163
|
require(
|
|
165
164
|
msg.sender ==
|
|
166
165
|
genArtCoreContract.projectIdToArtistAddress(_projectId),
|
|
167
166
|
"Only Artist"
|
|
168
167
|
);
|
|
169
|
-
_;
|
|
170
168
|
}
|
|
171
169
|
|
|
172
170
|
/**
|
|
@@ -229,9 +227,8 @@ contract MinterPolyptychV0 is
|
|
|
229
227
|
* `projectId = tokenId / 1_000_000`
|
|
230
228
|
* @param _NFTAddress NFT core address to be registered.
|
|
231
229
|
*/
|
|
232
|
-
function registerNFTAddress(
|
|
233
|
-
|
|
234
|
-
) external onlyCoreAdminACL(this.registerNFTAddress.selector) {
|
|
230
|
+
function registerNFTAddress(address _NFTAddress) external {
|
|
231
|
+
_onlyCoreAdminACL(this.registerNFTAddress.selector);
|
|
235
232
|
// check that core contract implements the `tokenIdToHashSeed` function
|
|
236
233
|
IGenArt721CoreContractV3WithRandomizer(_NFTAddress).tokenIdToHashSeed(
|
|
237
234
|
0
|
|
@@ -246,9 +243,8 @@ contract MinterPolyptychV0 is
|
|
|
246
243
|
* considered for adding to future allowlists.
|
|
247
244
|
* @param _NFTAddress NFT core address to be unregistered.
|
|
248
245
|
*/
|
|
249
|
-
function unregisterNFTAddress(
|
|
250
|
-
|
|
251
|
-
) external onlyCoreAdminACL(this.unregisterNFTAddress.selector) {
|
|
246
|
+
function unregisterNFTAddress(address _NFTAddress) external {
|
|
247
|
+
_onlyCoreAdminACL(this.unregisterNFTAddress.selector);
|
|
252
248
|
_registeredNFTAddresses.remove(_NFTAddress);
|
|
253
249
|
emit UnregisteredNFTAddress(_NFTAddress);
|
|
254
250
|
}
|
|
@@ -287,7 +283,8 @@ contract MinterPolyptychV0 is
|
|
|
287
283
|
uint256[] memory _ownedNFTProjectIdsAdd,
|
|
288
284
|
address[] memory _ownedNFTAddressesRemove,
|
|
289
285
|
uint256[] memory _ownedNFTProjectIdsRemove
|
|
290
|
-
) external
|
|
286
|
+
) external {
|
|
287
|
+
_onlyArtist(_projectId);
|
|
291
288
|
allowHoldersOfProjects(
|
|
292
289
|
_projectId,
|
|
293
290
|
_ownedNFTAddressesAdd,
|
|
@@ -339,7 +336,8 @@ contract MinterPolyptychV0 is
|
|
|
339
336
|
function manuallyLimitProjectMaxInvocations(
|
|
340
337
|
uint256 _projectId,
|
|
341
338
|
uint256 _maxInvocations
|
|
342
|
-
) external
|
|
339
|
+
) external {
|
|
340
|
+
_onlyArtist(_projectId);
|
|
343
341
|
// CHECKS
|
|
344
342
|
// ensure that the manually set maxInvocations is not greater than what is set on the core contract
|
|
345
343
|
uint256 maxInvocations;
|
|
@@ -376,7 +374,8 @@ contract MinterPolyptychV0 is
|
|
|
376
374
|
function updatePricePerTokenInWei(
|
|
377
375
|
uint256 _projectId,
|
|
378
376
|
uint256 _pricePerTokenInWei
|
|
379
|
-
) external
|
|
377
|
+
) external {
|
|
378
|
+
_onlyArtist(_projectId);
|
|
380
379
|
ProjectConfig storage _projectConfig = projectConfig[_projectId];
|
|
381
380
|
_projectConfig.pricePerTokenInWei = _pricePerTokenInWei;
|
|
382
381
|
_projectConfig.priceIsConfigured = true;
|
|
@@ -404,7 +403,8 @@ contract MinterPolyptychV0 is
|
|
|
404
403
|
uint256 _projectId,
|
|
405
404
|
string memory _currencySymbol,
|
|
406
405
|
address _currencyAddress
|
|
407
|
-
) external
|
|
406
|
+
) external {
|
|
407
|
+
_onlyArtist(_projectId);
|
|
408
408
|
// require null address if symbol is "ETH"
|
|
409
409
|
require(
|
|
410
410
|
(keccak256(abi.encodePacked(_currencySymbol)) ==
|
|
@@ -531,9 +531,8 @@ contract MinterPolyptychV0 is
|
|
|
531
531
|
* @notice Warning: Disabling purchaseTo is not supported on this minter.
|
|
532
532
|
* This method exists purely for interface-conformance purposes.
|
|
533
533
|
*/
|
|
534
|
-
function togglePurchaseToDisabled(
|
|
535
|
-
|
|
536
|
-
) external view onlyArtist(_projectId) {
|
|
534
|
+
function togglePurchaseToDisabled(uint256 _projectId) external view {
|
|
535
|
+
_onlyArtist(_projectId);
|
|
537
536
|
revert("Action not supported");
|
|
538
537
|
}
|
|
539
538
|
|
|
@@ -880,7 +879,8 @@ contract MinterPolyptychV0 is
|
|
|
880
879
|
uint256 _projectId,
|
|
881
880
|
address[] memory _ownedNFTAddresses,
|
|
882
881
|
uint256[] memory _ownedNFTProjectIds
|
|
883
|
-
) public
|
|
882
|
+
) public {
|
|
883
|
+
_onlyArtist(_projectId);
|
|
884
884
|
// require same length arrays
|
|
885
885
|
require(
|
|
886
886
|
_ownedNFTAddresses.length == _ownedNFTProjectIds.length,
|
|
@@ -925,7 +925,8 @@ contract MinterPolyptychV0 is
|
|
|
925
925
|
uint256 _projectId,
|
|
926
926
|
address[] memory _ownedNFTAddresses,
|
|
927
927
|
uint256[] memory _ownedNFTProjectIds
|
|
928
|
-
) public
|
|
928
|
+
) public {
|
|
929
|
+
_onlyArtist(_projectId);
|
|
929
930
|
// require same length arrays
|
|
930
931
|
require(
|
|
931
932
|
_ownedNFTAddresses.length == _ownedNFTProjectIds.length,
|
|
@@ -950,9 +951,8 @@ contract MinterPolyptychV0 is
|
|
|
950
951
|
* @notice Allows the artist to increment the minter to the next polyptych panel
|
|
951
952
|
* @param _projectId Project ID to increment to its next polyptych panel
|
|
952
953
|
*/
|
|
953
|
-
function incrementPolyptychProjectPanelId(
|
|
954
|
-
|
|
955
|
-
) public onlyArtist(_projectId) {
|
|
954
|
+
function incrementPolyptychProjectPanelId(uint256 _projectId) public {
|
|
955
|
+
_onlyArtist(_projectId);
|
|
956
956
|
projectConfig[_projectId].polyptychPanelId++;
|
|
957
957
|
}
|
|
958
958
|
|