yarn add @vechain.energy/gas
import estimate from '@vechain.energy/gas'
const clauses = [{ data: '0x', value: '0x0', to: '0x1A6f69Bb160c199B1862c83291d364836558AE8F' }]
const gasEstimate = await estimate(clauses)
This will:
- Calculate the intrinsic gas for the transaction
- Estimate VM gas usage by simulating the clauses on the network
- Calculate dynamic fees using the post-Galactica fork fee market (EIP-1559 style)
- Return the total gas cost in VET
The gas estimation uses the modern dynamic fee market approach with base fee + priority fee calculation, applying the 4.6% priority fee cap rule for optimal transaction inclusion.
type Options = {
nodeOrConnex?: Connex | string // The network to load gas information from
caller?: string // Optional caller address for VM gas estimation
gasPriceCoef?: number // Legacy gas price coefficient (0-255, kept for compatibility)
maxFeePerGas?: string | number // Maximum total fee per gas (EIP-1559 style)
maxPriorityFeePerGas?: string | number // Maximum priority fee per gas (EIP-1559 style)
}
const defaultOptions = {
nodeOrConnex: "https://mainnet.veblocks.net",
gasPriceCoef: 0,
}
The gas estimation uses VeChain's post-Galactica fork dynamic fee market:
- Base Fee: Automatically fetched from the latest block
- Priority Fee: Calculated using historical fee data or network suggestions
- 4.6% Rule: Priority fee is capped at 4.6% of base fee for optimal inclusion
- Fallback: Uses legacy base gas price when dynamic fees are unavailable
const gas = await estimate(clauses)
const gas = await estimate(clauses, {
maxPriorityFeePerGas: '2000000000' // 2 gwei
})
const gas = await estimate(clauses, {
maxFeePerGas: '8000000000' // 8 gwei total cap
})
const gas = await estimate(clauses, {
maxFeePerGas: '10000000000', // 10 gwei total cap
maxPriorityFeePerGas: '1500000000' // 1.5 gwei priority fee
})