Nonce là gì? Tầm quan trọng của Nonce trong blockchain
![Amber avatar](/_next/image?url=https%3A%2F%2Ffiles.amberblocks.com%2Fuserdata%2Fusrobfah3a1xgcy0gtohubodbhftwcoh%2Fprofile-pictures%2Ffvvn7g2xeb62nvf6bqt8llh5w35fmado%2Fphoto_2020-12-02_17-05-46.jpg&w=3840&q=20)
![Amber media](/_next/image?url=https%3A%2F%2Ffiles.amberblocks.com%2Fthumbnail%2Fchnbzaa92ook5tnj%2Fposts%2Fpwuoiwn9qlo8wcij%2Ffhvjw21yutl81wuw90fv4k9smneen1dc%2Fnonce-la-gi.jpg&w=3840&q=100)
Nonce là gì?
Nonce (viết tắt của number used once) là những chuỗi số 32 bit ngẫu nhiên được sử dụng trong quá trình khai thác khối (block) mới trong blockchain Proof-of-Work (PoW). Mỗi block có một giá trị nonce khác nhau, và các thợ đào (miner) phải tìm ra số nonce hợp lệ để tạo một khối mới, đổi lại họ sẽ nhận được phần thưởng khối (block reward) dưới dạng native token của blockchain.
Việc tìm được giá trị nonce yêu cầu thợ đào phải đầu tư chi phí phần cứng tương đối cao với sức mạnh tính toán đáng kể. Đồng thời, mỗi số nonce chỉ có thể được sử dụng một lần và cố định cho một khối cụ thể. Điều này giúp:
![nonce là gì](/_next/image?url=https%3A%2F%2Ffiles.amberblocks.com%2Fmedia%2Fchnbzaa92ook5tnj%2Fposts%2Fpwuoiwn9qlo8wcij%2Ffknorb9se2e207pxbco4adrg0mqcmion%2Fnonce-la-gi-trong-blockchain.jpg&w=3840&q=100)
Cách hoạt động của Nonce trong blockchain
Trước tiên, để hiểu cách hoạt động của nonce trong blockchain, cần hiểu các thành phần của một block trong blockchain bao gồm những gì.
Blockchain bao gồm các “block” để tạo thành một “chain”. Mỗi block sẽ có hai thành chính là block header và toàn bộ dữ liệu về các giao dịch trong block. Trong đó, block header (tiêu đề khối) là một mã hàm băm (hash*) chứa các thông tin để xác định khối cụ thể trong blockchain, bao gồm:
*Hash (hàm băm) là một chuỗi ký tự được mã hoá bằng công nghệ hàm băm mật mã học (cryptographic hash function) từ các thông tin đầu vào đã được xác định sẵn.
![cấu trúc blockchain](/_next/image?url=https%3A%2F%2Ffiles.amberblocks.com%2Fmedia%2Fchnbzaa92ook5tnj%2Fposts%2Fpwuoiwn9qlo8wcij%2Ff3lqtwbrvzo0z06gfs6ligtx1q7ziclk%2Fcau-truc-blockchain.png&w=3840&q=100)
Như vậy, khi bắt đầu khai thác (đào) một khối, thợ đào sẽ sử dụng thuật toán băm (ví dụ như SHA-256 đối với blockchain Bitcoin) để chạy một hàm băm (hash function) trên các dữ liệu của khối đó.
Tuy nhiên, ngoại trừ nonce là số cần tìm thì các dữ liệu còn lại đều đã có sẵn. Để ước tính số nonce cần tìm, các thợ đào sẽ sử dụng phương pháp thử và sai thông qua bộ đếm, bắt đầu từ một giá trị nhất định nào đó (thường là 0).
Đầu tiên, thợ đào sẽ liên tục thử và thay đổi giá trị nonce (nếu sai) để chạy lại hàm băm cho đến khi họ tìm ra một giá trị băm đáp ứng điều kiện đề ra của mạng, ví dụ như giá trị băm này phải bắt đầu với một số lượng chữ số 0 nhất định.
Điều này có nghĩa là thợ đào có thể phải thử hàng triệu hoặc thậm chí hàng tỷ lần để tìm ra số nonce phù hợp.
![cách hoạt động thợ đào nonce](/_next/image?url=https%3A%2F%2Ffiles.amberblocks.com%2Fmedia%2Fchnbzaa92ook5tnj%2Fposts%2Fpwuoiwn9qlo8wcij%2Ffskmlmktuz1xo1hyeq10kh9cggxku1to%2Fcach-hoat-dong-tho-dao-nonce.jpg&w=3840&q=100)
Sau đó, khi thợ tìm ra một số nonce đúng và chạy được hàm băm hợp lệ, khối đó sẽ được gửi đến các node khác trong mạng để kiểm tra. Nếu giá trị băm phù hợp và tất cả các giao dịch trong khối được xác nhận là hợp lệ, khối đó sẽ được thêm vào blockchain.
Lúc này, thợ đào sẽ nhận được phần thưởng khối (block reward), bao gồm một số lượng native token nhất định của blockchain và phí giao dịch từ các giao dịch bên trong khối vừa được khai thác.
Tầm quan trọng của Nonce trong blockchain
Trong quá trình vận hành mạng blockchain PoW (điển hình là Bitcoin), các thợ đào sẽ không thể tạo khối mới, xác thực và xử lý giao dịch nếu không tìm ra số nonce hợp lệ. Như vậy, có thể thấy nonce đóng vai trò rất quan trọng việc đảm bảo sự vận hành của toàn bộ blockchain.
Nonce cũng là bằng chứng cho thấy các thợ đào đã phải trải qua một quy trình với khối lượng công việc nhất định để “đào” ra được một khối. Một mặt, quá trình tìm nonce phù hợp tạo cơ sở cho quá trình đào coin trong blockchain sử dụng thuật toán “bằng chứng công việc” (Proof-of-Work).
Mặt khác, nonce còn giúp đảm bảo tính bảo mật, toàn vẹn và bất biến của mạng blockchain vì việc thay đổi dữ liệu trong khối có sẵn sẽ yêu cầu phải tính toán lại nonce. Đây là một công việc yêu cầu sức mạnh tính toán cực lớn với chi phí phần cứng đáng kể, và nó hoàn toàn không khả thi về mặt thực tế.
![tầm quan trọng nonce blockchain](/_next/image?url=https%3A%2F%2Ffiles.amberblocks.com%2Fmedia%2Fchnbzaa92ook5tnj%2Fposts%2Fpwuoiwn9qlo8wcij%2Ffoptadz6u73mai1ferthzqx7kabwtrlx%2Ftam-quan-trong-nonce-blockchain.jpg&w=3840&q=100)
Nonce giúp bảo vệ blockchain khỏi các vấn đề như double spending (rủi ro chi tiêu hai lần), tấn công 51%, spam mạng, tấn công từ chối dịch vụ (DDoS)... Bởi việc gửi các dữ liệu giả mạo lên block và xác thực chúng cũng yêu cầu kẻ tấn công phải trở thành thợ đào, đồng thời phải đầu tư chi phí với sức mạnh tính toán đáng kể để tìm ra nonce hợp lệ. Điều này tạo ra một rào cản tự nhiên chống lại việc lạm dụng hay tấn công hệ thống.
Độ khó tìm Nonce
Độ khó của việc tìm nonce sẽ được điều chỉnh một cách linh hoạt để duy trì tốc độ tạo khối ổn định trên mạng (ví dụ: trên mạng Bitcoin, cứ mỗi 10 phút thì sẽ có 1 khối được khai thác).
Độ khó tìm nonce sẽ điều chỉnh theo những thay đổi trong sức mạnh tính toán của mạng, để đảm bảo rằng các thợ đào sẽ đối mặt với những thách thức có độ khó tỷ lệ thuận với tổng sức mạnh tính toán trên mạng blockchain. Điều này có nghĩa là:
Tuy nhiên, việc giải quyết vấn đề về độ khó tăng lên, thợ đào có thể tăng sức mạnh tính toán thông qua việc nâng cấp tài nguyên máy tính (hay còn được gọi là dàn máy đào coin), với phần cứng mạnh mẽ hơn và phù hợp hơn.
Tài nguyên máy tính cao cấp hơn sẽ giúp thợ đào có thể giải các hàm băm nhanh hơn, và nhờ đó xác định số nonce hợp lệ của blockchain trước các thợ đào khác.
![máy đào tìm nonce](/_next/image?url=https%3A%2F%2Ffiles.amberblocks.com%2Fmedia%2Fchnbzaa92ook5tnj%2Fposts%2Fpwuoiwn9qlo8wcij%2Ffe40v3gngg781p4xihxw550c465keaoc%2Fmay-dao-tim-nonce.jpg&w=3840&q=100)
Bên cạnh đó, độ khó tìm nonce cũng có phần liên quan đến độ khó đào coin (mining difficulty), một chỉ số thể hiện mức độ phức tạp khi thợ đào giải một thuật toán, để khai thác một khối mới trên blockchain.
Tìm hiểu thêm: Độ khó đào coin có thể gây ảnh hưởng như thế nào?
Một số câu hỏi thường gặp về Nonce
Nonce và Hash khác nhau như thế nào?
Nonce và hash là hai khái niệm có mối liên quan rất chặt chẽ với blockchain Proof-of-Work.
Cả hai khái niệm này phối hợp với nhau để đảm bảo tính bảo mật tối đa cho thông tin được lưu trữ trên blockchain.
Thợ đào kiếm được bao nhiêu tiền từ việc tìm nonce và đào khối?
Bằng cách tìm ra số nonce hợp lệ và thành công đào một khối, thợ đào sẽ nhận được lợi nhuận theo công thức như sau:
(Phí giao dịch x Giá coin) + (Phần thưởng khối x Giá coin) - Chi phí
Trong phần này, chúng ta sẽ lấy Bitcoin làm ví dụ để dễ hình dung:
Ngoài ra, chi phí đào coin là một giá trị khó ước lượng, vì nó phụ thuộc nhiều vào chất lượng và khả năng xử lý của thiết bị phần cứng mà thợ đào đầu tư. Tuy nhiên, chi phí này thường tương đối lớn, khoảng vài nghìn USD, thậm chí vài chục nghìn USD.
Tìm hiểu thêm: Đào coin kiếm bao nhiêu tiền một tháng?