Дослідження мов програмування ZK

Початківець12/24/2023, 3:04:47 PM
У цій статті розглянуто область застосування різних мов програмування ZK, а також їхні переваги та недоліки.

Докази з нульовими знаннями (ZKP) - потужний криптографічний інструмент, який може підтвердити точність обчислень, захищаючи при цьому конфіденційність вхідних даних. Мови специфікації домену (DSL) відіграють важливу роль як частина цієї ключової інфраструктури, спрощуючи процес розробки та верифікації ZKP-схем. Вони виступають важливим мостом між абстрактними концепціями та точним представленням схем, необхідним для систем доказів.

Однією з ключових проблем, з якою стикаються системи доведення, є переклад абстрактних концепцій високого рівня в практичні схеми. Однак поява DSL вирішила цю проблему, полегшивши структурування цих абстрактних концепцій більш конкретним і здійсненним способом, тим самим вирішуючи цю проблему.

Протягом останнього десятиріччя ми спостерігали значне збільшення кількості та різноманітності мов опису цифрових схем. Ця жвавість у галузі проявляється у розробці різних мов цифрових схем, включаючи Noir, Leo та Zinc. Чи вам потрібна універсальна опція, як Circom, чи індивідуальне рішення для конкретної платформи, таке як Cairo, ви можете вибрати з численних мов та фреймворків для написання цифрових схем ZKP.

У цій статті ми дослідимо основні мови програмування ZK, які активно використовуються розробниками, та проаналізуємо найкращі функції кожної мови.

Каїр від StarkWare

Каїр - це основна мова для загальних програм обчислень, які підтримують докази STARK. Вона відіграла ключову роль у успіху StarkNet та StarkEx, сприяючи масштабованості застосунків на головній мережі Ethereum. Зокрема, Каїр був інструментальним у підтримці різноманітних застосунків, включаючи dYdX, Sorare та Immutable X. Назва «Каїр» походить від абревіатури «CPU Algebraic Intermediate Representation». У сфері доказів про нульове знання вона працює подібно до мови асемблера, що дозволяє розробникам, знайомим з мовами програмування низького рівня, такими як C, C++ або Solidity, почати роботу легше.

Інспірований Rust, Cairo надає розробникам можливість створювати розумні контракти Starknet з фокусом на безпеку та користувацький розвиток. Cairo має потужний синтаксис, який спрощує створення ZK-схем, що дозволяє користувачам виконувати різні завдання в межах програм Cairo. Крім того, однією з значущих переваг Cairo є його масштабованість, що дозволяє гнучку інтеграцію нових функцій та можливостей.

У системах ZK ефективність та масштабованість є важливими факторами, і Каїр відповідає цим вимогам, підкреслюючи обидва. Мова інтегрує стратегії оптимізації, включаючи зменшення обмежень та елімінацію петель, для полегшення обчислювального навантаження, яке зазвичай пов'язується з ZK-схемами. Оптимізація у дизайні схем призводить до швидшого створення та верифікації доказів, роблячи його ідеальним вибором для застосувань, що вимагають високої продуктивності та мінімальної затримки.

Розширення та розвиток Каїра були помітними, спостерігаючи надзвичайний підйом у кількості повноцінних розробників протягом останніх двох років. Цей вибух підкреслює адаптивність Каїра, оскільки його використання не обмежується блокчейном, але є значущим в будь-якому контексті, що вимагає обчислювальної перевірки. Таким чином, ми можемо передбачити подальший значний зріст у кількості розробників, які приймають Каїр.

28 вересня 2023 року Starknet запустив велике оновлення своєї мови програмування з Cairo v2.3.0. Ця версія є значним кроком у роботі контрактів більш модульними завдяки впровадженню нових функцій, опцій зберігання та керування подіями, що підвищує потенціал смарт-контрактів. Інтеграція цих компонентів пропонує гнучкий спосіб розширення функціональності контрактів, дозволяючи стороннім модулям покращити функціональність контрактів.

Цинк від ZkSync

