2020/02/21
Blockchain

PBFT là gì? Giới thiệu chi tiết về thuật toán xây dựng sự đồng thuận có thể sử dụng trong Blockchain kiểu Consortium.

Xây dựng sự đồng thuận là một yếu tố rất quan trọng trong hệ thống phi tập trung Blockchain. Cho đến giờ chúng tôi đã giới thiệu về một số loại thuật toán xây dựng sự đồng thuận.

Trong bài viết này, chúng tôi sẽ tiếp tục giới thiệu về “PBTF (Practical Byzantine Fault Tolerance)”, là một thuật toán xây dựng sự đồng thuận được sử dụng thường xuyên trong Blockchain kiểu Consortium – hệ thống Blockchain chỉ được sử dụng trong một số tổ chức đặc biệt.

PBFT là gì?

Trong các bài viết khác, chúng tôi đã giới thiệu về “bài toán các vị tướng Byzantine” là “một bài toán hỏi về việc trong trường hợp trên mạng P2P, nếu thông tin hoặc các nút (node) riêng lẻ có khả năng bị lỗi hoặc là bị cố ý truyền đạt thông tin sai lệch, thì liệu toàn bộ thỏa thuận chính xác có thể được hình thành hay không.”

Người ta cho rằng hệ thống giúp giải quyết vấn đề này và cho phép mạng lưới P2P hoạt động bình thường sẽ có khả năng chịu lỗi Byzantine. (Byzantine Fault Tolerance:BFT)

Một trong những thuật toán xây dựng sự đồng thuận với khả năng chịu lỗi Byzantine này là PBFT.

PBFT là một cơ chế cho phép hình thành sự đồng thuận mà không gặp phải bất kỳ khó khăn nào ngay cả khi một số nút (node) dừng lại do lỗi hoặc cố gắng hoạt động bất hợp pháp.

Tương tự như PoW và PoS, đây là một thuật toán xây dựng sự đồng thuận để ngăn chặn việc thêm vào các khối bất hợp pháp. Nhưng trong khi PoW và PoS được sử dụng trong Blockchain kiểu công khai, thì tính năng của PBFT là việc sử dụng phù hợp với Blockchain kiểu Consortium.

Ví dụ, “Hyperledger” được thành lập bởi Linux Foundation, là một dự án thúc đẩy công nghệ Blockchain dành cho doanh nghiệp, với sự tham gia của rất nhiều các doanh nghiệp bao gồm IBM.

Hyperledger Fabric là một trong những dự án đó, và PBFT được sử dụng theo mặc định.

Hình ảnh: dự án Hyperledger

Quy trình hoạt động của PBFT

Quy trình hoạt động của PBFT cụ thể là như sau.

  1.  Một trong những nút có khả năng phê duyệt (Validating peer) sẽ là nút leader và chỉ có leader mới nhận được giao dịch (transaction) từ các nút không phê duyệt (Non-validating peer)
  2. Nút leader sẽ chuyển tiếp giao dịch đến một nút phê duyệt khác.
  3. Các nút phê duyệt ngoại trừ leader sau khi đã xác nhận giao dịch nhận từ leader là thật (không giả mạo), thì sẽ truyền đạt kết quả đến các nút phê duyệt khác ngoại trừ bản thân nó.
  4. Mỗi một nút phê duyệt nếu nhận được kết quả là “giao dịch không bị giả mạo” từ một số lượng nhất định cá máy khác, thì sẽ đánh giá là “giao dịch đã được gửi đi chính xác cho tất cả mọi người”, và gửi đi nội dung đó cho các nút phê duyệt khác ngoại trừ bản thân nó.
  5. Các nút phê duyệt sẽ thực hiện xử lý giao dịch nếu nhận được kết quả “Giao dịch đã được gửi chính xác cho tất cả mọi người” từ một số lượng nhất định các máy.
  6. Nút phê duyệt phản ánh kết quả thực hiện giao dịch trong sổ cái. Khi sổ cái được hoàn thành cập nhật, nội dung đó sẽ được gửi đến các nút không phê duyệt.
  7. Khi nút không phê duyệt nhận được thông báo rằng quá trình cập nhật sổ cái đã được hoàn thành từ một số lượng máy nhất định thì nó sẽ xác định “giao dịch đã hoàn thành”.

