-
Notifications
You must be signed in to change notification settings - Fork 53
Expand file tree
/
Copy pathDeployMagicDropImplementationDirect.s.sol
More file actions
75 lines (66 loc) · 2.87 KB
/
DeployMagicDropImplementationDirect.s.sol
File metadata and controls
75 lines (66 loc) · 2.87 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
// SPDX-License-Identifier: MIT
pragma solidity ^0.8.22;
import {Script, console} from "forge-std/Script.sol";
import {ERC721M} from "contracts/nft/erc721m/ERC721M.sol";
import {ERC721CM} from "contracts/nft/erc721m/ERC721CM.sol";
import {ERC1155M} from "contracts/nft/erc1155m/ERC1155M.sol";
import {TokenStandard} from "contracts/common/Structs.sol";
contract DeployMagicDropImplementationDirect is Script {
error AddressMismatch(address expected, address actual);
error InvalidTokenStandard(string standard);
error NotImplementedYet();
function run() external {
bytes32 salt = vm.envBytes32("IMPL_SALT");
address expectedAddress = address(uint160(vm.envUint("IMPL_EXPECTED_ADDRESS")));
TokenStandard standard = parseTokenStandard(vm.envString("TOKEN_STANDARD"));
bool isERC721C = vm.envBool("IS_ERC721C");
uint256 privateKey = vm.envUint("PRIVATE_KEY");
string memory name = vm.envString("NAME");
string memory symbol = vm.envString("SYMBOL");
string memory tokenUriSuffix = "";
uint256 maxMintableSupply = 1000;
uint256 globalWalletLimit = 0;
address cosigner = address(0);
uint256 timestampExpirySeconds = 60;
address mintCurrency = address(0);
address fundReceiver = address(uint160(vm.envUint("FUND_RECEIVER")));
uint256 mintFee = vm.envUint("MINT_FEE");
address initialOwner = address(uint160(vm.envUint("INITIAL_OWNER")));
vm.startBroadcast(privateKey);
address deployedAddress;
if (standard == TokenStandard.ERC721) {
if (isERC721C) {
deployedAddress = address(new ERC721CM{salt: salt}(
name,
symbol,
tokenUriSuffix,
maxMintableSupply,
globalWalletLimit,
cosigner,
timestampExpirySeconds,
mintCurrency,
fundReceiver,
mintFee,
initialOwner
));
} else {
revert NotImplementedYet();
}
} else if (standard == TokenStandard.ERC1155) {
revert NotImplementedYet();
}
if (address(deployedAddress) != expectedAddress) {
revert AddressMismatch(expectedAddress, deployedAddress);
}
vm.stopBroadcast();
}
function parseTokenStandard(string memory standardString) internal pure returns (TokenStandard) {
if (keccak256(abi.encodePacked(standardString)) == keccak256(abi.encodePacked("ERC721"))) {
return TokenStandard.ERC721;
} else if (keccak256(abi.encodePacked(standardString)) == keccak256(abi.encodePacked("ERC1155"))) {
return TokenStandard.ERC1155;
} else {
revert InvalidTokenStandard(standardString);
}
}
}