95 lines
2.1 KiB
TypeScript
95 lines
2.1 KiB
TypeScript
|
import { task } from "hardhat/config";
|
||
|
import "@nomiclabs/hardhat-waffle";
|
||
|
import "solidity-coverage";
|
||
|
import "hardhat-deploy";
|
||
|
import dotenv from "dotenv";
|
||
|
import type { HardhatUserConfig, HttpNetworkUserConfig } from "hardhat/types";
|
||
|
|
||
|
|
||
|
|
||
|
// Load environment variables.
|
||
|
dotenv.config();
|
||
|
const { NODE_URL, INFURA_KEY, MNEMONIC, ETHERSCAN_API_KEY, PK, SOLIDITY_VERSION, SOLIDITY_SETTINGS } = process.env;
|
||
|
|
||
|
// Test mnemonic
|
||
|
const DEFAULT_MNEMONIC =
|
||
|
"candy maple cake sugar pudding cream honey rich smooth crumble sweet treat";
|
||
|
|
||
|
const sharedNetworkConfig: HttpNetworkUserConfig = {};
|
||
|
if (PK) {
|
||
|
sharedNetworkConfig.accounts = [PK];
|
||
|
} else {
|
||
|
sharedNetworkConfig.accounts = {
|
||
|
mnemonic: MNEMONIC || DEFAULT_MNEMONIC,
|
||
|
};
|
||
|
}
|
||
|
|
||
|
const primarySolidityVersion = SOLIDITY_VERSION || "0.8.0"
|
||
|
|
||
|
|
||
|
const userConfig: HardhatUserConfig = {
|
||
|
paths: {
|
||
|
artifacts: "artifacts",
|
||
|
cache: "cache",
|
||
|
deploy: "src/deploy",
|
||
|
sources: "contracts",
|
||
|
},
|
||
|
solidity: {
|
||
|
compilers: [
|
||
|
{ version: primarySolidityVersion },
|
||
|
{ version: "0.6.12" },
|
||
|
{ version: "0.5.17" },
|
||
|
{ version: "0.7.5" },
|
||
|
]
|
||
|
},
|
||
|
networks: {
|
||
|
hardhat: {
|
||
|
allowUnlimitedContractSize: true,
|
||
|
blockGasLimit: 100000000,
|
||
|
gas: 100000000
|
||
|
},
|
||
|
mainnet: {
|
||
|
...sharedNetworkConfig,
|
||
|
url: `https://mainnet.infura.io/v3/${INFURA_KEY}`,
|
||
|
},
|
||
|
xdai: {
|
||
|
...sharedNetworkConfig,
|
||
|
url: "https://xdai.poanetwork.dev",
|
||
|
},
|
||
|
ewc: {
|
||
|
...sharedNetworkConfig,
|
||
|
url: `https://rpc.energyweb.org`,
|
||
|
},
|
||
|
rinkeby: {
|
||
|
...sharedNetworkConfig,
|
||
|
url: `https://rinkeby.infura.io/v3/${INFURA_KEY}`,
|
||
|
},
|
||
|
goerli: {
|
||
|
...sharedNetworkConfig,
|
||
|
url: `https://goerli.infura.io/v3/${INFURA_KEY}`,
|
||
|
},
|
||
|
kovan: {
|
||
|
...sharedNetworkConfig,
|
||
|
url: `https://kovan.infura.io/v3/${INFURA_KEY}`,
|
||
|
},
|
||
|
volta: {
|
||
|
...sharedNetworkConfig,
|
||
|
url: `https://volta-rpc.energyweb.org`,
|
||
|
},
|
||
|
},
|
||
|
namedAccounts: {
|
||
|
deployer: 0,
|
||
|
},
|
||
|
mocha: {
|
||
|
timeout: 2000000,
|
||
|
},
|
||
|
etherscan: {
|
||
|
apiKey: ETHERSCAN_API_KEY,
|
||
|
},
|
||
|
}
|
||
|
|
||
|
/**
|
||
|
* @type import('hardhat/config').HardhatUserConfig
|
||
|
*/
|
||
|
export default userConfig
|