Цинк - мова програмування, спеціально розроблена для створення смарт-контрактів та SNARK-схем на платформі zkSync. Вона використовує синтаксис Rust, інтегрує елементи Solidity і пропонує унікальні функціональні можливості.

Унікальність цинку полягає в його дружелюбності до користувачів. Ви можете писати безпечний код, не занурюючись в усі складні деталі системи обмежень першого порядку (R1CS). Цинк підкреслює незмінність, наділяючи її вродженими функціональними характеристиками. Це означає, що вона надає перевагу незмінним даним та оцінці функцій, тим самим зменшуючи побічні ефекти та сприяючи написанню чистішого, менш помилкового коду розумного контракту.

Крім того, Zinc включає безпечні математичні операції для запобігання можливих переповнень, що забезпечує безпеку всіх операцій. Незважаючи на деякі обмеження, такі як відсутність нескінчених циклів та рекурсії, Zinc спрощує процес налагодження за допомогою відстеження консольних журналів. Ці журнали дозволяють легше відстежувати та вирішувати транзакційні проблеми на тестових мережах або основній мережі, тим самим покращуючи досвід налагодження.

Noir By Aztec

Noir, мова програмування з відкритим вихідним кодом, розроблена Aztec на основі Rust, спрямована на спрощення створення ZK-схем та ZK-програм без необхідності глибоких знань з криптографії. Вважається однією з найбільш доступних мов для написання ZK-застосунків, сумісних з будь-якою системою підтвердження. Noir акцентує увагу на безпеці, простоті та продуктивності, пропонуючи синтаксис на високому рівні, схожий на Rust. Він абстрагує криптографічну безпеку, спрощуючи використання криптографічних примітивів, зберігаючи при цьому високу продуктивність.

Noir має значні переваги у розширенні спектру застосувань, які можуть використовувати можливості захисту конфіденційності, що пропонує ZKP, тим самим підвищуючи конфіденційність та ефективність верифікації. Це компілюється в проміжне представлення, що називається Проміжне Представлення Абстрактного Ланцюга (Acer), яке потім може бути подальше скомпільоване в R1CS. Розділення системи доведення з backend від самої мови дозволяє Noir підтримувати різні системи доведення, включаючи Aztec Brettenberg, Turbo Plonk, та потенційні майбутні інтеграції, такі як Groth16 та Halo2.