Hình ảnh: IBM | developerWorks

Tại đây sẽ có một số yêu cầu nhất định với số lượng nút tham gia.

Trước tiên là xác định số f của các nút có khả năng chịu lỗi đầu tiên.

Sau khi đã xác định số f này, thì tổng số nút là 3f + 1 trở lên sẽ là điều kiện của thuận toán.

Chỉ sau khi thỏa mãn điều kiện đó thì thuật toán PBFT mới được thiết lập.

Các biện pháp như vậy được thực hiện để đảm bảo rằng tất cả các nút luôn hoạt động chính xác dẫn đến mất khả năng chịu lỗi.

Việc thực hiện xác minh giao dịch nhờ vào nhiều nút như thế này thì cũng tương tư với các thuật toán khác như PoW hoặc PoS.

Mặt khác, có một điểm khác biệt ở đây là tồn tại một nút leader, cũng như không có cơ chế thù lao khuyến khích đối với việc kiểm tra sự giả mạo.

Những sự khác biệt này là đặc trưng của PBFT và có ảnh hưởng đến ưu điểm và nhược điểm của nó.

Ưu điểm của PBFT

Một trong những ưu điểm của việc sử dụng PBFT đó là có tính xác định (nghĩa là thời điểm hoàn thành thanh toán rõ ràng).

Không giống như PoW và PoS, trong PBFT vì các khối được tạo ra tại một thời điểm nhất định bởi nút leader, nên Blockchain sẽ không phân nhánh, do đó nó có thể đạt được tính xác định.

Trong các lĩnh vực chẳng hạn như các tổ chức tài chính – nơi tốc độ của tính xác định trở nên rất quan trọng, thì các Blockchain sử dụng PBFT có thể được cho là rất hấp dẫn.

Ngoài ra, PBFT còn có một ưu điểm nữa là thông lượng có tốc độ cao.

Vì trong PBFT không yêu cầu phải xử lý các phép tính (tương đương với việc khai thác) như trong PoW, nên ta có thể xử lý các xác nhận với tốc độ tương đối cao, và kết quả là có thể thực hiện khối lượng việc lớn.

Do PBFT về cơ bản thì là Blockchain kiểu Consortium, nên không cần phải trả thù lao cho các nút trong việc kiểm tra sự giả mạo của các giao dịch khi khai thác.

Trong thông cáo báo chí của công ty IBM, hiện phương thức này có thể thực hiện được hơn 1,000 giao dịch/ giây – con số này gần với tiêu chuẩn 1,388 giao dịch/ giây của hệ thống thanh toán liên ngân hàng Nhật Bản.

Nhược điểm của PBFT

Mặt khác, PBFT cũng tồn tại một vài nhược điểm.

Đầu tiên, vì về cơ bản số lượng các nút tham gia và nút leader là được cố định, nên không thể thực hiện xây dựng sự đồng thuận mà không thông qua một người quản lý cụ thể.

Nói cách khác là PBFT về cơ bản chỉ có thể sử dụng trong Blockchain kiểu Private hoặc Consortium.

Điều này là do nó được hình thành dựa trên sự đánh đổi sự đồng thuận được hình thành bởi số đông không xác định – vốn là lợi thế của các Blockchain công khai, để đạt được tốc độ nhanh chóng do tin tưởng 1 ai đó.

Ngoài ra, nếu số lượng nút tham gia tăng lên, vì số lượng giao dịch sẽ tăng theo hàm bậc hai, nên người ta cũng không thể tăng số lượng nút tham gia quá nhiều.

Đây cũng là một trong những cách sử dụng không thể áp dụng cho Blockchain công khai.

Các bạn cảm thấy như thế nào về các thông tin trên?

PBFT thì khác với các thuật toán xây dựng sự đồng thuận cải tiến như PoW và PoS, nhưng có thể nói rằng nó là một thuật toán thích nghi tốt với các hệ thống Blockchain kiểu Consortium.

Với các blockchain được sử dụng rộng rãi như tiền ảo thì tính công khai như PoW là điều rất cần thiết.

Tuy nhiên, PBFT được dự đoán sẽ triển khai ứng dụng trong lĩnh vực Enterprise (doanh nghiệp) bao gồm lĩnh vực tài chính.