@artblocks/contracts 0.0.1
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 +10 -0
- package/LICENSE +165 -0
- package/README.md +286 -0
- package/artifacts/contracts/AdminACLV0.sol/AdminACLV0.json +164 -0
- package/artifacts/contracts/AdminACLV1.sol/AdminACLV1.json +248 -0
- package/artifacts/contracts/BasicRandomizer.sol/BasicRandomizer.json +24 -0
- package/artifacts/contracts/BasicRandomizerV2.sol/BasicRandomizerV2.json +102 -0
- package/artifacts/contracts/DependencyRegistryV0.sol/DependencyRegistryV0.json +1020 -0
- package/artifacts/contracts/GenArt721CoreV3.sol/GenArt721CoreV3.json +1928 -0
- package/artifacts/contracts/GenArt721CoreV3_Engine.sol/GenArt721CoreV3_Engine.json +1942 -0
- package/artifacts/contracts/engine/GenArt721CoreV2_ENGINE_FLEX.sol/GenArt721CoreV2_ENGINE_FLEX.json +1708 -0
- package/artifacts/contracts/engine/GenArt721CoreV2_PBAB.sol/GenArt721CoreV2_PBAB.json +1410 -0
- package/artifacts/contracts/engine/GenArt721CoreV2_PRTNR.sol/GenArt721CoreV2_PRTNR.json +1436 -0
- package/artifacts/contracts/engine/GenArt721MinterBurner_PBAB.sol/GenArt721MinterBurner_PBAB.json +437 -0
- package/artifacts/contracts/engine/GenArt721MinterDAExp_PBAB.sol/GenArt721MinterDAExp_PBAB.json +508 -0
- package/artifacts/contracts/engine/GenArt721Minter_PBAB.sol/GenArt721Minter_PBAB.json +381 -0
- package/artifacts/contracts/engine-registry/EngineRegistryV0.sol/EngineRegistryV0.json +109 -0
- package/artifacts/contracts/engine-registry/future/EngineRegistryV1.sol/EngineRegistryV1.json +109 -0
- package/artifacts/contracts/explorations/GenArt721CoreV3_Explorations.sol/GenArt721CoreV3_Explorations.json +1902 -0
- package/artifacts/contracts/interfaces/0.5.x/IBonusContract.sol/IBonusContract.json +47 -0
- package/artifacts/contracts/interfaces/0.5.x/IGenArt721CoreContractV1.sol/IGenArt721CoreContractV1.json +413 -0
- package/artifacts/contracts/interfaces/0.5.x/IGenArt721CoreV2_PBAB.sol/IGenArt721CoreV2_PBAB.json +392 -0
- package/artifacts/contracts/interfaces/0.5.x/IRandomizer.sol/IRandomizer.json +26 -0
- package/artifacts/contracts/interfaces/0.8.x/IAdminACLV0.sol/IAdminACLV0.json +122 -0
- package/artifacts/contracts/interfaces/0.8.x/IArtblocksRoyaltyOverride.sol/IArtblocksRoyaltyOverride.json +59 -0
- package/artifacts/contracts/interfaces/0.8.x/IBonusContract.sol/IBonusContract.json +43 -0
- package/artifacts/contracts/interfaces/0.8.x/IDelegationRegistry.sol/IDelegationRegistry.json +510 -0
- package/artifacts/contracts/interfaces/0.8.x/IDependencyRegistryCompatibleV0.sol/IDependencyRegistryCompatibleV0.json +53 -0
- package/artifacts/contracts/interfaces/0.8.x/IDependencyRegistryV0.sol/IDependencyRegistryV0.json +350 -0
- package/artifacts/contracts/interfaces/0.8.x/IEngineRegistryV0.sol/IEngineRegistryV0.json +85 -0
- package/artifacts/contracts/interfaces/0.8.x/IFilteredMinterDAExpSettlementV0.sol/IFilteredMinterDAExpSettlementV0.json +730 -0
- package/artifacts/contracts/interfaces/0.8.x/IFilteredMinterDAExpV0.sol/IFilteredMinterDAExpV0.json +311 -0
- package/artifacts/contracts/interfaces/0.8.x/IFilteredMinterDAExpV1.sol/IFilteredMinterDAExpV1.json +617 -0
- package/artifacts/contracts/interfaces/0.8.x/IFilteredMinterDALinV0.sol/IFilteredMinterDALinV0.json +292 -0
- package/artifacts/contracts/interfaces/0.8.x/IFilteredMinterDALinV1.sol/IFilteredMinterDALinV1.json +598 -0
- package/artifacts/contracts/interfaces/0.8.x/IFilteredMinterHolderV0.sol/IFilteredMinterHolderV0.json +355 -0
- package/artifacts/contracts/interfaces/0.8.x/IFilteredMinterHolderV1.sol/IFilteredMinterHolderV1.json +368 -0
- package/artifacts/contracts/interfaces/0.8.x/IFilteredMinterHolderV2.sol/IFilteredMinterHolderV2.json +674 -0
- package/artifacts/contracts/interfaces/0.8.x/IFilteredMinterMerkleV0.sol/IFilteredMinterMerkleV0.json +551 -0
- package/artifacts/contracts/interfaces/0.8.x/IFilteredMinterMerkleV1.sol/IFilteredMinterMerkleV1.json +564 -0
- package/artifacts/contracts/interfaces/0.8.x/IFilteredMinterMerkleV2.sol/IFilteredMinterMerkleV2.json +601 -0
- package/artifacts/contracts/interfaces/0.8.x/IFilteredMinterV0.sol/IFilteredMinterV0.json +216 -0
- package/artifacts/contracts/interfaces/0.8.x/IFilteredMinterV1.sol/IFilteredMinterV1.json +485 -0
- package/artifacts/contracts/interfaces/0.8.x/IFilteredMinterV2.sol/IFilteredMinterV2.json +522 -0
- package/artifacts/contracts/interfaces/0.8.x/IGenArt721CoreContractV1.sol/IGenArt721CoreContractV1.json +299 -0
- package/artifacts/contracts/interfaces/0.8.x/IGenArt721CoreContractV3.sol/IGenArt721CoreContractV3.json +609 -0
- package/artifacts/contracts/interfaces/0.8.x/IGenArt721CoreContractV3_Base.sol/IGenArt721CoreContractV3_Base.json +448 -0
- package/artifacts/contracts/interfaces/0.8.x/IGenArt721CoreContractV3_Engine.sol/IGenArt721CoreContractV3_Engine.json +649 -0
- package/artifacts/contracts/interfaces/0.8.x/IGenArt721CoreV2_PBAB.sol/IGenArt721CoreV2_PBAB.json +362 -0
- package/artifacts/contracts/interfaces/0.8.x/IManifold.sol/IManifold.json +35 -0
- package/artifacts/contracts/interfaces/0.8.x/IMinterFilterV0.sol/IMinterFilterV0.json +192 -0
- package/artifacts/contracts/interfaces/0.8.x/IRandomizer.sol/IRandomizer.json +24 -0
- package/artifacts/contracts/interfaces/0.8.x/IRandomizerV2.sol/IRandomizerV2.json +37 -0
- package/artifacts/contracts/legacy/GenArt721CoreV1.sol/Address.json +10 -0
- package/artifacts/contracts/legacy/GenArt721CoreV1.sol/Counters.json +10 -0
- package/artifacts/contracts/legacy/GenArt721CoreV1.sol/CustomERC721Metadata.json +425 -0
- package/artifacts/contracts/legacy/GenArt721CoreV1.sol/ERC165.json +38 -0
- package/artifacts/contracts/legacy/GenArt721CoreV1.sol/ERC721.json +322 -0
- package/artifacts/contracts/legacy/GenArt721CoreV1.sol/ERC721Enumerable.json +384 -0
- package/artifacts/contracts/legacy/GenArt721CoreV1.sol/GenArt721CoreV1.json +1773 -0
- package/artifacts/contracts/legacy/GenArt721CoreV1.sol/IERC165.json +32 -0
- package/artifacts/contracts/legacy/GenArt721CoreV1.sol/IERC721.json +316 -0
- package/artifacts/contracts/legacy/GenArt721CoreV1.sol/IERC721Enumerable.json +378 -0
- package/artifacts/contracts/legacy/GenArt721CoreV1.sol/IERC721Receiver.json +47 -0
- package/artifacts/contracts/legacy/GenArt721CoreV1.sol/SafeMath.json +10 -0
- package/artifacts/contracts/legacy/GenArt721CoreV1.sol/Strings.json +10 -0
- package/artifacts/contracts/legacy/GenArt721LegacyMinter.sol/GenArt721LegacyMinter.json +338 -0
- package/artifacts/contracts/libs/0.5.x/CustomERC721Metadata.sol/CustomERC721Metadata.json +425 -0
- package/artifacts/contracts/libs/0.5.x/IERC20.sol/IERC20.json +206 -0
- package/artifacts/contracts/libs/0.5.x/SafeMath.sol/SafeMath.json +10 -0
- package/artifacts/contracts/libs/0.5.x/Strings.sol/Strings.json +10 -0
- package/artifacts/contracts/libs/0.8.x/BytecodeStorage.sol/BytecodeStorage.json +10 -0
- package/artifacts/contracts/libs/0.8.x/Bytes32Strings.sol/Bytes32Strings.json +10 -0
- package/artifacts/contracts/libs/0.8.x/ERC721_PackedHashSeed.sol/ERC721_PackedHashSeed.json +357 -0
- package/artifacts/contracts/libs/integration-refs/delegation-registry/DelegationRegistry.sol/DelegationRegistry.json +529 -0
- package/artifacts/contracts/libs/integration-refs/gnosis-safe/GnosisSafeMock.sol/GnosisSafeMock.json +1037 -0
- package/artifacts/contracts/libs/integration-refs/gnosis-safe/GnosisSafeProxyFactoryMock.sol/GnosisSafeProxyFactoryMock.json +172 -0
- package/artifacts/contracts/libs/integration-refs/gnosis-safe/MultiSendMock.sol/MultiSendMock.json +24 -0
- package/artifacts/contracts/minter-suite/MinterFilter/MinterFilterV0.sol/MinterFilterV0.json +342 -0
- package/artifacts/contracts/minter-suite/MinterFilter/MinterFilterV1.sol/MinterFilterV1.json +322 -0
- package/artifacts/contracts/minter-suite/Minters/MinterDAExp/MinterDAExpV2.sol/MinterDAExpV2.json +550 -0
- package/artifacts/contracts/minter-suite/Minters/MinterDAExp/MinterDAExpV3.sol/MinterDAExpV3.json +856 -0
- package/artifacts/contracts/minter-suite/Minters/MinterDAExpSettlement/MinterDAExpSettlementV0.sol/MinterDAExpSettlementV0.json +1053 -0
- package/artifacts/contracts/minter-suite/Minters/MinterDALin/MinterDALinV2.sol/MinterDALinV2.json +526 -0
- package/artifacts/contracts/minter-suite/Minters/MinterDALin/MinterDALinV3.sol/MinterDALinV3.json +832 -0
- package/artifacts/contracts/minter-suite/Minters/MinterHolder/MinterHolderV2.sol/MinterHolderV2.json +794 -0
- package/artifacts/contracts/minter-suite/Minters/MinterHolder/MinterHolderV3.sol/MinterHolderV3.json +1100 -0
- package/artifacts/contracts/minter-suite/Minters/MinterMerkle/MinterMerkleV3.sol/MinterMerkleV3.json +1002 -0
- package/artifacts/contracts/minter-suite/Minters/MinterMerkle/MinterMerkleV4.sol/MinterMerkleV4.json +1039 -0
- package/artifacts/contracts/minter-suite/Minters/MinterSetPrice/MinterSetPriceV2.sol/MinterSetPriceV2.json +365 -0
- package/artifacts/contracts/minter-suite/Minters/MinterSetPrice/MinterSetPriceV3.sol/MinterSetPriceV3.json +671 -0
- package/artifacts/contracts/minter-suite/Minters/MinterSetPrice/deprecated/MinterSetPriceV1.sol/MinterSetPriceV1.json +288 -0
- package/artifacts/contracts/minter-suite/Minters/MinterSetPriceERC20/MinterSetPriceERC20V2.sol/MinterSetPriceERC20V2.json +436 -0
- package/artifacts/contracts/minter-suite/Minters/MinterSetPriceERC20/MinterSetPriceERC20V3.sol/MinterSetPriceERC20V3.json +742 -0
- package/artifacts/contracts/minter-suite/Minters/MinterSetPriceERC20/deprecated/MinterSetPriceERC20V0.sol/MinterSetPriceERC20V0.json +461 -0
- package/artifacts/contracts/mock/BytecodeTextCR_DMock.sol/BytecodeTextCR_DMock.json +194 -0
- package/artifacts/contracts/mock/DeadReceiverMock.sol/DeadReceiverMock.json +15 -0
- package/artifacts/contracts/mock/ERC20Mock.sol/ERC20Mock.json +292 -0
- package/artifacts/contracts/mock/MockAdminACLV0.sol/MockAdminACLV0Events.json +165 -0
- package/artifacts/contracts/mock/RandomizerV2_NoAssignMock.sol/RandomizerV2_NoAssignMock.json +128 -0
- package/artifacts/contracts/mock/ReentrancyHolderMock.sol/ReentrancyHolderMock.json +118 -0
- package/artifacts/contracts/mock/ReentrancyMerkleMock.sol/ReentrancyMerkleMock.json +87 -0
- package/artifacts/contracts/mock/ReentrancyMock.sol/ReentrancyMock.json +82 -0
- package/artifacts/contracts/royalty-registry/GenArt721RoyaltyOverride.sol/GenArt721RoyaltyOverride.json +208 -0
- package/artifacts/contracts/royalty-registry/GenArt721RoyaltyOverride_PBAB.sol/GenArt721RoyaltyOverride_PBAB.json +301 -0
- package/contracts/AdminACLV0.sol +103 -0
- package/contracts/AdminACLV1.sol +193 -0
- package/contracts/BasicRandomizer.sol +23 -0
- package/contracts/BasicRandomizerV2.sol +36 -0
- package/contracts/DependencyRegistryV0.sol +893 -0
- package/contracts/GenArt721CoreV3.sol +2001 -0
- package/contracts/GenArt721CoreV3_Engine.sol +2061 -0
- package/contracts/engine/GenArt721CoreV2_ENGINE_FLEX.sol +887 -0
- package/contracts/engine/GenArt721CoreV2_PBAB.sol +695 -0
- package/contracts/engine/GenArt721CoreV2_PRTNR.sol +749 -0
- package/contracts/engine/GenArt721MinterBurner_PBAB.sol +467 -0
- package/contracts/engine/GenArt721MinterDAExp_PBAB.sol +614 -0
- package/contracts/engine/GenArt721Minter_PBAB.sol +420 -0
- package/contracts/engine-registry/EngineRegistryV0.sol +72 -0
- package/contracts/engine-registry/future/EngineRegistryV1.sol +86 -0
- package/contracts/explorations/GenArt721CoreV3_Explorations.sol +1989 -0
- package/contracts/interfaces/0.5.x/IBonusContract.sol +10 -0
- package/contracts/interfaces/0.5.x/IGenArt721CoreContractV1.sol +91 -0
- package/contracts/interfaces/0.5.x/IGenArt721CoreV2_PBAB.sol +92 -0
- package/contracts/interfaces/0.5.x/IRandomizer.sol +8 -0
- package/contracts/interfaces/0.8.x/IAdminACLV0.sol +51 -0
- package/contracts/interfaces/0.8.x/IArtblocksRoyaltyOverride.sol +34 -0
- package/contracts/interfaces/0.8.x/IBonusContract.sol +10 -0
- package/contracts/interfaces/0.8.x/IDelegationRegistry.sol +221 -0
- package/contracts/interfaces/0.8.x/IDependencyRegistryCompatibleV0.sol +31 -0
- package/contracts/interfaces/0.8.x/IDependencyRegistryV0.sol +95 -0
- package/contracts/interfaces/0.8.x/IEngineRegistryV0.sol +38 -0
- package/contracts/interfaces/0.8.x/IFilteredMinterDAExpSettlementV0.sol +70 -0
- package/contracts/interfaces/0.8.x/IFilteredMinterDAExpV0.sol +35 -0
- package/contracts/interfaces/0.8.x/IFilteredMinterDAExpV1.sol +16 -0
- package/contracts/interfaces/0.8.x/IFilteredMinterDALinV0.sol +32 -0
- package/contracts/interfaces/0.8.x/IFilteredMinterDALinV1.sol +16 -0
- package/contracts/interfaces/0.8.x/IFilteredMinterHolderV0.sol +68 -0
- package/contracts/interfaces/0.8.x/IFilteredMinterHolderV1.sol +19 -0
- package/contracts/interfaces/0.8.x/IFilteredMinterHolderV2.sol +19 -0
- package/contracts/interfaces/0.8.x/IFilteredMinterMerkleV0.sol +37 -0
- package/contracts/interfaces/0.8.x/IFilteredMinterMerkleV1.sol +19 -0
- package/contracts/interfaces/0.8.x/IFilteredMinterMerkleV2.sol +19 -0
- package/contracts/interfaces/0.8.x/IFilteredMinterV0.sol +74 -0
- package/contracts/interfaces/0.8.x/IFilteredMinterV1.sol +127 -0
- package/contracts/interfaces/0.8.x/IFilteredMinterV2.sol +30 -0
- package/contracts/interfaces/0.8.x/IGenArt721CoreContractV1.sol +73 -0
- package/contracts/interfaces/0.8.x/IGenArt721CoreContractV3.sol +79 -0
- package/contracts/interfaces/0.8.x/IGenArt721CoreContractV3_Base.sol +127 -0
- package/contracts/interfaces/0.8.x/IGenArt721CoreContractV3_Engine.sol +80 -0
- package/contracts/interfaces/0.8.x/IGenArt721CoreV2_PBAB.sol +91 -0
- package/contracts/interfaces/0.8.x/IManifold.sol +24 -0
- package/contracts/interfaces/0.8.x/IMinterFilterV0.sol +47 -0
- package/contracts/interfaces/0.8.x/IRandomizer.sol +8 -0
- package/contracts/interfaces/0.8.x/IRandomizerV2.sol +15 -0
- package/contracts/legacy/GenArt721CoreV1.sol +1593 -0
- package/contracts/legacy/GenArt721LegacyMinter.sol +275 -0
- package/contracts/libs/0.5.x/CustomERC721Metadata.sol +52 -0
- package/contracts/libs/0.5.x/IERC20.sol +96 -0
- package/contracts/libs/0.5.x/SafeMath.sol +98 -0
- package/contracts/libs/0.5.x/Strings.sol +92 -0
- package/contracts/libs/0.8.x/BytecodeStorage.sol +314 -0
- package/contracts/libs/0.8.x/Bytes32Strings.sol +66 -0
- package/contracts/libs/0.8.x/ERC721_PackedHashSeed.sol +514 -0
- package/contracts/libs/integration-refs/delegation-registry/DelegationRegistry.sol +663 -0
- package/contracts/libs/integration-refs/gnosis-safe/GnosisSafeMock.sol +6 -0
- package/contracts/libs/integration-refs/gnosis-safe/GnosisSafeProxyFactoryMock.sol +6 -0
- package/contracts/libs/integration-refs/gnosis-safe/MultiSendMock.sol +6 -0
- package/contracts/minter-suite/MinterFilter/MinterFilterV0.sol +291 -0
- package/contracts/minter-suite/MinterFilter/MinterFilterV1.sol +320 -0
- package/contracts/minter-suite/Minters/MinterDAExp/MinterDAExpV2.sol +571 -0
- package/contracts/minter-suite/Minters/MinterDAExp/MinterDAExpV3.sol +622 -0
- package/contracts/minter-suite/Minters/MinterDAExpSettlement/MinterDAExpSettlementV0.sol +1066 -0
- package/contracts/minter-suite/Minters/MinterDALin/MinterDALinV2.sol +527 -0
- package/contracts/minter-suite/Minters/MinterDALin/MinterDALinV3.sol +576 -0
- package/contracts/minter-suite/Minters/MinterHolder/MinterHolderV2.sol +749 -0
- package/contracts/minter-suite/Minters/MinterHolder/MinterHolderV3.sol +798 -0
- package/contracts/minter-suite/Minters/MinterMerkle/MinterMerkleV3.sol +682 -0
- package/contracts/minter-suite/Minters/MinterMerkle/MinterMerkleV4.sol +733 -0
- package/contracts/minter-suite/Minters/MinterSetPrice/MinterSetPriceV2.sol +350 -0
- package/contracts/minter-suite/Minters/MinterSetPrice/MinterSetPriceV3.sol +401 -0
- package/contracts/minter-suite/Minters/MinterSetPrice/deprecated/MinterSetPriceV1.sol +274 -0
- package/contracts/minter-suite/Minters/MinterSetPriceERC20/MinterSetPriceERC20V2.sol +491 -0
- package/contracts/minter-suite/Minters/MinterSetPriceERC20/MinterSetPriceERC20V3.sol +542 -0
- package/contracts/minter-suite/Minters/MinterSetPriceERC20/deprecated/MinterSetPriceERC20V0.sol +470 -0
- package/contracts/mock/BytecodeTextCR_DMock.sol +184 -0
- package/contracts/mock/DeadReceiverMock.sol +13 -0
- package/contracts/mock/ERC20Mock.sol +11 -0
- package/contracts/mock/MockAdminACLV0.sol +65 -0
- package/contracts/mock/RandomizerV2_NoAssignMock.sol +43 -0
- package/contracts/mock/ReentrancyHolderMock.sol +50 -0
- package/contracts/mock/ReentrancyMerkleMock.sol +64 -0
- package/contracts/mock/ReentrancyMock.sol +44 -0
- package/contracts/royalty-registry/GenArt721RoyaltyOverride.sol +168 -0
- package/contracts/royalty-registry/GenArt721RoyaltyOverride_PBAB.sol +221 -0
- package/package.json +83 -0
|
@@ -0,0 +1,193 @@
|
|
|
1
|
+
// SPDX-License-Identifier: MIT
|
|
2
|
+
|
|
3
|
+
pragma solidity 0.8.17;
|
|
4
|
+
|
|
5
|
+
import "./interfaces/0.8.x/IAdminACLV0.sol";
|
|
6
|
+
import "./GenArt721CoreV3.sol";
|
|
7
|
+
import "@openzeppelin-4.7/contracts/access/Ownable.sol";
|
|
8
|
+
import "@openzeppelin-4.7/contracts/utils/introspection/ERC165.sol";
|
|
9
|
+
import "@openzeppelin-4.7/contracts/utils/structs/EnumerableSet.sol";
|
|
10
|
+
|
|
11
|
+
/**
|
|
12
|
+
* @title Admin ACL contract, V1.
|
|
13
|
+
* @author Art Blocks Inc.
|
|
14
|
+
* @notice Privileged Roles and Ownership:
|
|
15
|
+
* This contract has a single superAdmin that passes all ACL checks. It also
|
|
16
|
+
* contains a set of payment approvers who may only call the function
|
|
17
|
+
* `GenArt721CoreV3.adminAcceptArtistAddressesAndSplits`. All checks for any
|
|
18
|
+
* other address will return false.
|
|
19
|
+
* The superAdmin can be changed by the current superAdmin.
|
|
20
|
+
* Payment approvers may only be changed by the current superAdmin.
|
|
21
|
+
* Care must be taken to ensure that the admin ACL contract is secure behind a
|
|
22
|
+
* multi-sig or other secure access control mechanism.
|
|
23
|
+
* This contract continues to broadcast support (and require future-adminACL
|
|
24
|
+
* broadcasted support) for IAdminACLV0 via ERC165 interface detection.
|
|
25
|
+
*/
|
|
26
|
+
contract AdminACLV1 is IAdminACLV0, ERC165 {
|
|
27
|
+
/// New address added to set of addresses who may approve artist-proposed
|
|
28
|
+
/// payment addresses.
|
|
29
|
+
event PaymentApproverAdded(address indexed _approver);
|
|
30
|
+
|
|
31
|
+
/// Address removed from set of addresses who may approve artist-proposed
|
|
32
|
+
/// payment addresses.
|
|
33
|
+
event PaymentApproverRemoved(address indexed _approver);
|
|
34
|
+
|
|
35
|
+
// add Enumerable Set methods
|
|
36
|
+
using EnumerableSet for EnumerableSet.AddressSet;
|
|
37
|
+
|
|
38
|
+
string public AdminACLType = "AdminACLV1";
|
|
39
|
+
|
|
40
|
+
/// superAdmin is the only address that passes any and all ACL checks
|
|
41
|
+
address public superAdmin;
|
|
42
|
+
|
|
43
|
+
// Set of addresses that have been granted admin approval of artist-
|
|
44
|
+
// proposed payment address changes
|
|
45
|
+
EnumerableSet.AddressSet private _paymentApprovers;
|
|
46
|
+
|
|
47
|
+
constructor() {
|
|
48
|
+
superAdmin = msg.sender;
|
|
49
|
+
}
|
|
50
|
+
|
|
51
|
+
/**
|
|
52
|
+
* @notice Allows superAdmin change the superAdmin address.
|
|
53
|
+
* @param _newSuperAdmin The new superAdmin address.
|
|
54
|
+
* @param _genArt721CoreAddressesToUpdate Array of genArt721Core
|
|
55
|
+
* addresses to update to the new superAdmin, for indexing purposes only.
|
|
56
|
+
* @dev this function is gated to only superAdmin address.
|
|
57
|
+
*/
|
|
58
|
+
function changeSuperAdmin(
|
|
59
|
+
address _newSuperAdmin,
|
|
60
|
+
address[] calldata _genArt721CoreAddressesToUpdate
|
|
61
|
+
) external {
|
|
62
|
+
require(msg.sender == superAdmin, "Only superAdmin");
|
|
63
|
+
address previousSuperAdmin = superAdmin;
|
|
64
|
+
superAdmin = _newSuperAdmin;
|
|
65
|
+
emit SuperAdminTransferred(
|
|
66
|
+
previousSuperAdmin,
|
|
67
|
+
_newSuperAdmin,
|
|
68
|
+
_genArt721CoreAddressesToUpdate
|
|
69
|
+
);
|
|
70
|
+
}
|
|
71
|
+
|
|
72
|
+
/**
|
|
73
|
+
* Calls transferOwnership on other contract from this contract.
|
|
74
|
+
* This is useful for updating to a new AdminACL contract.
|
|
75
|
+
* @dev this function is gated to only superAdmin address.
|
|
76
|
+
* @dev This implementation requires that the new AdminACL contract
|
|
77
|
+
* broadcasts support of IAdminACLV0 via ERC165 interface detection.
|
|
78
|
+
*/
|
|
79
|
+
function transferOwnershipOn(
|
|
80
|
+
address _contract,
|
|
81
|
+
address _newAdminACL
|
|
82
|
+
) external {
|
|
83
|
+
require(msg.sender == superAdmin, "Only superAdmin");
|
|
84
|
+
// ensure new AdminACL contract supports IAdminACLV0
|
|
85
|
+
require(
|
|
86
|
+
ERC165(_newAdminACL).supportsInterface(
|
|
87
|
+
type(IAdminACLV0).interfaceId
|
|
88
|
+
),
|
|
89
|
+
"AdminACLV1: new admin ACL does not support IAdminACLV0"
|
|
90
|
+
);
|
|
91
|
+
Ownable(_contract).transferOwnership(_newAdminACL);
|
|
92
|
+
}
|
|
93
|
+
|
|
94
|
+
/**
|
|
95
|
+
* @notice Calls renounceOwnership on other contract from this contract.
|
|
96
|
+
* @dev this function is gated to only superAdmin address.
|
|
97
|
+
*/
|
|
98
|
+
function renounceOwnershipOn(address _contract) external {
|
|
99
|
+
require(msg.sender == superAdmin, "Only superAdmin");
|
|
100
|
+
Ownable(_contract).renounceOwnership();
|
|
101
|
+
}
|
|
102
|
+
|
|
103
|
+
/**
|
|
104
|
+
* @notice Checks if sender `_sender` is allowed to call function with selector
|
|
105
|
+
* `_selector` on contract `_contract`. Returns true if sender is superAdmin,
|
|
106
|
+
* or if `_selector` is
|
|
107
|
+
* GenArt721CoreV3.adminAcceptArtistAddressesAndSplits.selector and address
|
|
108
|
+
* is in set of payment approvers.
|
|
109
|
+
*/
|
|
110
|
+
function allowed(
|
|
111
|
+
address _sender,
|
|
112
|
+
address /*_contract*/,
|
|
113
|
+
bytes4 _selector
|
|
114
|
+
) external view returns (bool) {
|
|
115
|
+
// always allow superAdmin
|
|
116
|
+
if (_sender == superAdmin) {
|
|
117
|
+
return true;
|
|
118
|
+
}
|
|
119
|
+
// if calling payment approval function, check if sender is in approver
|
|
120
|
+
// set
|
|
121
|
+
if (
|
|
122
|
+
_selector ==
|
|
123
|
+
GenArt721CoreV3.adminAcceptArtistAddressesAndSplits.selector
|
|
124
|
+
) {
|
|
125
|
+
return _paymentApprovers.contains(_sender);
|
|
126
|
+
}
|
|
127
|
+
// otherwise, return false
|
|
128
|
+
return false;
|
|
129
|
+
}
|
|
130
|
+
|
|
131
|
+
/**
|
|
132
|
+
*
|
|
133
|
+
* @notice Adds address to payment approvers set. Only callable by
|
|
134
|
+
* superAdmin. Address must not already be in set.
|
|
135
|
+
* @param _approver NFT core address to be registered.
|
|
136
|
+
*/
|
|
137
|
+
function addPaymentApprover(address _approver) external {
|
|
138
|
+
require(msg.sender == superAdmin, "Only superAdmin");
|
|
139
|
+
require(
|
|
140
|
+
_paymentApprovers.add(_approver),
|
|
141
|
+
"AdminACLV1: Already registered"
|
|
142
|
+
);
|
|
143
|
+
emit PaymentApproverAdded(_approver);
|
|
144
|
+
}
|
|
145
|
+
|
|
146
|
+
/**
|
|
147
|
+
*
|
|
148
|
+
* @notice Removes address to payment approvers set. Only callable by
|
|
149
|
+
* superAdmin. Address must be in set.
|
|
150
|
+
* @param _approver NFT core address to be registered.
|
|
151
|
+
*/
|
|
152
|
+
function removePaymentApprover(address _approver) external {
|
|
153
|
+
require(msg.sender == superAdmin, "Only superAdmin");
|
|
154
|
+
require(
|
|
155
|
+
_paymentApprovers.remove(_approver),
|
|
156
|
+
"AdminACLV1: Not registered"
|
|
157
|
+
);
|
|
158
|
+
emit PaymentApproverRemoved(_approver);
|
|
159
|
+
}
|
|
160
|
+
|
|
161
|
+
/**
|
|
162
|
+
* @notice Gets quantity of addresses registered to approve artist-proposed
|
|
163
|
+
* payment addresses.
|
|
164
|
+
* @return uint256 quantity of addresses approved
|
|
165
|
+
*/
|
|
166
|
+
function getNumPaymentApprovers() external view returns (uint256) {
|
|
167
|
+
return _paymentApprovers.length();
|
|
168
|
+
}
|
|
169
|
+
|
|
170
|
+
/**
|
|
171
|
+
* @notice Get artist-proposed payment address approver address at index
|
|
172
|
+
* `_index` of enumerable set.
|
|
173
|
+
* @param _index enumerable set index to query.
|
|
174
|
+
* @return NFTAddress payment approver address at index `_index`
|
|
175
|
+
* @dev index must be < quantity of registered payment approvers
|
|
176
|
+
*/
|
|
177
|
+
function getPaymentApproverAt(
|
|
178
|
+
uint256 _index
|
|
179
|
+
) external view returns (address NFTAddress) {
|
|
180
|
+
return _paymentApprovers.at(_index);
|
|
181
|
+
}
|
|
182
|
+
|
|
183
|
+
/**
|
|
184
|
+
* @inheritdoc ERC165
|
|
185
|
+
*/
|
|
186
|
+
function supportsInterface(
|
|
187
|
+
bytes4 interfaceId
|
|
188
|
+
) public view virtual override(ERC165) returns (bool) {
|
|
189
|
+
return
|
|
190
|
+
interfaceId == type(IAdminACLV0).interfaceId ||
|
|
191
|
+
super.supportsInterface(interfaceId);
|
|
192
|
+
}
|
|
193
|
+
}
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
// SPDX-License-Identifier: LGPL-3.0-only
|
|
2
|
+
// Creatd By: Art Blocks Inc.
|
|
3
|
+
|
|
4
|
+
import "./interfaces/0.8.x/IRandomizer.sol";
|
|
5
|
+
|
|
6
|
+
pragma solidity 0.8.9;
|
|
7
|
+
|
|
8
|
+
contract BasicRandomizer is IRandomizer {
|
|
9
|
+
function returnValue() public view returns (bytes32) {
|
|
10
|
+
uint256 time = block.timestamp;
|
|
11
|
+
uint256 extra = (time % 200) + 1;
|
|
12
|
+
|
|
13
|
+
return
|
|
14
|
+
keccak256(
|
|
15
|
+
abi.encodePacked(
|
|
16
|
+
block.number,
|
|
17
|
+
blockhash(block.number - 2),
|
|
18
|
+
time,
|
|
19
|
+
extra
|
|
20
|
+
)
|
|
21
|
+
);
|
|
22
|
+
}
|
|
23
|
+
}
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
// SPDX-License-Identifier: LGPL-3.0-only
|
|
2
|
+
// Creatd By: Art Blocks Inc.
|
|
3
|
+
|
|
4
|
+
pragma solidity 0.8.17;
|
|
5
|
+
|
|
6
|
+
import "./interfaces/0.8.x/IRandomizerV2.sol";
|
|
7
|
+
import "./interfaces/0.8.x/IGenArt721CoreContractV3.sol";
|
|
8
|
+
|
|
9
|
+
import "@openzeppelin-4.7/contracts/access/Ownable.sol";
|
|
10
|
+
|
|
11
|
+
contract BasicRandomizerV2 is IRandomizerV2, Ownable {
|
|
12
|
+
// The core contract that may interact with this randomizer contract.
|
|
13
|
+
IGenArt721CoreContractV3 public genArt721Core;
|
|
14
|
+
|
|
15
|
+
function assignCoreAndRenounce(address _genArt721Core) external onlyOwner {
|
|
16
|
+
renounceOwnership();
|
|
17
|
+
genArt721Core = IGenArt721CoreContractV3(_genArt721Core);
|
|
18
|
+
}
|
|
19
|
+
|
|
20
|
+
// When `genArt721Core` calls this, it can be assured that the randomizer
|
|
21
|
+
// will set a bytes32 hash for tokenId `_tokenId` on the core contract.
|
|
22
|
+
function assignTokenHash(uint256 _tokenId) external virtual {
|
|
23
|
+
require(msg.sender == address(genArt721Core), "Only core may call");
|
|
24
|
+
uint256 time = block.timestamp;
|
|
25
|
+
bytes32 hash = keccak256(
|
|
26
|
+
abi.encodePacked(
|
|
27
|
+
_tokenId,
|
|
28
|
+
block.number,
|
|
29
|
+
blockhash(block.number - 1),
|
|
30
|
+
time,
|
|
31
|
+
(time % 200) + 1
|
|
32
|
+
)
|
|
33
|
+
);
|
|
34
|
+
genArt721Core.setTokenHash_8PT(_tokenId, hash);
|
|
35
|
+
}
|
|
36
|
+
}
|