* 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>
88 lines
2.9 KiB
TypeScript
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;
|