Files
internet-id/hardhat.config.ts
Copilot fb77bfba1b Implement UUPS upgradeable contract pattern for ContentRegistry (#106)
* Initial plan

* Add upgradeable contract implementation with UUPS pattern

Co-authored-by: onnwee <211922112+onnwee@users.noreply.github.com>

* Add implementation and security summaries for upgradeable contracts

Co-authored-by: onnwee <211922112+onnwee@users.noreply.github.com>

* Address code review feedback: fix storage gap naming and refactor V2 register

Co-authored-by: onnwee <211922112+onnwee@users.noreply.github.com>

* Add completion summary document

Co-authored-by: onnwee <211922112+onnwee@users.noreply.github.com>

* Address PR review feedback: fix array indexing, unsafe call, storage gap, and unused vars

Co-authored-by: onnwee <211922112+onnwee@users.noreply.github.com>

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: onnwee <211922112+onnwee@users.noreply.github.com>
2025-10-31 23:38:18 -05:00

88 lines
2.9 KiB
TypeScript

import { HardhatUserConfig } from "hardhat/config";
import "@nomicfoundation/hardhat-toolbox";
import "@openzeppelin/hardhat-upgrades";
import "hardhat-gas-reporter";
import * as dotenv from "dotenv";
import { SUPPORTED_CHAINS } from "./config/chains";
dotenv.config();
const config: HardhatUserConfig = {
solidity: {
version: "0.8.22",
settings: {
optimizer: { enabled: true, runs: 200 },
},
},
gasReporter: {
enabled: process.env.REPORT_GAS ? true : false,
currency: "USD",
outputFile: process.env.REPORT_GAS ? "gas-report.txt" : undefined,
noColors: process.env.REPORT_GAS ? true : false,
coinmarketcap: process.env.COINMARKETCAP_API_KEY,
},
networks: {
hardhat: {},
localhost: {
url: SUPPORTED_CHAINS.localhost.rpcUrl,
},
// Ethereum networks
ethereum: {
url: SUPPORTED_CHAINS.ethereum.rpcUrl,
accounts: process.env.PRIVATE_KEY ? [process.env.PRIVATE_KEY] : [],
chainId: SUPPORTED_CHAINS.ethereum.chainId,
},
sepolia: {
url: SUPPORTED_CHAINS.sepolia.rpcUrl,
accounts: process.env.PRIVATE_KEY ? [process.env.PRIVATE_KEY] : [],
chainId: SUPPORTED_CHAINS.sepolia.chainId,
},
// Polygon networks
polygon: {
url: SUPPORTED_CHAINS.polygon.rpcUrl,
accounts: process.env.PRIVATE_KEY ? [process.env.PRIVATE_KEY] : [],
chainId: SUPPORTED_CHAINS.polygon.chainId,
},
polygonAmoy: {
url: SUPPORTED_CHAINS.polygonAmoy.rpcUrl,
accounts: process.env.PRIVATE_KEY ? [process.env.PRIVATE_KEY] : [],
chainId: SUPPORTED_CHAINS.polygonAmoy.chainId,
},
// Base networks
base: {
url: SUPPORTED_CHAINS.base.rpcUrl,
accounts: process.env.PRIVATE_KEY ? [process.env.PRIVATE_KEY] : [],
chainId: SUPPORTED_CHAINS.base.chainId,
},
baseSepolia: {
url: process.env.RPC_URL || SUPPORTED_CHAINS.baseSepolia.rpcUrl,
accounts: process.env.PRIVATE_KEY ? [process.env.PRIVATE_KEY] : [],
chainId: SUPPORTED_CHAINS.baseSepolia.chainId,
},
// Arbitrum networks
arbitrum: {
url: SUPPORTED_CHAINS.arbitrum.rpcUrl,
accounts: process.env.PRIVATE_KEY ? [process.env.PRIVATE_KEY] : [],
chainId: SUPPORTED_CHAINS.arbitrum.chainId,
},
arbitrumSepolia: {
url: SUPPORTED_CHAINS.arbitrumSepolia.rpcUrl,
accounts: process.env.PRIVATE_KEY ? [process.env.PRIVATE_KEY] : [],
chainId: SUPPORTED_CHAINS.arbitrumSepolia.chainId,
},
// Optimism networks
optimism: {
url: SUPPORTED_CHAINS.optimism.rpcUrl,
accounts: process.env.PRIVATE_KEY ? [process.env.PRIVATE_KEY] : [],
chainId: SUPPORTED_CHAINS.optimism.chainId,
},
optimismSepolia: {
url: SUPPORTED_CHAINS.optimismSepolia.rpcUrl,
accounts: process.env.PRIVATE_KEY ? [process.env.PRIVATE_KEY] : [],
chainId: SUPPORTED_CHAINS.optimismSepolia.chainId,
},
},
};
export default config;