Мовне опитування ZK: Noir, o1js, Circom, Leo, Cairo, Lurk

Вступ

Доведення предметно-специфічної мови (DSL) з нульовим розголошенням (ZK).[4] відіграє важливу роль у цій сфері. За своєю суттю докази ZK вирішують проблему доведення існування певних атрибутів у секретних даних без розкриття будь-якої додаткової інформації. Однак перетворення високорівневих ідей у конкретні докази може бути складним завданням. Саме тут у гру вступають DSL, які поєднують абстрактні концепції з представленням схем, необхідних для доказу існування системи.

Система доказів[5] – це метод або угода, яка дозволяє одній стороні довести обґрунтованість заяви або претензії іншій стороні без розкриття будь-якої конфіденційної інформації. Він включає в себе набір правил і процедур, які дозволяють тому, хто перевіряє, переконати перевіряючого в істинності певного твердження, наприклад, в правильності обчислень або володінні певними знаннями, не розкриваючи при цьому ніяких основних секретів або даних.

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

За останнє десятиліття спостерігається значне збільшення кількості та різноманітності мов округів. Розвиток багатьох мов схем, таких як нуар, каїр[6] і Лев, що вказує на те, наскільки активним є поле. Таке поширення мов дозволяє нам порівнювати і протиставляти їх характеристики, подібності та відмінності. Всебічне вивчення цих мов забезпечує більш глибоке розуміння загального ландшафту мови схем.

TLDR;

Нуар – розроблений компанією Aztec, він абстрагує складність криптографії та дозволяє розробникам будь-якого походження писати схеми ZK.

– o1js – Бібліотека типу, розроблена O(1) Labs. Дозволяє розробникам писати смарт-контракти. Добре інтегрується з існуючими бібліотеками та інструментами Java та Type.

**– **Circom**[7] ** – Призначений для розробки схем ЗКП. Забезпечуючи точність і ясність, його особливості в основному орієнтовані саме на цю область.

– Leo – Забезпечує зручне середовище для розробників. Використовується формально перевірена архітектура компілятора з акцентом на раннє виявлення та запобігання помилкам.

**–**Каїр**[8] ** – Акцент на ефективності та масштабованості. Сумісність підтримується за допомогою стандартних інтерфейсів, які можна інтегрувати з блокчейн-платформами, смарт-контрактами та офчейн-системами.

Lurk – вирішує обмеження традиційних SNARK, використовуючи Lisp для реалізації загальної схеми.

Глосарій

Оскільки ми торкнемося технічних понять, ось глосарій деяких складних термінів, з якими ви можете зіткнутися в наступних текстах:

Абстрактне проміжне представлення схеми (Acer) :* Проміжне представлення схеми ZK, що використовується Noir, яка може бути скомпільована в систему обмежень першого порядку (R1CS).

• Спеціальні вентилі: Спеціалізовані логічні вентилі, призначені для ефективних і безпечних криптографічних операцій в ланцюгах ZK.

• SHA-256: криптографічна хеш-функція, яка приймає вхідні дані та видає вихідні дані фіксованого розміру.

Перевірка Педерсена-Меркла: Використовуючи методи криптографічної верифікації Pedersen Promise і Merkle Tree, можна перевірити цілісність і узгодженість даних.

• Повнота Тюрінга: властивість обчислювальної системи, яка може емулювати машину Тюрінга і бути здатною вирішити будь-яку обчислювану задачу з достатнім часом і ресурсами.

Continuation Passing Style (CPS) :* техніка програмування, яка розбиває процес оцінювання на керовані кроки для рівномірного та ефективного виконання.

Польові елементи :* елементи скінченного математичного поля, зазвичай використовуються в криптографічних схемах і розрахунках.

Чорний

Чорний[9] — це доменно-специфічна мова (DSL), розроблена компанією Aztec для спрощення створення схем ZK і програм ZK без необхідності глибоких знань криптографії або для того, щоб стати криптографом. Його головна мета – дати можливість розробникам з будь-яким бекграундом писати схеми ZK (zero-knowledge). Noir надає пріоритет безпеці, простоті та продуктивності. Він забезпечує високорівневий синтаксис, подібний до Rust, який абстрагує криптографічну безпеку та спрощує використання криптографічних примітивів, зберігаючи при цьому високу продуктивність.

Можливості масштабування за допомогою ZK Proof

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

Оптимізація та стандартна бібліотека

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

