Đồng thuận và sắp thứ tự
Mục đích
Phần này mô tả cơ chế consensus và Ordering Service mà HieraChain dùng để giữ block và event được sắp xếp, toàn vẹn và có thể xác minh.
Kiến trúc & khái niệm
- Base Consensus:
hierachain/consensus/base_consensus.pyđịnh nghĩa giao diện cơ sở cho PoA và PoF; BFT dùng API riêng. - Proof of Authority (PoA):
hierachain/consensus/proof_of_authority.pyxử lý đồng thuận trong một organization, một MainChain quản lý các Sub-Chain nội bộ. - Proof of Federation (PoF):
hierachain/consensus/proof_of_federation.pytriển khai thành viên liên minh, xác thực leader luân phiên và chữ ký leader để tích hợp trong consortium; xác thực khối thông thường không thu thập phiếu quorum nhiều bên. - BFT Consensus:
hierachain/consensus/bft/chứa triển khai riêng. Luồng runtime của MainChain và SubChain dùng PoA hoặc PoF. - Ordering Service:
hierachain/consensus/ordering/sắp xếp event trước khi tạo block và gồm nhiều thành phần (Processor, Certifier, BlockBuilder).
Luồng điển hình
sequenceDiagram
participant SC as Sub-Chain
participant OS as Ordering Service
participant C as Consensus (PoA/PoF)
participant MC as Main Chain
SC->>OS: 1. Submit Event
OS->>OS: Queue & Batch
OS->>OS: 2. Build block and assign index/link
OS->>C: Finalize block
C-->>OS: Finalized block
OS->>OS: Sign header, persist and enqueue
SC->>OS: get_next_block()
OS-->>SC: Persisted block
SC->>SC: 3. Validate/add unchanged block and update state
SC->>MC: 4. Submit proof (Sub-Chain block hash)
MC-->>SC: Acknowledge
- Sub-Chain nhận event và đẩy vào hàng đợi của Ordering Service.
- Ordering Service gom sự kiện theo ngưỡng kích thước và thời gian, tạo block, gọi bộ hoàn tất đồng thuận đã cấu hình, ký header và lưu block trước khi đưa vào hàng đợi.
- Consumer của Sub-Chain xác minh và áp dụng block đã lưu, giữ nguyên index, hash và chữ ký. Sub-Chain mặc định dùng PoA, hoặc PoF khi được cấu hình.
- Khi bật neo bằng chứng lên Main Chain, Sub-Chain gửi bằng chứng chứa hash của block mới nhất để Main Chain ghi nhận.
Cấu hình
Các biến trong hierachain/config/settings.py:
CONSENSUS_TYPE:proof_of_authority(mặc định) hoặcproof_of_federation.BFT_ENABLED: lớpSettingskhai báo thuộc tính này, nhưng nó không chọn cơ chế đồng thuận cho MainChain hay SubChain. Đây không phải biến môi trường.VALIDATOR_TIMEOUT: timeout validator được khai báo và xuất qua helper settings; nó không cấu hình bộ hẹn giờ view change của BFT.CONSENSUS_FEDERATION_CONFIG: các mặc định liên minh được khai báo; hàm khởi tạo MainChain/SubChain hiện không áp dụng dictionary này vào PoF. Cấu hình instance đồng thuận thực tế nhất quán giữa các nút.
Ví dụ môi trường:
Tính năng & hạn chế
- PoA tin cậy các authority đã đăng ký. Throughput phụ thuộc vào gom lô, đồng bộ journal và storage.
- PoF cân bằng giữa tin cậy và phân tán, nhưng cần quản lý thành viên liên minh.
- Triển khai BFT nằm trong
hierachain/consensus/bft/và tách khỏi luồng runtime của MainChain và SubChain. - Ordering giữ thứ tự event và việc gom batch ổn định trước khi đóng block.
Liên quan
- Kiến trúc tổng quan: Tổng quan
- Hierarchical module: Hierarchical
- Data Models: Data Models
- Config: Config