Vad är en nonce?

Senast uppdaterad: 31 mars 2025

Introduktion

En nonce är ett nummer som unikt identifierar varje anrop till REST API:s privata slutpunkter. En nonce krävs för alla autentiserade anrop till Spot REST API, inklusive slutpunkterna för kontohantering (såsom Balance, QueryOrders, QueryLedgers, etc.), slutpunkterna för finansiering/intäkter (DepositAddresses, DepositStatus, etc.) och handelsslutpunkterna (AddOrder, CancelOrder, etc.).

För Futures REST authentication krävs inte ett nonce-värde.

Implementering

En nonce implementeras som en räknare som måste vara unik och måste öka för varje anrop till API:et. Om vi till exempel antar ett startvärde för nonce på 0, skulle efterföljande giltiga nonce-värden vara 1, 2, 3, 4 och så vidare.

Även om en enkel räknare som den ovanstående skulle ge en giltig nonce, är en mer effektiv metod för att generera giltiga nonce-värden att använda en UNIX-tidsstämpel i millisekunder (antalet millisekunder sedan den 1 januari 1970 kl. 00:00:00 UTC). Att använda en tidsstämpel med millisekund- eller högre upplösning för nonce garanterar att alla krav för en giltig nonce uppfylls (unikhet och ständigt ökande), och ger tillräckliga värden för handlare som gör snabba, successiva API-anrop (market makers, högfrekventa handelsrobotar, etc.).

Exempelkod

Följande är några exempel på hur man genererar giltiga nonce-värden med millisekundupplösning i olika 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-nycklar och nonces

Varje API-nyckel har sin egen separata nonce, och nonce-värdet är beständigt, vilket innebär att det senast använda nonce-värdet förblir oförändrat även om en API-nyckel inte används under en tid.

Observera att det inte är möjligt att återställa nonce för en specifik API-nyckel. Om ett nonce-värde blir ogiltigt (till exempel genom att av misstag använda en UNIX-tidsstämpel långt in i framtiden), skulle lösningen vara att radera den berörda API-nyckeln och generera en ny API-nyckel, som automatiskt skulle ha ett nytt startvärde för nonce på 0 (noll).

Behöver du mer hjälp?