123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126 |
- import "@nomicfoundation/hardhat-toolbox";
- import "hardhat-deploy";
- import type { HardhatUserConfig } from "hardhat/config";
- import { vars } from "hardhat/config";
- import type { NetworkUserConfig } from "hardhat/types";
- import "./tasks/accounts";
- import "./tasks/greet";
- import "./tasks/taskDeploy";
- // Run 'npx hardhat vars setup' to see the list of variables that need to be set
- const mnemonic: string = vars.get("MNEMONIC");
- const infuraApiKey: string = vars.get("INFURA_API_KEY");
- const chainIds = {
- "arbitrum-mainnet": 42161,
- avalanche: 43114,
- bsc: 56,
- ganache: 1337,
- hardhat: 31337,
- mainnet: 1,
- "optimism-mainnet": 10,
- "polygon-mainnet": 137,
- "polygon-mumbai": 80001,
- sepolia: 11155111,
- };
- function getChainConfig(chain: keyof typeof chainIds): NetworkUserConfig {
- let jsonRpcUrl: string;
- switch (chain) {
- case "avalanche":
- jsonRpcUrl = "https://api.avax.network/ext/bc/C/rpc";
- break;
- case "bsc":
- jsonRpcUrl = "https://bsc-dataseed1.binance.org";
- break;
- default:
- jsonRpcUrl = "https://" + chain + ".infura.io/v3/" + infuraApiKey;
- }
- return {
- accounts: {
- count: 10,
- mnemonic,
- path: "m/44'/60'/0'/0",
- },
- chainId: chainIds[chain],
- url: jsonRpcUrl,
- };
- }
- const config: HardhatUserConfig = {
- defaultNetwork: "hardhat",
- namedAccounts: {
- deployer: 0,
- },
- etherscan: {
- apiKey: {
- arbitrumOne: vars.get("ARBISCAN_API_KEY", ""),
- avalanche: vars.get("SNOWTRACE_API_KEY", ""),
- bsc: vars.get("BSCSCAN_API_KEY", ""),
- mainnet: vars.get("ETHERSCAN_API_KEY", ""),
- optimisticEthereum: vars.get("OPTIMISM_API_KEY", ""),
- polygon: vars.get("POLYGONSCAN_API_KEY", ""),
- polygonMumbai: vars.get("POLYGONSCAN_API_KEY", ""),
- sepolia: vars.get("ETHERSCAN_API_KEY", ""),
- },
- },
- gasReporter: {
- currency: "USD",
- enabled: vars.has("REPORT_GAS"),
- excludeContracts: [],
- src: "./contracts",
- },
- networks: {
- hardhat: {
- accounts: {
- mnemonic,
- },
- chainId: chainIds.hardhat,
- },
- ganache: {
- accounts: {
- mnemonic,
- },
- chainId: chainIds.ganache,
- url: "http://localhost:8545",
- },
- arbitrum: getChainConfig("arbitrum-mainnet"),
- avalanche: getChainConfig("avalanche"),
- bsc: getChainConfig("bsc"),
- mainnet: getChainConfig("mainnet"),
- optimism: getChainConfig("optimism-mainnet"),
- "polygon-mainnet": getChainConfig("polygon-mainnet"),
- "polygon-mumbai": getChainConfig("polygon-mumbai"),
- sepolia: getChainConfig("sepolia"),
- },
- paths: {
- artifacts: "./artifacts",
- cache: "./cache",
- sources: "./contracts",
- tests: "./test",
- },
- solidity: {
- version: "0.8.19",
- settings: {
- metadata: {
- // Not including the metadata hash
- // https://github.com/paulrberg/hardhat-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: "types",
- target: "ethers-v6",
- },
- };
- export default config;
|