ZK Language Survey: Noir, o1js, Circom, Leo, Cairo, Lurk

Введение

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

Система проверки[5] — это метод или соглашение, которое позволяет одной стороне доказать обоснованность заявления или претензии другой стороне, не раскрывая никакой конфиденциальной информации. Он включает в себя набор правил и процедур, которые позволяют проверяющему убедить проверяющего в истинности определенного утверждения, такого как правильность расчета или обладание определенными знаниями, не раскрывая никаких скрытых секретов или данных.

Однако системы доказательств не могут напрямую иметь дело с высокоуровневыми концепциями. Вместо этого они должны быть преобразованы в схемы, представляющие желаемые свойства. Этот переход от высокоуровневых концепций к схемам сопряжен с определенными трудностями. Здесь в игру вступает язык схем. Языки схем решают эту проблему, предоставляя структурированный и формальный способ выражения высокоуровневых идей.

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

TLDR;

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

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

**– **Цирк**[7] ** – Предназначен для разработки схем ZKP. Обеспечивая точность и ясность, его функции в основном сосредоточены на этой конкретной области.

– Leo – Предоставляет удобную среду для разработчиков. Используется формально проверенная архитектура компилятора с акцентом на раннее обнаружение и предотвращение ошибок.

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

Lurk – Решает ограничения традиционных SNARK, используя Lisp для реализации общей схемы.

Глоссарий

Поскольку мы будем касаться технических концепций, вот глоссарий некоторых сложных терминов, с которыми вы можете столкнуться в последующих текстах:

Abstract Circuit Intermediate Representation (Acer) :* Промежуточное представление схемы ZK, используемое в Noir, которое может быть скомпилировано в систему ограничений первого порядка (R1CS).

Пользовательские вентили:** Специализированные логические вентили, предназначенные для эффективных и безопасных криптографических операций в цепях ZK.

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

Проверка Педерсена-Меркла: Используя методы криптографической проверки Обещания Педерсена и дерева Меркла, можно проверить целостность и согласованность данных.

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

Continuation Passing Style (CPS) :* метод программирования, который разбивает процесс оценки на управляемые шаги для единообразного и эффективного выполнения.

Элементы поля :* элементы конечного математического поля, обычно используемые в криптографических схемах и вычислениях.

Черный

Чёрный[9] — это предметно-ориентированный язык (DSL), разработанный компанией Aztec для упрощения создания ZK-схем и ZK-программ без необходимости обширных знаний криптографии или для того, чтобы стать криптографом. Его основная цель — дать возможность разработчикам с любым опытом писать схемы ZK (с нулевым разглашением). Приоритетом Noir является безопасность, простота и производительность. Он предоставляет высокоуровневый, похожий на Rust синтаксис, который абстрагирует криптографическую безопасность и упрощает использование криптографических примитивов, сохраняя при этом высокую производительность.

Возможности масштабирования с помощью ZK Proof

Одним из преимуществ Noir является то, что он имеет потенциал для расширения диапазона приложений, которые могут использовать преимущества функций сохранения конфиденциальности, предоставляемых ZK proofs. Эти подтверждения повышают конфиденциальность и обеспечивают эффективную проверку. Noir компилируется в промежуточное представление, называемое Abstract Circuit Intermediate Representation (Acer), которое в дальнейшем может быть скомпилировано в систему ограничений под названием R1CS (range one constraint). Такое отделение серверной системы доказательств от языка позволяет 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, а также логические и побитовые операторы. Дженерики и функции первого порядка активно разрабатываются для дальнейшего расширения выразительных возможностей Noir.

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

o1js

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

Интеграции

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

Поддержка VS Code

Он обеспечивает поддержку 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 добавляет дополнительную уверенность и снижает вероятность непреднамеренных отклонений от ожидаемого поведения программы.

В дополнение к языку и компилятору, Leo предлагает множество инструментов и функций для разработчиков. Эти компоненты призваны усовершенствовать процесс разработки, упростить задачи и повысить эффективность. Опираясь на семилетний опыт и наблюдая за эволюцией экосистемы Ethereum, команда Leo стремится обеспечить удобную для пользователя среду, аналогичную эволюции таких инструментов, как обозреватели, фреймворки развертывания, такие как Truffle и Ganache, и других ресурсов, которые упрощают разработку и тестирование приложений.

Каир

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

Эффективность и масштабируемость

Производительность является ключевым фактором в системе ZK. Cairo решает эту проблему, уделяя особое внимание эффективности и масштабируемости. В языке используются методы оптимизации, такие как уменьшение ограничений и устранение петель, чтобы свести к минимуму вычислительные издержки, связанные со схемами ZKP. Оптимизируя схемотехнику, Cairo обеспечивает более быстрое создание и проверку доказательств для приложений, требующих высокой пропускной способности и низкой задержки.

Функциональная совместимость и интеграция

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

Архитектура процессора Cairo SNARK в одном примере ### Сообщество и экосистема

Каирский проект способствует формированию сообщества разработчиков, исследователей и энтузиастов, которые вносят свой вклад в его развитие. Доступность документации, учебных пособий и примеров кода помогает в процессе адаптации, позволяя разработчикам понять концепции и начать создавать ZK-системы. Кроме того, Cairo извлекает выгоду из более широкой экосистемы StarkWare, которая предоставляет поддержку, инструменты и исследовательские достижения для улучшения языка и его возможностей.

Скрывающийся

Таиться[13] Он направлен на устранение ограничений традиционных SNARK и схем за счет использования Lisp, функционального языка программирования, для реализации схем общего назначения. Используя Lisp, Lurk вводит универсальную функцию под названием "", которая может вычислять любое выражение данных в схеме snark.

Код — это данные, данные — это код

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

Реализация Lisp в SNARK

Чтобы создать схему общего назначения, Lurk использовал "минусы" распределителя памяти Lisp. Распределитель объединяет два выражения и создает ссылку на результирующее выражение путем хэширования. Доказывая, что два выражения хешируются по одной и той же ссылке, Lurk может выполнять вычисления в схеме snark.

Продолжение стиля паса

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

Дает Тьюрингу полноту и рекурсивные способности

Используя Lisp, Lurk достигает полноты по Тьюрингу и поддерживает бесконечную рекурсию в схемах SNARK. Эта важная возможность позволяет доказывать сложные вычисления и реализовывать схемы общего назначения, способные выполнять произвольные вычисления.

Эффекты и приложения

Возможности Lurk имеют далеко идущие последствия. Поддерживая бесконечную рекурсию, циклические и условно управляемые потоки, Lurk позволяет выполнять сложные вычисления в схемах SNARK. Это открывает множество приложений для проверочных вычислений, обработки приватных данных и выполнения полных по Тьюрингу программ.

Заключение

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

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

Обеспечивая совместимость с существующими библиотеками, DSL могут использовать коллективные знания и ресурсы более широкого сообщества разработчиков, обеспечивая более простую интеграцию, более быструю разработку и большую гибкость в реализации приложений ZK. Этот совместный подход будет способствовать развитию более сильной экосистемы вокруг DSL в интересах разработчиков и, в конечном итоге, будет способствовать внедрению и эффективности технологии ZK.

Посмотреть Оригинал
На этой странице может содержаться сторонний контент, который предоставляется исключительно в информационных целях (не в качестве заявлений/гарантий) и не должен рассматриваться как поддержка взглядов компании Gate или как финансовый или профессиональный совет. Подробности смотрите в разделе «Отказ от ответственности» .
  • Награда
  • комментарий
  • Репост
  • Поделиться
комментарий
0/400
Нет комментариев
  • Закрепить