Τι είναι ένα nonce;

Τελευταία ενημέρωση: 31 Μαρτίου 2025

Εισαγωγή

Ένα nonce είναι ένας αριθμός που προσδιορίζει μοναδικά κάθε κλήση στα ιδιωτικά τελικά σημεία του REST API. Ένα nonce απαιτείται για όλες τις πιστοποιημένες κλήσεις στο Spot REST API, συμπεριλαμβανομένων των τελικών σημείων διαχείρισης λογαριασμού (όπως Balance, QueryOrders, QueryLedgers, κ.λπ.), των τελικών σημείων χρηματοδότησης/κερδών (DepositAddresses, DepositStatus, κ.λπ.) και των τελικών σημείων συναλλαγών (AddOrderCancelOrder, κ.λπ.).

Για την πιστοποίηση Futures REST, μια τιμή nonce δεν απαιτείται.

Υλοποίηση

Ένα nonce υλοποιείται ως ένας μετρητής που πρέπει να είναι μοναδικός και να αυξάνεται με κάθε κλήση στο API. Για παράδειγμα, υποθέτοντας μια αρχική τιμή nonce 0, οι επόμενες έγκυρες τιμές nonce θα ήταν 1, 2, 3, 4, κ.ο.κ.

Ενώ ένας απλός μετρητής όπως ο παραπάνω θα παρείχε ένα έγκυρο nonce, μια πιο αποτελεσματική μέθοδος δημιουργίας έγκυρων τιμών nonce είναι η χρήση μιας χρονικής σήμανσης UNIX σε χιλιοστά του δευτερολέπτου (ο αριθμός των χιλιοστών του δευτερολέπτου από την 1η Ιανουαρίου 1970 στις 00:00:00 UTC). Η χρήση μιας χρονικής σήμανσης σε χιλιοστά του δευτερολέπτου ή υψηλότερης ανάλυσης για το nonce εγγυάται ότι πληρούνται όλες οι απαιτήσεις ενός έγκυρου nonce (μοναδικότητα και συνεχής αύξηση) και παρέχει επαρκείς τιμές για τους traders που πραγματοποιούν γρήγορες διαδοχικές κλήσεις API (market makers, high frequency trading bots, κ.λπ.).

Παράδειγμα κώδικα

Ακολουθούν ορισμένα παραδείγματα για το πώς να δημιουργήσετε έγκυρες τιμές nonce σε ανάλυση χιλιοστών του δευτερολέπτου σε διαφορετικές γλώσσες προγραμματισμού:

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 και nonces

Κάθε κλειδί API έχει το δικό του ξεχωριστό nonce, και η τιμή του nonce είναι επίμονη, πράγμα που σημαίνει ότι το πιο πρόσφατα χρησιμοποιημένο nonce θα παραμείνει αμετάβλητο ακόμα και αν ένα κλειδί API δεν χρησιμοποιηθεί για κάποιο χρονικό διάστημα.

Σημειώστε ότι δεν είναι δυνατή η επαναφορά του nonce για ένα συγκεκριμένο κλειδί API. Σε περίπτωση που μια τιμή nonce καταστεί άκυρη (όπως η τυχαία χρήση μιας χρονικής σήμανσης UNIX πολύ στο μέλλον), η λύση θα ήταν να διαγράψετε το επηρεαζόμενο κλειδί API και να δημιουργήσετε ένα νέο κλειδί API, το οποίο θα έχει αυτόματα μια νέα αρχική τιμή nonce 0 (μηδέν).

Χρειάζεστε περισσότερη βοήθεια;