Sau khi khối hoàn tất trên Sub-Chain, Sub-Chain gửi bằng chứng mã hóa (hash và proof ZK tùy chọn) lên Main Chain. Main Chain chỉ lưu bằng chứng này, không lưu dữ liệu sự kiện thô. Cách này giữ tính bất biến toàn cục mà không lưu dữ liệu nhạy cảm trên chuỗi gốc.
Đây là trigger sau khối, không phải lệnh do người dùng gọi. Nó tự kích hoạt khi chain_length % proof_interval == 0.
Biểu đồ luồng
sequenceDiagram
autonumber
participant SC as 📦 SubChain
participant ZKP as 🔐 ZKProver
participant MC as 🔗 MainChain
SC->>SC: auto_submit_proof_if_needed()
SC->>SC: Kiểm tra: chain length > 1 AND block finalized
alt ZK Proofs Enabled (HRC_ENABLE_ZK_PROOFS=true)
SC->>ZKP: generate_proof(old_state_root, new_state_root, block_index, events)
ZKP->>ZKP: Tính toán bằng chứng (Simulate SHA-256 hoặc mạch ZoKrates)
ZKP-->>SC: ProofResult { proof: bytes, success: bool }
SC->>SC: Thử lại tối đa 3 lần với khoảng chờ tăng dần nếu thất bại
else ZK Proofs Disabled
SC->>SC: zk_proof = None
end
SC->>SC: _generate_default_proof_metadata()
SC->>MC: add_proof(sub_chain_name, proof_hash, metadata, zk_proof)
MC->>MC: Xác thực bằng chứng ZK (nếu bật)
MC->>MC: Lưu khối bằng chứng trên Main Chain
MC-->>SC: True (thành công)
SC->>SC: Ghi nhận sự kiện nội bộ proof_submitted
SC->>SC: Cập nhật timestamp last_proof_submission
Các bước chi tiết
Bước
Mô tả
1. Kiểm tra kích hoạt
auto_submit_proof_if_needed() kiểm tra len(chain) > 1 và khối đã hoàn tất.
2. Tạo proof ZK
Nếu HRC_ENABLE_ZK_PROOFS=true: ZKProver tính trên (old_state_root, new_state_root, events). Thử lại tối đa 3 lần nếu lỗi.
3. Metadata proof
_generate_default_proof_metadata() tạo { sub_chain_name, block_count, latest_hash, timestamp }.
4. Ghi lên Main Chain
MainChain.add_proof() xác thực proof ZK, rồi nối khối proof mới vào Main Chain.
5. Ghi nhận
Sub-Chain ghi log sự kiện nội bộ proof_submitted và cập nhật last_proof_submission.
Chế độ proof ZK
Chế độ
Cơ chế
Trường hợp dùng
mock
Mô phỏng băm SHA-256
Phát triển / kiểm thử
production
Mạch ZoKrates ZK-SNARKs
Triển khai thực tế
Cấu hình
Cài đặt
Mặc định
Mô tả
HRC_ENABLE_ZK_PROOFS
false
Bật/tắt xác thực ZK
HRC_ZK_MODE
mock
mock hoặc production
HRC_ZK_REQUIRED_MAINCHAIN
false
Chặn gửi proof lên Main Chain nếu ZK lỗi
Xử lý lỗi
Tình huống
Hành vi
Lỗi tạo proof ZK
Thử lại tối đa 3 lần với chờ tăng dần; nếu HRC_ZK_REQUIRED_MAINCHAIN=true thì hủy
Ghi lên Main Chain lỗi
Ghi log exception, không cập nhật last_proof_submission; thử lại ở khối tiếp theo
Xác thực ZK trên Main Chain lỗi
add_proof() ném exception, khối proof không được nối