aave-protocol-v2/buidler.config.ts

96 lines
2.5 KiB
TypeScript

import {usePlugin, BuidlerConfig} from "@nomiclabs/buidler/config";
import path from "path";
import fs from "fs";
// @ts-ignore
import {accounts} from "./test-wallets.js";
import {eEthereumNetwork} from "./helpers/types";
usePlugin("@nomiclabs/buidler-ethers");
usePlugin("buidler-typechain");
usePlugin("solidity-coverage");
usePlugin("@nomiclabs/buidler-waffle");
usePlugin("@nomiclabs/buidler-etherscan");
usePlugin("@nomiclabs/buidler-ganache");
["misc", "deployments", "migrations"].forEach((folder) => {
const tasksPath = path.join(__dirname, "tasks", folder);
fs.readdirSync(tasksPath).forEach((task) => require(`${tasksPath}/${task}`));
});
const DEFAULT_BLOCK_GAS_LIMIT = 10000000;
const DEFAULT_GAS_PRICE = 10;
const HARDFORK = "istanbul";
const INFURA_KEY = "";
const ETHERSCAN_KEY = "";
const MNEMONIC_PATH = "m/44'/60'/0'/0";
const MNEMONICS: {[network: string]: string} = {
[eEthereumNetwork.kovan]: "",
[eEthereumNetwork.ropsten]: "",
[eEthereumNetwork.main]: "",
};
const getCommonNetworkConfig = (
networkName: eEthereumNetwork,
networkId: number
) => {
return {
url: `https://${networkName}.infura.io/v3/${INFURA_KEY}`,
hardfork: HARDFORK,
blockGasLimit: DEFAULT_BLOCK_GAS_LIMIT,
gasMultiplier: DEFAULT_GAS_PRICE,
chainId: networkId,
accounts: {
mnemonic: MNEMONICS[networkName],
path: MNEMONIC_PATH,
initialIndex: 0,
count: 20,
},
};
};
const config: BuidlerConfig = {
solc: {
version: "0.6.8",
optimizer: {enabled: true, runs: 200},
evmVersion: "istanbul",
},
typechain: {
outDir: "types",
target: "ethers-v4",
},
etherscan: {
url: "https://api-kovan.etherscan.io/api",
apiKey: ETHERSCAN_KEY,
},
defaultNetwork: "buidlerevm",
mocha: {
timeout: 0,
},
networks: {
kovan: getCommonNetworkConfig(eEthereumNetwork.kovan, 42),
ropsten: getCommonNetworkConfig(eEthereumNetwork.ropsten, 3),
main: getCommonNetworkConfig(eEthereumNetwork.main, 1),
buidlerevm: {
hardfork: "istanbul",
blockGasLimit: DEFAULT_BLOCK_GAS_LIMIT,
gas: DEFAULT_BLOCK_GAS_LIMIT,
gasPrice: 8000000000,
chainId: 31337,
throwOnTransactionFailures: true,
throwOnCallFailures: true,
accounts: accounts.map(
({secretKey, balance}: {secretKey: string; balance: string}) => ({
privateKey: secretKey,
balance,
})
),
},
ganache: {
blockGasLimit: DEFAULT_BLOCK_GAS_LIMIT,
url: "http://localhost:8545",
},
},
};
export default config;