Подключение
Квота, лимиты и цены — те же, что по HTTP. Вызов взвешивается по размеру его protobuf-ответа по той
же формуле — см. Единицы квоты.
Файлы .proto
Reflection на сервере нет: вашему клиенту нужны.proto-файлы TRON. Они опубликованы в репозитории
tronprotocol/protocol; сервисы находятся в
api/api.proto.
-import-path путь к клону, а в -proto — api/api.proto:
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 транзакции только один раз.