- vừa được xem lúc

Giải thích thuật toán đồng thuận AptosBFT bằng toán học cơ bản

0 0 2

Người đăng: Phan Ngoc

Theo Viblo Asia

🧠 Bối cảnh:

AptosBFT là một thuật toán đồng thuận được thiết kế để đảm bảo mọi nút trong mạng blockchain đồng thuận với nhau, ngay cả khi một số nút bị lỗi hoặc độc hại (Byzantine).

AptosBFT là một phiên bản cải tiến của HotStuff, với mục tiêu tăng hiệu suất và độ an toàn.


🎯 Mục tiêu toán học:

Giả sử có tổng cộng n nút trong hệ thống. Ta gọi:

  • f là số nút có thể bị lỗi (Byzantine).

  • Điều kiện đảm bảo đồng thuận là:

    n3f+1n \geq 3f + 1

→ Điều này đảm bảo rằng ít nhất 2f + 1 nút trung thực để đạt được sự đồng thuận.


⚙️ Cơ chế hoạt động đơn giản hóa:

1. Các giai đoạn chính:

HotStuff – và do đó AptosBFT – hoạt động theo vòng lặp 3 bước chính, được gọi là 3-phase commit:

Giai đoạn Tên gọi Diễn giải
1 Prepare Lãnh đạo (leader) đề xuất một block mới
2 Pre-commit Các validator phản hồi nếu block hợp lệ
3 Commit Nếu đủ số phản hồi hợp lệ, block được chấp nhận

2. Điều kiện toán học để chấp nhận:

Ở mỗi giai đoạn, ít nhất 2f + 1 validator phải ký tên vào block → tạo thành một quorum certificate (QC).

→ Đảm bảo rằng ít nhất 1 nút trung thực luôn nằm trong nhóm ký block → tránh các fork mâu thuẫn.


💡 AptosBFT cải tiến gì so với HotStuff?

a. Pipelining (xử lý song song):

Cho phép nhiều block được xử lý cùng lúc ở các giai đoạn khác nhau → tăng throughput.

b. Decoupling Safety & Liveness:

AptosBFT phân chia logic an toàn và tiến triển rõ ràng → dễ kiểm soát & mở rộng.


🧮 Ví dụ trực quan:

Giả sử có n = 7 nút → chịu được tối đa f = 2 nút bị lỗi.

→ Mỗi giai đoạn phải thu thập ít nhất 2f + 1 = 5 chữ ký.

Quy trình:

  1. Leader đề xuất block A.
  2. Nếu 5 nút (trong đó có ít nhất 3 nút trung thực) phản hồi → tạo QC(A).
  3. QC này cho phép tiến đến giai đoạn tiếp theo và cuối cùng chấp nhận block A.

→ Dù có 2 nút "Byzantine" cố tình gửi sai dữ liệu hoặc giữ im lặng, thuật toán vẫn đạt được đồng thuận đúng.


✅ Tóm tắt bằng công thức:

  • Quorum =

2f+12f + 1

  • Tổng số nút cần có:

n3f+1n \geq 3f + 1

  • Đảm bảo:

    Safety (khoˆng coˊ 2 block maˆu thuaˆ˜n cuˋng được chaˆˊp nhận)Liveness (neˆˊu leader đuˊng, block se˜ được chaˆˊp nhận)\text{Safety (không có 2 block mâu thuẫn cùng được chấp nhận)} \\ \text{Liveness (nếu leader đúng, block sẽ được chấp nhận)}


🧩 Sơ đồ trực quan - Quá trình 3 pha (3-phase commit)

[ Leader đề xuất Block A ] ↓ [ Prepare ] → Gửi block A đến các validator ↓ [ Pre-commit ] → Các validator kiểm tra block A → Nếu hợp lệ, ký tên và gửi lại ↓ [ Commit ] → Nếu nhận đủ 2f+1 chữ ký → Commit block A ↓ [ Decide ] → Block A được ghi nhận là hợp lệ và thêm vào blockchain

🔄 Pipeline version (song song hóa):

Time → B1 →───→───→───→ Commit B2 →───→───→ Commit B3 →───→ Commit ... ... (Prepare)(Pre)(Commit)

🧑‍💻 Mã giả (Pseudocode) - đơn giản hóa

