Data Schema & Giao thức
Tài liệu này định nghĩa chi tiết cấu trúc dữ liệu (Data Schema) và các giao thức trao đổi thông tin (Protocol) trong HieraChain. Hệ thống sử dụng Apache Arrow làm định dạng lưu trữ và truyền tải chính để đảm bảo hiệu năng cao.
Cấu trúc dữ liệu lõi
HieraChain tuân thủ nghiêm ngặt các định nghĩa Schema sau đây để đảm bảo tính nhất quán trên toàn mạng lưới (Main Chain & Sub Chains).
Event
Event là đơn vị dữ liệu nhỏ nhất, đại diện cho một hành động nghiệp vụ cụ thể.
Schema Definition (hierachain.core.schemas.EVENT_SCHEMA):
| Field Name | Type (Arrow) | Mô tả |
|---|---|---|
entity_id |
string |
Metadata Field. Định danh thực thể chịu tác động (ví dụ: ProductID, OrderID). Lưu ý: Không dùng làm định danh Block. |
event |
string |
Loại sự kiện (ví dụ: CREATED, UPDATED, TRANSFERRED). |
timestamp |
float64 |
Thời điểm xảy ra sự kiện (Unix timestamp). |
details |
map<string, string> |
Các thông tin bổ sung dạng Key-Value (On-chain data). |
details_cid |
string |
IPFS CID. Tham chiếu dữ liệu lớn được lưu off-chain. |
details_nonce |
string |
Encryption Nonce. Khóa giải mã dữ liệu off-chain (dùng cho AES-GCM). |
data |
binary |
Payload dữ liệu chính (thành phần JSON nội bộ, bao gồm cả on-chain và off-chain refs). |
Transaction
Transaction là lớp bao (wrapper) chứa Event cùng với chữ ký số và bằng chứng xác thực (ZK Proof).
Schema Definition (hierachain.core.schemas.TRANSACTION_SCHEMA):
| Field Name | Type (Arrow) | Mô tả |
|---|---|---|
tx_id |
string |
Định danh duy nhất của giao dịch (UUID hoặc Hash). |
entity_id |
string |
Đồng bộ với Event entity_id. |
event_type |
string |
Đồng bộ với Event event. |
arrow_payload |
binary |
Dữ liệu Event đã được serialize theo chuẩn Arrow. |
signature |
string |
Chữ ký số của người tạo giao dịch (Ed25519/ECDSA). |
timestamp |
float64 |
Thời điểm tạo giao dịch. |
zk_proof |
binary |
(Optional) Bằng chứng Zero-Knowledge để xác thực tính đúng đắn mà không lộ dữ liệu. |
zk_public_inputs |
binary |
(Optional) Input công khai đi kèm với ZK Proof. |
Block
Block là tập hợp các Event đã được sắp xếp thứ tự và đóng gói lại.
Block Header Schema:
| Field Name | Type (Arrow) | Mô tả |
|---|---|---|
index |
int64 |
Số thứ tự của Block trong chuỗi (Height). |
timestamp |
float64 |
Thời điểm Block được tạo. |
previous_hash |
string |
Hash SHA-256 của Block liền trước (tạo liên kết chuỗi). |
nonce |
int64 |
Số ngẫu nhiên dùng trong Proof-of-Work (nếu có) hoặc để đảm bảo tính duy nhất. |
merkle_root |
string |
Hash gốc của cây Merkle, đại diện cho toàn bộ Event trong Block. |
hash |
string |
Hash định danh của chính Block này. |
Block Body:
- Chứa danh sách các Event (được lưu dưới dạng
pyarrow.Tableđể tối ưu truy xuất).
Giao thức dòng dữ liệu
Quy trình xử lý dữ liệu từ Client đến khi được lưu vào Chain:
-
Submission (Gửi dữ liệu):
- Client tạo
Event. - SDK đóng gói Event thành
Transaction, ký số (signature) và có thể tạozk_proof. - Gửi
Transactiontới Ordering Service.
- Client tạo
-
Ordering (Sắp xếp):
- Ordering Service nhận Transaction, kiểm tra chữ ký và tính hợp lệ cơ bản.
- Xếp Transaction vào hàng đợi để đảm bảo thứ tự nhất quán.
- Gom nhóm các Transaction thành một lô (Batch) để tạo Block.
-
Consensus & Commit (Đồng thuận & Ghi nhận):
- Node tạo Block mới từ lô Transaction đã sắp xếp.
- Tính toán
Merkle RootvàBlock Hash. - Thực hiện thuật toán đồng thuận (PoA/PoF/BFT) để xác nhận Block.
- Sau khi đồng thuận, Block được thêm vào
MainChainhoặcSubChain. - Trạng thái
World Stateđược cập nhật.
Serialization Standards
- Apache Arrow: Dùng cho lưu trữ nội bộ (Internal Storage) và truyền tải giữa các Node (Performance).
- JSON: Dùng cho Client API (REST) để dễ dàng tích hợp với Web/Mobile App.
- Protobuf/gRPC: (Tùy chọn) Dùng cho giao tiếp nội bộ giữa các microservices hiệu năng cao.