TotalHash
VI
Mở trong Telegram

Nonce là gì trong blockchain?

5 phút đọc

Nonce là gì trong blockchain? Nonce (viết tắt của «number used once») là một con số chỉ dùng một lần. Trong Bitcoin, nonce là con số mà thợ đào thay đổi liên tục để tìm ra một hash hợp lệ cho khối mới. Trong Ethereum, nonce lại có nghĩa khác: số thứ tự giao dịch của một tài khoản. Bài viết giải thích nonce bằng ví dụ dễ hiểu với SHA-256, vai trò của nonce trong cuộc đua tìm hash, sự khác biệt với nonce trong Ethereum, chuyện gì xảy ra khi «hết nonce», và bạn có thể tự thử tìm nonce trên máy đào mô phỏng ngay trong trang.

Máy đào mô phỏng bên dưới chạy trong trình duyệt để minh họa, không tạo ra Bitcoin.

Nonce là gì: con số chỉ dùng một lần

Trong mật mã học, nonce là giá trị được tạo ra để dùng đúng một lần, giúp mỗi thao tác là duy nhất và chống việc lặp lại. Trong blockchain, khái niệm này xuất hiện ở hai chỗ quan trọng: trong tiêu đề khối của các chuỗi bằng chứng công việc như Bitcoin, và trong giao dịch của các chuỗi dùng mô hình tài khoản như Ethereum.

Nonce trong khối Bitcoin và cuộc đua tìm hash

Mỗi khối Bitcoin có một tiêu đề dài 80 byte, gồm phiên bản, hash của khối trước, gốc Merkle của các giao dịch, dấu thời gian, độ khó và một trường nonce dài 32 bit. Thợ đào băm tiêu đề này bằng SHA-256 hai lần và kiểm tra kết quả có nhỏ hơn mục tiêu hay không. Nếu không, họ tăng nonce lên một và thử lại. Không có cách đoán trước nonce đúng; chỉ có thử thật nhiều. Số lần thử mỗi giây chính là hashrate: hashrate là gì. Hash là gì: hash là gì.

Ví dụ: thay nonce, hash thay đổi thế nào

Hãy tưởng tượng dữ liệu khối là chữ «khoi-moi» và ta ghép thêm nonce vào cuối. Với nonce bằng 0, 1, 2 và tiếp tục, ta được các hash hoàn toàn khác nhau, không có quy luật. Chỉ cần thay một chữ số, toàn bộ hash thay đổi. Giả sử yêu cầu là hash phải bắt đầu bằng bốn số 0: trung bình cần thử khoảng 65 nghìn nonce mới gặp một kết quả phù hợp. Mỗi số 0 thêm vào làm số lần thử trung bình tăng gấp 16 lần.

Yêu cầu số 0 ở đầu (hệ 16)Số lần thử trung bình
116
2256
465.536
6khoảng 16,8 triệu

Nonce trong giao dịch Ethereum khác gì

Trong Ethereum, mỗi tài khoản có một nonce là số giao dịch đã gửi. Giao dịch đầu tiên có nonce 0, giao dịch tiếp theo có nonce 1, và cứ thế. Nhờ vậy mạng lưới biết thứ tự giao dịch và ngăn một giao dịch bị phát lại hai lần. Nếu một giao dịch bị kẹt vì phí thấp, các giao dịch sau với nonce lớn hơn cũng phải chờ; người dùng có thể gửi giao dịch mới cùng nonce với phí cao hơn để thay thế. Nonce ở đây không liên quan gì đến việc đào.

Khi hết nonce: extra nonce và dấu thời gian

Trường nonce 32 bit chỉ có khoảng 4,3 tỷ giá trị. Một máy ASIC hiện đại thử hết số đó trong chưa tới một phần nghìn giây. Khi đã thử hết mà chưa tìm được, thợ đào thay đổi phần khác của khối: «extra nonce» nằm trong giao dịch coinbase, làm thay đổi gốc Merkle, hoặc điều chỉnh nhẹ dấu thời gian. Sau đó bắt đầu lại vòng nonce mới với một tiêu đề khác. Đây là lý do việc đào không bao giờ «bị kẹt».

Thử tìm nonce trên máy đào mô phỏng

Máy đào bên dưới thử từng nonce trong trình duyệt của bạn, hiển thị tốc độ băm và nonce tìm được. Tăng độ khó để thấy thời gian tìm kiếm tăng nhanh như thế nào. Muốn thử nhiều công cụ hơn: đào coin online. Kiến thức nền về đào và blockchain: đào coin và blockchain.

Khối5.907.956

tạm dừng
Số lần thử
0 / ≈65.536
Tốc độ
0 H/s
Mục tiêu
4 số 0 ở đầu
Trình duyệt của bạn tính SHA-256

Đào coin như một trò chơi

TotalHash là game đào coin miễn phí trên Telegram, dùng phép tính SHA-256 thật làm cơ chế chơi. Nhiệm vụ gửi một lượng nhỏ USD₮ và GRAM vào ví TON. Không hứa hẹn thu nhập.

Game miễn phí trên Telegram.

Mở TotalHash

Câu hỏi thường gặp

Nonce là gì?

Con số chỉ dùng một lần; trong Bitcoin là số thợ đào thay đổi để tìm hash hợp lệ.

Số nonce trong khối Bitcoin dài bao nhiêu?

32 bit, khoảng 4,3 tỷ giá trị.

Nonce trong Ethereum là gì?

Số thứ tự giao dịch của một tài khoản, chống phát lại giao dịch.

Hết nonce thì thợ đào làm gì?

Thay extra nonce hoặc dấu thời gian rồi thử lại.