TON区块链:如何判断交易是否成功?
解决TonWeb交易状态判断问题
你收到的
{ '@type': 'ok', '@extra': '1723716788.6499352:4:0.3484654105500832' }只是Ton节点确认交易已被接收并广播,不代表最终执行成功。要准确判断交易是否成功,按以下方式操作:
- 查看交易状态码:调用
tonweb.provider.getTransactions(address, limit=1)获取最新交易列表,交易对象里的status字段是核心判断依据:0= 交易执行成功1= 交易执行失败(如余额不足、合约逻辑报错等)2= 交易仍在等待打包确认
- 辅助验证消息状态:检查交易的
in_msg.state,成功的交易该字段会显示processed;若有合约交互,可查看out_msgs是否存在对应输出消息。 - 等待区块确认:Ton网络需要1-2个区块确认才能锁定交易最终状态,建议发送交易后延迟3-5秒再查询,避免拿到未稳定的中间状态。
- 查看交易状态码:调用
实用代码片段:
async function verifyTransaction(address) { const latestTxs = await tonweb.provider.getTransactions(address, 1); if (latestTxs.length === 0) { console.log('交易暂未被区块打包'); return; } const targetTx = latestTxs[0]; console.log('交易状态码:', targetTx.status); console.log('交易是否成功:', targetTx.status === 0); console.log('输入消息处理状态:', targetTx.in_msg.state); }若涉及合约调用,还可通过查询合约的余额、存储数据等状态变化,来间接验证交易是否达到预期效果。
内容的提问来源于stack exchange,提问作者Lê Văn Anh Tú
相关产品推荐
相关产品推荐

