>
OKB.VN
Consensus · BFT

Byzantine Fault Tolerance là gì?

Bài toán các tướng Byzantine, PBFT, Tendermint và nền tảng đồng thuận an toàn

⏱ 12 phút đọc 🎯 Intermediate 📅 2025

TÓM TẮT

Byzantine Fault Tolerance (BFT) là khả năng hệ thống phân tán đạt đồng thuận chính xác dù có tối đa 1/3 node gian lận hoặc lỗi. Đây là nền tảng lý thuyết của mọi cơ chế consensus trong blockchain — từ PBFT cổ điển đến Tendermint, HotStuff và Casper FFG Ethereum.

IBài Toán Byzantine Generals

Năm 1982, Lamport, Shostak và Pease công bố bài báo kinh điển "Byzantine Generals Problem" — đặt nền tảng cho toàn bộ lý thuyết đồng thuận phân tán hiện đại.

Tình huống giả định

Hãy tưởng tượng một đội quân Byzantine bao vây thành phố. Nhiều tướng điều khiển các đạo quân riêng biệt và chỉ liên lạc qua sứ giả. Để thắng, tất cả tướng trung thành phải đồng thuận: hoặc cùng tấn công, hoặc cùng rút lui. Nhưng một số tướng có thể là phản bội — họ gửi thông tin mâu thuẫn cho những người khác.

Câu hỏi: Làm sao để các tướng trung thành đạt được đồng thuận dù có kẻ phản bội trong hàng ngũ?

Ánh xạ sang blockchain

  • Tướng = Node tham gia mạng (validator, miner)
  • Phản bội = Node gian lận hoặc bị hack
  • Đồng thuận tấn công/rút lui = Đồng thuận về trạng thái blockchain (block nào hợp lệ)
  • Sứ giả = Mạng peer-to-peer, có thể bị trễ hoặc mất gói
Định lý cơ bản: Hệ thống có thể giải quyết Byzantine Generals Problem khi và chỉ khi ít hơn 1/3 node là phản bội. Với n node, cần n ≥ 3f+1 để tolerate f node lỗi.

IIByzantine Fault Tolerance là gì?

Byzantine Fault Tolerance (BFT) là tính chất của hệ thống phân tán: tiếp tục hoạt động đúng dù một số thành phần bị lỗi theo cách tùy ý — không chỉ crash mà còn gửi dữ liệu sai lệch, trả lời mâu thuẫn cho các node khác nhau, hoặc cố tình phá hoại.

Các loại lỗi trong hệ thống phân tán

Loại lỗiMô tảVí dụ
Crash faultNode ngừng hoạt động hoàn toànServer mất điện, kết nối internet bị đứt
Omission faultNode không gửi/nhận một số messageGói tin bị mất trên mạng
Byzantine faultNode hành xử tùy ý, bao gồm gian lậnNode bị hack, validator double-sign

Byzantine fault là trường hợp nghiêm trọng nhất — hệ thống BFT phải chịu đựng được cả crash lẫn hành vi gian lận chủ động. Đây là lý do BFT quan trọng với blockchain: không thể tin tưởng bất kỳ node đơn lẻ nào.

IIIPBFT — Practical Byzantine Fault Tolerance

Năm 1999, Castro và Liskov công bố PBFT — thuật toán BFT đầu tiên đủ hiệu quả để dùng trong thực tế. PBFT là nền tảng của nhiều hệ thống blockchain permissioned.

Quy trình PBFT (3 phase)

  1. Pre-prepare: Primary (leader) nhận request, gán sequence number, broadcast Pre-prepare message cho tất cả replica.
  2. Prepare: Mỗi replica nhận Pre-prepare, broadcast Prepare message. Khi một replica nhận 2f+1 Prepare message nhất quán, nó tiến sang phase tiếp theo.
  3. Commit: Replica broadcast Commit message. Khi nhận 2f+1 Commit, replica thực thi request và trả lời client.
Tại sao cần 2f+1? Với f node lỗi, cần đảm bảo mọi quorum (tập đa số) phải overlap. Nếu n=3f+1 thì quorum 2f+1 node bất kỳ đều overlap ít nhất f+1 node — đủ đảm bảo ít nhất 1 node trung thực trong overlap.

View Change — xử lý Primary lỗi

Khi Primary bị crash hoặc hành xử Byzantine, PBFT có cơ chế View Change: các replica timeout, gửi View-Change message, và sau khi thu thập đủ 2f+1 view-change, Primary mới được bầu chọn. Đây là cơ chế đảm bảo liveness khi leader lỗi.

