连接
配额、限制和价格与 HTTP 相同。调用按其 protobuf 响应的大小、以相同的公式计量——参见配额单位。
.proto 文件
服务器不提供反射:您的客户端需要 TRON 的.proto 文件。这些文件发布在 tronprotocol/protocol 仓库中;服务定义在 api/api.proto 中。
-import-path 指向克隆下来的目录,将 -proto 指向 api/api.proto:
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 只执行一次。