Hva er en nonce?

Sist oppdatert: 31. mars 2025

Introduksjon

En nonce er et tall som unikt identifiserer hvert kall til de private endepunktene i REST API. En nonce er påkrevd for alle autentiserte kall til Spot REST API, inkludert endepunktene for kontoadministrasjon (som Balance, QueryOrders, QueryLedgers, osv.), endepunktene for finansiering/inntekt (DepositAddresses, DepositStatus, osv.), og handelsendepunktene (AddOrder, CancelOrder, osv.).

For Futures REST authentication er en nonce-verdi ikke påkrevd.

Implementering

En nonce er implementert som en teller som må være unik og må øke for hvert kall til API-en. For eksempel, hvis man antar en startverdi for nonce på 0, vil påfølgende gyldige nonce-verdier være 1, 2, 3, 4, og så videre.

Mens en enkel teller som den ovenfor ville gi en gyldig nonce, er en mer effektiv metode for å generere gyldige nonce-verdier å bruke et UNIX timestamp i millisekunder (antall millisekunder siden 1. januar 1970 kl. 00:00:00 UTC). Bruk av et tidsstempel med millisekund- eller høyere oppløsning for nonce garanterer at alle kravene til en gyldig nonce er oppfylt (unikhet og alltid økende), og gir tilstrekkelige verdier for tradere som foretar raske, suksessive API-kall (market makers, high frequency trading bots, osv.).

Eksempelkode

Følgende er noen eksempler på hvordan man genererer gyldige nonce-verdier med millisekundoppløsning i forskjellige programmeringsspråk:

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økler og nonces

Hver API-nøkkel har sin egen separate nonce, og nonce-verdien er vedvarende, noe som betyr at den sist brukte nonce vil forbli uendret selv om en API-nøkkel ikke brukes på en stund.

Merk at det ikke er mulig å tilbakestille nonce for en spesifikk API-nøkkel. I tilfelle en nonce-verdi blir ugyldig (for eksempel ved et uhell å bruke et UNIX timestamp langt inn i fremtiden), vil løsningen være å slette den berørte API-nøkkelen og generere en ny API-nøkkel, som automatisk vil ha en ny startverdi for nonce på 0 (null).

Trenger du mer hjelp?