Що таке нонс?

Останнє оновлення: 31 бер. 2025 р.

Вступ

Нонс — це число, яке однозначно ідентифікує кожен виклик до приватних кінцевих точок REST API. Нонс потрібен для всіх автентифікованих викликів до Spot REST API, включаючи кінцеві точки керування обліковим записом (такі як Balance, QueryOrders, QueryLedgers, тощо), кінцеві точки поповнення/заробітку (DepositAddresses, DepositStatus, тощо), та торгові кінцеві точки (AddOrderCancelOrder, тощо).

Для Futures REST authentication, значення нонсу не потрібне.

Реалізація

Нонс реалізований як лічильник, який має бути унікальним і збільшуватися з кожним викликом до API. Наприклад, якщо припустити початкове значення нонсу 0, наступні дійсні значення нонсу будуть 1, 2, 3, 4 і так далі.

Хоча простий лічильник, як зазначено вище, забезпечив би дійсний нонс, більш ефективним методом генерації дійсних значень нонсу є використання мітки часу UNIX у мілісекундах (кількість мілісекунд з 1 січня 1970 року о 00:00:00 UTC). Використання мітки часу з роздільною здатністю в мілісекундах або вище для нонсу гарантує виконання всіх вимог до дійсного нонсу (унікальність і постійне збільшення), а також надає достатні значення для трейдерів, які здійснюють швидкі послідовні виклики API (маркет-мейкери, високочастотні торгові боти тощо).

Приклад коду

Нижче наведено кілька прикладів того, як генерувати дійсні значення нонсу з роздільною здатністю в мілісекундах у різних мовах програмування:

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 та нонси

Кожен ключ API має свій окремий нонс, і значення нонсу є постійним, що означає, що останній використаний нонс залишиться незмінним, навіть якщо ключ API не використовується протягом деякого часу.

Зверніть увагу, що неможливо скинути нонс для певного ключа API. У випадку, якщо значення нонсу стає недійсним (наприклад, через випадкове використання мітки часу UNIX далеко в майбутньому), рішенням буде видалити відповідний ключ API та згенерувати новий ключ API, який автоматично матиме нове початкове значення нонсу 0 (нуль).

Потрібна додаткова допомога?