Ce este un nonce?

Ultima actualizare: 31 martie 2025

Introducere

Un nonce este un număr care identifică în mod unic fiecare apel către punctele finale private ale REST API. Un nonce este necesar pentru toate apelurile autentificate către Spot REST API, inclusiv punctele finale de gestionare a contului (cum ar fi Balance, QueryOrders, QueryLedgers etc.), punctele finale de finanțare/câștig (DepositAddresses, DepositStatus etc.) și punctele finale de tranzacționare (AddOrderCancelOrder etc.).

Pentru autentificarea Futures REST, o valoare nonce nu este necesară.

Implementare

Un nonce este implementat ca un contor care trebuie să fie unic și trebuie să crească cu fiecare apel către API. De exemplu, presupunând o valoare nonce de pornire de 0, valorile nonce valide ulterioare ar fi 1, 2, 3, 4 și așa mai departe.

Deși un contor simplu, cum ar fi cel de mai sus, ar oferi un nonce valid, o metodă mai eficientă de generare a valorilor nonce valide este utilizarea unui UNIX timestamp în milisecunde (numărul de milisecunde de la 1 ianuarie 1970 la 00:00:00 UTC). Utilizarea unui timestamp cu rezoluție de milisecunde sau mai mare pentru nonce garantează că toate cerințele unui nonce valid sunt îndeplinite (unicitate și creștere constantă) și oferă valori suficiente pentru traderii care efectuează apeluri API succesive rapide (market makers, roboți de tranzacționare de înaltă frecvență etc.).

Exemple de cod

Următoarele sunt câteva exemple despre cum să generați valori nonce valide cu rezoluție de milisecunde în diferite limbaje de programare:

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

Chei API și nonce-uri

Fiecare cheie API are propriul său nonce separat, iar valoarea nonce este persistentă, ceea ce înseamnă că cel mai recent nonce utilizat va rămâne neschimbat chiar dacă o cheie API nu este utilizată pentru o perioadă de timp.

Rețineți că nu este posibil să resetați nonce-ul pentru o anumită cheie API. În cazul în care o valoare nonce devine invalidă (cum ar fi utilizarea accidentală a unui UNIX timestamp mult în viitor), soluția ar fi să ștergeți cheia API afectată și să generați o nouă cheie API, care ar avea automat o nouă valoare nonce de pornire de 0 (zero).

Ai nevoie de mai mult ajutor?