PBFT

PBFT là 1 công cụ của Hyperledger Sawtooth có khả năng chịu lỗi Byzantine một cách thực tế. Nghĩa là: Mạng Blockchain vẫn an toàn ngay cả khi 1 số nút bị lỗi hoặc bị độc hại miễn là ở dưới mức cho phép của mạng lưới.

 

Hiệu quả năng lượng: pBFT có thể đạt được sự đồng thuận phân tán mà không cần thực hiện các phép tính toán học phức tạp (như trong PoW). Zilliqa sử dụng pBFT kết hợp với vòng tính toán phức tạp giống PoW cho mỗi khối thứ 100.

Tính cuối cùng của giao dịch: Các giao dịch không yêu cầu nhiều xác nhận (giống như trong trường hợp cơ chế PoW trong Bitcoin trong đó mỗi nút xác minh riêng lẻ tất cả các giao dịch trước khi thêm khối mới vào blockchain, xác nhận có thể mất từ ​​10-60 phút tùy thuộc vào số lượng thực thể xác nhận khối mới) sau khi chúng đã được hoàn thiện và thống nhất.

Phương sai phần thưởng thấp: Mọi nút trong mạng đều tham gia phản hồi yêu cầu của khách hàng và do đó mọi nút có thể được khuyến khích dẫn đến mức chênh lệch thấp trong việc thưởng cho các nút giúp đưa ra quyết định.

Mô hình đồng thuận pBFT chỉ hoạt động hiệu quả khi số lượng nút trong mạng phân tán nhỏ do chi phí truyền thông cao tăng theo cấp số nhân với mỗi nút bổ sung trong mạng.

  • Các cuộc tấn công Sybil: Các cơ chế pBFT dễ bị tấn công Sybil , trong đó một thực thể (bên) kiểm soát nhiều danh tính. Khi số lượng các nút trong mạng tăng lên, các cuộc tấn công sybil ngày càng trở nên khó thực hiện. Nhưng vì cơ chế pBFT cũng có vấn đề về khả năng mở rộng, nên cơ chế pBFT được sử dụng kết hợp với (các) cơ chế khác.
  • Mở rộng quy mô: pBFT không mở rộng quy mô tốt vì giao tiếp của nó (với tất cả các nút khác ở mọi bước). Khi số lượng nút trong mạng tăng lên (tăng khi O (n ^ k), trong đó n là thông báo và k là số nút), thì thời gian cần thiết để phản hồi yêu cầu cũng tăng theo.
 

pBFT cố gắng cung cấp một bản sao máy trạng thái Byzantine thực tế có thể hoạt động ngay cả khi các nút độc hại đang hoạt động trong hệ thống.

Các nút trong hệ thống phân tán hỗ trợ pBFT được sắp xếp theo thứ tự tuần tự với một nút là nút chính (hoặc nút dẫn đầu) và các nút khác được gọi là thứ cấp (hoặc các nút dự phòng). Lưu ý ở đây rằng bất kỳ nút nào đủ điều kiện trong hệ thống đều có thể trở thành nút chính bằng cách chuyển đổi từ nút thứ cấp sang nút chính (thường là trong trường hợp nút chính bị lỗi). Mục tiêu là tất cả các nút trung thực giúp đạt được sự đồng thuận về trạng thái của hệ thống bằng cách sử dụng quy tắc đa số.

Một hệ thống Byzantine Fault Tolerant thực tế có thể hoạt động với điều kiện số lượng tối đa các nút độc hại không được lớn hơn hoặc bằng một phần ba tổng số các nút trong hệ thống. Khi số lượng các nút tăng lên, hệ thống trở nên an toàn hơn.

  • Máy khách gửi một yêu cầu đến nút chính (lãnh đạo).
  • Nút chính (đầu tàu) phát yêu cầu đến tất cả các nút phụ (dự phòng).
  • Các nút (chính và phụ) thực hiện dịch vụ được yêu cầu và sau đó gửi lại phản hồi cho khách hàng.
  • Yêu cầu được phục vụ thành công khi máy khách nhận được câu trả lời 'm + 1' từ các nút khác nhau trong mạng với cùng một kết quả, trong đó m là số lượng nút bị lỗi tối đa được phép.

Nút chính (người dẫn đầu) được thay đổi trong mọi chế độ xem (vòng đồng thuận pBFT) và có thể được thay thế bằng giao thức thay đổi chế độ xem nếu một khoảng thời gian được xác định trước đã trôi qua mà nút dẫn đầu phát yêu cầu tới các bản sao lưu (thứ cấp). Nếu cần, phần lớn các nút trung thực có thể bỏ phiếu về tính hợp pháp của nút hàng đầu hiện tại và thay thế nó bằng nút hàng đầu tiếp theo trong hàng.

  • Zilliqa - pBFT kết hợp với đồng thuận PoW.
  • Hyperledger Fabric - phiên bản được cấp phép của pBFT.
  • Tendermint - pBFT + DPoS (Bằng chứng cổ phần được ủy quyền).
 

Để nâng cao chất lượng và hiệu suất của pBFT cho các trường hợp và điều kiện sử dụng cụ thể, nhiều biến thể đã được đề xuất và sử dụng. Một số trong số đó là:

  • RBFT - BFT dự phòng.
  • ABsTRACTs.
  • Q / U.
  • HQ - Giao thức số đại biểu kết hợp cho BFT.
  • Phỏng theo.
  • Zyzzyva - Khả năng chịu lỗi Byzantine đầu cơ.
  • Aardvark.