mirror of
https://github.com/luxfhe/example-fhe-voting.git
synced 2026-10-30 18:13:24 +00:00
168 lines
4.1 KiB
TypeScript
168 lines
4.1 KiB
TypeScript
import "@nomicfoundation/hardhat-toolbox";
|
|
import { config as dotenvConfig } from "dotenv";
|
|
import "hardhat-deploy";
|
|
import type { HardhatUserConfig } from "hardhat/config";
|
|
import type { NetworkUserConfig } from "hardhat/types";
|
|
import { resolve } from "path";
|
|
|
|
import "./tasks/accounts";
|
|
import "./tasks/add";
|
|
import "./tasks/getCount";
|
|
import "./tasks/getTallies";
|
|
import "./tasks/init";
|
|
import "./tasks/taskDeploy";
|
|
import "./tasks/vote";
|
|
|
|
const dotenvConfigPath: string = process.env.DOTENV_CONFIG_PATH || "./.env";
|
|
dotenvConfig({ path: resolve(__dirname, dotenvConfigPath) });
|
|
|
|
// Ensure that we have all the environment variables we need.
|
|
const mnemonic: string | undefined = process.env.MNEMONIC;
|
|
if (!mnemonic) {
|
|
throw new Error("Please set your MNEMONIC in a .env file");
|
|
}
|
|
|
|
const infuraApiKey: string | undefined = process.env.INFURA_API_KEY;
|
|
if (!infuraApiKey) {
|
|
throw new Error("Please set your INFURA_API_KEY in a .env file");
|
|
}
|
|
|
|
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: "localluxfhe",
|
|
namedAccounts: {
|
|
deployer: 0,
|
|
},
|
|
etherscan: {
|
|
apiKey: {
|
|
arbitrumOne: process.env.ARBISCAN_API_KEY || "",
|
|
avalanche: process.env.SNOWTRACE_API_KEY || "",
|
|
bsc: process.env.BSCSCAN_API_KEY || "",
|
|
mainnet: process.env.ETHERSCAN_API_KEY || "",
|
|
optimisticEthereum: process.env.OPTIMISM_API_KEY || "",
|
|
polygon: process.env.POLYGONSCAN_API_KEY || "",
|
|
polygonMumbai: process.env.POLYGONSCAN_API_KEY || "",
|
|
sepolia: process.env.ETHERSCAN_API_KEY || "",
|
|
},
|
|
},
|
|
gasReporter: {
|
|
currency: "USD",
|
|
enabled: process.env.REPORT_GAS ? true : false,
|
|
excludeContracts: [],
|
|
src: "./contracts",
|
|
},
|
|
networks: {
|
|
devnet: {
|
|
accounts: { mnemonic },
|
|
chainId: 8011,
|
|
url: "https://devnet.luxfhe.io",
|
|
},
|
|
ci_localluxfhe: {
|
|
accounts: { mnemonic },
|
|
chainId: 5432,
|
|
url: "https://localluxfhe:8545",
|
|
},
|
|
localluxfhe: {
|
|
accounts: { mnemonic, path: "m/44'/60'/0'/0" },
|
|
chainId: 5432,
|
|
url: "http://localhost:8545",
|
|
},
|
|
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: {
|
|
compilers: [
|
|
{
|
|
version: "0.8.25",
|
|
settings: {
|
|
metadata: {
|
|
bytecodeHash: "none",
|
|
},
|
|
optimizer: {
|
|
enabled: false,
|
|
runs: 800,
|
|
},
|
|
},
|
|
},
|
|
{
|
|
version: "0.8.24",
|
|
settings: {
|
|
metadata: {
|
|
bytecodeHash: "none",
|
|
},
|
|
optimizer: {
|
|
enabled: false,
|
|
runs: 800,
|
|
},
|
|
},
|
|
},
|
|
],
|
|
},
|
|
typechain: {
|
|
outDir: "types",
|
|
target: "ethers-v6",
|
|
},
|
|
};
|
|
|
|
export default config;
|