12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788 |
- import { config as dotenvConfig } from "dotenv";
- import { resolve } from "path";
- dotenvConfig({ path: resolve(__dirname, "./.env") });
- import { HardhatUserConfig } from "hardhat/config";
- import { NetworkUserConfig } from "hardhat/types";
- import "./tasks/accounts";
- import "./tasks/clean";
- import "@nomiclabs/hardhat-waffle";
- import "hardhat-typechain";
- import "solidity-coverage";
- const chainIds = {
- ganache: 1337,
- goerli: 5,
- hardhat: 31337,
- kovan: 42,
- mainnet: 1,
- rinkeby: 4,
- ropsten: 3,
- };
- // Ensure that we have all the environment variables we need.
- let mnemonic: string;
- if (!process.env.MNEMONIC) {
- throw new Error("Please set your MNEMONIC in a .env file");
- } else {
- mnemonic = process.env.MNEMONIC;
- }
- let infuraApiKey: string;
- if (!process.env.INFURA_API_KEY) {
- throw new Error("Please set your INFURA_API_KEY in a .env file");
- } else {
- infuraApiKey = process.env.INFURA_API_KEY;
- }
- function createTestnetConfig(network: keyof typeof chainIds): NetworkUserConfig {
- const url: string = "https://" + network + ".infura.io/v3/" + infuraApiKey;
- return {
- accounts: {
- count: 10,
- initialIndex: 0,
- mnemonic,
- path: "m/44'/60'/0'/0",
- },
- chainId: chainIds[network],
- url,
- };
- }
- const config: HardhatUserConfig = {
- defaultNetwork: "hardhat",
- networks: {
- hardhat: {
- chainId: chainIds.hardhat,
- },
- goerli: createTestnetConfig("goerli"),
- kovan: createTestnetConfig("kovan"),
- rinkeby: createTestnetConfig("rinkeby"),
- ropsten: createTestnetConfig("ropsten"),
- },
- paths: {
- artifacts: "./artifacts",
- cache: "./cache",
- coverage: "./coverage",
- coverageJson: "./coverage.json",
- sources: "./contracts",
- tests: "./test",
- },
- solidity: {
- version: "0.7.4",
- settings: {
- // https://hardhat.org/hardhat-network/#solidity-optimizer-support
- optimizer: {
- enabled: true,
- runs: 200,
- },
- },
- },
- typechain: {
- outDir: "typechain",
- target: "ethers-v5",
- },
- };
- export default config;
|