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.
Blockchain Ethereum – Ví dụ về hàm Delegatecall trong solidity
Blockchain Ethereum (P4) – Kết Nối Các Node Sử Dụng Bootnode
Blockchain Ethereum (P3) – Cài Đặt Private Blockchain trên nền tảng Ethereum
Install web3 and nodejs
Sử dụng Virtual Box
Đọc sách 2021