Documentation Index
Fetch the complete documentation index at: https://voltaire.tevm.sh/llms.txt
Use this file to discover all available pages before exploring further.
Try it Live
Run Transaction examples in the interactive playground
getGasPrice
Get effective gas price for transaction.
Gas Price Calculation
Legacy & EIP-2930 Transactions
Fixed gas price model:
getGasPrice(tx) = tx.gasPrice
Simple and predictable - users specify exact gas price willing to pay.
EIP-1559, EIP-4844, EIP-7702 Transactions
Dynamic fee market:
effectiveGasPrice = min(
maxFeePerGas,
baseFee + maxPriorityFeePerGas
)
Components:
baseFee - Current network base fee (burned)
maxPriorityFeePerGas - Maximum tip to miner
maxFeePerGas - Maximum total willing to pay
Examples:
// Scenario 1: Normal conditions
baseFee = 15 gwei
maxPriorityFeePerGas = 2 gwei
maxFeePerGas = 30 gwei
effectiveGasPrice = min(30, 15 + 2) = 17 gwei
// Scenario 2: High congestion
baseFee = 100 gwei
maxPriorityFeePerGas = 2 gwei
maxFeePerGas = 30 gwei
effectiveGasPrice = min(30, 100 + 2) = 30 gwei // Capped at maxFee
// Scenario 3: Priority fee adjustment
baseFee = 20 gwei
maxPriorityFeePerGas = 15 gwei
maxFeePerGas = 50 gwei
effectiveGasPrice = min(50, 20 + 15) = 35 gwei
Usage Patterns
Transaction Cost Estimation
import { getGasPrice } from 'tevm/Transaction'
async function estimateTransactionCost(
tx: Transaction.Any,
baseFee?: bigint
): Promise<bigint> {
const gasPrice = getGasPrice(tx, baseFee)
const gasLimit = tx.gasLimit
return gasPrice * gasLimit + tx.value
}
// Usage
const cost = await estimateTransactionCost(tx, currentBaseFee)
console.log(`Estimated cost: ${cost} wei`)
Gas Price Comparison
import { getGasPrice } from 'tevm/Transaction'
function compareGasPrices(
tx1: Transaction.Any,
tx2: Transaction.Any,
baseFee: bigint
): number {
const price1 = getGasPrice(tx1, baseFee)
const price2 = getGasPrice(tx2, baseFee)
if (price1 < price2) return -1
if (price1 > price2) return 1
return 0
}
// Sort transactions by gas price
const sorted = transactions.sort((a, b) =>
compareGasPrices(a, b, currentBaseFee)
)
Balance Validation
import { getGasPrice } from 'tevm/Transaction'
async function validateBalance(
tx: Transaction.Any,
senderAddress: AddressType,
baseFee: bigint
): Promise<boolean> {
const balance = await getBalance(senderAddress)
const gasPrice = getGasPrice(tx, baseFee)
const totalCost = gasPrice * tx.gasLimit + tx.value
return balance >= totalCost
}
Transaction Pool Sorting
import { getGasPrice } from 'tevm/Transaction'
class TransactionPool {
sortByGasPrice(baseFee: bigint): Transaction.Any[] {
return this.transactions.sort((a, b) => {
const priceA = getGasPrice(a, baseFee)
const priceB = getGasPrice(b, baseFee)
return Number(priceB - priceA) // Descending order
})
}
}
EIP-1559 Gas Price Components
import { getGasPrice } from 'tevm/Transaction'
function getGasPriceBreakdown(
tx: Transaction.EIP1559,
baseFee: bigint
) {
const effectiveGasPrice = getGasPrice(tx, baseFee)
const effectivePriorityFee = effectiveGasPrice - baseFee
return {
baseFee,
priorityFee: effectivePriorityFee,
totalGasPrice: effectiveGasPrice,
maxFeePerGas: tx.maxFeePerGas,
maxPriorityFeePerGas: tx.maxPriorityFeePerGas,
refund: tx.maxFeePerGas - effectiveGasPrice // Amount refunded
}
}
// Usage
const breakdown = getGasPriceBreakdown(tx, baseFee)
console.log(`Paying: ${breakdown.totalGasPrice} wei/gas`)
console.log(`Refund: ${breakdown.refund} wei/gas`)
See Also
References