160 lines
4.3 KiB
JavaScript
160 lines
4.3 KiB
JavaScript
/**
|
||
* Copyright (c) 2024-2025 Тарабанов Александр Викторович
|
||
* All rights reserved.
|
||
*
|
||
* This software is proprietary and confidential.
|
||
* Unauthorized copying, modification, or distribution is prohibited.
|
||
*
|
||
* For licensing inquiries: info@hb3-accelerator.com
|
||
* Website: https://hb3-accelerator.com
|
||
* GitHub: https://github.com/HB3-ACCELERATOR
|
||
*/
|
||
|
||
require('@nomicfoundation/hardhat-toolbox');
|
||
require('@nomicfoundation/hardhat-verify');
|
||
require('hardhat-contract-sizer');
|
||
require('dotenv').config();
|
||
|
||
function getNetworks() {
|
||
// Базовая конфигурация сетей для верификации
|
||
return {
|
||
sepolia: {
|
||
url: process.env.SEPOLIA_RPC_URL || 'https://1rpc.io/sepolia',
|
||
chainId: 11155111,
|
||
accounts: process.env.PRIVATE_KEY ? [process.env.PRIVATE_KEY] : []
|
||
},
|
||
holesky: {
|
||
url: process.env.HOLESKY_RPC_URL || 'https://ethereum-holesky.publicnode.com',
|
||
chainId: 17000,
|
||
accounts: process.env.PRIVATE_KEY ? [process.env.PRIVATE_KEY] : []
|
||
},
|
||
mainnet: {
|
||
url: process.env.MAINNET_RPC_URL || 'https://eth-mainnet.nodereal.io/v1/YOUR_NODEREAL_KEY',
|
||
chainId: 1,
|
||
accounts: process.env.PRIVATE_KEY ? [process.env.PRIVATE_KEY] : []
|
||
},
|
||
arbitrumSepolia: {
|
||
url: process.env.ARBITRUM_SEPOLIA_RPC_URL || 'https://sepolia-rollup.arbitrum.io/rpc',
|
||
chainId: 421614,
|
||
accounts: process.env.PRIVATE_KEY ? [process.env.PRIVATE_KEY] : []
|
||
},
|
||
baseSepolia: {
|
||
url: process.env.BASE_SEPOLIA_RPC_URL || 'https://sepolia.base.org',
|
||
chainId: 84532,
|
||
accounts: process.env.PRIVATE_KEY ? [process.env.PRIVATE_KEY] : []
|
||
}
|
||
};
|
||
}
|
||
|
||
module.exports = {
|
||
solidity: {
|
||
version: "0.8.20",
|
||
settings: {
|
||
optimizer: {
|
||
enabled: true,
|
||
runs: 0 // Максимальная оптимизация размера
|
||
},
|
||
viaIR: true,
|
||
evmVersion: "paris"
|
||
}
|
||
},
|
||
contractSizer: {
|
||
alphaSort: true,
|
||
runOnCompile: true,
|
||
disambiguatePaths: false,
|
||
},
|
||
|
||
// Автокомпиляция при изменениях
|
||
watch: {
|
||
compilation: {
|
||
tasks: ["compile"],
|
||
files: ["./contracts/**/*.sol"],
|
||
verbose: true
|
||
}
|
||
},
|
||
networks: getNetworks(),
|
||
etherscan: {
|
||
// Единый API ключ для V2 API
|
||
apiKey: process.env.ETHERSCAN_API_KEY || '',
|
||
customChains: [
|
||
{
|
||
network: "sepolia",
|
||
chainId: 11155111,
|
||
urls: {
|
||
apiURL: "https://api.etherscan.io/v2/api",
|
||
browserURL: "https://sepolia.etherscan.io"
|
||
}
|
||
},
|
||
{
|
||
network: "holesky",
|
||
chainId: 17000,
|
||
urls: {
|
||
apiURL: "https://api.etherscan.io/v2/api",
|
||
browserURL: "https://holesky.etherscan.io"
|
||
}
|
||
},
|
||
{
|
||
network: "polygon",
|
||
chainId: 137,
|
||
urls: {
|
||
apiURL: "https://api.etherscan.io/v2/api",
|
||
browserURL: "https://polygonscan.com"
|
||
}
|
||
},
|
||
{
|
||
network: "arbitrumOne",
|
||
chainId: 42161,
|
||
urls: {
|
||
apiURL: "https://api.etherscan.io/v2/api",
|
||
browserURL: "https://arbiscan.io"
|
||
}
|
||
},
|
||
{
|
||
network: "arbitrumSepolia",
|
||
chainId: 421614,
|
||
urls: {
|
||
apiURL: "https://api.etherscan.io/v2/api",
|
||
browserURL: "https://sepolia.arbiscan.io"
|
||
}
|
||
},
|
||
{
|
||
network: "bsc",
|
||
chainId: 56,
|
||
urls: {
|
||
apiURL: "https://api.etherscan.io/v2/api",
|
||
browserURL: "https://bscscan.com"
|
||
}
|
||
},
|
||
{
|
||
network: "base",
|
||
chainId: 8453,
|
||
urls: {
|
||
apiURL: "https://api.etherscan.io/v2/api",
|
||
browserURL: "https://basescan.org"
|
||
}
|
||
},
|
||
{
|
||
network: "baseSepolia",
|
||
chainId: 84532,
|
||
urls: {
|
||
apiURL: "https://api.etherscan.io/v2/api",
|
||
browserURL: "https://sepolia.basescan.org"
|
||
}
|
||
}
|
||
]
|
||
},
|
||
sourcify: {
|
||
enabled: true // Включаем Sourcify для децентрализованной верификации
|
||
},
|
||
solidityCoverage: {
|
||
excludeContracts: [],
|
||
skipFiles: [],
|
||
// Исключаем строки с revert функциями из покрытия
|
||
excludeLines: [
|
||
'// coverage:ignore-line',
|
||
'revert ErrTransfersDisabled();',
|
||
'revert ErrApprovalsDisabled();'
|
||
]
|
||
}
|
||
};
|