From c4d17ace2e985b7ceb2a4f4e592e1e5708ad6429 Mon Sep 17 00:00:00 2001 From: pradyuman-verma Date: Sun, 5 Dec 2021 22:49:39 +0530 Subject: [PATCH] updates hardhat.config --- hardhat.config.ts | 71 ++++++++++++++++++++++++++++------------------- 1 file changed, 42 insertions(+), 29 deletions(-) diff --git a/hardhat.config.ts b/hardhat.config.ts index 4150cc68..4cb81269 100644 --- a/hardhat.config.ts +++ b/hardhat.config.ts @@ -28,22 +28,23 @@ const chainIds = { polygon: 137, }; -// Ensure that we have all the environment variables we need. -const mnemonic = process.env.MNEMONIC; -if (!mnemonic) { - throw new Error("Please set your MNEMONIC in a .env file"); -} - const alchemyApiKey = process.env.ALCHEMY_API_KEY; if (!alchemyApiKey) { - throw new Error("Please set your ALCHEMY_ETH_API_KEY in a .env file"); + throw new Error("Please set your ALCHEMY_API_KEY in a .env file"); } const PRIVATE_KEY = process.env.PRIVATE_KEY; -const ETHERSCAN_API_KEY = process.env.ETHERSCAN_API_KEY; +const ETHERSCAN_API = process.env.ETHERSCAN_API_KEY; +const POLYGONSCAN_API = process.env.POLYGON_API_KEY; +const ARBISCAN_API = process.env.ARBISCAN_API_KEY; +const SNOWTRACE_API = process.env.SNOWTRACE_API_KEY; +const mnemonic = process.env.MNEMONIC; -function createTestnetConfig(network: keyof typeof chainIds): NetworkUserConfig { - const url: string = "https://eth-" + network + ".alchemyapi.io/v2/" + alchemyApiKey; +function createTestnetConfig( + network: keyof typeof chainIds +): NetworkUserConfig { + const url: string = + "https://eth-" + network + ".alchemyapi.io/v2/" + alchemyApiKey; return { accounts: { count: 10, @@ -58,25 +59,26 @@ function createTestnetConfig(network: keyof typeof chainIds): NetworkUserConfig function getNetworkUrl(networkType: string) { //console.log(process.env); - if (networkType === "avalanche") return "https://api.avax.network/ext/bc/C/rpc"; - else if (networkType === "polygon") return `https://polygon-mainnet.g.alchemy.com/v2/${alchemyApiKey}`; - else if (networkType === "arbitrum") return `https://arb-mainnet.g.alchemy.com/v2/${alchemyApiKey}`; + if (networkType === "avalanche") + return "https://api.avax.network/ext/bc/C/rpc"; + else if (networkType === "polygon") + return `https://polygon-mainnet.g.alchemy.com/v2/${alchemyApiKey}`; + else if (networkType === "arbitrum") + return `https://arb-mainnet.g.alchemy.com/v2/${alchemyApiKey}`; else return `https://eth-mainnet.alchemyapi.io/v2/${alchemyApiKey}`; } -function getBlockNumber(networkType: string) { - let web3 = new Web3(new Web3.providers.HttpProvider(getNetworkUrl(networkType))); - let blockNumber; - web3.eth.getBlockNumber().then((x: any) => { - blockNumber = x; - }); - - return blockNumber; +function getScanApiKey(networkType: string) { + if (networkType === "avalanche") return SNOWTRACE_API; + else if (networkType === "polygon") return POLYGONSCAN_API; + else if (networkType === "arbitrum") return ARBISCAN_API; + else return ETHERSCAN_API; } + /** * @type import('hardhat/config').HardhatUserConfig */ - const config: HardhatUserConfig = { +const config: HardhatUserConfig = { solidity: { compilers: [ { @@ -107,13 +109,24 @@ function getBlockNumber(networkType: string) { chainId: chainIds.hardhat, forking: { url: String(getNetworkUrl(String(process.env.networkType))), - blockNumber: getBlockNumber(String(process.env.networkType)), }, }, goerli: createTestnetConfig("goerli"), kovan: createTestnetConfig("kovan"), rinkeby: createTestnetConfig("rinkeby"), ropsten: createTestnetConfig("ropsten"), + mainnet: { + url: getNetworkUrl("mainnet"), + }, + polygon: { + url: getNetworkUrl("polygon"), + }, + avalanche: { + url: getNetworkUrl("avalanche"), + }, + arbitrum: { + url: getNetworkUrl("arbiturm"), + }, }, paths: { artifacts: "./artifacts", @@ -122,19 +135,19 @@ function getBlockNumber(networkType: string) { tests: "./test", }, etherscan: { - apiKey: ETHERSCAN_API_KEY, - }, - tenderly: { - project: process.env.TENDERLY_PROJECT, - username: process.env.TENDERLY_USERNAME, + apiKey: getScanApiKey(getNetworkUrl(String(process.env.networkType))), }, typechain: { outDir: "typechain", target: "ethers-v5", }, mocha: { - timeout: 10000 * 1000, + timeout: 10000 * 1000, // 10,000 seconds }, + // tenderly: { + // project: process.env.TENDERLY_PROJECT, + // username: process.env.TENDERLY_USERNAME, + // }, }; export default config;