Nonce là gì?

Cập nhật lần cuối: 31 thg 3, 2025

Giới thiệu

Nonce là một số nhận dạng duy nhất cho mỗi lệnh gọi đến các điểm cuối riêng tư của REST API. Nonce là bắt buộc đối với tất cả các lệnh gọi đã xác thực đến Spot REST API, bao gồm các điểm cuối quản lý tài khoản (chẳng hạn như Số dư, Truy vấn lệnh, Truy vấn sổ cái, v.v.), các điểm cuối nạp/kiếm tiền (Địa chỉ nạp tiền, Trạng thái nạp tiền, v.v.) và các điểm cuối giao dịch (Thêm lệnhHủy lệnh, v.v.).

Đối với xác thực Futures REST, giá trị nonce không bắt buộc.

Triển khai

Nonce được triển khai dưới dạng một bộ đếm phải là duy nhất và phải tăng lên theo mỗi lệnh gọi đến API. Ví dụ, giả sử giá trị nonce ban đầu là 0, các giá trị nonce hợp lệ tiếp theo sẽ là 1, 2, 3, 4, v.v.

Mặc dù một bộ đếm đơn giản như trên sẽ cung cấp một nonce hợp lệ, nhưng một phương pháp hiệu quả hơn để tạo các giá trị nonce hợp lệ là sử dụng dấu thời gian UNIX tính bằng mili giây (số mili giây kể từ ngày 1 tháng 1 năm 1970 lúc 00:00:00 UTC). Sử dụng dấu thời gian có độ phân giải mili giây hoặc cao hơn cho nonce đảm bảo rằng tất cả các yêu cầu của một nonce hợp lệ đều được đáp ứng (tính duy nhất và luôn tăng), đồng thời cung cấp đủ giá trị cho các nhà giao dịch thực hiện các lệnh gọi API liên tiếp nhanh chóng (nhà tạo lập thị trường, bot giao dịch tần số cao, v.v.).

Mã ví dụ

Sau đây là một số ví dụ về cách tạo các giá trị nonce có độ phân giải mili giây hợp lệ trong các ngôn ngữ lập trình khác nhau:

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);

Khóa API và nonce

Mỗi khóa API có một nonce riêng biệt và giá trị nonce là liên tục, có nghĩa là nonce được sử dụng gần đây nhất sẽ không thay đổi ngay cả khi khóa API không được sử dụng trong một thời gian.

Lưu ý rằng không thể đặt lại nonce cho một khóa API cụ thể. Trong trường hợp giá trị nonce trở nên không hợp lệ (chẳng hạn như vô tình sử dụng dấu thời gian UNIX quá xa trong tương lai), giải pháp sẽ là xóa khóa API bị ảnh hưởng và tạo một khóa API mới, khóa này sẽ tự động có giá trị nonce bắt đầu mới là 0 (không).

Bạn cần thêm trợ giúp?