123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115 |
- import "@nomiclabs/hardhat-waffle";
- import "@nomiclabs/hardhat-etherscan";
- import "@typechain/hardhat";
- import "hardhat-gas-reporter";
- import "solidity-coverage";
- import "./tasks/accounts";
- import "./tasks/deploy";
- import { resolve } from "path";
- import { config as dotenvConfig } from "dotenv";
- import { HardhatUserConfig } from "hardhat/config";
- import { NetworkUserConfig } from "hardhat/types";
- dotenvConfig({ path: resolve(__dirname, "./.env") });
- // Ensure that we have all the environment variables we need.
- const mnemonic: string | undefined = process.env.MNEMONIC;
- if (!mnemonic) {
- throw new Error("Please set your MNEMONIC in a .env file");
- }
- const infuraApiKey: string | undefined = process.env.INFURA_API_KEY;
- if (!infuraApiKey) {
- throw new Error("Please set your INFURA_API_KEY in a .env file");
- }
- const chainIds = {
- arbitrumOne: 42161,
- avalanche: 43114,
- bsc: 56,
- hardhat: 31337,
- mainnet: 1,
- optimism: 10,
- polygon: 137,
- rinkeby: 4,
- };
- function getChainConfig(network: keyof typeof chainIds): NetworkUserConfig {
- const url: string = "wss://" + network + ".infura.io/ws/v3/" + infuraApiKey;
- return {
- accounts: {
- count: 10,
- mnemonic,
- path: "m/44'/60'/0'/0",
- },
- chainId: chainIds[network],
- url,
- };
- }
- const config: HardhatUserConfig = {
- defaultNetwork: "hardhat",
- etherscan: {
- apiKey: {
- arbitrumOne: process.env.ARBISCAN_API_KEY,
- avalanche: process.env.SNOWTRACE_API_KEY,
- bsc: process.env.BSCSCAN_API_KEY,
- mainnet: process.env.ETHERSCAN_API_KEY,
- optimisticEthereum: process.env.OPTIMISM_API_KEY,
- polygon: process.env.POLYGONSCAN_API_KEY,
- rinkeby: process.env.ETHERSCAN_API_KEY,
- },
- },
- gasReporter: {
- currency: "USD",
- enabled: process.env.REPORT_GAS ? true : false,
- excludeContracts: [],
- src: "./contracts",
- },
- networks: {
- hardhat: {
- accounts: {
- mnemonic,
- },
- chainId: chainIds.hardhat,
- },
- arbitrumOne: getChainConfig("arbitrumOne"),
- avalanche: getChainConfig("avalanche"),
- bsc: getChainConfig("bsc"),
- mainnet: getChainConfig("mainnet"),
- optimism: getChainConfig("optimism"),
- polygon: getChainConfig("polygon"),
- rinkeby: getChainConfig("rinkeby"),
- },
- paths: {
- artifacts: "./artifacts",
- cache: "./cache",
- sources: "./contracts",
- tests: "./test",
- },
- solidity: {
- version: "0.8.12",
- settings: {
- metadata: {
- // Not including the metadata hash
- // https://github.com/paulrberg/solidity-template/issues/31
- bytecodeHash: "none",
- },
- // Disable the optimizer when debugging
- // https://hardhat.org/hardhat-network/#solidity-optimizer-support
- optimizer: {
- enabled: true,
- runs: 800,
- },
- },
- },
- typechain: {
- outDir: "src/types",
- target: "ethers-v5",
- },
- };
- export default config;
|