HAL против Graph можно рассматривать более широко как: При моделировании "вычислений" мы используем - Поверхностное встраивание (пишем это непосредственно на языке хоста) или - Глубокое встраивание (кодируем это как структуру данных)? 🧵
От поверхностного к глубокому, есть несколько проектных моментов: 1. Прямое внедрение на Rust / C++ 2. Встроенный DSL внутри языка-хоста 3. Совершенно новый специализированный язык Каждый шаг обменивает удобство на структуру и анализируемость.
В ZK недостаточно просто выполнить вычисление — мы также должны перевести его в ограничения. Поэтому большинство систем доказательства уже склоняются к (2) или (3): - Circom, PIL/PIL2 → пользовательские языки ограничений + компиляторы - Plonky2 → каждая ячейка определяет несколько семантических функций
Plonky3 идет дальше с помощью свойства AirBuilder: один и тот же код может оценивать свидетелей, вычислять остатки проверяющего и выводить полиномы ограничений. Многие zkVM (SP1, Hypercube, OpenVM) используют Plonky3; Zisk основан на PIL2. Это показывает четкую тенденцию к глубоким, графоподобным представлениям вычислений.
1,81K