! [](https://img-cdn.gateio.im/webp-social/moments-40baef27dd-627b2da8eb-dd1a6f-cd5cc0.webp "! [Графіка, що показує граматику мови нуар»)

Графіка, що показує синтаксис мови нуар### Навички організації коду та презентації

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

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

o1js

o1js[10] — це бібліотека Type, розроблена (0)1Labs для написання смарт-контрактів з використанням мови програмування Snark. Він використовує існуючі відкриті технології, такі як Node .js та браузери, щоб зробити його більш доступним та зручним для розробників. Спираючись на Type, o1js дозволяє розробникам використовувати свої існуючі знання про бібліотеки та інструменти Java та Type.

Інтеграції

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

Підтримка VS коду

Він забезпечує підтримку Visual Studio Code (VS Code), популярного редактора коду. Розробники можуть скористатися такими функціями, як доповнення коду, підсвічування синтаксису та налагодження, щоб покращити загальний досвід розробки.

Стандартна бібліотека

O1JS надає всеосяжну стандартну бібліотеку, яка включає основні типи, такі як елементи домену, un-64, un-32, публічні ключі, приватні ключі та підписи. Ці типи мають вбудовані методи, які спрощують обробку схем шифрування, необов'язкових даних, булевих значень та еліптичних кривих.

Цирку

Circom, скорочення від Circuit Compiler, — це потужна предметно-специфічна мова (DSL), призначена для розробки схем доказу з нульовим розголошенням (ZKP), створена Джорді Балиною та командою iden3.

Визначення експресивної схеми

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

Обмеження обсягу

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

Пояснення того, як працює Circom. ### Інструменти та обмеження екосистеми

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

Міркування щодо сумісності

Сумісність Circom в основному зосереджена на популярних системах доказу з нульовим розголошенням, таких як snarkjs і libsnark. Хоча це дозволяє йому легко інтегруватися з цими системами, він також вводить залежності від їх специфічних функцій і обмежень. Розробники, які віддають перевагу або потребують інших систем ZKP, можуть зіткнутися з проблемами сумісності або вимагати додаткових зусиль для адаптації та інтеграції схем, згенерованих Circom, у свої улюблені системи.

Лев

Лев[11] — це мова програмування, спеціально розроблена для розробки додатків для доказу з нульовим розголошенням. Він спрямований на забезпечення зручного середовища для розробників, особливо тих, хто має попередній досвід роботи з екосистемою блокчейну. LEO схожий на Rust і має деякі Java-подібні елементи, призначені для створення знайомства та зручності в розробці додатків.

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

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

На додаток до мови та компілятора, Leo пропонує різноманітні інструменти та функції досвіду розробника. Ці компоненти покликані покращити процес розробки, спростити завдання та підвищити ефективність. Спираючись на семирічний досвід і спостерігаючи за еволюцією екосистеми Ethereum, команда Leo прагне створити зручне середовище, подібне до еволюції таких інструментів, як провідники, фреймворки розгортання, такі як Truffle і Ganache, та інших ресурсів, які спрощують розробку та тестування додатків.

Каїр

Каїр[12] Надає синтаксис, що спрощує процес побудови схем ЗКП. Черпаючи натхнення з традиційних мов програмування, Cairo дозволяє розробникам використовувати свої існуючі навички програмування при проектуванні систем ZK. Завдяки своєму декларативному підходу Cairo дозволяє нормалізувати логічні твердження та обчислення, полегшуючи представлення реальних сценаріїв у контексті доказів з нульовим розголошенням.

Ефективність та масштабованість

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

Сумісність та інтеграція

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

Архітектура процесора Cairo SNARK в одному прикладі ### Спільнота та екосистема

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

Причаївся

Ховаються[13] Він спрямований на вирішення обмежень традиційних SNARK і схем шляхом використання Lisp, функціональної мови програмування, для реалізації схем загального призначення. Використовуючи Lisp, Lurk вводить загальну функцію під назвою "", яка може обчислювати будь-який вираз даних у схемі снарка.

Код - це дані, дані - це код

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

Впровадження Lisp в SNARKs

Щоб створити схему загального призначення, Лурк використав «мінуси» розподільника пам'яті Lisp. Розподільник об'єднує два вирази і генерує посилання на результуючий вираз за допомогою хешування. Доводячи, що два вирази хешуються до одного і того ж посилання, Lurk може виконувати обчислення в ланцюзі снарка.

Продовження прохідного стилю

Lurk використовує стиль проходження безперервності (Continuity Passing Style, CPS), який розбиває процес оцінювання на керовані кроки. Кожен етап оцінки перетворюється на оброблюваний розрахунок, що забезпечує рівномірне та ефективне виконання. Включення явних продовжень в схеми SNARK допомагає крок за кроком пройти процес оцінки.

Надає Тюрінгу повноту та рекурсивні здібності

Використовуючи Lisp, Лурк досягає повноти Тюрінга і підтримує нескінченну рекурсію в схемах SNARK. Ця важлива можливість дозволяє доводити складні обчислення і реалізовувати схеми загального призначення, здатні виконувати довільні обчислення.

Ефекти та додатки

Можливості Лурка мають широкі наслідки. Підтримуючи нескінченну рекурсію, циклічність і умовно контрольовані потоки, Lurk дозволяє виконувати складні обчислення в схемах SNARK. Це відкриває безліч додатків для перевірочних розрахунків, обробки приватних даних і виконання програм, повних за Тюрінгом.

Висновок

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

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

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

Переглянути оригінал
Ця сторінка може містити контент третіх осіб, який надається виключно в інформаційних цілях (не в якості запевнень/гарантій) і не повинен розглядатися як схвалення його поглядів компанією Gate, а також як фінансова або професійна консультація. Див. Застереження для отримання детальної інформації.
  • Нагородити
  • Прокоментувати
  • Поділіться
Прокоментувати
0/400
Немає коментарів
  • Закріпити