Blockchain Cơ Bản (p9) – Giải Thuật Đồng Thuận PoW Trong Blockchain

blockchain-co-ban-proof-of-work

Giải thuật đồng thuận (Consensus Algorithm) là một trong những thành phần quan trọng của Blockchain. Ngay từ ban đầu, Blockchain sinh ra để loại bỏ bên thứ 3 khi thực hiện các giao dịch (transactions) nhằm giảm chi phí. Do đó để chứng thực các giao dịch, Blockchain sẽ sử dụng công động mạng tham gia vào mạng lưới Blockchain để chứng thực các giao dịch này.

Các nền tảng khác nhau sẽ có các giải thuật đồng thuận khác nhau: Proof of Work, Proof of Stake, Delegate Proof of State, Proof of Athortiy, dBFT…, mỗi giải thuật sẽ có ưu điểm và khuyết điểm khác nhau. Trong loạt bài viết học về Blockchain cơ bản BIASTEK giới thiệu giải thuật Proof of Work (poW)

Trước tiên, giả sử Jack muốn gửi 1 bitcoin cho Elsa, Jack sẽ gửi thông điệp (message): “ Tôi, Jack chuyển cho Elsa 1 bitcoin, với seri 1234567”. Thông điệp yêu cầu giao dịch  được gửi đến các nodes trên mạng ngang hàng (Peer-to-Peer). Khi đó mọi người (các nodes) sẽ nghe được thông điệp này và đưa vào hàng đợi giao dịch (queue of pending transactions) và chưa được duyệt bởi network. Ví dụ 1 người dùng tên là David theo dõi các message như  sau:

Tôi, Tom chuyển cho Peter 2 bitcoin, với seri 1234500.

Tôi, Alex chuyển cho Nicolas 5 bitcoin, với seri 1234577

Tôi, Pierre chuyển cho Salah 10 bitcoin, với seri 1234599

David kiểm tra sổ cái chia sẽ  (shared ledger) của mình và thấy mỗi giao dịch đều hợp lệ và phát tán (broadcast) thông điệp này lên trên toàn mạng lưới (network). Tuy nhiên, trước khi làm việc này David sẽ được yêu cầu giải một bài toán phức tạp ( computational puzzle) gọi là proof of works, không giải được bài toán đó toàn network sẽ không chấp nhận xác thực giao dịch (validation of the transaction) của David. Bài toán David cần giải là gì?

Gọi H là hàm hash (hash function sử dụng SHA-256)

Gọi D là dữ liệu giao dịch chờ được duyệt của David (David’s queue of pending transactions)

X gọi là số nonce: là 1 con số sao cho khi hash H (D + X) tạo ra 1 dãy số hash mà có 0000 đầu tiên. Bài toán David cần giải là tìm 1 số nonce sao cho khi gắn X vào D và đưa vào hàm hash sẽ tạo ra 1 kết qua  của hash có 0000 đầu tiên

Ví dụ:

H(“ Tôi, Jack chuyển cho Elsa 1 bitcoin,với seri 1234567”, 49948) = 

  00003d81d4fe800a0a7ab3aace46a871da436c98f21acde30044e30cd5f75a6e

Như vậy với số nonce là 49948, X=00003d81d4fe800a0a7ab3aace46a871da436c98f21acde30044e30cd5f75a6e, đây sẽ là đáp án của bài toán vì thỏa mãn có 4 ký tự 0 đầu tiên. Độ phức tạp bài toán tùy thuộc vào số lượng ký tự 0 đầu tiên. Tuy nhiên, việc giải bài toán này sẽ tiêu tốn nhiều tài nguyên và năng lượng và đây cũng là khuyết điểm của PoW

Trong một số nền tảng blockchain khác sử dụng PoW (Proof-of-Work), bài toán có thể sẽ là tìm một số nonce mà có 4 ký tự đầu tiên lớn hơn hoặc bằng 1 con số cho trước

Giả sử David tìm được 1 con số nonce. David sẽ phát tán (broadcast) giao dịch mà anh ta đã xác nhận kèm theo số nonce và giá trị của X để cộng đồng xác nhận. Những người còn lại xác nhận X là đáp án của  the proof-of-work puzzle. Sau đó họ cập nhật lại sổ cái chia sẽ (shared ledger) trên blockchain với những giao dịch mới. Khi đó block mới sẽ được tạo ra và thêm vào hệ thông blockchain. Người nào giải được bài toán sẽ được tặng bitcoin để trả công xác nhận giao dịch. Proof-of-work được xem như cuộc thi xác nhận giao dịch.

Trả lời

Email của bạn sẽ không được hiển thị công khai. Các trường bắt buộc được đánh dấu *