Saltar para o conteúdo principal

Conexão

Cota, limites e preços são os mesmos do HTTP. Uma chamada é pesada pelo tamanho da sua resposta protobuf, com a mesma fórmula — veja Unidades de cota.

Arquivos .proto

O servidor não tem reflexão: o seu cliente precisa dos arquivos .proto da TRON. Eles estão publicados no repositório tronprotocol/protocol; os serviços ficam em api/api.proto.
Com o grpcurl, aponte -import-path para o clone e -proto para api/api.proto:
No código, gere os stubs a partir dos mesmos arquivos com as ferramentas gRPC da sua linguagem, abra um canal TLS para node.tronrental.com:443 e passe a chave nos metadados de cada chamada.

Nomes de métodos e bytes

  • Os nomes dos métodos diferenciam maiúsculas de minúsculas, como no .proto: protocol.Wallet/GetAccount, não getAccount. Um método que o nó não tem termina com UNIMPLEMENTED, x-node-api-reason: method_not_found e x-node-api-wu: 0 — não custa nada.
  • Endereços e IDs são bytes. No JSON do grpcurl, bytes são base64. Um endereço TRON tem 21 bytes: 41 seguido de 20 bytes. Para converter sua forma hex em base64:
  • Uma mensagem de requisição tem no máximo 512 KB. Uma maior é recusada com RESOURCE_EXHAUSTED antes de ser processada.

Metadados finais

Códigos de status

As recusas são mapeadas para status gRPC conforme o seu status HTTP. O código em si está em x-node-api-reason; a lista completa está em Limites e erros. Um erro retornado pelo próprio nó (por exemplo, INVALID_ARGUMENT para uma transação malformada) é repassado a você como está e custa 1 WU: o nó fez o trabalho. Se o nó não responde, a chamada termina com UNAVAILABLE e x-node-api-reason: node_error e não custa nada.
Um RESOURCE_EXHAUSTED sem x-node-api-reason vem do próprio servidor gRPC: a mensagem de requisição passa de 512 KB, ou o servidor está segurando chamadas demais ao mesmo tempo. No segundo caso, tente novamente após uma breve pausa.

Novas tentativas e transmissões

Uma chamada nunca é repetida em outro nó sem você saber: um UNAVAILABLE pode significar que a conexão caiu depois de o nó receber a requisição. Reenviar a mesma transação assinada para BroadcastTransaction é seguro — a rede executa um ID de transação apenas uma vez.