@hyperlane-xyz/core
Version:
Core solidity contracts for Hyperlane
192 lines (187 loc) • 4.82 kB
text/typescript
import '@nomiclabs/hardhat-waffle'
import 'hardhat-deploy'
import '@nomiclabs/hardhat-ethers'
import '@nomiclabs/hardhat-etherscan'
import '@typechain/hardhat'
import 'solidity-coverage'
import 'hardhat-gas-reporter'
import 'hardhat-ignore-warnings'
// import '@tovarishfin/hardhat-yul';
import dotenv from 'dotenv'
dotenv.config()
const solidity = {
compilers: [
{
version: '0.8.9',
settings: {
optimizer: {
enabled: true,
runs: 100,
},
},
},
],
overrides: {},
}
if (process.env['INTERFACE_TESTER_SOLC_VERSION']) {
solidity.compilers.push({
version: process.env['INTERFACE_TESTER_SOLC_VERSION'],
settings: {
optimizer: {
enabled: true,
runs: 100,
},
},
})
solidity.overrides = {
'src/test-helpers/InterfaceCompatibilityTester.sol': {
version: process.env['INTERFACE_TESTER_SOLC_VERSION'],
settings: {
optimizer: {
enabled: true,
runs: 100,
},
},
},
}
}
/**
* @type import('hardhat/config').HardhatUserConfig
*/
module.exports = {
solidity,
paths: {
sources: './src',
artifacts: 'build/contracts',
},
namedAccounts: {
deployer: {
default: 0,
},
},
networks: {
hardhat: {
chainId: 1338,
throwOnTransactionFailures: true,
allowUnlimitedContractSize: true,
accounts: {
accountsBalance: '1000000000000000000000000000',
},
blockGasLimit: 200000000,
// mining: {
// auto: false,
// interval: 1000,
// },
forking: {
url: 'https://mainnet.infura.io/v3/' + process.env['INFURA_KEY'],
enabled: process.env['SHOULD_FORK'] === '1',
},
},
mainnet: {
url: 'https://mainnet.infura.io/v3/' + process.env['INFURA_KEY'],
accounts: process.env['MAINNET_PRIVKEY']
? [process.env['MAINNET_PRIVKEY']]
: [],
},
goerli: {
url: 'https://goerli.infura.io/v3/' + process.env['INFURA_KEY'],
accounts: process.env['DEVNET_PRIVKEY']
? [process.env['DEVNET_PRIVKEY']]
: [],
},
sepolia: {
url: 'https://sepolia.infura.io/v3/' + process.env['INFURA_KEY'],
accounts: process.env['DEVNET_PRIVKEY']
? [process.env['DEVNET_PRIVKEY']]
: [],
},
rinkeby: {
url: 'https://rinkeby.infura.io/v3/' + process.env['INFURA_KEY'],
accounts: process.env['DEVNET_PRIVKEY']
? [process.env['DEVNET_PRIVKEY']]
: [],
},
arbRinkeby: {
url: 'https://rinkeby.arbitrum.io/rpc',
accounts: process.env['DEVNET_PRIVKEY']
? [process.env['DEVNET_PRIVKEY']]
: [],
},
arbGoerliRollup: {
url: 'https://goerli-rollup.arbitrum.io/rpc',
accounts: process.env['DEVNET_PRIVKEY']
? [process.env['DEVNET_PRIVKEY']]
: [],
},
arbSepolia: {
url: 'https://sepolia-rollup.arbitrum.io/rpc',
accounts: process.env['DEVNET_PRIVKEY']
? [process.env['DEVNET_PRIVKEY']]
: [],
},
arb1: {
url: 'https://arb1.arbitrum.io/rpc',
accounts: process.env['MAINNET_PRIVKEY']
? [process.env['MAINNET_PRIVKEY']]
: [],
},
nova: {
url: 'https://nova.arbitrum.io/rpc',
accounts: process.env['MAINNET_PRIVKEY']
? [process.env['MAINNET_PRIVKEY']]
: [],
},
geth: {
url: 'http://localhost:8545',
},
},
etherscan: {
apiKey: {
mainnet: process.env['ETHERSCAN_API_KEY'],
goerli: process.env['ETHERSCAN_API_KEY'],
sepolia: process.env['ETHERSCAN_API_KEY'],
rinkeby: process.env['ETHERSCAN_API_KEY'],
arbitrumOne: process.env['ARBISCAN_API_KEY'],
arbitrumTestnet: process.env['ARBISCAN_API_KEY'],
nova: process.env['NOVA_ARBISCAN_API_KEY'],
arbGoerliRollup: process.env['ARBISCAN_API_KEY'],
arbSepolia: process.env['ARBISCAN_API_KEY'],
},
customChains: [
{
network: 'nova',
chainId: 42170,
urls: {
apiURL: 'https://api-nova.arbiscan.io/api',
browserURL: 'https://nova.arbiscan.io/',
},
},
{
network: 'arbGoerliRollup',
chainId: 421613,
urls: {
apiURL: 'https://api-goerli.arbiscan.io/api',
browserURL: 'https://goerli.arbiscan.io/',
},
},
{
network: 'arbSepolia',
chainId: 421614,
urls: {
apiURL: 'https://sepolia-explorer.arbitrum.io/api',
browserURL: 'https://sepolia-explorer.arbitrum.io/',
},
},
],
},
mocha: {
timeout: 0,
},
gasReporter: {
enabled: process.env.DISABLE_GAS_REPORTER ? false : true,
},
typechain: {
outDir: 'build/types',
target: 'ethers-v5',
},
}