Amber avatar
Coin98 Insights
Nơi chia sẻ tất cả những kiến thức Crypto từ cơ bản đến nâng cao, kinh nghiệm đầu tư Bitcoin và các hình thức đầu tư tiền điện tử khác.

Nonce là gì? Tầm quan trọng của Nonce trong blockchain

Nonce là một thành phần đóng vai trò rất quan trọng trong mạng blockchain sử dụng thuật toán Proof-of-Work (PoW), điển hình là Bitcoin. Vậy Nonce là gì trong blockchain? Nonce hoạt động như thế nào và tại sao nó lại quan trọng?
Amber avatar
Vy Bùi
11 min read
Published Feb 06 2024
Updated Mar 04 2024
Amber media

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:

Đảm bảo tính duy nhất và không thể dự đoán được của mỗi khối được thêm vào blockchain.
Đảm bảo tính an toàn và bảo mật cho blockchain.
Bảo vệ blockchain khỏi các cuộc tấn công 51% hay double spending...
advertising
nonce là gì
Nonce là chuỗi số ngẫu nhiên sử dụng một lần để khai thác khối mới trong blockchain.

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:

Previous Hash: Mã hàm băm (hay block header) của khối trước đó.
Timestamp: Thời gian khởi tạo khối.
Nonce: Mỗi khối (block) trong một blockchain sẽ có một số nonce riêng biệt. Số nonce này được tính toán trong quá trình khai thác (đào) khối và giúp tạo ra giá trị hash duy nhất cho khối.
Merkle Root: Giá trị hash cuối cùng của quá trình ghép cặp và hashing các giao dịch trong Merkle Tree.

*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
Các thành phần trong một block của blockchain.

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.

Cụ thể hơn, nếu điều kiện đề ra là giá trị băm phải bắt đầu với 4 chữ số 0, thì một giá trị băm hợp lệ có thể là "0000abcd1234...", nhưng "1234abcd..." sẽ không hợp lệ vì nó không bắt đầu với 4 chữ số 0.
Các điều kiện này sẽ thay đổi theo thời gian để điều chỉnh độ khó của việc đào, tùy thuộc vào tổng sức mạnh tính toán của mạng (hay số lượng thợ đào).

Đ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
Thợ đào sử dụng phương pháp thử và sai để tìm ra số nonce phù hợp.

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
Nonce đóng vai trò quan trọng việc đảm bảo bảo mật của blockchain.

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à:

Khi càng nhiều thợ đào tham gia mạng lưới, tổng sức mạnh tính toán của mạng sẽ tăng theo. Khi đó, độ khó cũng sẽ tăng lên, đòi hỏi nhiều sức mạnh hơn để tìm ra nonce phù hợp.
Ngược lại, khi số lượng thợ đào hoặc khả năng xử lý của mạng giảm xuống, độ khó cũng giảm dần, giúp việc khai thác khối trở nên dễ dàng hơn.

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
Ví dụ về một dàn máy đào coin với phần cứng phức tạp.

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.

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.

Nonce là một chuỗi chữ số 32 bit mà thợ đào cần đoán chính xác để tạo ra hash hợp lệ cho khối và thêm khối mới vào blockchain, giúp đảm bảo rằng mỗi khối đều có một hash duy nhất.
Hash là một hàm toán học, dựa trên giá trị đầu vào là các dữ liệu có kích thước khác nhau (bao gồm cả nonce), để tạo ra giá trị đầu ra có kích thước cố định nhất định (tùy thuộc vào yêu cầu và điều kiện của mạng).

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:

Số lượng đồng BTC mới được tạo ra trong phần thường khối là khoảng 6.3 BTC/khối kể từ tháng 06/2021, và nó sẽ giảm một nửa sau các sự kiện Bitcoin halving (mỗi 210,000 khối mới được tạo ra, hoặc khoảng bốn năm một lần), với đợt tiếp theo vào tháng 04/2024.
Lượng phí giao dịch trong mỗi khối sẽ thay đổi tùy thuộc vào khối lượng giao dịch và mức phí giao dịch trong khối đó. Theo Dune (tại đây), vào thời điểm tháng 03/2023, khối lượng giao dịch trên BTC rơi vào khoảng 300,000/ngày, tương đương với phí giao dịch là 23 BTC/ngày.
Giá coin là giá trị ảnh hưởng trực tiếp đến lợi nhuận của thợ đào. Tại thời điểm viết bài (ngày 04/02/2024), giá BTC đang ở mức 43,068 USD. Ngày 10/11/2021, giá BTC đã đạt mức cao nhất (ATH) là 69,045 USD. Tuy nhiên, cũng có những thời điểm giá BTC đã giảm mạnh về mức 16,700 USD.

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.