HAL so với Graph có thể được xem xét một cách tổng quát hơn như sau: Khi mô hình hóa "tính toán," chúng ta sử dụng - Nhúng nông (viết trực tiếp trong ngôn ngữ chủ), hay - Nhúng sâu (mã hóa nó dưới dạng cấu trúc dữ liệu)? 🧵
Từ nông đến sâu, có một số điểm thiết kế: 1. Triển khai trực tiếp bằng Rust / C++ 2. DSL nhúng bên trong ngôn ngữ chủ 3. Một ngôn ngữ chuyên biệt hoàn toàn mới Mỗi bước đều đánh đổi sự tiện lợi để lấy cấu trúc và khả năng phân tích.
Trong ZK, chỉ chạy một phép toán là không đủ — chúng ta cũng phải chuyển nó thành các ràng buộc. Vì vậy, hầu hết các hệ thống chứng minh đã nghiêng về (2) hoặc (3): - Circom, PIL/PIL2 → ngôn ngữ ràng buộc tùy chỉnh + trình biên dịch - Plonky2 → mỗi cổng xác định nhiều hàm ngữ nghĩa
Plonky3 tiến xa hơn với đặc điểm AirBuilder: cùng một mã có thể đánh giá nhân chứng, tính toán phần dư xác minh và xuất các đa thức ràng buộc. Nhiều zkVM (SP1, Hypercube, OpenVM) áp dụng Plonky3; Zisk dựa trên PIL2. Điều này cho thấy một xu hướng rõ ràng hướng tới các biểu diễn tính toán sâu, giống như đồ thị.
1,82K