Proof of Work, hay bằng chứng công việc, là cơ chế buộc bên đề xuất khối Bitcoin tìm một kết quả băm đáp ứng ngưỡng quy định. Kết quả dễ kiểm tra hơn việc tìm ra nó; sự chênh lệch này khiến việc xây lịch sử thay thế đòi hỏi công việc tính toán.
Tìm một kết quả thỏa ngưỡng
Trong Bitcoin, dữ liệu phần đầu khối được băm và so với target — giá trị ngưỡng. Mã kiểm tra Proof of Work từ chối kết quả lớn hơn target hợp lệ; kết quả không vượt ngưỡng mới qua được phép kiểm tra này. Nguồn: Bitcoin Core v30.0, pow.cpp — CheckProofOfWorkImpl.
Hàm băm và SHA-256 giải thích vì sao thay đổi dữ liệu đầu vào tạo ra kết quả khác. PoW tận dụng đặc tính đó: thợ đào thử nhiều phiên bản thay vì giải một phương trình có lối tắt đã biết để thu ngay đáp án mong muốn.
Vai trò của nonce
Một chu trình rút gọn gồm chuẩn bị dữ liệu khối, thay đổi dữ liệu có thể thử, tính hash, rồi so với target. Nếu chưa đạt, tiếp tục thử; nếu đạt, đề xuất khối cho mạng.
Nonce là một trường có thể thay đổi trong phần đầu khối. Nhưng nó không phải toàn bộ không gian tìm kiếm: khi cần, phần mềm còn có thể thay đổi dữ liệu coinbase, làm thay Merkle root và tạo các header khác để thử. Nguồn: Bitcoin Developer Guide, Mining — Solo Mining.
Vì vậy, “đã thử hết nonce” không có nghĩa quá trình khai thác phải chấm dứt. Nó chỉ nói một trường hữu hạn đã được duyệt trong một cấu hình dữ liệu cụ thể.
Target khác difficulty
Target là ngưỡng so sánh trực tiếp. Difficulty, hay độ khó, biểu diễn mức yêu cầu công việc so với mốc tham chiếu. Giảm target khiến điều kiện đạt khó hơn; cần tránh diễn đạt “ngưỡng cao hơn nên khó hơn”, vì hướng quan hệ ngược với cách hiểu đó. Nguồn: Bitcoin Developer Guide, Block Chain — Proof Of Work.
Ví dụ giả định: rút một số đều từ 0 đến 99. Điều kiện nhỏ hơn 10 có 10 kết quả đạt; nhỏ hơn 5 chỉ có 5 kết quả đạt. Điều kiện sau có xác suất thành công mỗi lần bằng một nửa. Đây là mô hình đồ chơi, không phải phép tính difficulty hay quy trình hash thật của Bitcoin.
Điều chỉnh để phản hồi nhịp khối
Quy tắc điều chỉnh độ khó dùng dữ liệu thời gian của một giai đoạn khối để tính target tiếp theo, với giới hạn cho mức thay đổi. Mã Bitcoin Core tách các tham số theo mạng và có ngoại lệ cho mạng thử nghiệm; không nên lấy ngoại lệ đó mô tả Bitcoin mainnet. Nguồn: Bitcoin Core v30.0, pow.cpp — GetNextWorkRequired, CalculateNextWorkRequired.
Đây là phản hồi theo giai đoạn, không phải lời hứa mỗi khối đến đúng giờ. Hashrate giúp đọc tốc độ tính toán ước tính; kinh tế khai thác giải thích các yếu tố khiến máy tham gia hoặc rời mạng.
PoW chưa phải toàn bộ tính hợp lệ
Một kết quả hash đạt ngưỡng không làm mọi dữ liệu trong khối trở nên hợp lệ. Các nút còn phải kiểm tra giao dịch và quy tắc khác; PoW là một điều kiện trong tập điều kiện xác minh. Nguồn: Bitcoin Developer Guide, Block Chain — Introduction.
Kết luận
Proof of Work buộc bên đề xuất block phải thử rất nhiều lần mới tìm được kết quả băm đạt ngưỡng, trong khi các node kiểm tra lại dễ dàng; chính sự chênh lệch này khiến việc xây lịch sử thay thế trở nên tốn kém. Difficulty được điều chỉnh để phản hồi nhịp tạo block. Tuy vậy, PoW chỉ là một trong các điều kiện: node vẫn kiểm tra giao dịch và các quy tắc khác.
Đọc tiếp
Đọc Bitcoin vận hành thế nào, kinh tế học Bitcoin, đồng thuận và fork, block subsidy và reward hoặc Thư viện thuật ngữ.