• Mark Tyneway's avatar
    hardhat-node: add forking configuration · 72a325f6
    Mark Tyneway authored
    Adds forking config to the `ethereumoptimism/hardhat` docker image.
    This can be configured with the following env vars:
    
    - `FORK_URL` - http provider of the remote node to fetch data from
    - `FORK_STARTING_BLOCK` - block to start forking from, if left
      undefined it will use the tip
    
    Without `FORK_URL` set, it will not run in forking mode
    
    Also adds the ability to configure the gas price with:
    
    - `GAS_PRICE` - defaults to 0, which was the previous behavior
    72a325f6
hardhat.config.js 718 Bytes
const isForkModeEnabled = !!process.env.FORK_URL
const forkUrl = process.env.FORK_URL
const forkStartingBlock = parseInt(process.env.FORK_STARTING_BLOCK) || undefined
const gasPrice = parseInt(process.env.GAS_PRICE) || 0

const config = {
  networks: {
    hardhat: {
      gasPrice,
      initialBaseFeePerGas: 0
    },
  },
  analytics: { enabled: false },
}

if (isForkModeEnabled) {
  console.log(`Running hardhat in a fork mode! URL: ${forkUrl}`)
  if (forkStartingBlock) {
    console.log(`Starting block: ${forkStartingBlock}`)
  }
  config.networks.hardhat.forking = {
    url: forkUrl,
    blockNumber: forkStartingBlock,
  }
} else {
  console.log('Running with a fresh state...')
}

module.exports = config