You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何通过TronWeb获取波场(Tron)网络的最新已确认区块?

如何通过TronWeb获取波场(Tron)网络的最新已确认区块?

我完全懂你在设计加密货币支付网关时碰到的这个问题——用tronWeb.trx.getCurrentBlock()拿到的最新区块居然是未确认的,这对需要依赖区块确认状态的支付场景来说确实挺闹心的。

其实波场网络里,刚生成的最新区块本身就是处于未确认状态的,得等后续几个区块被打包出来,它才会被网络标记为已确认。这里给你两个实用的解决思路:

方法一:基于区块高度偏移获取已确认区块

波场的平均出块时间大概是3秒,一般来说,只要当前最新区块高度减去目标区块高度的差值≥1,这个目标区块就已经是确认状态了,为了稳妥起见,你可以多偏移1个高度。具体代码实现如下:

// 先获取最新的未确认区块信息
const latestUnconfirmedBlock = await tronWeb.trx.getCurrentBlock();
// 计算已确认区块的高度(这里偏移2个区块,可根据业务调整)
const confirmedBlockHeight = latestUnconfirmedBlock.block_header.raw_data.number - 2;
// 根据高度获取对应的已确认区块
const confirmedBlock = await tronWeb.trx.getBlockByNumber(confirmedBlockHeight);

console.log("最新已确认区块", confirmedBlock);

方法二:验证目标区块的确认状态

如果你需要严格确认某个特定区块是否已确认,可以通过对比当前最新区块高度和目标区块高度的差值来判断:

// 假设你拿到了某个区块的信息
const targetBlock = await tronWeb.trx.getCurrentBlock();
// 获取最新区块高度
const latestBlockHeight = (await tronWeb.trx.getCurrentBlock()).block_header.raw_data.number;

// 判断是否已确认:差值≥1即可认为已确认,稳妥点可以设为≥2
if (latestBlockHeight - targetBlock.block_header.raw_data.number >= 2) {
  console.log("该区块已确认");
} else {
  console.log("该区块未确认");
}

简单来说,核心逻辑就是利用波场的出块机制,通过区块高度的偏移来规避未确认的最新区块,这样拿到的区块就能满足你的支付网关场景需求啦。

备注:内容来源于stack exchange,提问作者Coinymous

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.04.20 11:23:03