Fees
Configure chain-based fee data in Viem
You can modify how fees are derived by using the fees property on the Chain.
Usage
import { defineChain } from 'viem'
 
export const example = defineChain({
  /* ... */
  fees: { 
    baseFeeMultiplier: 1.2, 
    defaultPriorityFee: parseGwei('0.01'), 
  } 
})API
fees.baseFeeMultiplier
- Type: 
number - Default: 
1.2 
The fee multiplier to use to account for fee fluctuations. Used in the estimateFeesPerGas Action against the latest block's base fee per gas to derive a final maxFeePerGas (EIP-1193), or gas price to derive a final gasPrice (Legacy).
block: The latest block.client: The Client instance.request: The transaction request (if exists).
import { defineChain } from 'viem'
 
const example = defineChain({ 
  /* ... */
  fees: { 
    baseFeeMultiplier: 1.2,
    // or
    async baseFeeMultiplier({ block, request }) {
      // some async work
      return // ...
    },
  },
})fees.defaultPriorityFee
- Type: 
number | ((args: FeesFnParameters) => Promise<bigint> | bigint) 
The default maxPriorityFeePerGas to use when a priority fee is not defined upon sending a transaction.
Also overrides the return value in the estimateMaxPriorityFeePerGas Action and maxPriorityFeePerGas value in estimateFeesPerGas.
block: The latest block.client: The Client instance.request: The transaction request (if exists).
import { defineChain } from 'viem'
 
const example = defineChain({
  /* ... */
  fees: { 
    defaultPriorityFee: parseGwei('0.01'),
    // or
    async defaultPriorityFee({ block, request }) {
      // some async work
      return // ...
    },
  },
})fees.estimateFeesPerGas
- Type: 
(args: FeesFnParameters) => Promise<EstimateFeesPerGasResponse> 
Allows customization of fee per gas values (ie. maxFeePerGas, maxPriorityFeePerGas, gasPrice).
Also overrides the return value in estimateFeesPerGas.
block: The latest block.client: The Client instance.multiply: A function to apply thebaseFeeMultiplierto the provided value.request: The transaction request (if exists).type: The transaction type (ie.legacyoreip1559).
import { defineChain } from 'viem'
 
const example = defineChain({
  /* ... */
  fees: { 
    async estimateFeesPerGas({ client, multiply, type }) {
      const gasPrice = // ...
      const baseFeePerGas = // ...
      const maxPriorityFeePerGas = // ...
 
      if (type === 'legacy') return { gasPrice: multiply(gasPrice) }
      return {
        maxFeePerGas: multiply(baseFeePerGas) + maxPriorityFeePerGas,
        maxPriorityFeePerGas
      },
    },
  },
})