Мова включає стандартну бібліотеку з ефективними функціями, такими як SHA-256 (криптографічна хеш-функція, що виробляє вихідні дані фіксованого розміру) і перевірки Педерсена-Меркла (техніка криптографічної верифікації з використанням зобов'язань Педерсена і дерев Меркла для забезпечення цілісності та узгодженості даних). Дизайн Noir, схожий на Rust, охоплює знайомі функції для розробників додатків, такі як функції, підмодулі, визначені користувачем типи (структури), умовні оператори, цикли та глобальні константи. Крім того, постійно докладаються зусилля для розробки узагальнень і першокласних функцій для подальшого підвищення виразності нуару.

Важливо зазначити, що Noir все ще розвивається, і може мати потенційні обмеження та помилки. Однак розробницька команда зобов'язана до постійного вдосконалення та оптимізації.

o1js від 0(1) Labs

o1js, раніше відома як SnarkyJS, - це бібліотека TypeScript, розроблена 0(1) Labs для створення смарт-контрактів з використанням мови програмування SNARK. Вона повністю використовує встановлені технології, такі як Node.js та сумісність з браузером, для забезпечення легкого доступу та зручності для розробників.

o1js безшовно інтегрується з бібліотеками та інструментами JavaScript та TypeScript, забезпечуючи розробникам міцну екосистему та широку підтримку спільноти. Ця інтеграція спрощує процес розробки та зменшує криву вивчення, пов'язану з упровадженням нових середовищ розробки. Крім того, вона повністю підтримує Visual Studio Code (VS Code), широко використовуваний редактор коду, що дозволяє розробникам повністю використовувати функції, такі як автодоповнення коду, підсвічування синтаксису та налагодження, щоб покращити досвід розробки.

Основним чином, o1js є багатофункціональним ZK фреймворком, що пропонує ключові інструменти, необхідні для створення ZK доведень. Він підтримує різноманітні ZK програми, що охоплюють різноманітні вбудовані доведені операції, такі як базова арифметика, хешування, підписання, булеві операції, порівняння та інше. З фреймворком o1js ви можете створювати zkApps на протоколі Mina, ці смарт-контракти виконуються на стороні клієнта з приватними вхідними даними.

Значно, на початку вересня 2023 року, команда 0(1) Labs оголосила про перехід від SnarkyJS до o1js, підкреслюючи свою зобов'язаність до покращення продуктивності. Особливо варто відзначити їх досягнення у зменшенні часу завантаження бібліотеки в 3-4 рази, що стосується часу, необхідного для імпорту o1js, процес, який може блокувати головний потік. Для веб-додатків час завантаження має вирішальне значення для часу виконання JavaScript та загальної відтворення сторінки. Крім того, команда також оновила Mina zkApp CLI, покращуючи досвід побудови користувацького інтерфейсу, та оголосила про подальше вдосконалення Archive Node API для підвищення його надійності та зрозумілості.

Leo від Aleo

Блокчейн Aleo виділяється в галузі смарт-контрактів з великим акцентом на захист конфіденційності. У його основі - мова програмування Leo, статично типізована мова, натхненна Rust. Спеціально розроблений для створення приватних додатків, Leo підтримує творців, які мають на меті побудувати безпечні та конфіденційні децентралізовані екосистеми. Те, що дійсно відрізняє Leo, - це його провідна роль у впровадженні всеосяжного набору інструментів для універсальних додатків з нульовим знанням. Цей набір включає в себе тестовий фреймворк, реєстр пакетів, парсер імпорту, віддалений компілятор та генератор теорем.

Концепція Leo виникає з команди розробників під керівництвом Говарда Ву, які уявляють систему, яка надає розробникам можливість будувати децентралізовані додатки з пріоритетом конфіденційності та безпеки. Використовуючи принципи Rust, дизайн Leo також включає елементи, схожі на JavaScript, що сприяє відчуттю знайомства та легкості під час процесу розробки. Більше того, Leo має на меті прискорити та оптимізувати розробку, пропонуючи інтегровану платформу тестування, реєстр пакунків та конвертер імпорту. Ця інтеграція дозволяє розробникам зосередитися на основній логіці своїх додатків, не занурюючись в інфраструктурні питання.

Однією з відмітних особливостей Leo є його компілятор, який перетворює програми в формат доказу низького рівня R1CS. Унікальність компілятора Leo полягає в його суворому процесі формальної верифікації. Ця верифікація є критичною, оскільки вразливості можуть виникнути на кількох етапах, від початкового програмування до аудиту та компіляції. Проводячи суворі математичні перевірки для забезпечення відповідності компілятора інтенціям програміста, Leo має на меті мінімізувати ризик невиявлених помилок або потенційних вразливостей, особливо в контекстах L2, ZK-rollups або приватних програм на платформі Leo.

Circom від iden3

Circom, мова специфікації домена (DSL), яку дотримуються при розробці ZK-схем, є результатом спільної роботи Хорді Байліни та команди iden3. Компілятор Circom, написаний на Rust, в першу чергу призначений для компіляції схем, розроблених з використанням мови Circom. Слід відзначити, що Circom вибором номер один для видатних ZK-застосувань у реальному світі, таких як Dark Forest та Tornado Cash. Його популярність зумовлена імпресивною продуктивністю, яка включає швидкість доказів у браузері за допомогою оптимізованих доказів WASM, ефективні докази на сервері через rapidsnark та ефективну перевірку на ланцюжку.

Однак важливо розуміти, що функціональність Circom в основному спрямована на розробку ZK схем, що може зробити його менш придатним для більш широких обчислювальних завдань. Розробники, які шукають більш універсальні можливості для задоволення широкого спектру потреб у розробці, можуть вважати, що здатності Circom дещо обмежені. У таких випадках розробники можуть потребувати інтеграції інших мов програмування або фреймворків для виконання більш комплексних вимог до розробки.


Джерело зображення: Circom

Сумісність Circom в першу чергу спрямована на широко використовувані системи Zero-Knowledge Proof (ZKP), такі як snarkjs та libsnark. Ця сумісність забезпечує безшовну інтеграцію з цими часто використовуваними системами, але також означає, що схеми Circom успадковують конкретні функції та обмеження, пов'язані з цими залежностями. Розробники, які віддають перевагу або потребують альтернативних систем ZKP, можуть зіткнутися з проблемами сумісності або потребувати додаткових зусиль для адаптації та інтеграції схем, створених Circom, в їхні системи за їхнім вибором.

Чатайте у Lurk Lab

Lurk - це діалект статичної області видимості Ліспу, що має впливи Scheme та Common Lisp, з унікальною функцією: він дозволяє безпосередньо доводити правильність виконання програми за допомогою zk-SNARKs, що дозволяє компактну та ефективну верифікацію. Основні використання Lurk включають:

Перевірка обчислень: Lurk дозволяє доводити правильність своїх виразів в умовах нульового розголошення, підвищуючи довіру до результатів обчислень.

Нуль знань: Користувачі можуть доводити знання, не розкриваючи конкретну інформацію за межами публічного входу, таким чином захищаючи конфіденційність.

Дані з адресацією вмісту: Кожна програма Lurk обладнана унікальним ідентифікатором вмісту (CID), що робить її сумісною з IPFS та IPLD.

Повнота Тюрінга: Lurk підтримує створення та доведення довільних обчислювальних операторів.

Функції вищих порядків: Функції Lurk можуть приймати та повертати інші функції, що сприяє виразному функціональному програмуванню.

Обчислення з приватними даними: Lurk дозволяє обробляти приватні дані, забезпечуючи доведено правильний вивід без витоку конфіденційної інформації.

При побудові загальнопризначених ланцюгів Lurk широко використовує алокатор пам'яті "cons" Lisp, який поєднує вирази та генерує посилання за допомогою хешування. Ключ полягає в доведенні того, що два вирази дійсно хешуються в одне посилання. Ця перевірка дозволяє Lurk виконувати обчислення в межах ланцюгів snark.

Функціональність Lurk дуже різноманітна, включаючи підтримку нескінченної рекурсії, цикли, умовне керування потоком та кілька систем підтвердження на задньому плані, таких як Groth16, SnarkPack+ та Nova. Ця універсальність відкриває двері для різноманітних застосувань, включаючи перевірку обчислень, обробку приватних даних та виконання програм, що є повністю тьюрінг-повними в межах snark-схем.

Висновок

З ростом різноманітності застосувань ZK перспективи для DSL в області ZK широкі. Ключ до успіху DSL полягає в створенні процвітаючої спільноти та багатої бібліотеки для збагачення досвіду розробників. Ті DSL, які надають перевагу сумісності з існуючими бібліотеками, можуть повністю використовувати знання та ресурси широкої спільноти розробників. Цей підхід допомагає у більш гладкій інтеграції, прискорює розвиток та надає більшу гнучкість у впровадженні застосувань ZK. Такі спільні зусилля мають вирішальне значення для створення більш міцного екосистеми навколо DSL, надаючи конкретні переваги розробникам та подальше підвищення прийняття та ефективності технології ZK.

Disclaimer:

  1. Ця стаття була роздрукована з [Gatepanewslab]. Усі авторські права належать оригінальному автору [ScalingX]. Якщо є заперечення стосовно цього повторного видання, будь ласка, зв'яжіться з командою Gate Learn, і вони оперативно вирішать це.
  2. Відмова від відповідальності: Погляди та думки, висловлені в цій статті, належать виключно автору і не є жодною інвестиційною порадою.
  3. Переклади статей на інші мови виконуються командою Gate Learn. Якщо не зазначено інше, копіювання, поширення або плагіатування перекладених статей заборонено.

Дослідження мов програмування ZK

Початківець12/24/2023, 3:04:47 PM
У цій статті розглянуто область застосування різних мов програмування ZK, а також їхні переваги та недоліки.

Докази з нульовими знаннями (ZKP) - потужний криптографічний інструмент, який може підтвердити точність обчислень, захищаючи при цьому конфіденційність вхідних даних. Мови специфікації домену (DSL) відіграють важливу роль як частина цієї ключової інфраструктури, спрощуючи процес розробки та верифікації ZKP-схем. Вони виступають важливим мостом між абстрактними концепціями та точним представленням схем, необхідним для систем доказів.

Однією з ключових проблем, з якою стикаються системи доведення, є переклад абстрактних концепцій високого рівня в практичні схеми. Однак поява DSL вирішила цю проблему, полегшивши структурування цих абстрактних концепцій більш конкретним і здійсненним способом, тим самим вирішуючи цю проблему.

Протягом останнього десятиріччя ми спостерігали значне збільшення кількості та різноманітності мов опису цифрових схем. Ця жвавість у галузі проявляється у розробці різних мов цифрових схем, включаючи Noir, Leo та Zinc. Чи вам потрібна універсальна опція, як Circom, чи індивідуальне рішення для конкретної платформи, таке як Cairo, ви можете вибрати з численних мов та фреймворків для написання цифрових схем ZKP.

У цій статті ми дослідимо основні мови програмування ZK, які активно використовуються розробниками, та проаналізуємо найкращі функції кожної мови.

Каїр від StarkWare

Каїр - це основна мова для загальних програм обчислень, які підтримують докази STARK. Вона відіграла ключову роль у успіху StarkNet та StarkEx, сприяючи масштабованості застосунків на головній мережі Ethereum. Зокрема, Каїр був інструментальним у підтримці різноманітних застосунків, включаючи dYdX, Sorare та Immutable X. Назва «Каїр» походить від абревіатури «CPU Algebraic Intermediate Representation». У сфері доказів про нульове знання вона працює подібно до мови асемблера, що дозволяє розробникам, знайомим з мовами програмування низького рівня, такими як C, C++ або Solidity, почати роботу легше.

Інспірований Rust, Cairo надає розробникам можливість створювати розумні контракти Starknet з фокусом на безпеку та користувацький розвиток. Cairo має потужний синтаксис, який спрощує створення ZK-схем, що дозволяє користувачам виконувати різні завдання в межах програм Cairo. Крім того, однією з значущих переваг Cairo є його масштабованість, що дозволяє гнучку інтеграцію нових функцій та можливостей.

У системах ZK ефективність та масштабованість є важливими факторами, і Каїр відповідає цим вимогам, підкреслюючи обидва. Мова інтегрує стратегії оптимізації, включаючи зменшення обмежень та елімінацію петель, для полегшення обчислювального навантаження, яке зазвичай пов'язується з ZK-схемами. Оптимізація у дизайні схем призводить до швидшого створення та верифікації доказів, роблячи його ідеальним вибором для застосувань, що вимагають високої продуктивності та мінімальної затримки.

Розширення та розвиток Каїра були помітними, спостерігаючи надзвичайний підйом у кількості повноцінних розробників протягом останніх двох років. Цей вибух підкреслює адаптивність Каїра, оскільки його використання не обмежується блокчейном, але є значущим в будь-якому контексті, що вимагає обчислювальної перевірки. Таким чином, ми можемо передбачити подальший значний зріст у кількості розробників, які приймають Каїр.

28 вересня 2023 року Starknet запустив велике оновлення своєї мови програмування з Cairo v2.3.0. Ця версія є значним кроком у роботі контрактів більш модульними завдяки впровадженню нових функцій, опцій зберігання та керування подіями, що підвищує потенціал смарт-контрактів. Інтеграція цих компонентів пропонує гнучкий спосіб розширення функціональності контрактів, дозволяючи стороннім модулям покращити функціональність контрактів.

Цинк від ZkSync

Цинк - мова програмування, спеціально розроблена для створення смарт-контрактів та SNARK-схем на платформі zkSync. Вона використовує синтаксис Rust, інтегрує елементи Solidity і пропонує унікальні функціональні можливості.

Унікальність цинку полягає в його дружелюбності до користувачів. Ви можете писати безпечний код, не занурюючись в усі складні деталі системи обмежень першого порядку (R1CS). Цинк підкреслює незмінність, наділяючи її вродженими функціональними характеристиками. Це означає, що вона надає перевагу незмінним даним та оцінці функцій, тим самим зменшуючи побічні ефекти та сприяючи написанню чистішого, менш помилкового коду розумного контракту.

Крім того, Zinc включає безпечні математичні операції для запобігання можливих переповнень, що забезпечує безпеку всіх операцій. Незважаючи на деякі обмеження, такі як відсутність нескінчених циклів та рекурсії, Zinc спрощує процес налагодження за допомогою відстеження консольних журналів. Ці журнали дозволяють легше відстежувати та вирішувати транзакційні проблеми на тестових мережах або основній мережі, тим самим покращуючи досвід налагодження.

Noir By Aztec

Noir, мова програмування з відкритим вихідним кодом, розроблена Aztec на основі Rust, спрямована на спрощення створення ZK-схем та ZK-програм без необхідності глибоких знань з криптографії. Вважається однією з найбільш доступних мов для написання ZK-застосунків, сумісних з будь-якою системою підтвердження. Noir акцентує увагу на безпеці, простоті та продуктивності, пропонуючи синтаксис на високому рівні, схожий на Rust. Він абстрагує криптографічну безпеку, спрощуючи використання криптографічних примітивів, зберігаючи при цьому високу продуктивність.

Noir має значні переваги у розширенні спектру застосувань, які можуть використовувати можливості захисту конфіденційності, що пропонує ZKP, тим самим підвищуючи конфіденційність та ефективність верифікації. Це компілюється в проміжне представлення, що називається Проміжне Представлення Абстрактного Ланцюга (Acer), яке потім може бути подальше скомпільоване в R1CS. Розділення системи доведення з backend від самої мови дозволяє Noir підтримувати різні системи доведення, включаючи Aztec Brettenberg, Turbo Plonk, та потенційні майбутні інтеграції, такі як Groth16 та Halo2.

Мова включає стандартну бібліотеку з ефективними функціями, такими як SHA-256 (криптографічна хеш-функція, що виробляє вихідні дані фіксованого розміру) і перевірки Педерсена-Меркла (техніка криптографічної верифікації з використанням зобов'язань Педерсена і дерев Меркла для забезпечення цілісності та узгодженості даних). Дизайн Noir, схожий на Rust, охоплює знайомі функції для розробників додатків, такі як функції, підмодулі, визначені користувачем типи (структури), умовні оператори, цикли та глобальні константи. Крім того, постійно докладаються зусилля для розробки узагальнень і першокласних функцій для подальшого підвищення виразності нуару.

Важливо зазначити, що Noir все ще розвивається, і може мати потенційні обмеження та помилки. Однак розробницька команда зобов'язана до постійного вдосконалення та оптимізації.

o1js від 0(1) Labs

o1js, раніше відома як SnarkyJS, - це бібліотека TypeScript, розроблена 0(1) Labs для створення смарт-контрактів з використанням мови програмування SNARK. Вона повністю використовує встановлені технології, такі як Node.js та сумісність з браузером, для забезпечення легкого доступу та зручності для розробників.

o1js безшовно інтегрується з бібліотеками та інструментами JavaScript та TypeScript, забезпечуючи розробникам міцну екосистему та широку підтримку спільноти. Ця інтеграція спрощує процес розробки та зменшує криву вивчення, пов'язану з упровадженням нових середовищ розробки. Крім того, вона повністю підтримує Visual Studio Code (VS Code), широко використовуваний редактор коду, що дозволяє розробникам повністю використовувати функції, такі як автодоповнення коду, підсвічування синтаксису та налагодження, щоб покращити досвід розробки.

Основним чином, o1js є багатофункціональним ZK фреймворком, що пропонує ключові інструменти, необхідні для створення ZK доведень. Він підтримує різноманітні ZK програми, що охоплюють різноманітні вбудовані доведені операції, такі як базова арифметика, хешування, підписання, булеві операції, порівняння та інше. З фреймворком o1js ви можете створювати zkApps на протоколі Mina, ці смарт-контракти виконуються на стороні клієнта з приватними вхідними даними.

Значно, на початку вересня 2023 року, команда 0(1) Labs оголосила про перехід від SnarkyJS до o1js, підкреслюючи свою зобов'язаність до покращення продуктивності. Особливо варто відзначити їх досягнення у зменшенні часу завантаження бібліотеки в 3-4 рази, що стосується часу, необхідного для імпорту o1js, процес, який може блокувати головний потік. Для веб-додатків час завантаження має вирішальне значення для часу виконання JavaScript та загальної відтворення сторінки. Крім того, команда також оновила Mina zkApp CLI, покращуючи досвід побудови користувацького інтерфейсу, та оголосила про подальше вдосконалення Archive Node API для підвищення його надійності та зрозумілості.

Leo від Aleo

Блокчейн Aleo виділяється в галузі смарт-контрактів з великим акцентом на захист конфіденційності. У його основі - мова програмування Leo, статично типізована мова, натхненна Rust. Спеціально розроблений для створення приватних додатків, Leo підтримує творців, які мають на меті побудувати безпечні та конфіденційні децентралізовані екосистеми. Те, що дійсно відрізняє Leo, - це його провідна роль у впровадженні всеосяжного набору інструментів для універсальних додатків з нульовим знанням. Цей набір включає в себе тестовий фреймворк, реєстр пакетів, парсер імпорту, віддалений компілятор та генератор теорем.

Концепція Leo виникає з команди розробників під керівництвом Говарда Ву, які уявляють систему, яка надає розробникам можливість будувати децентралізовані додатки з пріоритетом конфіденційності та безпеки. Використовуючи принципи Rust, дизайн Leo також включає елементи, схожі на JavaScript, що сприяє відчуттю знайомства та легкості під час процесу розробки. Більше того, Leo має на меті прискорити та оптимізувати розробку, пропонуючи інтегровану платформу тестування, реєстр пакунків та конвертер імпорту. Ця інтеграція дозволяє розробникам зосередитися на основній логіці своїх додатків, не занурюючись в інфраструктурні питання.

Однією з відмітних особливостей Leo є його компілятор, який перетворює програми в формат доказу низького рівня R1CS. Унікальність компілятора Leo полягає в його суворому процесі формальної верифікації. Ця верифікація є критичною, оскільки вразливості можуть виникнути на кількох етапах, від початкового програмування до аудиту та компіляції. Проводячи суворі математичні перевірки для забезпечення відповідності компілятора інтенціям програміста, Leo має на меті мінімізувати ризик невиявлених помилок або потенційних вразливостей, особливо в контекстах L2, ZK-rollups або приватних програм на платформі Leo.

Circom від iden3

Circom, мова специфікації домена (DSL), яку дотримуються при розробці ZK-схем, є результатом спільної роботи Хорді Байліни та команди iden3. Компілятор Circom, написаний на Rust, в першу чергу призначений для компіляції схем, розроблених з використанням мови Circom. Слід відзначити, що Circom вибором номер один для видатних ZK-застосувань у реальному світі, таких як Dark Forest та Tornado Cash. Його популярність зумовлена імпресивною продуктивністю, яка включає швидкість доказів у браузері за допомогою оптимізованих доказів WASM, ефективні докази на сервері через rapidsnark та ефективну перевірку на ланцюжку.

Однак важливо розуміти, що функціональність Circom в основному спрямована на розробку ZK схем, що може зробити його менш придатним для більш широких обчислювальних завдань. Розробники, які шукають більш універсальні можливості для задоволення широкого спектру потреб у розробці, можуть вважати, що здатності Circom дещо обмежені. У таких випадках розробники можуть потребувати інтеграції інших мов програмування або фреймворків для виконання більш комплексних вимог до розробки.


Джерело зображення: Circom

Сумісність Circom в першу чергу спрямована на широко використовувані системи Zero-Knowledge Proof (ZKP), такі як snarkjs та libsnark. Ця сумісність забезпечує безшовну інтеграцію з цими часто використовуваними системами, але також означає, що схеми Circom успадковують конкретні функції та обмеження, пов'язані з цими залежностями. Розробники, які віддають перевагу або потребують альтернативних систем ZKP, можуть зіткнутися з проблемами сумісності або потребувати додаткових зусиль для адаптації та інтеграції схем, створених Circom, в їхні системи за їхнім вибором.

Чатайте у Lurk Lab

Lurk - це діалект статичної області видимості Ліспу, що має впливи Scheme та Common Lisp, з унікальною функцією: він дозволяє безпосередньо доводити правильність виконання програми за допомогою zk-SNARKs, що дозволяє компактну та ефективну верифікацію. Основні використання Lurk включають:

Перевірка обчислень: Lurk дозволяє доводити правильність своїх виразів в умовах нульового розголошення, підвищуючи довіру до результатів обчислень.

Нуль знань: Користувачі можуть доводити знання, не розкриваючи конкретну інформацію за межами публічного входу, таким чином захищаючи конфіденційність.

Дані з адресацією вмісту: Кожна програма Lurk обладнана унікальним ідентифікатором вмісту (CID), що робить її сумісною з IPFS та IPLD.

Повнота Тюрінга: Lurk підтримує створення та доведення довільних обчислювальних операторів.

Функції вищих порядків: Функції Lurk можуть приймати та повертати інші функції, що сприяє виразному функціональному програмуванню.

Обчислення з приватними даними: Lurk дозволяє обробляти приватні дані, забезпечуючи доведено правильний вивід без витоку конфіденційної інформації.

При побудові загальнопризначених ланцюгів Lurk широко використовує алокатор пам'яті "cons" Lisp, який поєднує вирази та генерує посилання за допомогою хешування. Ключ полягає в доведенні того, що два вирази дійсно хешуються в одне посилання. Ця перевірка дозволяє Lurk виконувати обчислення в межах ланцюгів snark.

Функціональність Lurk дуже різноманітна, включаючи підтримку нескінченної рекурсії, цикли, умовне керування потоком та кілька систем підтвердження на задньому плані, таких як Groth16, SnarkPack+ та Nova. Ця універсальність відкриває двері для різноманітних застосувань, включаючи перевірку обчислень, обробку приватних даних та виконання програм, що є повністю тьюрінг-повними в межах snark-схем.

Висновок

З ростом різноманітності застосувань ZK перспективи для DSL в області ZK широкі. Ключ до успіху DSL полягає в створенні процвітаючої спільноти та багатої бібліотеки для збагачення досвіду розробників. Ті DSL, які надають перевагу сумісності з існуючими бібліотеками, можуть повністю використовувати знання та ресурси широкої спільноти розробників. Цей підхід допомагає у більш гладкій інтеграції, прискорює розвиток та надає більшу гнучкість у впровадженні застосувань ZK. Такі спільні зусилля мають вирішальне значення для створення більш міцного екосистеми навколо DSL, надаючи конкретні переваги розробникам та подальше підвищення прийняття та ефективності технології ZK.

Disclaimer:

  1. Ця стаття була роздрукована з [Gatepanewslab]. Усі авторські права належать оригінальному автору [ScalingX]. Якщо є заперечення стосовно цього повторного видання, будь ласка, зв'яжіться з командою Gate Learn, і вони оперативно вирішать це.
  2. Відмова від відповідальності: Погляди та думки, висловлені в цій статті, належать виключно автору і не є жодною інвестиційною порадою.
  3. Переклади статей на інші мови виконуються командою Gate Learn. Якщо не зазначено інше, копіювання, поширення або плагіатування перекладених статей заборонено.
即刻开始交易
注册并交易即可获得
$100
和价值
$5500
理财体验金奖励!