Prerequisites
You need Web3 libraries configured with Para authentication.Setup Web3 Libraries
Estimate Gas for a Transaction
- Ethers.js
- Viem
- Wagmi
Calculate gas costs for transactions including EIP-1559 gas pricing
import { ethers } from "ethers";
async function estimateGas(
provider: ethers.Provider,
to: string,
value: string,
data?: string,
maxFeePerGas?: string,
maxPriorityFeePerGas?: string
) {
const tx = {
to,
value: ethers.parseEther(value),
data: data || "0x",
...(maxFeePerGas ? { maxFeePerGas: ethers.parseUnits(maxFeePerGas, "gwei") } : {}),
...(maxPriorityFeePerGas ? { maxPriorityFeePerGas: ethers.parseUnits(maxPriorityFeePerGas, "gwei") } : {})
};
const gasEstimate = await provider.estimateGas(tx);
return gasEstimate;
}
import { parseEther, parseGwei } from "viem";
async function estimateGas(
publicClient: PublicClient,
account: Account | `0x${string}`,
to: `0x${string}`,
value: string,
data?: `0x${string}`,
maxFeePerGas?: string,
maxPriorityFeePerGas?: string
) {
const gasEstimate = await publicClient.estimateGas({
account,
to,
value: parseEther(value),
data: data || "0x",
...(maxFeePerGas ? { maxFeePerGas: parseGwei(maxFeePerGas) } : {}),
...(maxPriorityFeePerGas ? { maxPriorityFeePerGas: parseGwei(maxPriorityFeePerGas) } : {})
});
return gasEstimate;
}
import { useEstimateGas } from "wagmi";
import { parseEther, parseGwei } from "viem";
function EstimateGas({
to,
value,
data,
maxFeePerGas,
maxPriorityFeePerGas,
}: {
to: `0x${string}`;
value: string;
data?: `0x${string}`;
maxFeePerGas?: string;
maxPriorityFeePerGas?: string;
}) {
const { data: gas } = useEstimateGas({
to,
value: parseEther(value),
data: data || "0x",
...(maxFeePerGas ? { maxFeePerGas: parseGwei(maxFeePerGas) } : {}),
...(maxPriorityFeePerGas ? { maxPriorityFeePerGas: parseGwei(maxPriorityFeePerGas) } : {})
});
return (
// Your component JSX here
)
}