hardhat.config.ts 3.56 KB
Newer Older
1
import { HardhatUserConfig } from 'hardhat/types'
2
import 'solidity-coverage'
3
import * as dotenv from 'dotenv'
4 5 6 7 8 9 10 11 12

import {
  DEFAULT_ACCOUNTS_HARDHAT,
  RUN_OVM_TEST_GAS,
} from './test/helpers/constants'

// Hardhat plugins
import '@nomiclabs/hardhat-ethers'
import '@nomiclabs/hardhat-waffle'
13
import '@nomiclabs/hardhat-etherscan'
14
import 'hardhat-deploy'
15
import '@typechain/hardhat'
16
import './tasks/deploy'
17
import './tasks/l2-gasprice'
Karl Floersch's avatar
Karl Floersch committed
18
import './tasks/set-owner'
19 20
import './tasks/validate-address-dictator'
import './tasks/validate-chugsplash-dictator'
21
import './tasks/whitelist'
22
import './tasks/withdraw-fees'
23
import 'hardhat-gas-reporter'
24
import '@primitivefi/hardhat-dodoc'
25
import 'hardhat-output-validator'
26 27 28

// Load environment variables from .env
dotenv.config()
29

30
const enableGasReport = !!process.env.ENABLE_GAS_REPORT
31
const privateKey = process.env.PRIVATE_KEY || '0x' + '11'.repeat(32) // this is to avoid hardhat error
32

33 34 35 36 37
const config: HardhatUserConfig = {
  networks: {
    hardhat: {
      accounts: DEFAULT_ACCOUNTS_HARDHAT,
      blockGasLimit: RUN_OVM_TEST_GAS * 2,
38 39 40
      live: false,
      saveDeployments: false,
      tags: ['local'],
41
    },
42 43
    optimism: {
      url: 'http://127.0.0.1:8545',
44
      saveDeployments: false,
45
    },
46 47 48
    'optimism-kovan': {
      chainId: 69,
      url: 'https://kovan.optimism.io',
49
      accounts: [privateKey],
50 51 52 53
    },
    'optimism-mainnet': {
      chainId: 10,
      url: 'https://mainnet.optimism.io',
54 55
      accounts: [privateKey],
    },
56 57 58 59 60
    'mainnet-trial': {
      chainId: 42069,
      url: 'http://127.0.0.1:8545',
      accounts: [privateKey],
    },
61 62 63 64 65
  },
  mocha: {
    timeout: 50000,
  },
  solidity: {
66 67
    compilers: [
      {
rajivpoc's avatar
rajivpoc committed
68
        version: '0.8.9',
69
        settings: {
70
          optimizer: { enabled: true, runs: 10_000 },
71
        },
72 73 74
      },
      {
        version: '0.5.17', // Required for WETH9
75
        settings: {
76
          optimizer: { enabled: true, runs: 10_000 },
77 78
        },
      },
79
    ],
80 81 82 83 84 85 86 87 88 89
    settings: {
      metadata: {
        bytecodeHash: 'none',
      },
      outputSelection: {
        '*': {
          '*': ['metadata', 'storageLayout'],
        },
      },
    },
90 91 92 93 94
  },
  typechain: {
    outDir: 'dist/types',
    target: 'ethers-v5',
  },
95 96 97 98 99 100 101 102 103
  paths: {
    deploy: './deploy',
    deployments: './deployments',
  },
  namedAccounts: {
    deployer: {
      default: 0,
    },
  },
104 105 106 107 108 109
  gasReporter: {
    enabled: enableGasReport,
    currency: 'USD',
    gasPrice: 100,
    outputFile: process.env.CI ? 'gas-report.txt' : undefined,
  },
110 111 112
  etherscan: {
    apiKey: process.env.ETHERSCAN_API_KEY,
  },
113 114
  dodoc: {
    runOnCompile: true,
115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131
    exclude: [
      'Helper_GasMeasurer',
      'Helper_SimpleProxy',
      'TestERC20',
      'TestLib_CrossDomainUtils',
      'TestLib_OVMCodec',
      'TestLib_RLPReader',
      'TestLib_RLPWriter',
      'TestLib_AddressAliasHelper',
      'TestLib_MerkleTrie',
      'TestLib_SecureMerkleTrie',
      'TestLib_Buffer',
      'TestLib_Bytes32Utils',
      'TestLib_BytesUtils',
      'TestLib_MerkleTree',
    ],
  },
132
  outputValidator: {
133
    runOnCompile: true,
Indeavr's avatar
Indeavr committed
134
    errorMode: false,
135
    checks: {
136 137
      events: false,
      variables: false,
138
    },
139 140
    exclude: ['contracts/test-helpers', 'contracts/test-libraries'],
  },
141 142 143 144 145 146 147 148 149 150 151 152 153 154
}

if (
  process.env.CONTRACTS_TARGET_NETWORK &&
  process.env.CONTRACTS_DEPLOYER_KEY &&
  process.env.CONTRACTS_RPC_URL
) {
  config.networks[process.env.CONTRACTS_TARGET_NETWORK] = {
    accounts: [process.env.CONTRACTS_DEPLOYER_KEY],
    url: process.env.CONTRACTS_RPC_URL,
    live: true,
    saveDeployments: true,
    tags: [process.env.CONTRACTS_TARGET_NETWORK],
  }
155 156 157
}

export default config