Перейти к основному содержанию

Подключение

Квота, лимиты и цены — те же, что по HTTP. Вызов взвешивается по размеру его protobuf-ответа по той же формуле — см. Единицы квоты.

Файлы .proto

Reflection на сервере нет: вашему клиенту нужны .proto-файлы TRON. Они опубликованы в репозитории tronprotocol/protocol; сервисы находятся в api/api.proto.
В grpcurl укажите в -import-path путь к клону, а в -proto — api/api.proto:
В коде сгенерируйте стабы из тех же файлов инструментами gRPC для вашего языка, откройте TLS-канал к node.tronrental.com:443 и передавайте ключ в метаданных каждого вызова.

Имена методов и байты

  • Имена методов чувствительны к регистру, как в .proto: protocol.Wallet/GetAccount, а не getAccount. Вызов метода, которого у ноды нет, завершается с UNIMPLEMENTED, x-node-api-reason: method_not_found и x-node-api-wu: 0 — он ничего не стоит.
  • Адреса и ID — это байты. В JSON для grpcurl байты передаются в base64. Адрес TRON — 21 байт: 41, за которым идут 20 байт. Чтобы перевести его hex-форму в base64:
  • Сообщение запроса — не больше 512 KB. Более крупное отклоняется с RESOURCE_EXHAUSTED ещё до обработки.

Завершающие метаданные

Коды статусов

Отказы сопоставляются со статусами gRPC по их HTTP-статусу. Сам код — в x-node-api-reason; полный список — в разделе Лимиты и ошибки. Ошибка, которую возвращает сама нода (например, INVALID_ARGUMENT для некорректной транзакции), передаётся вам как есть и стоит 1 WU: нода выполнила работу. Если нода не отвечает, вызов завершается с UNAVAILABLE и x-node-api-reason: node_error и ничего не стоит.
RESOURCE_EXHAUSTED без x-node-api-reason приходит от самого gRPC-сервера: сообщение запроса больше 512 KB или сервер держит слишком много вызовов одновременно. Во втором случае повторите после короткой паузы.

Повторы и отправка транзакций

Вызов никогда не повторяется на другой ноде без вашего ведома: UNAVAILABLE может означать, что соединение оборвалось уже после того, как нода получила запрос. Повторно отправить ту же подписанную транзакцию в BroadcastTransaction безопасно — сеть исполняет ID транзакции только один раз.