跳转到主要内容

连接

配额、限制和价格与 HTTP 相同。调用按其 protobuf 响应的大小、以相同的公式计量——参见配额单位。

.proto 文件

服务器不提供反射:您的客户端需要 TRON 的 .proto 文件。这些文件发布在 tronprotocol/protocol 仓库中;服务定义在 api/api.proto 中。
使用 grpcurl 时,将 -import-path 指向克隆下来的目录,将 -proto 指向 api/api.proto:
在代码中,用您所用语言的 gRPC 工具从相同的文件生成桩代码,打开到 node.tronrental.com:443 的 TLS 通道,并在每次调用的元数据中传递密钥。

方法名与字节

  • 方法名区分大小写,与 .proto 中一致:protocol.Wallet/GetAccount,而不是 getAccount。节点没有的方法会以 UNIMPLEMENTED、x-node-api-reason: method_not_found 和 x-node-api-wu: 0 结束——不计费。
  • 地址和 ID 是字节。 在 grpcurl 的 JSON 中,字节以 base64 表示。TRON 地址为 21 字节:41 后跟 20 字节。将其十六进制形式转换为 base64:
  • 请求消息最大 512 KB。 更大的消息会在处理之前以 RESOURCE_EXHAUSTED 被拒绝。

尾部元数据

状态码

拒绝按其 HTTP 状态映射为 gRPC 状态。代码本身位于 x-node-api-reason 中;完整列表见限制与错误。 节点自身返回的错误(例如格式错误的交易返回 INVALID_ARGUMENT)会原样传给您,并消耗 1 WU:节点已经完成了这份工作。如果节点没有响应,调用会以 UNAVAILABLE 和 x-node-api-reason: node_error 结束,不计费。
不带 x-node-api-reason 的 RESOURCE_EXHAUSTED 来自 gRPC 服务器本身:要么请求消息超过 512 KB,要么服务器同时持有的调用过多。对于第二种情况,请稍等片刻后重试。

重试与广播

调用绝不会在您不知情的情况下转到另一个节点上重复执行:UNAVAILABLE 可能意味着连接是在节点收到请求之后才断开的。将同一笔已签名交易重新发送到 BroadcastTransaction 是安全的——网络对同一个交易 ID 只执行一次。