O que é um nonce?

Última atualização: 31 de mar. de 2025

Introdução

Um nonce é um número que identifica de forma exclusiva cada chamada aos endpoints privados da API REST. Um nonce é necessário para todas as chamadas autenticadas à API REST Spot, incluindo os endpoints de gerenciamento de conta (como Saldo, ConsultarOrdens, ConsultarLivrosRazão, etc.), os endpoints de financiamento/ganho (EndereçosDeDepósito, StatusDeDepósito, etc.) e os endpoints de negociação (AdicionarOrdemCancelarOrdem, 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 forneceria 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 sejam atendidos (exclusividade e sempre crescente) e fornece valores suficientes para traders que fazem chamadas de API sucessivas rápidas (formadores de mercado, bots de negociação de alta frequência, etc.).

Exemplo de código

A seguir estão 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 de API e nonces

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

Observe que não é possível redefinir o nonce para uma chave de 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 excluir a chave de API afetada e gerar uma nova chave de API, que automaticamente teria um novo valor nonce inicial de 0 (zero).

Precisa de mais ajuda?