确认语义
区分广播接收、交易打包、执行收据、已固化区块和索引数据延迟,避免把中间状态当作最终结果。
TRON API 会在不同阶段返回不同类型的数据。集成时应先判断当前拿到的是广播接收结果、交易本体、执行收据、已固化状态,还是索引服务数据。不要把中间状态当作最终结果。
前置阅读
状态语义速查
| 你看到的结果 | 代表什么 | 不代表什么 | 下一步 |
|---|---|---|---|
BroadcastTransaction 返回 result: true | 广播节点接受交易,并尝试放入本地 mempool | 不代表交易已打包、执行成功或已固化 | 继续查询交易本体或 receipt |
GetTransactionById 返回交易对象 | 节点能找到交易本体,包括 raw_data、签名和合约参数 | 不代表合约执行成功;也不包含手续费、Event 或内部交易 | 查询 GetTransactionInfoById |
GetTransactionInfoById 返回 receipt | 交易已被执行,并产生手续费、Energy、Event、内部交易等执行结果 | FullNode 版本不一定表示已固化 | 需要最终状态时查询 SolidityNode 版本 |
| SolidityNode 返回交易或区块 | 数据来自已固化区块 | 不代表可以查询完整历史索引 | 可作为最终确认或对账依据 |
| TronGrid 返回历史交易或 Event | 索引服务已经处理到对应数据 | 不等同于节点原生当前状态;可能受分页、限流和索引延迟影响 | 对关键状态可用节点或自建索引复核 |
广播接收不等于执行成功
广播接口只检查交易是否能被节点接受。它不会告诉你合约是否执行成功,也不会告诉你交易是否已经进入已固化区块。
常见错误是把下面的响应直接当作最终成功:
{ "result": true, "txid": "..." }正确流程是继续查询 receipt:
- 用 GetTransactionById 查询交易本体,确认节点能找到这笔交易。
- 用 GetTransactionInfoById 查询执行 receipt。
- 需要最终状态时,用 GetTransactionInfoById,SolidityNode 查询已固化 receipt。
交易本体不等于执行收据
交易本体描述“请求方提交了什么”,执行收据描述“链上实际执行后发生了什么”。
| 数据类型 | 推荐接口 | 包含内容 |
|---|---|---|
| 交易本体 | GetTransactionById | raw_data、签名、合约调用参数 |
| 执行收据 | GetTransactionInfoById | 手续费、Energy 消耗、合约执行状态、Event、内部交易 |
| 已固化执行收据 | GetTransactionInfoById,SolidityNode | 已固化区块中的执行收据 |
对普通 TRX / TRC-10 顶层转账,交易本体通常已经包含收款地址和金额。对 TriggerSmartContract,必须读取 receipt 才能判断实际执行结果。
最新链头不等于已固化状态
FullNode 返回节点当前看到的最新链头。这个状态延迟低,但可能尚未固化。SolidityNode 返回最新已固化区块上的状态,通常比链头落后约 1 分钟。
| 读取目标 | 推荐接口 |
|---|---|
| 最新区块展示 | GetNowBlock,FullNode |
| 最新已固化区块 | GetNowBlock,SolidityNode |
| 按高度查询最新链头视图 | GetBlockByNum,FullNode |
| 按高度确认是否已固化 | GetBlockByNum,SolidityNode |
如果流程需要最终状态(如交易确认、余额对账、报表生成和区块监听),应基于 SolidityNode 或本地已固化区块索引判断。
索引数据不等于节点原生状态
TronGrid V1 API 和自建索引器适合查询账户历史、TRC-20 转账历史、Event、内部交易和聚合统计。索引服务通常比直接扫块更方便,但要考虑分页、限流、重试和索引延迟。
当你需要完整状态判断时,可以按以下方式组合:
- 用 TronGrid 或自建索引器发现候选交易、Event 或内部交易。
- 用 SolidityNode receipt 或已固化区块扫描确认最终状态。
- 在本地保存已处理的 block number、transaction ID 和 log index,保证重试幂等。
相关资源
- 交易签名与广播——API 工作流 —— 构建、签名、广播和确认交易结果的完整路径
- 广播与 RPC 错误 —— 广播失败、广播后未上链和节点限流排查
- 区块 —— 区块结构、block ID、block number 和查询接口选型
- API 任务地图 —— 按任务选择 docs 页面和 reference API
Updated about 1 month ago