Saltar para o conteúdo principal

Limites por segundo

Toda chamada pertence a uma de três classes. Ela gasta a sua cota e o limite por segundo da sua classe: Os números dependem do plano — veja Planos e cobrança. Os limites pertencem ao plano e são compartilhados por todos os seus endpoints. Cada limite comporta o equivalente a um segundo. Com 30 WU/s, por exemplo, até 30 WU passam de uma vez, e depois o limite se recompõe a 30 WU por segundo. Uma leitura é admitida enquanto o limite de leitura tiver alguma folga, e o seu custo é descontado depois da resposta: uma leitura pesada pode levar o limite abaixo de zero, e as leituras seguintes esperam até ele se recompor. Um intervalo de blocos retorna no máximo 10 blocos por chamada.

Formato do erro

Uma recusa é um JSON com uma mensagem em Error e um code legível por máquina:
Use o code; a mensagem pode mudar. Uma recusa sempre tem code. Os erros do próprio nó não têm: o java-tron responde {"Error": "…"} sem code, normalmente com status 200, e uma resposta dessas é cobrada como qualquer outra — veja Unidades de cota. As recusas não são cobradas e não trazem X-Node-API-WU, exceto method_not_found, que traz X-Node-API-WU: 0. As recusas 429 e 503 normalmente trazem Retry-After.

Códigos de recusa

No gRPC, os mesmos códigos chegam nos metadados finais x-node-api-reason, com um status gRPC no lugar do HTTP — veja gRPC.

Modo degradado

Quando o nosso nó principal do Node API está indisponível ou fica atrás da rede, o serviço continua funcionando em um nó de reserva. Enquanto isso:
  • as chamadas respondidas trazem o cabeçalho X-Node-API-Mode: degraded (no gRPC, os metadados finais x-node-api-mode: degraded);
  • o seu limite de leitura em WU por segundo cai pela metade; os limites de requisições de blocos e de envio de transações continuam como estão;
  • os blocos recentes — a até 20 da ponta — e seus recibos são servidos normalmente, enquanto blocos mais antigos, seus recibos e intervalos de blocos são recusados com 503 degraded;
  • a capacidade compartilhada é menor, então 503 capacity fica mais provável.
O envio de transações nunca é cortado. O modo normal volta sozinho; você não precisa fazer nada. Se a sua aplicação lê blocos antigos, pause esse trabalho enquanto o cabeçalho estiver presente e retome quando ele sumir.

Novas tentativas

  • 429 rate_read, rate_block, rate_write, trials e todo 503: aguarde o número de segundos de Retry-After e tente novamente.
  • 429 quota e 429 overage_budget: esperar não ajuda. Recarregue o saldo ou mude de plano.
  • 502 node_error: tente novamente. Reenviar a mesma transação assinada é seguro — a rede executa um ID de transação apenas uma vez.
  • Outros 4xx: corrija a requisição; repeti-la dá a mesma resposta.