mirror of
https://github.com/vacp2p/linea-monorepo.git
synced 2026-01-08 03:43:56 -05:00
169 lines
4.9 KiB
TypeScript
169 lines
4.9 KiB
TypeScript
import "@nomicfoundation/hardhat-toolbox";
|
|
import "@nomicfoundation/hardhat-foundry";
|
|
import "@openzeppelin/hardhat-upgrades";
|
|
import "@nomicfoundation/hardhat-foundry";
|
|
import * as dotenv from "dotenv";
|
|
import "hardhat-deploy";
|
|
import "hardhat-storage-layout";
|
|
// import "hardhat-tracer"; // This plugin does not work with the latest hardhat version
|
|
import { HardhatUserConfig } from "hardhat/config";
|
|
import { getBlockchainNode, getL2BlockchainNode } from "./common";
|
|
import "./scripts/operational/tasks/getCurrentFinalizedBlockNumberTask";
|
|
import "./scripts/operational/tasks/grantContractRolesTask";
|
|
import "./scripts/operational/tasks/renounceContractRolesTask";
|
|
import "./scripts/operational/tasks/setRateLimitTask";
|
|
import "./scripts/operational/tasks/setVerifierAddressTask";
|
|
import "./scripts/operational/tasks/setMessageServiceOnTokenBridgeTask";
|
|
|
|
import "solidity-docgen";
|
|
import { overrides } from "./hardhat_overrides";
|
|
|
|
dotenv.config();
|
|
|
|
const BLOCKCHAIN_TIMEOUT = parseInt(process.env.BLOCKCHAIN_TIMEOUT_MS ?? "300000");
|
|
const EMPTY_HASH = "0x0000000000000000000000000000000000000000000000000000000000000000";
|
|
|
|
const blockchainNode = getBlockchainNode();
|
|
const l2BlockchainNode = getL2BlockchainNode();
|
|
|
|
const useViaIR = process.env.ENABLE_VIA_IR === "true";
|
|
|
|
const config: HardhatUserConfig = {
|
|
paths: {
|
|
artifacts: "./build",
|
|
sources: "./src",
|
|
},
|
|
solidity: {
|
|
// NB: double check the autoupdate shell script version complies to the latest solidity version if you add a new one.
|
|
/// @dev Please see the overrides file for a list of files not targetting the default EVM version of Prague.
|
|
compilers: [
|
|
{
|
|
version: "0.8.30",
|
|
settings: {
|
|
viaIR: useViaIR,
|
|
optimizer: {
|
|
enabled: true,
|
|
runs: 10_000,
|
|
},
|
|
evmVersion: "prague",
|
|
},
|
|
},
|
|
{
|
|
version: "0.8.28",
|
|
settings: {
|
|
viaIR: useViaIR,
|
|
optimizer: {
|
|
enabled: true,
|
|
runs: 10_000,
|
|
},
|
|
evmVersion: "cancun",
|
|
},
|
|
},
|
|
{
|
|
version: "0.8.15",
|
|
settings: {
|
|
viaIR: useViaIR,
|
|
optimizer: {
|
|
enabled: true,
|
|
runs: 10_000,
|
|
},
|
|
evmVersion: "london",
|
|
},
|
|
},
|
|
],
|
|
overrides: overrides,
|
|
},
|
|
namedAccounts: {
|
|
deployer: {
|
|
default: 0,
|
|
},
|
|
},
|
|
networks: {
|
|
hardhat: {
|
|
hardfork: "prague",
|
|
},
|
|
mainnet: {
|
|
accounts: [process.env.MAINNET_PRIVATE_KEY || EMPTY_HASH],
|
|
url: "https://mainnet.infura.io/v3/" + process.env.INFURA_API_KEY,
|
|
},
|
|
sepolia: {
|
|
accounts: [process.env.SEPOLIA_PRIVATE_KEY || EMPTY_HASH],
|
|
url: "https://sepolia.infura.io/v3/" + process.env.INFURA_API_KEY,
|
|
},
|
|
linea_mainnet: {
|
|
accounts: [process.env.LINEA_MAINNET_PRIVATE_KEY || EMPTY_HASH],
|
|
url: "https://linea-mainnet.infura.io/v3/" + process.env.INFURA_API_KEY,
|
|
},
|
|
linea_sepolia: {
|
|
accounts: [process.env.LINEA_SEPOLIA_PRIVATE_KEY || EMPTY_HASH],
|
|
url: "https://linea-sepolia.infura.io/v3/" + process.env.INFURA_API_KEY,
|
|
},
|
|
custom: {
|
|
accounts: [process.env.CUSTOM_PRIVATE_KEY || EMPTY_HASH],
|
|
url: process.env.CUSTOM_BLOCKCHAIN_URL ? process.env.CUSTOM_BLOCKCHAIN_URL : "",
|
|
},
|
|
zkevm_dev: {
|
|
gasPrice: 1322222229,
|
|
url: blockchainNode,
|
|
accounts: [process.env.PRIVATE_KEY || EMPTY_HASH],
|
|
timeout: BLOCKCHAIN_TIMEOUT,
|
|
},
|
|
l2: {
|
|
url: l2BlockchainNode ?? "",
|
|
accounts: [process.env.L2_PRIVATE_KEY || EMPTY_HASH],
|
|
allowUnlimitedContractSize: true,
|
|
},
|
|
},
|
|
gasReporter: {
|
|
enabled: !!process.env.REPORT_GAS,
|
|
},
|
|
mocha: {
|
|
timeout: 20000,
|
|
},
|
|
etherscan: {
|
|
apiKey: {
|
|
mainnet: process.env.ETHERSCAN_API_KEY ?? "",
|
|
sepolia: process.env.ETHERSCAN_API_KEY ?? "",
|
|
linea_sepolia: process.env.LINEASCAN_API_KEY ?? "",
|
|
linea_mainnet: process.env.LINEASCAN_API_KEY ?? "",
|
|
},
|
|
customChains: [
|
|
{
|
|
network: "linea_sepolia",
|
|
chainId: 59141,
|
|
urls: {
|
|
apiURL: "https://api-sepolia.lineascan.build/api",
|
|
browserURL: "https://sepolia.lineascan.build/",
|
|
},
|
|
},
|
|
{
|
|
network: "linea_mainnet",
|
|
chainId: 59144,
|
|
urls: {
|
|
apiURL: "https://api.lineascan.build/api",
|
|
browserURL: "https://lineascan.build/",
|
|
},
|
|
},
|
|
],
|
|
},
|
|
docgen: {
|
|
exclude: [
|
|
"_testing",
|
|
"bridging/token/utils/StorageFiller39.sol",
|
|
"bridging/token/CustomBridgedToken.sol",
|
|
"governance/TimeLock.sol",
|
|
"security/access/PermissionsManager.sol",
|
|
"security/reentrancy/TransientStorageReentrancyGuardUpgradeable.sol",
|
|
"tokens",
|
|
"verifiers",
|
|
],
|
|
pages: "files",
|
|
outputDir: "docs/api/",
|
|
// For compatibility with docs.linea.build
|
|
pageExtension: ".mdx",
|
|
templates: "docs/docgen-templates",
|
|
},
|
|
};
|
|
|
|
export default config;
|