我们想知道给定的交易是否已经在 Tron/波场 区块链上确认,这可以通过 TronGrid API 轻松实现。
为了确保交易在Tron/波场区块链上被确认,验证逻辑应关注交易的状态,这表明交易是否已被 Tron 虚拟机(TVM)成功处理。以下是正确的验证方法:
检查 receipt.result
验证交易成功的主要标志是 receipt.result 字段。值为 “SUCCESS” 表明交易已成功处理且无任何错误。
确认区块号
交易仅在被包含进一个区块后才算确认。确保 transactionInfo.blockNumber 已定义且与预期的区块一致。
考虑额外的指标
某些交易可能不会生成 net_usage,但可能会产生 net_fee。检查诸如 net_fee 或 net_usage 的任何资源使用情况,可以让验证逻辑更加全面和完全可靠。
避免过早确认
确保交易不再是挂起状态,并已成功广播到网络中。
验证逻辑
以下是处理各种边界情况的逻辑:
const isConfirmed = transactionInfo =>
transactionInfo.blockNumber !== undefined && // 确保交易已包含在区块中
transactionInfo.receipt && // Receipt is present
(
transactionInfo.receipt.result === 'SUCCESS' || // 明确的成功结果
transactionInfo.receipt.net_usage > 0 || // 使用了资源
transactionInfo.receipt.net_fee > 0 // 产生了费用
);
代码解释:
- transactionInfo.blockNumber:确保交易已成为区块链的一部分。
- transactionInfo.receipt.result:确认交易执行的状态。
- transactionInfo.receipt.net_usage / transactionInfo.receipt.net_fee:验证资源的使用情况,确保交易对链上状态有实际影响。
最佳实践:
- 监控交易事件:使用 TronGrid 的事件订阅功能,实时跟踪交易的确认状态。
- 增加确认等待:等待多个区块确认,以减少链重组导致交易无效的风险。
- 记录并处理错误:如果交易失败,请检查 contractResult 和 logs 中的错误详情。
这种方法可确保 Tron 系统中的交易确认过程稳健可靠。
完整的 JavaScript函数代码用于验证波场区块链上的交易
以下是一个基于 Node.js(JavaScript)的函数,它可以通过 TronGrid API 确认或验证 Tron 区块链上的交易。此函数需要使用 axios 库来执行 HTTPS API 调用。
const axios = require('axios');
async function isTransactionConfirmed(transactionID, appKey) {
try {
const response = await axios.post(
'https://api.trongrid.io/walletsolidity/gettransactioninfobyid',
{ value: transactionID },
{
headers: {
'accept': 'application/json',
'content-type': 'application/json',
'TRON-PRO-API-KEY': appKey
}
}
);
const transactionInfo = response.data;
const isSuccess = (transactionInfo.receipt && transactionInfo.receipt.result === 'SUCCESS') || ((transactionInfo.blockNumber !== undefined) && (transactionInfo.receipt.net_usage > 0 || (transactionInfo.receipt.net_fee > 0)));
const blockNumber = transactionInfo.blockNumber;
console.log(`BlockNumber ${blockNumber}, ${JSON.stringify(transactionInfo)} Transaction ID: ${transactionID} - Status: ${isSuccess ? 'Confirmed' : 'Failed'}`);
if (!isSuccess) {
console.log(JSON.stringify(transactionInfo));
}
return {
"ok": isSuccess,
"block": blockNumber
};
} catch (error) {
console.error('Error verifying transaction:', error);
throw error;
}
}
区块链技术
- 编程: NodeJs/Javascript 函数检查Tron/波场区块链上的交易是否已确认(TronGrid API)
- 波场TRX和火币HTX可能是下一个百倍币
- 诈骗者正在利用多重签名钱包(Tron/波场): 保持警惕!
- 简介: 区块链DeFi交易中的无常损失/Impermanent Loss
- 基于P站(Poloniex)的广度优先搜索算法来获得任意两种币的兑换价格
- 加密货币只是区块链的冰山一角
- 警惕区块链上的小额诈骗转帐
- 区块链: 硬分叉与软分叉
- 区块链中Layer 1和Layer 2协议的简介
- 孙老板/师卖在区块链上卖沙子 (营销/沙币/孙哥/ICO)
- 和媳妇聊聊 区块链 (Web3.0, 还有共识算法 PoW, PoS, DPoS)
- 我玩区块链虚拟货币的原则
- SteemIt 就可以把图片也存在区块链上了
- Steem转波场U的信任问题(Steem/SBD to USDT TRC-20)
上一篇: Pi币简介: 这真的是区块链上的虚拟货币么?
下一篇: 在LG的OLED智能电视下刷题/力扣
扫描二维码,分享本文到微信朋友圈
