Thợ đào dùng nonce như thế nào?
Thợ đào tạo tiêu đề khối, đặt nonce thành 0 rồi băm nó. Nếu mã băm lớn hơn mục tiêu, họ đặt nonce thành 1 và thử lại, rồi đến 2, cứ thế tiếp tục. Tên này là viết tắt của “số chỉ dùng một lần”.
Không có nonce nào tốt hơn nonce nào. Không thể dự đoán mã băm, nên mỗi lần thử đều có cùng một cơ hội rất nhỏ để thành công. Đó là điều giúp việc đào công bằng: thử nhiều lần hơn mỗi giây thì có nhiều cơ hội hơn, và không có yếu tố nào khác giúp ích.
Điều gì xảy ra khi dùng hết nonce?
Bốn byte chỉ chứa được 4.294.967.296 giá trị. Máy hiện đại thử hết các giá trị đó trong chưa đến một phần nghìn giây. Vì vậy, thợ đào thay đổi một phần khác trong khối rồi bắt đầu lại từ đầu với nonce.
Vòng lặp của thợ đào
- 01
Thử mọi nonce
0, 1, 2 và tiếp tục đến 4.294.967.295. Đó là toàn bộ các giá trị mà 4 byte có thể chứa.
- 02
Cạn kiệt, nhanh chóng
Một máy 100 TH/s duy nhất hoàn thành hết tất cả trong khoảng 43 phần triệu giây.
- 03
Thay đổi extra nonce
Thợ đào chỉnh sửa một trường dự phòng trong chính giao dịch phần thưởng của mình (coinbase).
- 04
Merkle root mới
Giao dịch đó đã thay đổi, nên merkle root cũng thay đổi và mỗi nonce lại cho ra các hash hoàn toàn mới.
Thông thường, thợ đào dùng nonce phụ, một trường dự phòng trong giao dịch coinbase. Thay đổi nonce này sẽ làm thay đổi Merkle root, tạo ra một tập tiêu đề mới để thử. Thợ đào cũng có thể điều chỉnh nhẹ dấu thời gian và, trên nhiều máy hiện nay, thay đổi một vài bit trong trường phiên bản.
Nguồn
- Nonce · Bitcoin Wiki
- Thuật toán băm khối · Bitcoin Wiki
- Tài liệu tham khảo về chuỗi khối: tiêu đề, cây Merkle, mục tiêu · Tài liệu dành cho nhà phát triển Bitcoin
Số liệu trực tiếp trên trang này lấy từ API của CloudMineCrypto và dữ liệu công khai trên blockchain, được cập nhật thường xuyên và có ghi chú tại nơi hiển thị. Chỉ nhằm mục đích giáo dục, không phải lời khuyên tài chính.