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,
};
// 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;