O que é um nonce?

Última atualização: 31/03/2025

Introdução

Um nonce é um número que identifica de forma única cada chamada para os endpoints privados da API REST. Um nonce é necessário para todas as chamadas autenticadas para a API REST Spot, incluindo os endpoints de gestão de conta (tais como Saldo, ConsultarOrdens, ConsultarRegistos, etc.), os endpoints de financiamento/ganhos (EndereçosDeDepósito, EstadoDeDepósito, etc.), e os endpoints de negociação (AdicionarOrdem, CancelarOrdem, etc.).

Para a autenticação REST de Futuros, um valor nonce não é necessário.

Implementação

Um nonce é implementado como um contador que deve ser único e deve aumentar a cada chamada à API. Por exemplo, assumindo um valor nonce inicial de 0, os valores nonce válidos subsequentes seriam 1, 2, 3, 4, e assim por diante.

Embora um contador simples como o acima fornecesse um nonce válido, um método mais eficaz de gerar valores nonce válidos é usar um carimbo de data/hora UNIX em milissegundos (o número de milissegundos desde 1 de janeiro de 1970 às 00:00:00 UTC). Usar um carimbo de data/hora com resolução de milissegundos ou superior para o nonce garante que todos os requisitos de um nonce válido são cumpridos (unicidade e sempre crescente), e fornece valores suficientes para traders que fazem chamadas API sucessivas rápidas (formadores de mercado, bots de negociação de alta frequência, etc.).

Código de exemplo

Seguem-se alguns exemplos de como gerar valores nonce válidos com resolução de milissegundos em diferentes linguagens de programação:

Python

api_nonce = str(int(time.time()*1000))

JavaScript

var api_nonce = Date.now().toString()

PHP

$api_nonce = explode(' ', microtime());
$api_nonce = $api_nonce[1].substr($api_nonce[0], 2, 3);

Chaves API e nonces

Cada chave API tem o seu próprio nonce separado, e o valor nonce é persistente, o que significa que o nonce mais recentemente utilizado permanecerá inalterado mesmo que uma chave API não seja utilizada durante algum tempo.

Note que não é possível redefinir o nonce para uma chave API específica. No caso de um valor nonce se tornar inválido (como usar acidentalmente um carimbo de data/hora UNIX muito no futuro), a solução seria eliminar a chave API afetada e gerar uma nova chave API, que teria automaticamente um novo valor nonce inicial de 0 (zero).

Precisa de mais ajuda?