HAL vs Graph można ogólnie postrzegać jako: Podczas modelowania „obliczeń” używamy - Płytkiego osadzenia (piszemy to bezpośrednio w języku gospodarza), czy - Głębokiego osadzenia (kodujemy to jako strukturę danych)? 🧵
Od płytkiego → głębokiego, istnieje kilka punktów projektowych: 1. Bezpośrednia implementacja w Rust / C++ 2. Wbudowany DSL w języku gospodarza 3. Całkowicie nowy, wyspecjalizowany język Każdy krok wymienia wygodę na strukturę i analizowalność.
W ZK nie wystarczy przeprowadzić obliczeń — musimy również przetłumaczyć je na ograniczenia. Dlatego większość systemów dowodzenia już skłania się ku (2) lub (3): - Circom, PIL/PIL2 → niestandardowe języki ograniczeń + kompilatory - Plonky2 → każda bramka definiuje wiele funkcji semantycznych
Plonky3 idzie dalej z cechą AirBuilder: ten sam kod może oceniać świadków, obliczać reszty weryfikatora i dumpować wielomiany ograniczeń. Wiele zkVM (SP1, Hypercube, OpenVM) przyjmuje Plonky3; Zisk oparty jest na PIL2. To pokazuje wyraźny trend w kierunku głębokich, przypominających grafy reprezentacji obliczeń.
1,8K