Saltar al contenido principal

Conexión

La cuota, los límites y los precios son los mismos que por HTTP. Una llamada se pondera por el tamaño de su respuesta protobuf con la misma fórmula — consulta Unidades de cuota.

Archivos .proto

El servidor no tiene reflexión: tu cliente necesita los archivos .proto de TRON. Están publicados en el repositorio tronprotocol/protocol; los servicios están en api/api.proto.
Con grpcurl, apunta -import-path al clon y -proto a api/api.proto:
En el código, genera los stubs a partir de los mismos archivos con las herramientas gRPC de tu lenguaje, abre un canal TLS a node.tronrental.com:443 y pasa la clave en los metadatos de cada llamada.

Nombres de métodos y bytes

  • Los nombres de los métodos distinguen mayúsculas y minúsculas, como en el .proto: protocol.Wallet/GetAccount, no getAccount. Un método que el nodo no tiene termina con UNIMPLEMENTED, x-node-api-reason: method_not_found y x-node-api-wu: 0 — no cuesta nada.
  • Las direcciones y los ID son bytes. En el JSON de grpcurl, los bytes van en base64. Una dirección TRON tiene 21 bytes: 41 seguido de 20 bytes. Para pasar su forma hex a base64:
  • Un mensaje de solicitud ocupa como máximo 512 KB. Uno mayor se rechaza con RESOURCE_EXHAUSTED antes de procesarse.

Metadatos finales

Códigos de estado

Los rechazos se corresponden con estados gRPC según su estado HTTP. El código en sí va en x-node-api-reason; la lista completa está en Límites y errores. Un error que devuelve el propio nodo (por ejemplo, INVALID_ARGUMENT por una transacción mal formada) se te pasa tal cual y cuesta 1 WU: el nodo hizo el trabajo. Si el nodo no responde, la llamada termina con UNAVAILABLE y x-node-api-reason: node_error y no cuesta nada.
Un RESOURCE_EXHAUSTED sin x-node-api-reason proviene del propio servidor gRPC: el mensaje de solicitud supera los 512 KB, o el servidor está atendiendo demasiadas llamadas a la vez. En el segundo caso, reintenta tras una breve pausa.

Reintentos y transmisiones

Una llamada nunca se repite en otro nodo a tus espaldas: un UNAVAILABLE puede significar que la conexión se cortó después de que el nodo recibiera la solicitud. Reenviar la misma transacción firmada a BroadcastTransaction es seguro — la red ejecuta un ID de transacción una sola vez.