UNPKG

@hyperlane-xyz/core

Version:

Core solidity contracts for Hyperlane

117 lines (111 loc) 2.97 kB
import '@nomicfoundation/hardhat-ethers' import '@nomicfoundation/hardhat-verify' import '@nomicfoundation/hardhat-chai-matchers' import '@matterlabs/hardhat-zksync-solc' import '@typechain/hardhat' import 'hardhat-abi-exporter' import { subtask } from 'hardhat/config' import { TASK_COMPILE_SOLIDITY_GET_SOURCE_PATHS } from 'hardhat/builtin-tasks/task-names' import '@matterlabs/hardhat-zksync-verify' const COMPILER_SETTINGS = { optimizer: { enabled: true, runs: 1000000, }, metadata: { bytecodeHash: 'none', }, } // prune forge style tests from hardhat paths subtask(TASK_COMPILE_SOLIDITY_GET_SOURCE_PATHS).setAction( async (_, __, runSuper) => { const paths = await runSuper() const noTests = paths.filter((p: string) => !p.endsWith('.t.sol')) const noCCIPTests = noTests.filter( (p: string) => !p.includes('/v0.8/ccip/test'), ) return noCCIPTests.filter( (p: string) => !p.includes('src/v0.8/vendor/forge-std'), ) }, ) /** * @type import('hardhat/config').HardhatUserConfig */ let config = { abiExporter: { path: './abi', runOnCompile: true, }, paths: { artifacts: './artifacts', cache: './cache', sources: './src/v0.8/ccip', tests: './test/v0.8/ccip, ./src/v0.8/ccip/test', }, typechain: { outDir: './typechain', target: 'ethers-v5', }, defaultNetwork: 'zkSync', networks: { env: { url: process.env.NODE_HTTP_URL || '', }, hardhat: { allowUnlimitedContractSize: Boolean( process.env.ALLOW_UNLIMITED_CONTRACT_SIZE, ), hardfork: 'merge', }, zkSyncSepolia: { url: 'https://sepolia.era.zksync.dev', ethNetwork: 'sepolia', zksync: true, // enables zksolc compiler verifyURL: 'https://explorer.sepolia.era.zksync.dev/contract_verification', }, zkSync: { url: 'https://mainnet.era.zksync.io', // The testnet RPC URL of ZKsync Era network. ethNetwork: 'mainnet', // The Ethereum Web3 RPC URL, or the identifier of the network (e.g. `mainnet` or `sepolia`) zksync: true, // Verification endpoint for Sepolia verifyURL: 'https://zksync2-mainnet-explorer.zksync.io/contract_verification', }, }, solidity: { compilers: [ { version: '0.8.24', settings: { ...COMPILER_SETTINGS, evmVersion: 'paris', }, }, ], }, zksolc: { settings: { compilerPath: 'zksolc', version: 'v1.5.3', optimizer: { enabled: true, mode: '3', fallback_to_optimizing_for_size: false, }, experimental: { dockerImage: '', tag: '', }, // contractsToCompile: ['RMN', 'ARMProxy'], // uncomment this to compile only specific contracts }, }, warnings: !process.env.HIDE_WARNINGS, } if (process.env.NETWORK_NAME && process.env.EXPLORER_API_KEY) { config = { ...config, } } export default config