# Giả định: có n nút, f nút có thể lỗi
# Quorum cần thiết: 2f + 1 class Block: def __init__(self, data, parent_qc): self.data = data self.parent_qc = parent_qc self.qc = None # Quorum Certificate sau mỗi giai đoạn class Node: def __init__(self, id, is_byzantine=False): self.id = id self.is_byzantine = is_byzantine self.blockchain = [] def receive_block(self, block): if self.is_byzantine: return None # hoặc trả về phản hồi sai if self.verify_block(block): return self.sign(block) return None def sign(self, block): return f"signature_from_{self.id}" def verify_block(self, block): # Kiểm tra block hợp lệ return True class Leader(Node): def propose_block(self, data, parent_qc, validators): block = Block(data, parent_qc) # Phase 1: Prepare print("Prepare: gửi block đến validators") # Phase 2: Pre-commit votes = [] for v in validators: sig = v.receive_block(block) if sig: votes.append(sig) # Kiểm tra quorum if len(votes) >= 2 * f + 1: block.qc = votes print("Commit: block đã có đủ chữ ký") self.commit(block) else: print("Không đủ chữ ký → Hủy block") def commit(self, block): self.blockchain.append(block) print("Block đã được commit vào blockchain")

🔄 Giải thích:

  • Leader tạo block mới dựa trên parent QC.
  • Gửi block cho tất cả validator (Prepare).
  • Validator kiểm tra → ký nếu hợp lệ (Pre-commit).
  • Nếu đủ chữ ký → tạo QC → commit block (Commit).

Bình luận

Bài viết tương tự

- vừa được xem lúc

[Blockchain] Road to Bitcoin

. Chắc mọi người hẳn đã không còn xa lạ gì với anh chàng tỷ phú đã ném vỡ cửa kính ô tô nhà mình cùng với siêu năng lực điều khiển vật giá chỉ bằng lời nói, người đã đẩy định giá Bitcoin trên thị trường vượt ngưỡng 50K dolar/coin với những bài twitter để đời . .

0 0 67

- vừa được xem lúc

Khi Ethereum có chi phí giao dịch quá đắt đỏ - Tương lai cho layer2 ?

Với sự phát triển như vũ bão của Blockchain, ETH dường như đang quá tải và hệ quả là chi phí Gas đã lên đến 1000Gwei, phí để tạo những transaction phức tạp đã xấp xỉ 500$ . Và một giải pháp cứu cánh cho các sản phẩm Defi trên ETH chính là Layer2, và trong nhiệm vụ lần này Matic đang thể hiện khả năn

0 0 95

- vừa được xem lúc

Blockchain với Java - Tại sao không?

Cuộc cách mạng công nghiệp 4.0 ra đời kéo theo nhiều sự thay đổi và xu hướng mới được hình thành. Riêng đối với lĩnh vực CNTT cũng không nằm ngoài vùng ảnh hưởng mạnh mẽ. Chính làn sóng 4.

0 0 104

- vừa được xem lúc

Phân loại và tầm quan trọng của các node trong mạng blockchain

Trước khi đi vào phân loại và nêu rõ được tầm quan trọng của các node trọng mạng blockchain thì mình xin được trích dẫn khái niệm về blockchain từ Wikipedia như sau:. .

0 1 74

- vừa được xem lúc

Code Smart Contract bằng Assembly ?

Introduction. Hồi còn học trong ghế nhà trường bộ môn lập trình tốn nhiều não nhất của mình là code assembly. Nôm na thì bất cứ ngôn ngữ bậc cao nào như C , Go, Java,... được sinh ra để người dễ hiểu và dễ code , tuy nhiên chúng đều sẽ được compiled down xuống assembly một ngôn ngữ bậc thấp để máy h

0 0 65

- vừa được xem lúc

Dextool - Công cụ phân tích Decentralized Exchange tuyệt vời

. Trend Defi mặc dù đã bớt nhiệt nhưng những sản phẩm nổi bật của làn sóng này mang lại thì vẫn rất được người dùng ưa chuộng. Đặc biệt là các nền tảng Decentralized Exchange, tiêu biểu là Uniswap, SushiSwap, 1inch Exchange, FalconSwap,... Nhưng khi đã sử dụng các nền tảng DEx này mà không biết đến

0 0 115