Hệ thống phân tán là gì?
Hiểu biết về hệ thống phân tán là điều thiết yếu để chúng ta hiểu về blockchain, vì blockchain chính là một hệ thống phân tán. Nó là một sổ cái phân tán có thể là tập trung hoặc phi tập trung. Một blockchain thường được thiết kế và sử dụng như một một hệ thống phân tán-phi tập trung. Kế thừa tính chất của cả hai mô hình gồm phân tán và phi tập trung.
Một hệ thống phân tán là một mô hình tính toán trong đó hai hoặc nhiều nút làm việc với nhau theo cách phối hợp để đạt được một kết quả chung. Nó được mô hình hóa theo cách mà người dùng cuối thấy nó như một nền tảng logic đơn nhất.
Ví dụ, công cụ tìm kiếm của Google dựa trên một hệ thống phân tán lớn; Google sử dụng nhiều máy chủ đặt tại các trung tâm dữ liệu trên toàn cầu để chia sẻ khối lượng công việc và dữ liệu. Hệ thống này không phụ thuộc vào một máy chủ đơn lẻ, mà thay vào đó, sử dụng hàng trăm nghìn máy tính để thu thập, lưu trữ và xử lý dữ liệu; tuy nhiên, đối với người dùng, nó trông như một nền tảng đồng nhất và mạch lạc. Hệ thống này bao gồm các quá trình (nút) và kênh (kênh truyền thông), nơi các nút giao tiếp bằng cách truyền tin nhắn. Một blockchain là một hệ thống phân tán truyền tin nhắn.
Trong hệ thống phân tán, một nút (node) là một thực thể cá nhân, thường là một máy tính hoặc thiết bị, có khả năng gửi và nhận tin nhắn, cũng như tham gia vào các quá trình xử lý và lưu trữ dữ liệu. Mỗi nút trong hệ thống có thể tương tác với nhau, tạo thành một mạng lưới phân tán, và chúng có thể có những hành vi khác nhau. Một nút có thể có hành vi tùy ý, tức là hành động không theo quy tắc chung, được gọi là nút Byzantine. Khái niệm này xuất phát từ bài toán Các Tướng Byzantine trong khoa học máy tính, một vấn đề cổ điển trong hệ thống phân tán.
“Bài toán Các Tướng Byzantine:
Giả sử rằng có nhiều tướng lĩnh (các nút) chỉ huy quân đội, và họ cần cùng nhau quyết định tấn công hoặc rút lui. Tuy nhiên, một số tướng có thể là phản bội và cố tình gửi thông tin sai lệch cho những tướng khác nhằm phá hoại quyết định chung. Bài toán đặt ra câu hỏi: Làm thế nào để các tướng trung thực có thể đạt được một quyết định đồng thuận đúng đắn (ví dụ, tấn công hay rút lui) ngay cả khi có những tướng phản bội?
Tính chất của nút Byzantine
- Hành vi không thể đoán trước: Một nút Byzantine có thể gửi các tin nhắn sai lệch, từ chối phản hồi, hoặc cố tình làm rối loạn quy trình giao tiếp giữa các nút khác.
- Gây rối hệ thống: Vì nút Byzantine có thể hành động ngẫu nhiên hoặc cố tình phá hoại, nó có thể làm suy yếu độ tin cậy và tính nhất quán của hệ thống phân tán.
Giải pháp: Thuật toán Byzantine Fault Tolerance (BFT)
Để giải quyết vấn đề này, nhiều hệ thống phân tán, bao gồm các hệ thống dựa trên blockchain, sử dụng các thuật toán Byzantine Fault Tolerance (BFT). Nguyên lý của Byzantine Fault Tolerance (BFT) là tất cả các nút trung thực trong hệ thống phân tán phải trao đổi thông tin với nhau và so sánh dữ liệu để đạt được sự đồng thuận, bất kể có nút nào đó hành vi sai lệch. Miễn là hơn 2/3 số nút trung thực, hệ thống có thể phát hiện và bỏ qua các nút không đáng tin để đảm bảo tính chính xác và an toàn của quyết định chung. Thuật toán này đảm bảo rằng hệ thống vẫn có thể đạt được đồng thuận và tiếp tục hoạt động chính xác ngay cả khi một số nút trong mạng hành động theo cách không thể đoán trước (hành vi Byzantine).”
Hành vi không nhất quán của các nút Byzantine có thể là cố ý độc hại, điều này gây hại cho hoạt động của mạng lưới. Cố ý độc hại ở đây là khi một nút cố tình gây rối hoặc phá hoại hệ thống bằng cách gửi thông tin sai lệch, làm gián đoạn giao tiếp, hoặc từ chối thực hiện các nhiệm vụ của mình nhằm gây ảnh hưởng tiêu cực đến hoạt động của mạng lưới. Các hành vi này thường được thực hiện với mục tiêu làm rối loạn hoặc làm suy yếu sự đồng thuận trong hệ thống.Bất kỳ hành vi bất thường nào của một nút trong mạng, dù là độc hại hay không, đều có thể được phân loại là Byzantine. Hành vi Byzantine có thể là do sự cố không cố ý hoặc hành vi độc hại có chủ đích, nhưng cả hai đều làm hệ thống phân tán khó đạt được sự đồng thuận chính xác.
Dưới đây là một ví dụ nhỏ về hệ thống phân tán được mô tả trong sơ đồ sau. Hệ thống phân tán này có sáu nút, trong đó một nút (N4) là nút Byzantine, dẫn đến khả năng xảy ra không nhất quán dữ liệu. L2 là một liên kết bị hỏng hoặc chậm, điều này có thể dẫn đến một phân mảnh trong mạng lưới:

Trong sơ đồ, bạn có thể thấy rằng N4 (nút Byzantine) có thể gây ra sự không đồng nhất trong dữ liệu vì hành vi của nó không thể được dự đoán chính xác. Nếu liên kết L2 bị hỏng hoặc chậm, điều này có thể khiến một phần của mạng lưới không thể kết nối với phần còn lại, tạo ra một tình trạng phân mảnh mạng lưới.
Hai thách thức chính trong thiết kế hệ thống phân tán là điều phối giữa các nút và khả năng chịu lỗi. Ngay cả khi một số (một ngưỡng nhất định được xác định bởi giao thức đồng thuận) nút bị lỗi hoặc liên kết mạng bị đứt, hệ thống phân tán vẫn nên có khả năng chịu đựng tình trạng này và tiếp tục hoạt động để đạt được kết quả mong muốn. Vấn đề này đã là lĩnh vực nghiên cứu tích cực trong thiết kế hệ thống phân tán trong nhiều năm, và nhiều thuật toán và cơ chế đã được đề xuất để vượt qua những vấn đề này.
Hệ thống phân tán rất khó thiết kế. Đã được chứng minh rằng một hệ thống phân tán không thể có đồng thời cả ba thuộc tính mong muốn là tính nhất quán, tính khả dụng, và khả năng chịu phân mảnh. Nguyên lý này được gọi là Định lý CAP.

