Proof-Of-Work Concensus Demo
Proof of Work (PoW) là một cơ chế đồng thuận phổ biến, được sử dụng trong nhiều blockchain, điển hình là Bitcoin. Mục tiêu của PoW là đảm bảo tất cả các bên tham gia trong mạng lưới đều đồng bộ về dữ liệu của blockchain và ngăn chặn các hành vi gian lận.
Thông thường tất cả các giao dịch xảy ra trên mạng blockchain sẽ được đưa vào transaction pool trong trạng thái chưa chứng thực và tạm thời nằm trong transaction pool. Sau đó, các giao dịch này sẽ lần lượt được các máy đào (node) lựa chọn ngẫu nhiên (hoặc có chủ ý) để đưa vào một block, nếu block này được “đóng gói“ thành công (nghĩa là được chấp thuận bởi mạng blockchain) thì các giao dịch ấy mới được coi là hợp lệ và có giá trị. Quá trình này sẽ tiếp diễn liên tục và được gọi là mining, miễn là còn transaction, các máy đào sẽ tiếp tục đóng gói.
Trong cơ chế đồng thuận Proof of Work (PoW), một trong những bước quan trọng nhất là quá trình giải bài toán tìm số nonce. Đây là công việc tính toán mà các node trong mạng phải thực hiện để xác minh và thêm một khối mới vào blockchain.
Nonce là Gì?
Nonce là từ viết tắt của "number only used once" – một số được sử dụng một lần duy nhất. Trong PoW, nonce là một số mà các node phải tìm ra sao cho khi nó được kết hợp với dữ liệu của block ấy, giá trị hash của khối đó sẽ thỏa mãn một điều kiện nhất định. Điều kiện này thường là kết quả của hàm băm phải bắt đầu bằng một chuỗi các ký tự 0 nhất định.
Cách Hoạt Động của Quá Trình Tìm Nonce
Quá trình tìm nonce về cơ bản là một bài toán thử sai bao gồm các bước sau:
Tạo khối mới: Mỗi khối mới chứa danh sách các giao dịch trong mạng.
Giải bài toán: Node phải tìm ra một giá trị nonce (số ngẫu nhiên) sao cho khi giá trị này được kết hợp với thông tin của khối, kết quả băm (hash) của khối phải thỏa mãn một điều kiện nhất định (ví dụ, kết quả hash phải bắt đầu với một số lượng ký tự 0 nhất định).
Xác nhận: Khi một node tìm ra được giá trị nonce đúng, nó sẽ lan truyền đến các node khác để xác nhận. Nếu đúng, khối mới sẽ được thêm vào blockchain.
Nhận thưởng: Node giải được bài toán sẽ nhận được phần thưởng là tiền mã hóa (ví dụ: Bitcoin).