Apakah itu nonce?

Terakhir dikemas kini: 31 Mac 2025

Pengenalan

Nonce ialah nombor yang mengenal pasti secara unik setiap panggilan ke titik akhir peribadi REST API. Nonce diperlukan untuk semua panggilan yang disahkan ke Spot REST API, termasuk titik akhir pengurusan akaun (seperti Balance, QueryOrders, QueryLedgers, dsb.), titik akhir pendanaan/perolehan (DepositAddresses, DepositStatus, dsb.), dan titik akhir dagangan (AddOrderCancelOrder, dsb.).

Untuk pengesahan Futures REST, nilai nonce tidak diperlukan.

Pelaksanaan

Nonce dilaksanakan sebagai pembilang yang mesti unik dan mesti meningkat dengan setiap panggilan ke API. Contohnya, dengan mengandaikan nilai nonce permulaan 0, nilai nonce sah yang berikutnya ialah 1, 2, 3, 4, dan seterusnya.

Walaupun pembilang mudah seperti di atas akan memberikan nonce yang sah, kaedah yang lebih berkesan untuk menjana nilai nonce yang sah adalah dengan menggunakan UNIX timestamp dalam milisaat (bilangan milisaat sejak 1 Januari 1970 pada 00:00:00 UTC). Menggunakan cap masa resolusi milisaat atau lebih tinggi untuk nonce menjamin bahawa semua keperluan nonce yang sah dipenuhi (keunikan dan sentiasa meningkat), dan menyediakan nilai yang mencukupi untuk pedagang yang membuat panggilan API berturut-turut dengan pantas (pembuat pasaran, bot dagangan frekuensi tinggi, dsb.).

Contoh kod

Berikut ialah beberapa contoh cara menjana nilai nonce resolusi milisaat yang sah dalam bahasa pengaturcaraan yang berbeza:

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 key dan nonce

Setiap API key mempunyai nonce berasingan sendiri, dan nilai nonce adalah berterusan, yang bermaksud nonce yang paling baru digunakan akan kekal tidak berubah walaupun API key tidak digunakan untuk beberapa waktu.

Ambil perhatian bahawa tidak mungkin untuk menetapkan semula nonce untuk API key tertentu. Sekiranya nilai nonce menjadi tidak sah (seperti tersilap menggunakan UNIX timestamp jauh ke masa hadapan), penyelesaiannya adalah dengan memadamkan API key yang terjejas dan menjana API key baharu, yang secara automatik akan mempunyai nilai nonce permulaan baharu 0 (sifar).

Perlu bantuan lebih lanjut?