-
Notifications
You must be signed in to change notification settings - Fork 0
/
hardhat.config.ts
126 lines (123 loc) · 3.07 KB
/
hardhat.config.ts
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
113
114
115
116
117
118
119
120
121
122
123
124
125
126
import {config as dotEnvConfig} from "dotenv";
import "@nomiclabs/hardhat-waffle";
import "@nomiclabs/hardhat-ethers";
import "@nomiclabs/hardhat-etherscan";
import "@nomiclabs/hardhat-web3";
import "@nomiclabs/hardhat-solhint";
import "@typechain/hardhat";
import "hardhat-contract-sizer";
import "hardhat-gas-reporter";
import "hardhat-tracer";
import "solidity-coverage"
import "hardhat-abi-exporter"
import {task} from "hardhat/config";
import {deployContract} from "./scripts/deploy/DeployContract";
dotEnvConfig();
// tslint:disable-next-line:no-var-requires
const argv = require('yargs/yargs')()
.env('TETU')
.options({
hardhatChainId: {
type: "number",
default: 1
},
ethRpcUrl: {
type: "string",
},
networkScanKey: {
type: "string",
},
privateKey: {
type: "string",
default: "85bb5fa78d5c4ed1fde856e9d0d1fe19973d7a79ce9ed6c0358ee06a4550504e" // random account
},
ethForkBlock: {
type: "number",
default: 14813291
},
}).argv;
task("deploy", "Deploy contract", async function (args, hre, runSuper) {
const [signer] = await hre.ethers.getSigners();
// tslint:disable-next-line:ban-ts-ignore
// @ts-ignore
await deployContract(hre, signer, args.name)
}).addPositionalParam("name", "Name of the smart contract to deploy");
export default {
defaultNetwork: "hardhat",
networks: {
hardhat: {
allowUnlimitedContractSize: true,
chainId: argv.hardhatChainId,
timeout: 99999999,
gas: argv.hardhatChainId === 1 ? 19_000_000 : 9_000_000,
forking: {
url: argv.hardhatChainId === 1 ? argv.ethRpcUrl : undefined,
blockNumber: argv.hardhatChainId === 1 ? argv.ethForkBlock !== 0 ? argv.ethForkBlock : undefined : undefined
},
accounts: {
mnemonic: "test test test test test test test test test test test junk",
path: "m/44'/60'/0'/0",
accountsBalance: "100000000000000000000000000000"
},
// loggingEnabled: true
},
eth: {
url: argv.ethRpcUrl,
chainId: 1,
accounts: [argv.privateKey],
},
},
etherscan: {
// https://hardhat.org/plugins/nomiclabs-hardhat-etherscan.html#multiple-api-keys-and-alternative-block-explorers
apiKey: {
mainnet: argv.networkScanKey,
},
},
solidity: {
compilers: [
{
version: "0.8.4",
settings: {
optimizer: {
enabled: true,
runs: 150,
}
}
},
]
},
paths: {
sources: "./contracts",
tests: "./test",
cache: "./cache",
artifacts: "./artifacts"
},
mocha: {
timeout: 9999999999
},
docgen: {
path: './docs',
clear: true,
runOnCompile: false,
except: ['contracts/third_party', 'contracts/test']
},
contractSizer: {
alphaSort: false,
runOnCompile: false,
disambiguatePaths: false,
},
gasReporter: {
enabled: false,
currency: 'USD',
gasPrice: 21
},
typechain: {
outDir: "typechain",
},
abiExporter: {
path: './artifacts/abi',
runOnCompile: false,
spacing: 2,
pretty: false,
}
};