updates hardhat.config

This commit is contained in:
pradyuman-verma 2021-12-05 22:49:39 +05:30 committed by Ishan Jain
parent dfb388ce8d
commit c4d17ace2e

View File

@ -28,22 +28,23 @@ const chainIds = {
polygon: 137, 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; const alchemyApiKey = process.env.ALCHEMY_API_KEY;
if (!alchemyApiKey) { 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 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 { function createTestnetConfig(
const url: string = "https://eth-" + network + ".alchemyapi.io/v2/" + alchemyApiKey; network: keyof typeof chainIds
): NetworkUserConfig {
const url: string =
"https://eth-" + network + ".alchemyapi.io/v2/" + alchemyApiKey;
return { return {
accounts: { accounts: {
count: 10, count: 10,
@ -58,25 +59,26 @@ function createTestnetConfig(network: keyof typeof chainIds): NetworkUserConfig
function getNetworkUrl(networkType: string) { function getNetworkUrl(networkType: string) {
//console.log(process.env); //console.log(process.env);
if (networkType === "avalanche") return "https://api.avax.network/ext/bc/C/rpc"; if (networkType === "avalanche")
else if (networkType === "polygon") return `https://polygon-mainnet.g.alchemy.com/v2/${alchemyApiKey}`; return "https://api.avax.network/ext/bc/C/rpc";
else if (networkType === "arbitrum") return `https://arb-mainnet.g.alchemy.com/v2/${alchemyApiKey}`; 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}`; else return `https://eth-mainnet.alchemyapi.io/v2/${alchemyApiKey}`;
} }
function getBlockNumber(networkType: string) { function getScanApiKey(networkType: string) {
let web3 = new Web3(new Web3.providers.HttpProvider(getNetworkUrl(networkType))); if (networkType === "avalanche") return SNOWTRACE_API;
let blockNumber; else if (networkType === "polygon") return POLYGONSCAN_API;
web3.eth.getBlockNumber().then((x: any) => { else if (networkType === "arbitrum") return ARBISCAN_API;
blockNumber = x; else return ETHERSCAN_API;
});
return blockNumber;
} }
/** /**
* @type import('hardhat/config').HardhatUserConfig * @type import('hardhat/config').HardhatUserConfig
*/ */
const config: HardhatUserConfig = { const config: HardhatUserConfig = {
solidity: { solidity: {
compilers: [ compilers: [
{ {
@ -107,13 +109,24 @@ function getBlockNumber(networkType: string) {
chainId: chainIds.hardhat, chainId: chainIds.hardhat,
forking: { forking: {
url: String(getNetworkUrl(String(process.env.networkType))), url: String(getNetworkUrl(String(process.env.networkType))),
blockNumber: getBlockNumber(String(process.env.networkType)),
}, },
}, },
goerli: createTestnetConfig("goerli"), goerli: createTestnetConfig("goerli"),
kovan: createTestnetConfig("kovan"), kovan: createTestnetConfig("kovan"),
rinkeby: createTestnetConfig("rinkeby"), rinkeby: createTestnetConfig("rinkeby"),
ropsten: createTestnetConfig("ropsten"), ropsten: createTestnetConfig("ropsten"),
mainnet: {
url: getNetworkUrl("mainnet"),
},
polygon: {
url: getNetworkUrl("polygon"),
},
avalanche: {
url: getNetworkUrl("avalanche"),
},
arbitrum: {
url: getNetworkUrl("arbiturm"),
},
}, },
paths: { paths: {
artifacts: "./artifacts", artifacts: "./artifacts",
@ -122,19 +135,19 @@ function getBlockNumber(networkType: string) {
tests: "./test", tests: "./test",
}, },
etherscan: { etherscan: {
apiKey: ETHERSCAN_API_KEY, apiKey: getScanApiKey(getNetworkUrl(String(process.env.networkType))),
},
tenderly: {
project: process.env.TENDERLY_PROJECT,
username: process.env.TENDERLY_USERNAME,
}, },
typechain: { typechain: {
outDir: "typechain", outDir: "typechain",
target: "ethers-v5", target: "ethers-v5",
}, },
mocha: { mocha: {
timeout: 10000 * 1000, timeout: 10000 * 1000, // 10,000 seconds
}, },
// tenderly: {
// project: process.env.TENDERLY_PROJECT,
// username: process.env.TENDERLY_USERNAME,
// },
}; };
export default config; export default config;