书接上文,这一篇直接上代码,注意先安装依赖:
npm install web3
使用的node版本: 18
估算的费用包括基础费用和优先费用,其中基础费用可以直接用Web3的函数得到,而优先费用则参考历史区块的数据来估算。代码中的estimateGasFees函数可以自行指定取样的百分位。
完整代码:
import Web3 from "web3";
const rpcUrl = "https://eth.llamarpc.com";
const web3 = new Web3(rpcUrl);
/**
* 根据Gas费用历史数据来进行估算
* @param {number} blocks - 取样的历史区块数
* @param {number[]} percentiles - 不同百分位(默认60%, 75%, 90%)的优先费用平均值
* @returns {Promise<Object>} - 估算的Gas费用
*/
async function estimateGasFees(blocks = 10, percentiles = [60, 75, 90]) {
try {
// 获取当前基础费用
const pendingBlock = await web3.eth.getBlock("pending");
const baseFeePerGas = Number(pendingBlock.baseFeePerGas);
const feeHistory = await web3.eth.getFeeHistory(blocks, "pending", percentiles); // 获取历史费用数据
const formattedBlocks = formatFeeHistory(feeHistory, blocks, false); // 格式化数据
const priorityFeeEstimates = {}; // 各百分位的平均优先费用
// 历史优先费用平均值
for (let i

最低0.47元/天 解锁文章
149

被折叠的 条评论
为什么被折叠?



