Доказательство с нулевым разглашением (ZKP) — это мощный криптографический инструмент, который позволяет проверять правильность вычислений, одновременно защищая конфиденциальность входных данных. В рамках этой критически важной инфраструктуры доменно-ориентированные языки (DSL) играют жизненно важную роль в упрощении процесса разработки и проверки схем ZKP. Они играют важную роль в связывании абстрактных концепций с точными представлениями схем, необходимыми для доказательства системы, выступая в качестве важного моста между ними.
Одной из ключевых задач в системах доказательства является перевод абстрактных концепций высокого уровня в реальные схемы. Однако появление DSL решает эту проблему, облегчая структурированное выражение этих абстрактных концепций более конкретным и достижимым способом.
За последнее десятилетие мы стали свидетелями значительного роста количества и разнообразия DSL. Деятельность в этой области находит свое отражение в разработке различных языков схем, в том числе Noir, Leo, Zinc и др. Нужен ли вам вариант общего назначения, например Circcom, или решение, адаптированное для конкретной платформы, например Cairo, вы можете выбирать из широкого спектра языков и фреймворков для написания схем ZKP.
В этой статье мы рассмотрим основные языки программирования ZK, которые активно используют разработчики, и проанализируем лучшие особенности каждого языка.
TLDR;
Каир от StarkWare
Cairo, основной язык для вычислительных программ общего назначения, поддерживающих доказательства STARK, сыграл ключевую роль в успехе StarkNet и StarkEx, обеспечивая масштабируемость приложений в сети Ethereum. Стоит отметить, что Cairo сыграл важную роль в поддержке различных приложений, включая dYdX, Sorare, Immutable X и т. д. Название «Каир» происходит от аббревиатуры «Алгебраическое промежуточное представление ЦП». В области доказательств с нулевым разглашением он играет роль, аналогичную языку ассемблера, облегчая начало работы разработчикам, знакомым с языками программирования низкого уровня, такими как C, C++ или Solidity.
Вдохновленный Rust, Cairo дает разработчикам возможность создавать смарт-контракты Starknet, уделяя особое внимание безопасности и удобству разработки. Cairo имеет мощный синтаксис, который упрощает создание схем ZK и позволяет пользователям выполнять различные задачи в программах Cairo. Кроме того, существенным преимуществом Cairo является его расширяемость, позволяющая гибко внедрять новые функции и возможности.
В системах ZK решающими факторами являются эффективность и масштабируемость, и Cairo отвечает этому требованию, подчеркивая эти два аспекта. Язык объединяет стратегии оптимизации, включая уменьшение ограничений и устранение циклов, чтобы облегчить вычислительную нагрузку, обычно связанную со схемами ZK. Оптимизация конструкции схемы в Cairo приводит к более быстрому созданию и проверке доказательств, что делает его идеальным для приложений, требующих высокой пропускной способности и минимальной задержки.
Расширение Каира было впечатляющим: за последние два года наблюдался невероятный рост числа штатных разработчиков. Этот всплеск подчеркивает адаптивность Каира, поскольку использование Каира не ограничивается блокчейном, но имеет значение в любом контексте, где требуется вычислительная проверка. В результате мы можем ожидать значительного дальнейшего роста внедрения Cairo разработчиками.
28 сентября 2023 года Starknet выпустил важное обновление своего языка программирования Cairo v2.3.0. Этот выпуск знаменует собой важный шаг вперед в том, чтобы сделать контракты более модульными, увеличивая потенциал смарт-контрактов за счет введения новых функций, вариантов хранения и управления событиями. Интеграция этих компонентов обеспечивает гибкий способ расширения функциональности контракта, позволяя сторонним модулям расширять функциональность контракта.
Цинк от ZkSync
Zinc — это язык программирования, предназначенный для создания смарт-контрактов и схем SNARK на платформе zkSync. Он использует синтаксис Rust, включает элементы Solidity и предоставляет уникальные функции.
Что делает Zinc уникальным, так это его удобство для пользователя. Вам не нужно понимать все сложные детали систем ограничений первого порядка (R1CS), чтобы писать безопасный код. Цинк подчеркивает неизменность, делая его по своей сути функциональным. Это означает, что он отдает приоритет неизменяемым данным и оценке функций, тем самым уменьшая побочные эффекты и способствуя написанию более чистого и менее подверженного ошибкам кода смарт-контракта.
Кроме того, Zinc включает безопасные математические операции для предотвращения потенциальных переполнений, обеспечивая безопасность всех операций. Несмотря на некоторые ограничения, такие как отсутствие бесконечных циклов и рекурсии, Zinc упрощает процесс отладки за счет трассировки журнала консоли. Эти трассировки улучшают процесс отладки, упрощая процесс отслеживания и решения проблем в тестовой или основной сети.
Нуар от ацтеков
Noir — это DSL с открытым исходным кодом, разработанный Aztec на основе Rust и предназначенный для упрощения создания схем ZK и программ ZK без глубоких знаний криптографии. Он считается одним из самых простых языков для начала работы и подходит для написания ZK-приложений, совместимых с любой системой доказательств. Noir фокусируется на безопасности, простоте и производительности. Он предоставляет высокоуровневый синтаксис, подобный Rust, который абстрагирует криптографическую безопасность и упрощает использование основных криптографических примитивов, сохраняя при этом высокую производительность.
Noir имеет значительные преимущества в расширении спектра приложений, которые могут использовать возможности защиты конфиденциальности, предоставляемые ZKP, тем самым повышая эффективность конфиденциальности и проверки. Noir компилируется в промежуточное представление, называемое промежуточным представлением абстрактной схемы (Acer), которое затем можно далее скомпилировать в R1CS. Отделение внутренней системы проверки от самого языка позволяет Noir поддерживать различные системы проверки, включая Aztec Brettenberg, Turbo Plonk и потенциальные будущие интеграции, такие как Groth16 и Halo2.
Язык предоставляет стандартную библиотеку, которая включает в себя эффективные функции, такие как SHA-256 (криптографическая хеш-функция, генерирующая выходные данные фиксированного размера) и проверки Педерсена-Меркла (метод, который использует обязательства Педерсена и деревья Меркла для обеспечения целостности данных и шифрования согласованности). технология проверки). Дизайн Noir похож на Rust и включает в себя функции, знакомые разработчикам приложений, такие как функции, подмодули, определяемые пользователем типы (структуры), условные выражения, циклы и глобальные константы. Кроме того, прилагаются постоянные усилия по разработке обобщенных и первоклассных функций для дальнейшего расширения выразительных возможностей Noir.
Следует отметить, что Noir все еще находится в стадии разработки и могут иметь некоторые ограничения и потенциальные ошибки. Но команда разработчиков стремится постоянно улучшать и оптимизировать язык.
o1js от 0(1) Labs
o1js, ранее известная как SnarkyJS, — это библиотека типов, разработанная 0(1)Labs для создания смарт-контрактов с использованием языка программирования SNARK. Он использует признанные технологии, такие как Node.js, и совместимость с браузерами, чтобы обеспечить легкий доступ и простоту использования для разработчиков.
o1js может легко интегрироваться с библиотеками и инструментами Java и TypeScript, предоставляя разработчикам мощную экосистему и широкую поддержку сообщества. Такая интеграция упрощает процесс разработки и сокращает время обучения, связанное с внедрением новой среды разработки. Кроме того, он полностью поддерживает Visual Studio Code (VS Code), широко используемый редактор кода, который позволяет разработчикам в полной мере использовать такие функции, как завершение кода, подсветка синтаксиса и отладка, для улучшения процесса разработки.
o1js — это, по сути, универсальная платформа ZK, которая предоставляет вам ключевые инструменты, необходимые для создания доказательств ZK. Он поддерживает создание разнообразных программ ZK, охватывающих множество встроенных доказуемых операций, включая базовую арифметику, хеширование, подписи, логические операции, сравнения и многое другое. С помощью платформы o1js вы можете создавать zkApps на протоколе Mina — смарт-контракты, которые выполняются на стороне клиента и имеют частные входные данные.
Стоит отметить, что в начале сентября 2023 года команда 0(1)Labs объявила о переходе с SnarkyJS на o1js и подчеркнула свою приверженность повышению производительности. Особо следует отметить, что они добились сокращения времени загрузки библиотеки в 3-4 раза, то есть времени, необходимого для импорта o1js — процесса, который может заблокировать основной поток. Для веб-приложений время загрузки имеет большое значение как для времени выполнения Java, так и для рендеринга всей страницы. Кроме того, команда также обновила CLI Mina zkApp, чтобы улучшить процесс создания пользовательского интерфейса, и объявила о дальнейших улучшениях API узла архива для повышения его надежности и ясности.
Лео от Алео
Блокчейн Aleo уникален в области смарт-контрактов и уделяет особое внимание защите конфиденциальности. В основе лежит язык программирования Leo, статически типизированный язык, вдохновленный Rust. Разработанный специально для разработки частных приложений, Leo расширяет возможности создателей, которые хотят создать безопасную и частную децентрализованную экосистему. Что действительно уникально в Leo, так это его новаторская роль во внедрении комплексного набора инструментов для приложений общего назначения с нулевым разглашением данных. Этот набор инструментов включает в себя среду тестирования, реестр пакетов, анализатор импорта, удаленный компилятор и генератор теорем.
Leo был задуман командой разработчиков во главе с Говардом Ву, который придумал технологию, которая позволит разработчикам создавать децентрализованные приложения, в которых приоритет отдается конфиденциальности и безопасности. Дизайн Лео основан на принципах Rust, но включает в себя некоторые элементы, подобные Java, для повышения удобства и удобства в процессе разработки. Кроме того, Leo стремится ускорить и упростить процесс разработки, предоставляя интегрированную платформу тестирования, реестр пакетов и конвертер импорта. Такая интеграция позволяет разработчикам сосредоточиться на основной логике своих приложений, не отягощая себя проблемами инфраструктуры.
Яркой особенностью Leo является его компилятор, который преобразует программы в низкоуровневый формат доказательства R1CS. Компилятор Leo уникален своим строгим формальным процессом проверки. Эта проверка имеет решающее значение, поскольку уязвимости могут возникнуть на нескольких этапах: от первоначального программирования до аудита и компиляции. Проводя строгие математические проверки, чтобы гарантировать соответствие компилятора намерениям программиста, Leo стремится снизить риск необнаруженных ошибок или потенциальных уязвимостей, особенно в контекстах L2, ZK-коллапах или частных программах на платформе Leo.
Цирк от iden3
Circcom, DSL, специально разработанный для разработки цепей ZK, является результатом совместных усилий Хорди Бэйлина и команды iden3. Компилятор Circcom написан на Rust, и его основная задача — компилировать схемы, написанные на языке Circcom. Примечательно, что Circcom стал предпочтительным выбором для выдающихся реальных приложений ZK, таких как Dark Forest и Tornado Cash. Его популярность обусловлена его превосходной производительностью, включая быстрое время проверки браузера за счет оптимизированных доказательств WASM, эффективных доказательств на стороне сервера с помощью RapidSnark и эффективной проверки в цепочке.
Однако важно понимать, что функциональность Circcom в первую очередь ориентирована на разработку схем ZK, что может сделать его менее подходящим для решения более широкого спектра вычислительных задач. Разработчики, которым нужны дополнительные функции, способные удовлетворить более широкий спектр потребностей разработки, могут обнаружить, что возможности Circom несколько ограничены. В этом случае разработчикам может потребоваться объединить другие языки программирования или платформы для удовлетворения более широких потребностей разработки.
Картинки с сайта Circcom
Совместимость Circcom в основном ориентирована на широко используемые системы ZKP, такие как snarkjs и libsnark. Хотя эта совместимость обеспечивает плавную интеграцию с этими широко используемыми системами, она также означает, что схемы Circcom наследуют определенные возможности и ограничения, связанные с этими зависимостями. Разработчики, которые предпочитают или требуют альтернативную систему ZKP, могут столкнуться с проблемами совместимости или потребовать дополнительной работы по адаптации и интеграции схем, созданных Circom, в предпочитаемую ими систему.
Lurk от Lurk Lab
Lurk — это диалект Lisp со статической областью действия, на который повлияли Scheme и Common Lisp, с уникальной особенностью: он позволяет напрямую доказывать правильность выполнения программы с помощью zk-SNARK, обеспечивая компактную и эффективную проверку.
Основные варианты использования Lurk:
Поддающиеся проверке вычисления: Lurk позволяет вам доказать правильность своих выражений в условиях нулевого разглашения, повышая доверие к результатам вычислений.
Нулевое разглашение: пользователи могут подтверждать свои знания, не раскрывая конкретную информацию, выходящую за пределы публичного доступа, тем самым защищая конфиденциальность.
Данные, адресуемые по содержимому: каждая программа Lurk оснащена уникальным идентификатором контента (CID), что делает ее совместимой с IPFS и IPLD.
Полнота по Тьюрингу: Lurk поддерживает создание и доказательство произвольных вычислительных утверждений.
Функции высшего порядка: функции Lurk могут принимать и возвращать функции, что обеспечивает выразительное функциональное программирование.
Вычисления, обрабатывающие частные данные: Lurk позволяет обрабатывать частные данные, обеспечивая при этом доказуемо правильный вывод без ущерба для конфиденциальности.
Lurk в полной мере использует преимущества «минусов» распределителя памяти Лиспа при построении схем общего назначения. Этот распределитель объединяет выражения и генерирует ссылки через хэши. Ключевым моментом является доказательство того, что два выражения действительно хэшируют одну и ту же ссылку. Эта проверка позволяет Lurk выполнять вычисления внутри схемы снарка.
Lurk очень богат функциональными возможностями, включая поддержку бесконечной рекурсии, циклов, условного потока управления и нескольких систем проверки серверной части, таких как Groth16, SnarkPack+ и Nova. Эта универсальность открывает двери для множества приложений, включая проверочные вычисления, обработку частных данных и выполнение полных по Тьюрингу программ в схемах снарков.
Подведем итог
С увеличением разнообразия приложений ZK у DSL появляются широкие перспективы развития в области ZK. Ключом к успешному DSL является создание процветающего сообщества и богатых библиотек, которые обогатят опыт разработчиков. DSL, в которых приоритет отдается совместимости с существующими библиотеками, могут использовать знания и ресурсы более широкого сообщества разработчиков. Такой подход обеспечивает более плавную интеграцию, ускоряет разработку и обеспечивает большую гибкость при реализации приложений ZK. Эти совместные усилия имеют решающее значение для создания более надежной экосистемы вокруг DSL, обеспечивая ощутимые преимущества разработчикам и будут способствовать дальнейшему внедрению и эффективности технологии ZK.
Посмотреть Оригинал
На этой странице может содержаться сторонний контент, который предоставляется исключительно в информационных целях (не в качестве заявлений/гарантий) и не должен рассматриваться как поддержка взглядов компании Gate или как финансовый или профессиональный совет. Подробности смотрите в разделе «Отказ от ответственности» .
Статья, посвященная языку программирования ZK.
Доказательство с нулевым разглашением (ZKP) — это мощный криптографический инструмент, который позволяет проверять правильность вычислений, одновременно защищая конфиденциальность входных данных. В рамках этой критически важной инфраструктуры доменно-ориентированные языки (DSL) играют жизненно важную роль в упрощении процесса разработки и проверки схем ZKP. Они играют важную роль в связывании абстрактных концепций с точными представлениями схем, необходимыми для доказательства системы, выступая в качестве важного моста между ними.
Одной из ключевых задач в системах доказательства является перевод абстрактных концепций высокого уровня в реальные схемы. Однако появление DSL решает эту проблему, облегчая структурированное выражение этих абстрактных концепций более конкретным и достижимым способом.
За последнее десятилетие мы стали свидетелями значительного роста количества и разнообразия DSL. Деятельность в этой области находит свое отражение в разработке различных языков схем, в том числе Noir, Leo, Zinc и др. Нужен ли вам вариант общего назначения, например Circcom, или решение, адаптированное для конкретной платформы, например Cairo, вы можете выбирать из широкого спектра языков и фреймворков для написания схем ZKP.
В этой статье мы рассмотрим основные языки программирования ZK, которые активно используют разработчики, и проанализируем лучшие особенности каждого языка.
TLDR;
Каир от StarkWare
Cairo, основной язык для вычислительных программ общего назначения, поддерживающих доказательства STARK, сыграл ключевую роль в успехе StarkNet и StarkEx, обеспечивая масштабируемость приложений в сети Ethereum. Стоит отметить, что Cairo сыграл важную роль в поддержке различных приложений, включая dYdX, Sorare, Immutable X и т. д. Название «Каир» происходит от аббревиатуры «Алгебраическое промежуточное представление ЦП». В области доказательств с нулевым разглашением он играет роль, аналогичную языку ассемблера, облегчая начало работы разработчикам, знакомым с языками программирования низкого уровня, такими как C, C++ или Solidity.
Вдохновленный Rust, Cairo дает разработчикам возможность создавать смарт-контракты Starknet, уделяя особое внимание безопасности и удобству разработки. Cairo имеет мощный синтаксис, который упрощает создание схем ZK и позволяет пользователям выполнять различные задачи в программах Cairo. Кроме того, существенным преимуществом Cairo является его расширяемость, позволяющая гибко внедрять новые функции и возможности.
В системах ZK решающими факторами являются эффективность и масштабируемость, и Cairo отвечает этому требованию, подчеркивая эти два аспекта. Язык объединяет стратегии оптимизации, включая уменьшение ограничений и устранение циклов, чтобы облегчить вычислительную нагрузку, обычно связанную со схемами ZK. Оптимизация конструкции схемы в Cairo приводит к более быстрому созданию и проверке доказательств, что делает его идеальным для приложений, требующих высокой пропускной способности и минимальной задержки.
Расширение Каира было впечатляющим: за последние два года наблюдался невероятный рост числа штатных разработчиков. Этот всплеск подчеркивает адаптивность Каира, поскольку использование Каира не ограничивается блокчейном, но имеет значение в любом контексте, где требуется вычислительная проверка. В результате мы можем ожидать значительного дальнейшего роста внедрения Cairo разработчиками.
28 сентября 2023 года Starknet выпустил важное обновление своего языка программирования Cairo v2.3.0. Этот выпуск знаменует собой важный шаг вперед в том, чтобы сделать контракты более модульными, увеличивая потенциал смарт-контрактов за счет введения новых функций, вариантов хранения и управления событиями. Интеграция этих компонентов обеспечивает гибкий способ расширения функциональности контракта, позволяя сторонним модулям расширять функциональность контракта.
Цинк от ZkSync
Zinc — это язык программирования, предназначенный для создания смарт-контрактов и схем SNARK на платформе zkSync. Он использует синтаксис Rust, включает элементы Solidity и предоставляет уникальные функции.
Что делает Zinc уникальным, так это его удобство для пользователя. Вам не нужно понимать все сложные детали систем ограничений первого порядка (R1CS), чтобы писать безопасный код. Цинк подчеркивает неизменность, делая его по своей сути функциональным. Это означает, что он отдает приоритет неизменяемым данным и оценке функций, тем самым уменьшая побочные эффекты и способствуя написанию более чистого и менее подверженного ошибкам кода смарт-контракта.
Кроме того, Zinc включает безопасные математические операции для предотвращения потенциальных переполнений, обеспечивая безопасность всех операций. Несмотря на некоторые ограничения, такие как отсутствие бесконечных циклов и рекурсии, Zinc упрощает процесс отладки за счет трассировки журнала консоли. Эти трассировки улучшают процесс отладки, упрощая процесс отслеживания и решения проблем в тестовой или основной сети.
Нуар от ацтеков
Noir — это DSL с открытым исходным кодом, разработанный Aztec на основе Rust и предназначенный для упрощения создания схем ZK и программ ZK без глубоких знаний криптографии. Он считается одним из самых простых языков для начала работы и подходит для написания ZK-приложений, совместимых с любой системой доказательств. Noir фокусируется на безопасности, простоте и производительности. Он предоставляет высокоуровневый синтаксис, подобный Rust, который абстрагирует криптографическую безопасность и упрощает использование основных криптографических примитивов, сохраняя при этом высокую производительность.
Noir имеет значительные преимущества в расширении спектра приложений, которые могут использовать возможности защиты конфиденциальности, предоставляемые ZKP, тем самым повышая эффективность конфиденциальности и проверки. Noir компилируется в промежуточное представление, называемое промежуточным представлением абстрактной схемы (Acer), которое затем можно далее скомпилировать в R1CS. Отделение внутренней системы проверки от самого языка позволяет Noir поддерживать различные системы проверки, включая Aztec Brettenberg, Turbo Plonk и потенциальные будущие интеграции, такие как Groth16 и Halo2.
Язык предоставляет стандартную библиотеку, которая включает в себя эффективные функции, такие как SHA-256 (криптографическая хеш-функция, генерирующая выходные данные фиксированного размера) и проверки Педерсена-Меркла (метод, который использует обязательства Педерсена и деревья Меркла для обеспечения целостности данных и шифрования согласованности). технология проверки). Дизайн Noir похож на Rust и включает в себя функции, знакомые разработчикам приложений, такие как функции, подмодули, определяемые пользователем типы (структуры), условные выражения, циклы и глобальные константы. Кроме того, прилагаются постоянные усилия по разработке обобщенных и первоклассных функций для дальнейшего расширения выразительных возможностей Noir.
Следует отметить, что Noir все еще находится в стадии разработки и могут иметь некоторые ограничения и потенциальные ошибки. Но команда разработчиков стремится постоянно улучшать и оптимизировать язык.
o1js от 0(1) Labs
o1js, ранее известная как SnarkyJS, — это библиотека типов, разработанная 0(1)Labs для создания смарт-контрактов с использованием языка программирования SNARK. Он использует признанные технологии, такие как Node.js, и совместимость с браузерами, чтобы обеспечить легкий доступ и простоту использования для разработчиков.
o1js может легко интегрироваться с библиотеками и инструментами Java и TypeScript, предоставляя разработчикам мощную экосистему и широкую поддержку сообщества. Такая интеграция упрощает процесс разработки и сокращает время обучения, связанное с внедрением новой среды разработки. Кроме того, он полностью поддерживает Visual Studio Code (VS Code), широко используемый редактор кода, который позволяет разработчикам в полной мере использовать такие функции, как завершение кода, подсветка синтаксиса и отладка, для улучшения процесса разработки.
o1js — это, по сути, универсальная платформа ZK, которая предоставляет вам ключевые инструменты, необходимые для создания доказательств ZK. Он поддерживает создание разнообразных программ ZK, охватывающих множество встроенных доказуемых операций, включая базовую арифметику, хеширование, подписи, логические операции, сравнения и многое другое. С помощью платформы o1js вы можете создавать zkApps на протоколе Mina — смарт-контракты, которые выполняются на стороне клиента и имеют частные входные данные.
Стоит отметить, что в начале сентября 2023 года команда 0(1)Labs объявила о переходе с SnarkyJS на o1js и подчеркнула свою приверженность повышению производительности. Особо следует отметить, что они добились сокращения времени загрузки библиотеки в 3-4 раза, то есть времени, необходимого для импорта o1js — процесса, который может заблокировать основной поток. Для веб-приложений время загрузки имеет большое значение как для времени выполнения Java, так и для рендеринга всей страницы. Кроме того, команда также обновила CLI Mina zkApp, чтобы улучшить процесс создания пользовательского интерфейса, и объявила о дальнейших улучшениях API узла архива для повышения его надежности и ясности.
Лео от Алео
Блокчейн Aleo уникален в области смарт-контрактов и уделяет особое внимание защите конфиденциальности. В основе лежит язык программирования Leo, статически типизированный язык, вдохновленный Rust. Разработанный специально для разработки частных приложений, Leo расширяет возможности создателей, которые хотят создать безопасную и частную децентрализованную экосистему. Что действительно уникально в Leo, так это его новаторская роль во внедрении комплексного набора инструментов для приложений общего назначения с нулевым разглашением данных. Этот набор инструментов включает в себя среду тестирования, реестр пакетов, анализатор импорта, удаленный компилятор и генератор теорем.
Leo был задуман командой разработчиков во главе с Говардом Ву, который придумал технологию, которая позволит разработчикам создавать децентрализованные приложения, в которых приоритет отдается конфиденциальности и безопасности. Дизайн Лео основан на принципах Rust, но включает в себя некоторые элементы, подобные Java, для повышения удобства и удобства в процессе разработки. Кроме того, Leo стремится ускорить и упростить процесс разработки, предоставляя интегрированную платформу тестирования, реестр пакетов и конвертер импорта. Такая интеграция позволяет разработчикам сосредоточиться на основной логике своих приложений, не отягощая себя проблемами инфраструктуры.
Яркой особенностью Leo является его компилятор, который преобразует программы в низкоуровневый формат доказательства R1CS. Компилятор Leo уникален своим строгим формальным процессом проверки. Эта проверка имеет решающее значение, поскольку уязвимости могут возникнуть на нескольких этапах: от первоначального программирования до аудита и компиляции. Проводя строгие математические проверки, чтобы гарантировать соответствие компилятора намерениям программиста, Leo стремится снизить риск необнаруженных ошибок или потенциальных уязвимостей, особенно в контекстах L2, ZK-коллапах или частных программах на платформе Leo.
Цирк от iden3
Circcom, DSL, специально разработанный для разработки цепей ZK, является результатом совместных усилий Хорди Бэйлина и команды iden3. Компилятор Circcom написан на Rust, и его основная задача — компилировать схемы, написанные на языке Circcom. Примечательно, что Circcom стал предпочтительным выбором для выдающихся реальных приложений ZK, таких как Dark Forest и Tornado Cash. Его популярность обусловлена его превосходной производительностью, включая быстрое время проверки браузера за счет оптимизированных доказательств WASM, эффективных доказательств на стороне сервера с помощью RapidSnark и эффективной проверки в цепочке.
Однако важно понимать, что функциональность Circcom в первую очередь ориентирована на разработку схем ZK, что может сделать его менее подходящим для решения более широкого спектра вычислительных задач. Разработчики, которым нужны дополнительные функции, способные удовлетворить более широкий спектр потребностей разработки, могут обнаружить, что возможности Circom несколько ограничены. В этом случае разработчикам может потребоваться объединить другие языки программирования или платформы для удовлетворения более широких потребностей разработки.
Совместимость Circcom в основном ориентирована на широко используемые системы ZKP, такие как snarkjs и libsnark. Хотя эта совместимость обеспечивает плавную интеграцию с этими широко используемыми системами, она также означает, что схемы Circcom наследуют определенные возможности и ограничения, связанные с этими зависимостями. Разработчики, которые предпочитают или требуют альтернативную систему ZKP, могут столкнуться с проблемами совместимости или потребовать дополнительной работы по адаптации и интеграции схем, созданных Circom, в предпочитаемую ими систему.
Lurk от Lurk Lab
Lurk — это диалект Lisp со статической областью действия, на который повлияли Scheme и Common Lisp, с уникальной особенностью: он позволяет напрямую доказывать правильность выполнения программы с помощью zk-SNARK, обеспечивая компактную и эффективную проверку.
Основные варианты использования Lurk:
Lurk в полной мере использует преимущества «минусов» распределителя памяти Лиспа при построении схем общего назначения. Этот распределитель объединяет выражения и генерирует ссылки через хэши. Ключевым моментом является доказательство того, что два выражения действительно хэшируют одну и ту же ссылку. Эта проверка позволяет Lurk выполнять вычисления внутри схемы снарка.
Lurk очень богат функциональными возможностями, включая поддержку бесконечной рекурсии, циклов, условного потока управления и нескольких систем проверки серверной части, таких как Groth16, SnarkPack+ и Nova. Эта универсальность открывает двери для множества приложений, включая проверочные вычисления, обработку частных данных и выполнение полных по Тьюрингу программ в схемах снарков.
Подведем итог
С увеличением разнообразия приложений ZK у DSL появляются широкие перспективы развития в области ZK. Ключом к успешному DSL является создание процветающего сообщества и богатых библиотек, которые обогатят опыт разработчиков. DSL, в которых приоритет отдается совместимости с существующими библиотеками, могут использовать знания и ресурсы более широкого сообщества разработчиков. Такой подход обеспечивает более плавную интеграцию, ускоряет разработку и обеспечивает большую гибкость при реализации приложений ZK. Эти совместные усилия имеют решающее значение для создания более надежной экосистемы вокруг DSL, обеспечивая ощутимые преимущества разработчикам и будут способствовать дальнейшему внедрению и эффективности технологии ZK.