API 参考
TRON 节点内置 HTTP API、gRPC API 和 JSON-RPC API。生态服务还提供 TronGrid V1 API、Tronscan API 等托管和索引接口。
TRON 节点内置三类 API:HTTP API、gRPC API 和 JSON-RPC API。HTTP API 和 gRPC API 默认开启,端口由节点 config.conf 配置;JSON-RPC API 默认关闭,需要在 node.jsonrpc 配置块中手动开启。
如果跳出标准节点接口,从生态接入角度看,TronGrid 还提供 TronGrid V1 API,Tronscan 也提供 Tronscan API。这些接口由对应项目方开发和维护,通常在标准节点 API 之上提供更多高性能、实用的扩展 API,例如预索引历史数据、事件检索、账户与交易聚合查询等能力,可以更好地满足不同业务场景的查询需求,也被社区广泛使用。
前置阅读
API 分层
| 层级 | API | 提供方 | 默认状态 | 典型入口 | 适用场景 |
|---|---|---|---|---|---|
| 节点内置 | HTTP API | java-tron 节点 | 默认开启 | FullNode: :8090;Solidity: :8091 | 标准读写接口、SDK 后端、交易构建与广播 |
| 节点内置 | gRPC API | java-tron 节点 | 默认开启 | FullNode: :50051;Solidity: :50061 | 高性能服务端集成、强类型客户端、流式能力 |
| 节点内置 | JSON-RPC API | java-tron 节点 | 默认关闭 | FullNode: :8545;Solidity: :8555(手动开启) | 复用以太坊生态工具链 |
| 生态服务 | TronGrid V1 API | TronGrid | 托管服务 | https://api.trongrid.io/v1/... | 账户历史、TRC-20 转账、事件日志等预索引数据 |
| 生态服务 | Tronscan API | Tronscan | 托管服务 | Tronscan 服务端接口 | 浏览器数据、聚合统计、展示型查询 |
这些 API 最终读取同一条 TRON 链上的数据,但它们的传输协议、服务高度、接口覆盖范围和运营方不同。生产系统通常组合使用:写入热路径走节点 HTTP 或 gRPC;充值入账、财务和托管余额读取走 Solidity 接口;历史流水和事件检索可接入 TronGrid V1 API 或自建索引器。
节点 HTTP API
HTTP API 是 java-tron 节点提供的标准 JSON-over-HTTP 接口。它包含两组最常用的路径:
| 路径前缀 | 服务高度 | 默认端口 | 用途 |
|---|---|---|---|
/wallet/ | 最新区块(链头) | 8090 | 构建交易、广播交易、查询最新状态 |
/walletsolidity/ | 最新已固化区块 | 8091 | 查询已固化账户、区块、交易和资源状态 |
FullNode HTTP 和 Solidity HTTP 的接口名通常一一对应。例如,查询账户最新状态使用 POST /wallet/getaccount,查询已固化状态使用 POST /walletsolidity/getaccount。
例如,查询账户最新状态可以调用 FullNode HTTP:
curl -X POST https://api.shasta.trongrid.io/wallet/getaccount \
-H "Content-Type: application/json" \
-d '{
"address": "TBRmnXKMEVfQ8XeQA2NroC9cGi77TvPbNb",
"visible": true
}'如果要查询已固化状态,将路径换成 /walletsolidity/getaccount。
写入操作只走 FullNode HTTP,例如:
POST /wallet/createtransaction
POST /wallet/triggersmartcontract
POST /wallet/broadcasttransactionSolidity HTTP 只提供读取能力,适合需要最终状态的交易确认、余额对账和区块回填。对需要最终确认的状态变更,不要用最新链头直接作为最终依据;应等包含该交易的区块固化后,通过 /walletsolidity/ 查询交易回执或区块数据。
FullNode 与 SolidityNode 选择指南
FullNode 和 SolidityNode 读取同一条 TRON 链,但服务高度和接口能力不同。选择时先判断操作是否会改变链上状态,再判断读取结果是否必须来自已固化区块。
| 需要完成的任务 | 推荐接口 | 原因 |
|---|---|---|
| 构建转账、质押、投票、合约调用等写入交易 | FullNode HTTP 或 FullNode gRPC | 只有 FullNode 服务提供交易构建和广播能力 |
| 广播已签名交易 | FullNode HTTP 或 FullNode gRPC | 广播类接口只在 FullNode 服务中提供 |
| 展示最新余额、最新区块或开发调试状态 | FullNode HTTP、FullNode gRPC 或 JSON-RPC | 读取节点当前看到的最新链头,延迟低但可能尚未固化 |
| 确认交易最终结果 | Solidity HTTP 或 Solidity gRPC | 返回已固化区块中的交易和 receipt,更适合作为最终状态依据 |
| 对账账户、资源或区块扫描结果 | Solidity HTTP 或 Solidity gRPC | 避免把未固化链头状态写入最终账本 |
| 查询账户历史、TRC-20 转账历史、Event 或内部交易历史 | TronGrid V1 API 或自建索引器 | 这些是预索引历史数据,节点原生接口通常只返回当前状态或区块级数据 |
广播接口返回 result: true 只表示节点接受交易,不代表交易已打包或执行成功。完整确认路径见 交易签名与广播——API 工作流。
节点 gRPC API
gRPC API 由 java-tron 节点直接提供,默认开启。它与 HTTP API 面向同一类节点能力,但使用 Protocol Buffers 和 gRPC 传输,适合对吞吐、延迟、类型约束或服务端集成稳定性要求更高的后端系统。
| gRPC 服务 | 服务高度 | 默认端口 | 用途 |
|---|---|---|---|
| FullNode gRPC | 最新区块(链头) | 50051 | 最新状态读取、交易构建与广播 |
| Solidity gRPC | 最新已固化区块 | 50061 | 已固化状态读取 |
HTTP API 与 gRPC API 都包含 FullNode 和 Solidity 两类服务。你可以按团队技术栈选择协议:Web 后端和脚本通常先用 HTTP;Java、Go、服务端索引器或高吞吐任务可以优先考虑 gRPC。
在 Java 或其他 JVM 后端中,通常可以直接使用 Trident。Trident 是 TRON 的 Java SDK,封装了节点 gRPC 接口、交易构建、签名、广播和智能合约调用能力,适合后端服务、索引器和批处理任务接入 TRON 网络。更多底层 API 细节可参考 Trident 官方文档。
节点 JSON-RPC API
JSON-RPC API 可以理解为面向 Ethereum 兼容场景的一组轻量接口,覆盖节点能力中的部分 EVM 风格查询与调用场景。它便于复用 Web3.js、ethers、viem 等以太坊生态工具链。由于 TRON 与 Ethereum 的底层机制不同,部分 Ethereum JSON-RPC 方法在 TRON 上没有对应实现,或行为存在差异。
JSON-RPC API 默认关闭。自建节点使用前,需要在 config.conf 中开启:
node {
jsonrpc {
httpFullNodeEnable = true
httpFullNodePort = 8545
httpSolidityEnable = true
httpSolidityPort = 8555
}
}自建节点的 JSON-RPC 服务运行在对应端口的根路径,例如 http://<host>:8545/。TronGrid 代理的 JSON-RPC 使用 https://api.trongrid.io/jsonrpc;/jsonrpc 是 TronGrid 网关路径,不是自建 java-tron 节点的通用路径。
JSON-RPC 适合迁移以太坊工具链。它覆盖的是部分 EVM 风格接口,不是节点 HTTP API 或 gRPC API 的完整替代品;如果业务需要更完整的节点能力,应结合 HTTP API 或 gRPC API 使用。
生态 API
TronGrid V1 API
TronGrid 是 TRON 生态中常用的托管节点与索引服务。除代理标准节点接口外,TronGrid V1 API 还提供原生节点不直接提供的预索引数据,例如账户交易历史、TRC-20 / TRC-721 转账历史、合约事件和内部交易查询。
TronGrid V1 API 通常以 /v1/ 开头,例如:
GET /v1/accounts/{address}/transactions
GET /v1/accounts/{address}/transactions/trc20
GET /v1/contracts/{address}/eventsTronGrid 是托管节点服务,调用时通常需要 TRON-PRO-API-KEY,访问速率和额度按 Key 配置。
Tronscan API
Tronscan API 由 Tronscan 维护,面向区块浏览器数据、聚合统计、账户展示、交易展示和生态查询等场景。它不是 java-tron 节点内置 API,也不应和 FullNode HTTP、gRPC 或 JSON-RPC 混为一类。使用 Tronscan API 时,应以 Tronscan 当前公开文档和服务限制为准。
选型建议
构建和广播交易
使用 FullNode HTTP 或 FullNode gRPC。常见 HTTP 流程是:
- 调用
/wallet/createtransaction、/wallet/triggersmartcontract等接口构建未签名交易。 - 在客户端本地签名交易。
- 调用
/wallet/broadcasttransaction广播已签名交易。
交易完整生命周期、签名注意事项和代码示例,参见交易签名与广播——API 工作流。
查询已固化数据
使用 Solidity HTTP 或 Solidity gRPC。HTTP 路径通常以 /walletsolidity/ 开头,例如:
POST /walletsolidity/getaccount
POST /walletsolidity/gettransactioninfobyid
POST /walletsolidity/getblockbynum已固化区块通常比最新链头落后约 1 分钟。对交易确认、余额对账、报表生成和区块监听等需要最终状态的流程(如交易所、钱包方等),应基于已固化数据判断最终状态。
复用以太坊工具链
使用 JSON-RPC API。它适合 Web3.js、ethers、viem 等工具接入 TRON,但覆盖范围窄于节点 HTTP 和 gRPC。对于 JSON-RPC 未覆盖的接口能力,应结合 HTTP API 或 gRPC API 使用。
查询账户历史和事件
如果你不想自建索引器,可以使用 TronGrid V1 API。它适合快速查询账户历史、TRC-20 转账、事件日志和内部交易。高流量生产环境需要关注 API Key、限流、分页和数据延迟。
需要更高可控性时,也可以直接扫描 SolidityNode 的已固化区块,并在本地维护索引库。
→ 集成指南
请求格式和地址格式
HTTP API 和 TronGrid V1 API 使用 JSON 请求和响应。大多数节点 HTTP API 支持 visible 参数:
{
"address": "T...",
"visible": true
}visible: true:地址使用 Base58Check 格式,通常以T开头。visible: false或省略:地址使用 hex 格式,通常以41开头。
JSON-RPC API 遵循以太坊 JSON-RPC 风格,数值和字节数据通常以 0x 十六进制字符串表示。TRON 地址在 JSON-RPC 中也会按兼容规则转换。
→ 地址与数据编码
资源预算
每笔写入交易都会消耗带宽或能量:普通转账主要消耗带宽,智能合约调用主要消耗能量。调用合约时,fee_limit 限制本次交易可使用的能量上限,覆盖质押能量和燃烧 TRX 可换算出的能量,不是简单的“最多燃烧多少 TRX”。该值设置过低时,交易可能因能量不足执行失败。
→ 资源模型
相关资源
- API 任务地图 —— 按“广播交易、查询账户、查询区块、合约调用、事件与故障排查”等任务选择文档和接口
- 确认语义 —— 区分广播成功、交易上链、Receipt 执行结果和已固化状态
- 交易签名与广播——API 工作流 —— 交易的构建、签名与广播生命周期及示例
- 地址与数据编码 —— Base58 与 Hex 地址转换、
visible标志及合约调用的 ABI 编码说明 - 错误与调试 —— 常见错误分类、十六进制错误信息解码与请求重试策略
- TronGrid —— TronGrid 节点服务和扩展 API 介绍
- RPC 与索引器服务商 —— 托管 RPC、索引器和自建节点的选型
- 查询余额与资源 —— 查询 TRX、TRC-10、TRC-20 余额及资源
- 通过 gRPC 调用 TRON —— 基于 gRPC 协议调用节点接口
- Trident —— TRON 后端集成最常用的 Java SDK
- 网络 —— Mainnet、Shasta、Nile 的 Endpoint 地址
Updated 26 days ago