Hvad er en nonce?

Sidst opdateret: 31. mar. 2025

Introduktion

En nonce er et tal, der entydigt identificerer hvert kald til REST API's private endepunkter. En nonce er påkrævet for alle godkendte kald til Spot REST API'en, herunder endepunkterne for kontostyring (såsom Balance, QueryOrders, QueryLedgers osv.), endepunkterne for finansiering/indtjening (DepositAddresses, DepositStatus osv.) og handelsendepunkterne (AddOrder, CancelOrder osv.).

For Futures REST authentication er en nonce-værdi ikke påkrævet.

Implementering

En nonce er implementeret som en tæller, der skal være unik og skal stige med hvert kald til API'en. Hvis man f.eks. antager en start-nonce-værdi på 0, vil efterfølgende gyldige nonce-værdier være 1, 2, 3, 4 osv.

Selvom en simpel tæller som den ovenfor ville give en gyldig nonce, er en mere effektiv metode til at generere gyldige nonce-værdier at bruge et UNIX timestamp i millisekunder (antallet af millisekunder siden den 1. januar 1970 kl. 00:00:00 UTC). Brug af et timestamp med millisekund- eller højere opløsning for nonce garanterer, at alle krav til en gyldig nonce er opfyldt (unikhed og altid stigende), og giver tilstrækkelige værdier til tradere, der foretager hurtige, successive API-kald (market makers, højfrekvente handelsbots osv.).

Eksempelkode

Følgende er nogle eksempler på, hvordan man genererer gyldige nonce-værdier med millisekundopløsning i forskellige programmeringssprog:

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-nøgler og nonces

Hver API-nøgle har sin egen separate nonce, og nonce-værdien er persistent, hvilket betyder, at den senest anvendte nonce forbliver uændret, selvom en API-nøgle ikke bruges i et stykke tid.

Bemærk, at det ikke er muligt at nulstille nonce for en specifik API-nøgle. I tilfælde af at en nonce-værdi bliver ugyldig (f.eks. ved et uheld at bruge et UNIX timestamp langt ude i fremtiden), ville løsningen være at slette den berørte API-nøgle og generere en ny API-nøgle, som automatisk ville have en ny start-nonce-værdi på 0 (nul).

Har du brug for mere hjælp?