Nhược điểm PBFT

PBFT có độ phức tạp message O(n²) — với n validator, mỗi round cần n² message. Điều này làm PBFT không scale với số lượng validator lớn. Trong thực tế, PBFT chỉ dùng tốt với <20 validator. Đây là lý do các blockchain permissioned như Hyperledger Fabric dùng PBFT với consortium nhỏ.

IVTendermint BFT

Tendermint (2014) là BFT consensus được thiết kế cho blockchain permissionless, giải quyết vấn đề scale của PBFT. Tendermint được dùng trong Cosmos, Binance Chain và nhiều blockchain khác.

Cơ chế hoạt động

Mỗi block height trong Tendermint trải qua nhiều round. Mỗi round có:

  • Propose: Proposer được chọn theo vòng tròn (round-robin) broadcast block đề xuất.
  • Prevote: Validator vote Prevote cho block hợp lệ hoặc nil. Khi đủ 2/3 Prevote (polka), tiến sang Precommit.
  • Precommit: Validator vote Precommit. Khi đủ 2/3 Precommit, block được commit và finalized ngay lập tức.

Instant Finality

Điểm mạnh lớn nhất của Tendermint: instant finality — block được finalized ngay khi commit, không có fork, không cần chờ xác nhận thêm. Đây là lý do Cosmos ưu tiên Tendermint: transaction finality trong ~1-6 giây.

Tendermint vs PBFT

Tiêu chíPBFTTendermint
ComplexityO(n²) messageO(n²) nhưng đơn giản hơn
Leader rotationView change phức tạpRound-robin đơn giản
FinalityInstantInstant
LivenessCó thể liveness faultLock/unlock mechanism
Ứng dụngHyperledger FabricCosmos, BNB Chain

VSafety vs Liveness — Đánh đổi nền tảng

Mọi thuật toán consensus đều phải đối mặt với CAP theorem và đánh đổi giữa Safety và Liveness:

  • Safety: Hệ thống không bao giờ commit hai block mâu thuẫn (không fork). Tương đương "Consistency" trong CAP.
  • Liveness: Hệ thống cuối cùng sẽ commit block mới (không bị stuck). Tương đương "Availability" trong CAP.

BFT ưu tiên Safety

Các thuật toán BFT (PBFT, Tendermint, HotStuff) ưu tiên Safety: khi mạng bị partition, hệ thống dừng lại thay vì commit block sai. Ethereum Casper FFG cũng chọn Safety — nếu <2/3 validator online, chain không finalize.

Ngược lại, Nakamoto Consensus (Bitcoin PoW) ưu tiên Liveness: chain luôn tiến dù có fork. Fork được giải quyết sau bằng longest chain rule — nhưng finality là probabilistic, không absolute.

Tóm lại: BFT = Safety (không fork, instant finality, dừng khi partition). Nakamoto = Liveness (luôn tiến, fork có thể xảy ra, finality probabilistic). Blockchain chọn BFT khi cần finality nhanh; chọn Nakamoto khi cần liveness cao hơn.

VIBFT trong Các Blockchain Hiện Đại

Ethereum — Casper FFG

Ethereum dùng Casper FFG (Friendly Finality Gadget) — một lớp BFT đặt lên trên LMD-GHOST. Mỗi epoch (32 slot ~6.4 phút), validator vote để finalize checkpoint. Cần 2/3 stake vote đồng thuận. Nếu 2/3 không đạt được, epoch không finalize — đây là ví dụ điển hình của Safety over Liveness.

Cosmos — Tendermint Core

Cosmos Hub và các chain trong Cosmos ecosystem dùng Tendermint BFT. Validator set thường <150 node — đủ nhỏ để Tendermint hoạt động hiệu quả. Finality trong 1-6 giây là lợi thế cạnh tranh lớn với Ethereum.

Solana — Tower BFT

Solana dùng Tower BFT — biến thể của PBFT kết hợp với Proof of History (PoH) làm clock. PoH cung cấp ordering timestamp tin cậy, giúp giảm overhead BFT messaging và đạt throughput cao (50,000+ TPS lý thuyết).

HotStuff — thế hệ BFT mới

HotStuff (2018, Meta/Facebook) là thuật toán BFT với complexity tuyến tính O(n) — phá vỡ rào cản O(n²) của PBFT/Tendermint. LibraBFT (Aptos) và DiemBFT dùng HotStuff. Đây là hướng phát triển của BFT cho validator set lớn hơn.

