HAL vs Graph voidaan tarkastella yleisemmin seuraavasti: Mallintaessa "laskentaa" käytetäänkö - Shallow Embedding (kirjoita suoraan isäntäkielellä), tai - Syvä upotus (koodataan se tietorakenteena)? 🧵
Matalasta → syvään on useita suunnittelupisteitä: 1. Suora toteutus Rustissa / C++:ssa 2. Upotettu DSL isäntäkielen sisällä 3. Täysin uusi erikoistunut kieli Jokainen vaihe vaihtaa mukavuuden rakenteeseen ja analysoitavuuteen.
ZK:ssa pelkkä laskennan suorittaminen ei riitä — meidän täytyy myös kääntää se rajoitteiksi. Useimmat todistusjärjestelmät kallistuvat jo kohti (2) tai (3): - Circom, PIL/PIL2 → mukautetut rajoitekielet + kääntäjät - Plonky2 → jokainen portti määrittelee useita semanttisia funktioita
Plonky3 menee pidemmälle AirBuilder-ominaisuuden kanssa: sama koodi voi arvioida todistajia, laskea varmennusjäännöksiä ja dumpata rajoitepolynomeja. Monet zkVM:t (SP1, Hypercube, OpenVM) käyttävät Plonky3:a; Zisk perustuu PIL2:een. Tämä osoittaa selkeää suuntausta kohti syvällisiä, graafimaisia laskennan esityksiä.
1,8K