Nonce là gì?
Nonce có nghĩa tiếng việt là “số chỉ được sử dụng một lần”. Nonce là một số được thêm vào một khối băm (hay còn gọi là hàm băm) khi băm lại Nonce sẽ đáp ứng được mức độ khó. Hiện tại Nonce đang là con số được các công cụ của Blockchain theo dõi.
Nonce là phần trung tâm của PoW . Nonce là một trường 32 bit (4 byte), được điều chỉnh bởi các thợ đào, để nó trở thành một số hợp lệ được sử dụng để băm giá trị của khối.

Độ khó của việc tìm Nonce
Việc thêm các giao dịch vào chuỗi khối đòi hỏi một năng lượng xử lí máy tính đáng kể. Các cá nhân và công ty xử lí các khối được gọi là các thợ đào. Các thợ đào chỉ được phần thưởng nếu họ là người đầu tiên tạo ra hàm băm đáp ứng một nhóm yêu cầu nhất định, được gọi là hàm băm mục tiêu.
Quá trình dự đoán hàm băm bắt đầu trong tiêu đề khối. Nó chứa số phiên bản khối, dấu thời gian (timestamp), hàm băm được sử dụng trong khối trước đó, hàm băm của gốc Merkle, số được sử dụng một lần và băm mục tiêu.
Nếu hàm băm đáp ứng các yêu cầu được đặt ra trước đó trong mục tiêu thì khối được thêm vào chuỗi khối. Thông qua các giải pháp để đoán số được sử dụng một lần được gọi là bằng chứng công việc và thợ đào nào tìm thấy được giá trị băm đầu tiên sẽ được trao phần thưởng khối và trả bằng tiền mã hóa.
Việc xác định chuỗi nào được sử dụng làm số được sử dụng một lần đòi hỏi thợ đào phải thử nghiệm rất nhiều lần và vượt qua khá nhiều lỗi sai vì nó là một chuỗi ngẫu nhiên. Một thợ đào phải dự đoán số được sử dụng một lần, nối nó vào hàm băm của tiêu đề hiện tại, thử đi thử lại giá trị và so sánh giá trị này với hàm băm mục tiêu. Nếu giá trị băm cho ra kết quả đáp ứng các yêu cầu có nghĩa là thợ đào đã tạo ra một giải pháp và nhận được phần thưởng.
Rất khó để một thợ đào dự đoán thành công số được sử dụng một lần ngay trong lần thử nghiệm đầu tiên hay các thợ đào phải thử nghiệm các chuỗi số rất nhiều lần. Độ khó càng lớn (có một thước đo về độ khó để tạo ra một hàm băm nhỏ hơn mục tiêu) thì càng mất nhiều thời gian để tạo ra một giải pháp.
Độ khó của khối là giống nhau trên toàn bộ mạng, có nghĩa là tất cả các thợ đào có cùng một cơ hội như nhau để tìm ra hàm băm chính xác. Các mạng tiền mã hóa thường thiết lập một số khối mục tiêu mà họ muốn xử lí trong một khoảng thời gian cụ thể và định kì điều chỉnh độ khó để đảm bảo rằng mục tiêu này được đáp ứng. Nếu số lượng khối được xử lí không đáp ứng mục tiêu này thì độ khó sẽ giảm, với việc giảm độ khó được đo bằng lượng thời gian vượt quá giới hạn thời gian xử lí.
Ứng dụng của nonce
Giá trị nonce có thể được sử dụng cho nhiều ứng dụng bao gồm:
- Xác thực. Nonce được sử dụng bởi các giao thức xác thực để đảm bảo rằng các liên lạc cũ không thể được xử lý lại.
- Băm. Hệ thống bằng chứng về công việc sử dụng các giá trị nonce để thay đổi đầu vào cho một hàm băm mật mã . Điều này giúp đáp ứng các điều kiện tùy ý và cung cấp một độ khó mong muốn.
- Khởi tạo. Vectơ khởi tạo là một nonce được sử dụng để mã hóa dữ liệu . Nó chỉ được sử dụng một lần trong bất kỳ phiên nào và ngăn chặn sự lặp lại của các chuỗi trong văn bản được mã hóa. Xác định các lần lặp lại có thể giúp kẻ tấn công phá vỡ mật mã .
- Quản lý danh tính. Khôi phục tài khoản, xác thực hai yếu tố hoặc đăng nhập một lần là các tính năng quản lý danh tính có thể sử dụng giá trị nonce.
- Chữ ký điện tử. Các giá trị nonce bí mật đôi khi được sử dụng bởi các công cụ chữ ký điện tử để tạo, so sánh và xác minh chữ ký.
- Tiền điện tử. Trong một số loại tiền điện tử nhất định, nonce được sử dụng để tạo ra một hàm băm mật mã kết nối với một chuỗi khối . Trong khai thác Bitcoin , một nonce vàng đề cập đến giá trị băm thấp hơn độ khó mục tiêu.
- Mật mã không đối xứng. Trong các trường hợp cụ thể của mật mã khóa công khai, chẳng hạn như trong bắt tay Lớp cổng bảo mật / Lớp bảo mật lớp truyền tải , hai giá trị nonce duy nhất được trao đổi. Một giá trị được cung cấp bởi máy khách trong khi giá trị kia được cung cấp bởi máy chủ. Đây được gọi là mật mã không đối xứng và nó bảo vệ mỗi kết nối khỏi các cuộc tấn công hoặc can thiệp.
Sử dụng nonce trong tiền điện tử
Tiền điện tử sử dụng khai thác blockchain, một quy trình ngang hàng để duy trì tính bảo mật và tính xác thực của sổ cái blockchain. Là một phần của quy trình, các công cụ khai thác blockchain ghi lại các giao dịch tiền kỹ thuật số và tạo Bitcoin mới hoặc các loại tiền điện tử khác. Các thợ mỏ xác thực độ tin cậy của các giao dịch và thêm dữ liệu giao dịch mới vào sổ cái công khai toàn cầu của các giao dịch trước đây, tạo ra chuỗi khối.
Các thợ mỏ sử dụng phần mềm và thuật toán phức tạp để giải quyết các vấn đề phức tạp. Người khai thác đầu tiên giải quyết một vấn đề nhận được một khối tiền điện tử mới mà họ đang làm việc. Nonce là số tùy ý mà người khai thác phải nghĩ ra – về cơ bản là đoán – để tạo ra một số nhỏ hơn hoặc bằng hàm băm mục tiêu.
Việc giải cho nonce yêu cầu thử và sai vì nó là một chuỗi ngẫu nhiên. Những người khai thác sẽ đoán số nonce, thêm nó vào mã băm của tiêu đề khối hiện tại, trộn lại giá trị và xem liệu nó có nhỏ hơn hoặc bằng giá trị của hàm băm mục tiêu hay không.