Bỏ qua

Proof of Authority (hierachain/consensus/proof_of_authority.py)

Tổng quan

Proof of Authority (PoA) là giao thức đồng thuận dựa trên định danh, được tối ưu hóa cho nội bộ một Doanh nghiệp / Tổ chức (1 MainChain quản lý các Sub-Chains thuộc các phân khu/tên miền nội bộ). Trong kiến trúc đồng thuận 2 tầng của HieraChain, các đối tượng SubChain mặc định luôn sử dụng PoA để xử lý các sự kiện nghiệp vụ nội bộ với tốc độ cực nhanh (~0ms latency) mà không cần chờ đợi đồng thuận liên tổ chức.

Đối với kịch bản liên kết đồng thuận giữa các MainChain của nhiều doanh nghiệp độc lập, xem Proof of Federation (PoF).


Nguyên lý hoạt động

Giao thức hoạt động dựa trên sự tin tưởng vào danh tính của các nút tham gia: 1. Định danh nút: Mỗi Authority được gán một authority_id và một cặp khóa ký số duy nhất. 2. Lịch trình luân phiên (Round-Robin): Hệ thống sử dụng thuật toán tuần tự để xác định nút nào có quyền tạo khối tiếp theo dựa trên chỉ số khối (BlockIndex % TotalAuthorities). 3. Xác thực chữ ký: Mỗi khối mới phải được ký bởi Authority được chỉ định. Các nút khác sẽ xác thực chữ ký này trước khi chấp nhận khối vào sổ cái.


Các tính năng chính

  • Hiệu năng Đột phá


    Khối được tạo ngay lập tức theo chu kỳ cấu hình (block_interval), phù hợp cho các ứng dụng yêu cầu phản hồi thời gian thực.

  • Quản trị Danh tính


    Hỗ trợ thêm/xóa Authority linh hoạt thông qua API, cho phép thay đổi cấu hình mạng mà không cần dừng hệ thống.

  • Tính Toàn vẹn Tuyệt đối


    Mọi khối đều mang chữ ký số của một tổ chức được xác thực, loại bỏ hoàn toàn rủi ro từ các nút vô danh hoặc giả mạo.


Tham số cấu hình quan trọng

Tham số Ý nghĩa Mặc định
block_interval Khoảng thời gian tối thiểu giữa hai khối. 10.0 giây
max_authorities Số lượng nút Authority tối đa trong mạng. 100
require_signature Bắt buộc phải có chữ ký hợp lệ để chấp nhận khối. True

Ví dụ triển khai

from hierachain.consensus import ProofOfAuthority

# Khởi tạo giao thức PoA
poa = ProofOfAuthority()

# Cấp quyền cho các nút tham gia đồng thuận
poa.add_authority("node_hq", metadata={"org": "Headquarters", "pubkey": "..."})
poa.add_authority("node_branch_1", metadata={"org": "Branch 01", "pubkey": "..."})

# Kiểm tra quyền tạo khối của nút hiện tại
if poa.can_create_block("node_hq"):
    # Tiến hành đóng khối...
    pass

Ưu điểm và Hạn chế

  • Ưu điểm: Tiết kiệm tài nguyên (không cần CPU mạnh để đào), thông lượng cao, quản trị minh bạch.
  • Hạn chế: Tính phi tập trung thấp hơn so với BFT, chỉ phù hợp cho mạng có sự tin tưởng nhất định giữa các thành viên.

Liên quan