VIISo Sánh BFT với PoW và PoS

Tiêu chíBFTPoW (Nakamoto)PoS (Ethereum)
FinalityInstant (~vài giây)Probabilistic (60+ phút Bitcoin)Economic (~13 phút)
Fault tolerance<1/3 node lỗi<50% hashrate<1/3 stake (safety)
ForkKhông forkFork thường xuyênFork hiếm, có slashing
Scale validatorHạn chế (<150-300)Không giới hạn minerHàng trăm nghìn validator
Network partitionDừng lại (Safety)Tiếp tục (Liveness)Dừng finality (Safety)
Ví dụCosmos, SolanaBitcoinEthereum

Xem thêm so sánh chi tiết tại Consensus Mechanism: PoW, PoS và BFTProof of Stake là gì.

VIIIGiới Hạn và Đánh Đổi của BFT

Vấn đề Scale

BFT truyền thống (PBFT, Tendermint) không scale tốt với số lượng validator lớn vì complexity O(n²). Ethereum xử lý vấn đề này bằng cách dùng committee sampling: mỗi slot chọn ngẫu nhiên một committee nhỏ (~512 validator) từ pool lớn hơn để attest.

Không Phù hợp với Mạng Không Đồng bộ

Định lý FLP (Fischer-Lynch-Paterson, 1985) chứng minh: trong mạng hoàn toàn không đồng bộ (không có giới hạn delay), không có thuật toán deterministic nào đảm bảo được consensus. BFT hoạt động bằng cách giả định partial synchrony — mạng cuối cùng sẽ có giới hạn delay sau GST (Global Stabilization Time).

Long-Range Attack

BFT với PoS có thể bị long-range attack: validator cũ (đã rút stake) dùng private key cũ tạo lịch sử thay thế. Giải pháp: weak subjectivity — node mới phải tin vào checkpoint gần đây, không thể sync từ genesis thuần túy.

Khi nào chọn BFT?

  • Cần instant finality (payment, DEX, cross-chain bridge)
  • Validator set nhỏ và có thể kiểm soát (consortium chain, PoA)
  • Ưu tiên không fork hơn là luôn online

Ngược lại, chọn Nakamoto Consensus khi cần validator set không giới hạn, permissionless hoàn toàn, hoặc ưu tiên liveness cao hơn finality. Đây là một trong những đánh đổi cốt lõi của Blockchain Trilemma.

Câu Hỏi Thường Gặp

BFT là khả năng của hệ thống phân tán hoạt động đúng ngay cả khi một số node gửi thông tin sai lệch hoặc hành xử độc hại. Tên xuất phát từ bài toán Byzantine Generals Problem — làm sao để các tướng phối hợp khi một số có thể là kẻ phản bội.

Blockchain là hệ thống phân tán không có trung tâm điều phối. Bất kỳ node nào cũng có thể gian lận. BFT đảm bảo mạng đạt đồng thuận chính xác ngay cả khi tới 1/3 node hành xử độc hại — đây là nền tảng an toàn của mọi cơ chế consensus.

PBFT là thuật toán BFT cổ điển, phức tạp O(n²) về message — không scale tốt với nhiều validator. Tendermint đơn giản hóa PBFT, dùng round-based voting với 2/3 majority, tối ưu cho blockchain permissionless với hàng chục đến hàng trăm validator.

Định lý FLP và BFT chứng minh: hệ thống có thể tolerate tối đa f node lỗi khi tổng node n ≥ 3f+1, tức tối đa 1/3 node lỗi. Nếu vượt ngưỡng này, không có thuật toán nào đảm bảo được safety và liveness đồng thời.

📚Tài liệu tham khảo

  1. Lamport, L., Shostak, R., & Pease, M. (1982). The Byzantine Generals Problem. ACM TOPLAS.
  2. Castro, M. & Liskov, B. (1999). Practical Byzantine Fault Tolerance. OSDI '99.
  3. Buchman, E. (2016). Tendermint: Byzantine Fault Tolerance in the Age of Blockchains.
  4. Yin, M. et al. (2019). HotStuff: BFT Consensus with Linearity and Responsiveness. PODC '19.
  5. Buterin, V. & Griffith, V. (2017). Casper the Friendly Finality Gadget. arxiv.org/abs/1710.09437
📚 Khám phá thêm theo chủ đề
113 bài phân tích kỹ thuật — Blockchain Infrastructure từ nền tảng đến nâng cao
📋 Xem tất cả bài viết →