Mi az a nonce?

Utolsó frissítés: 2025. március 31.

Bevezetés

A nonce egy olyan szám, amely egyedileg azonosítja a REST API privát végpontjaihoz intézett minden egyes hívást. Nonce szükséges a Spot REST API összes hitelesített hívásához, beleértve a számlakezelési végpontokat (például Balance, QueryOrders, QueryLedgers stb.), a finanszírozási/kereseti végpontokat (DepositAddresses, DepositStatus stb.), és a kereskedési végpontokat (AddOrder, CancelOrder stb.).

A Futures REST authentication esetén a nonce érték nem szükséges.

Implementáció

A nonce egy számlálóként van implementálva, amelynek egyedinek kell lennie, és minden API-hívással növekednie kell. Például, feltételezve egy 0-s kezdő nonce értéket, a következő érvényes nonce értékek 1, 2, 3, 4 és így tovább lennének.

Bár egy egyszerű számláló, mint a fent említett, érvényes nonce-t biztosítana, az érvényes nonce értékek generálásának hatékonyabb módja egy UNIX timestamp használata milliszekundumban (az 1970. január 1-jén 00:00:00 UTC óta eltelt milliszekundumok száma). A milliszekundumos vagy nagyobb felbontású időbélyeg használata a nonce-hoz garantálja, hogy az érvényes nonce minden követelménye teljesül (egyediség és folyamatos növekedés), és elegendő értéket biztosít a gyors, egymást követő API-hívásokat végző kereskedők számára (market makerek, nagyfrekvenciás kereskedési botok stb.).

Példakód

Az alábbiakban néhány példa látható arra, hogyan lehet érvényes milliszekundumos felbontású nonce értékeket generálni különböző programozási nyelveken:

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

API kulcsok és nonce-ok

Minden API kulcsnak saját külön nonce-ja van, és a nonce érték állandó, ami azt jelenti, hogy a legutóbb használt nonce változatlan marad, még akkor is, ha egy API kulcsot egy ideig nem használnak.

Fontos megjegyezni, hogy nem lehet visszaállítani egy adott API kulcs nonce-ját. Abban az esetben, ha egy nonce érték érvénytelenné válik (például véletlenül egy távoli jövőbeli UNIX timestamp-et használva), a megoldás az lenne, hogy törölje az érintett API kulcsot, és generáljon egy új API kulcsot, amely automatikusan egy új, 0 (nulla) kezdő nonce értékkel rendelkezne.

További segítségre van szükséged?