Czym jest nonce?

Ostatnia aktualizacja: 31 mar 2025

Wprowadzenie

Nonce to liczba, która jednoznacznie identyfikuje każde wywołanie prywatnych punktów końcowych interfejsu API REST. Nonce jest wymagany dla wszystkich uwierzytelnionych wywołań interfejsu API REST Spot, w tym punktów końcowych zarządzania kontem (takich jak Balance, QueryOrders, QueryLedgers itp.), punktów końcowych finansowania/zarabiania (DepositAddresses, DepositStatus itp.) oraz punktów końcowych handlu (AddOrder, CancelOrder itp.).

W przypadku uwierzytelniania REST Futures, wartość nonce nie jest wymagana.

Implementacja

Nonce jest zaimplementowany jako licznik, który musi być unikalny i musi wzrastać z każdym wywołaniem API. Na przykład, zakładając początkową wartość nonce równą 0, kolejne prawidłowe wartości nonce to 1, 2, 3, 4 i tak dalej.

Chociaż prosty licznik, taki jak powyższy, zapewniłby prawidłową wartość nonce, bardziej efektywną metodą generowania prawidłowych wartości nonce jest użycie znacznika czasu UNIX w milisekundach (liczba milisekund od 1 stycznia 1970 roku o godzinie 00:00:00 UTC). Użycie znacznika czasu o rozdzielczości milisekundowej lub wyższej dla nonce gwarantuje spełnienie wszystkich wymagań prawidłowego nonce (unikalność i zawsze rosnąca wartość) oraz zapewnia wystarczające wartości dla traderów wykonujących szybkie, kolejne wywołania API (animatorzy rynku, boty do handlu wysokiej częstotliwości itp.).

Przykładowy kod

Poniżej przedstawiono kilka przykładów generowania prawidłowych wartości nonce o rozdzielczości milisekundowej w różnych językach programowania:

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);

Klucze API i nonces

Każdy klucz API ma swój własny, oddzielny nonce, a wartość nonce jest trwała, co oznacza, że ostatnio użyta wartość nonce pozostanie niezmieniona, nawet jeśli klucz API nie będzie używany przez pewien czas.

Należy pamiętać, że nie jest możliwe zresetowanie nonce dla konkretnego klucza API. W przypadku, gdy wartość nonce stanie się nieprawidłowa (np. przez przypadkowe użycie znacznika czasu UNIX daleko w przyszłości), rozwiązaniem byłoby usunięcie danego klucza API i wygenerowanie nowego klucza API, który automatycznie miałby nową początkową wartość nonce równą 0 (zero).

Potrzebujesz więcej pomocy?