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

Лимиты в секунду

Каждый вызов относится к одному из трёх классов. Он расходует вашу квоту и лимит в секунду своего класса: Цифры зависят от тарифа — см. Тарифы и оплата. Лимиты принадлежат тарифу и общие для всех его эндпоинтов. Каждый лимит вмещает объём одной секунды. Например, при 30 WU/s сразу проходит до 30 WU, а затем лимит пополняется со скоростью 30 WU в секунду. Чтение пропускается, пока в лимите чтения осталось хоть сколько-то места, а его стоимость списывается после ответа: одно тяжёлое чтение может увести лимит ниже нуля, и следующие чтения ждут, пока он восполнится. Диапазон блоков возвращает не больше 10 блоков за вызов.

Формат ошибки

Отказ — это JSON с сообщением в Error и машиночитаемым code:
Ориентируйтесь на code; сообщение может меняться. У отказа всегда есть code. У собственных ошибок ноды его нет: java-tron отвечает {"Error": "…"} без code, обычно со статусом 200, и такой ответ тарифицируется как любой другой — см. Единицы квоты. Отказы не тарифицируются и не несут X-Node-API-WU, кроме method_not_found, который несёт X-Node-API-WU: 0. Отказы 429 и 503 обычно несут Retry-After.

Коды отказов

По gRPC те же коды приходят в завершающих метаданных x-node-api-reason, а вместо HTTP-статуса — статус gRPC; см. gRPC.

Режим деградации

Когда наша основная нода для Node API недоступна или отстаёт от сети, сервис продолжает работать на резервной ноде. В это время:
  • вызовы с ответом несут заголовок X-Node-API-Mode: degraded (по gRPC — завершающие метаданные x-node-api-mode: degraded);
  • ваш лимит чтения в WU в секунду уменьшается вдвое; лимиты блоковых запросов и отправки транзакций не меняются;
  • свежие блоки — в пределах 20 от головы — и их квитанции отдаются как обычно, а более старые блоки, их квитанции и диапазоны блоков отклоняются с 503 degraded;
  • общая пропускная способность меньше, поэтому 503 capacity вероятнее.
Отправка транзакций никогда не урезается. Обычный режим возвращается сам — ничего делать не нужно. Если ваше приложение читает старые блоки, приостановите эту работу, пока заголовок присутствует, и возобновите, когда он исчезнет.

Повторы

  • 429 rate_read, rate_block, rate_write, trials и любой 503: подождите столько секунд, сколько указано в Retry-After, затем повторите.
  • 429 quota и 429 overage_budget: ожидание не поможет. Пополните баланс или смените тариф.
  • 502 node_error: повторите. Повторно отправлять ту же подписанную транзакцию безопасно — сеть исполняет ID транзакции только один раз.
  • Остальные 4xx: исправьте запрос — повтор даст тот же ответ.