Bài toán các vị tướng Byzantine là một bài toán nổi tiếng trong nghành khoa học máy tính đã được đặt ra từ những năm 80 của thế kỷ trước. Vậy Byzantine Fault Tolerance là gì? Vấn đề mà các blockchain đã giải quyết ra sao? Cùng Hak Research đi tìm hiểu chi tiết trong bài viết này.
Byzantine Fault Tolerance Là Gì?
Byzantine Fault Tolerance (BFT) là một khái niệm trong lĩnh vực hệ thống phân tán, đề cập đến khả năng của một hệ thống để xử lý lỗi và đảm bảo tính nhất quán trong trường hợp có sự cố xảy ra.
BFT là một cơ chế kiểm soát lỗi thứ cấp, nghĩa là nó hoạt động độc lập với hệ thống kiểm soát lỗi chính. Mục tiêu của BFT là đảm bảo rằng hệ thống vẫn hoạt động chính xác và nhất quán trong trường hợp một hoặc nhiều nodes trong hệ thống bị lỗi hoặc tấn công.
BFT được sinh ra để giải quyết các vấn đề các vấn đề của bài toán các vị tướng quân Byzantine đã có từ những năm 80 của thế kỷ trước.
Bài Toán Byzantine Và Các Vấn Đề Đặt Ra
Bài toán các vị tướng Byzantine được giới thiệu bởi Leslie Lamport, Robert Shostak và Marshall Pease vào năm 1982 trong bài báo "The Byzantine Generals Problem" với nội dung chính như sau:
"Có N tướng cầm các cánh quân khác nhau trong đó có M tướng phản bội, cố gắng ngăn cản các tướng khác làm theo thỏa thuận:
- 4 tướng muốn tấn công.
- 4 tướng muốn rút quân.
- 1 tướng phản bội nói với nhóm thứ nhất là muốn tấn công, nói với nhóm thứ 2 là muốn rút quân.
Các vị tướng Byzantin chỉ có thể giao tiếp bằng thông điệp truyền đi qua lính đưa tin. Vấn đề đặt ra khi việc xác minh thông tin mà mình nhận được từ các tướng khác liệu có chính xác hay không và thông tin mình gửi đi có chậm, mất hay bị thay đổi?"
Khi áp dụng vào blockchain thì bài toán này đặt ra câu hỏi làm thế nào có thể đạt được đồng thuận trong một môi trường phân tán khi các noden có thể không tin tưởng lẫn nhau và có thể bị gian lận hoặc lỗi.
Các vấn đề cụ thể trong bài toán Byzantine bao gồm việc xác định các node đáng tin cậy để truyền tải thông tin, đảm bảo tính đúng đắn của thông tin được truyền đi, giải quyết xung đột thông tin trong trường hợp một số node gian lận, và tìm cách đạt được đồng thuận trong trường hợp một số node bị lỗi.
Tại Sao Cần Phải Sử Dụng BFT
BFT được sử dụng để giải quyết vấn đề lỗi Byzantine, tức là tình huống khi các nodes trong mạng lưới blockchain không đồng ý về một trạng thái hoặc giao dịch nào đó, hoặc khi có các nút hành động bất thường hoặc tấn công từ bên ngoài mạng.
BFT cho phép các nút trong mạng đạt được sự đồng thuận về trạng thái của hệ thống và tạo ra các khối mới một cách an toàn, tránh được các vấn đề về lỗi giao tiếp, lỗi chính tả, hay lỗi do hành động độc hại.
Do đó, BFT là một phần không thể thiếu để xây dựng một hệ thống blockchain đáng tin cậy và bảo mật.
Các Thành Phần Cấu Tạo Nên BFT
Hệ thống Byzantine Fault Tolerance bao gồm hai thành phần chính:
- Replica: Là các node trong hệ thống được phân phối, có chức năng sao chép, lưu trữ và xử lý yêu cầu.
- Node lead: là node điều phối trong hệ thống, có trách nhiệm quản lý và đồng bộ hóa hoạt động giữa các replica để đảm bảo tính nhất quán và độ tin cậy của hệ thống khi một số replica gặp sự cố.
Cách Hoạt Động Và Đảm Bảo Tính Nhất Quán Trong BFT
Các nút trong hệ thống BFT thực hiện việc đóng vai trò là nodeđồng thuận, và các quyết định được đưa ra chỉ được coi là chính thức khi đạt được đồng thuận từ tất cả các node đồng thuận.
Để đảm bảo tính nhất quán trong hệ thống, BFT sử dụng hai phương pháp chính:
- Điều chỉnh đồng bộ: Tất cả các node đồng thuận phải thực hiện cùng một hành động đồng thời để đạt được đồng thuận. Nếu không, họ sẽ bị loại khỏi quá trình đồng thuận.
- Bốn bước thông qua Quy trình: Quá trình đồng thuận bao gồm bốn bước - đề xuất, đề xuất chuyển tiếp, đồng thuận và giải quyết. Quá trình này đảm bảo rằng các quyết định được đưa ra bởi node đồng thuận là nhất quán và có tính toàn vẹn.
Nhờ sự kết hợp của cả hai phương pháp này, BFT đảm bảo tính nhất quán và đồng bộ trong quá trình đồng thuận giữa các nút đồng thuận trong hệ thống phân tán.
Các Thuật Toán Đồng Thuận
BFT là một tính năng quan trọng trong các thuật toán đồng thuận dùng trong blockchain. Các thuật toán này như pBFT (Practical Byzantine Fault Tolerance), Tendermint, và Hyperledger Fabric sử dụng BFT để đảm bảo tính an toàn và đáng tin cậy của quá trình xác thực giao dịch và khối mới trong mạng blockchain.
Để đạt được sự đồng thuận, các blockchain phải sử dụng một cơ chế đồng thuận cụ thể như Proof of Work (PoW) hay Proof of Stake (PoS).
Nói một cách dễ hiểu thì chúng ta có thể coi Bitcoin như là một giao thức với nhiều qui tắc hệ thống khác nhau, còn Proof of Work sẽ là cách thức để các qui tắc của Bitcoin luôn luôn đạt được sự đồng thuận.
Để thêm một block vào mạng lưới blockchain Bitcoin thì các node phải chứng minh được mình đã thực hiện một công việc tiêu tốn tài nguyên, và việc tiêu tốn tài nguyên này khuyến khích các thông tin được đưa ra trung thực nhất.
Vì việc loại bỏ một block đã được thêm vào blockchain là điều rất khó khăn nên tại thời điểm mà thông tin được đưa ra thì tất cả các node trong mạng lưới có thể dễ dàng xác minh tính chính xác của thông tin đó. Nếu thông tin đó bị sai lệch thì phần đông các node sẽ đồng thuận để loại bỏ nó ra khỏi block.
Mặc dù thuật toán PoW không đảm bảo khả năng chịu lỗi Byzantine tuyệt đối, nhưng nhờ vào quá trình tạo bằng chứng tốn kém và các kỹ thuật mã hóa đằng sau, PoW đã và đang được chứng minh là một trong những thuật toán đồng thuận an toàn và đáng tin cậy nhất ở thời điểm hiện tại.
Tổng Kết
Trên đây là những thông tin cần thiết để mọi người hiểu về Byzantine Fault Tolerance là gì? Hak Research hy vọng thông qua bài viết này mọi người đã nắm được nhiều thông tin hữu ích và tận dụng nó hiệu quả trong quá trình research của mình.
💁 Disclaimer: Tất cả bài viết của Hak Research được cung cấp với mục tiêu là chia sẻ kiến thức và không được xem là lời khuyên đầu tư.
- Hướng Dẫn Chạy Node Spheron - October 8, 2024
- Hướng Dẫn Chạy Node 0G Labs (ZeroGravity) - September 2, 2024
- Hướng Dẫn Chạy Node Nillion - August 30, 2024