-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathdeployToken.js
More file actions
112 lines (96 loc) · 2.99 KB
/
deployToken.js
File metadata and controls
112 lines (96 loc) · 2.99 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
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
const { ethers, Wallet, ContractFactory } = require("ethers");
const fs = require("fs");
require("dotenv").config();
const unpackArtifact = (artifactPath) => {
let contractData = JSON.parse(fs.readFileSync(artifactPath));
const contractBytecode = contractData["bytecode"];
const contractABI = contractData["abi"];
const constructorArgs = contractABI.filter((itm) => {
return itm.type == "constructor";
});
let constructorStr;
if (constructorArgs.length < 1) {
constructorStr = " -- No constructor arguments -- ";
} else {
constructorJSON = constructorArgs[0].inputs;
constructorStr = JSON.stringify(
constructorJSON.map((c) => {
return {
name: c.name,
type: c.type,
};
})
);
}
return {
abi: contractABI,
bytecode: contractBytecode,
contractName: contractData.contractName,
constructor: constructorStr,
};
};
const deployContract = async (
contractABI,
contractBytecode,
wallet,
provider,
args = []
) => {
const factory = new ContractFactory(
contractABI,
contractBytecode,
wallet.connect(provider)
);
return await factory.deploy(...args);
};
let provider;
if (process.env.NETWORK == "mainnet") {
provider = ethers.getDefaultProvider("homestead");
wethAddress = "0xc02aaa39b223fe8d0a0e5c4f27ead9083c756cc2";
} else if (process.env.NETWORK == "kovan") {
provider = ethers.getDefaultProvider("kovan");
wethAddress = "0xd0a1e359811322d97991e03f863a0c30c2cf029c";
} else if (process.env.NETWORK == "rinkeby") {
provider = ethers.getDefaultProvider("rinkeby");
wethAddress = "0xc778417E063141139Fce010982780140Aa0cD5Ab";
}
let wallet, connectedWallet;
wallet = Wallet.fromMnemonic(process.env.MNEMONIC);
connectedWallet = wallet.connect(provider);
const deployToken = async () => {
// Get the built metadata for our contracts
let tokenUnpacked = unpackArtifact("./prodartifacts/HAL9K.json");
console.log(
`${tokenUnpacked.contractName} \n Constructor: ${tokenUnpacked.constructor}`
);
const args = [process.env.UNISWAPROUTER, process.env.UNISWAPFACTORY];
let token = await deployContract(
tokenUnpacked.abi,
tokenUnpacked.bytecode,
wallet,
provider,
args
);
console.log(`⌛ Deploying ${tokenUnpacked.contractName}...`);
await connectedWallet.provider.waitForTransaction(
token.deployTransaction.hash
);
console.log(`✅ Deployed ${tokenUnpacked.contractName} to ${token.address}`);
tokenUnpacked = unpackArtifact("./prodartifacts/HAL9KLtd.json");
console.log(
`${tokenUnpacked.contractName} \n Constructor: ${tokenUnpacked.constructor}`
);
token = await deployContract(
tokenUnpacked.abi,
tokenUnpacked.bytecode,
wallet,
provider,
[process.env.OPENSEAPROXY]
);
console.log(`⌛ Deploying ${tokenUnpacked.contractName}...`);
await connectedWallet.provider.waitForTransaction(
token.deployTransaction.hash
);
console.log(`✅ Deployed ${tokenUnpacked.contractName} to ${token.address}`);
};
deployToken();