HAL vs Graph può essere visto più in generale come: Quando modifichiamo la "computazione", utilizziamo - Shallow Embedding (scriverlo direttamente nel linguaggio host), o - Deep Embedding (codificarlo come una struttura dati)? 🧵
Da superficiale → profondo, ci sono diversi punti di design: 1. Implementazione diretta in Rust / C++ 2. DSL incorporato all'interno del linguaggio host 3. Un linguaggio specializzato completamente nuovo Ogni passo scambia comodità per struttura e analizzabilità.
In ZK, non è sufficiente eseguire un calcolo: dobbiamo anche tradurlo in vincoli. Quindi, la maggior parte dei sistemi di prova tende già verso (2) o (3): - Circom, PIL/PIL2 → linguaggi di vincolo personalizzati + compilatori - Plonky2 → ogni porta definisce più funzioni semantiche
Plonky3 va oltre con il tratto AirBuilder: lo stesso codice può valutare testimoni, calcolare i residui del verificatore e scaricare i polinomi di vincolo. Molti zkVM (SP1, Hypercube, OpenVM) adottano Plonky3; Zisk si basa su PIL2. Questo mostra una chiara tendenza verso rappresentazioni di calcolo profonde e simili a grafi.
1,79K