Изучение языков программирования ZK

Новичок12/24/2023, 3:04:47 PM
Эта статья представляет область применения разных языков программирования ZK, а также их преимущества и недостатки.

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

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

За последнее десятилетие мы стали свидетелями значительного увеличения количества и разнообразия Языков описания цифровых систем (DSL). Эта активность в сфере очевидна в развитии различных языков схемотехники, включая Noir, Leo и Zinc. Независимо от того, нужен вам универсальный вариант, такой как Circom, или настраиваемое решение для конкретной платформы, такой как Cairo, у вас есть возможность выбора из множества языков и фреймворков для написания цифровых схем с нулевым разглашением (ZKP).

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

Каир от StarkWare

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

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

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

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

28 сентября 2023 года Starknet запустил крупное обновление своего языка программирования с Cairo v2.3.0. Эта версия является значительным прорывом в создании контрактов более модульными путем введения новых функций, вариантов хранения и управления событиями, что повышает потенциал смарт-контрактов. Интеграция этих компонентов предлагает гибкий способ расширения функциональности контрактов, позволяя сторонним модулям улучшать функциональность контрактов.

Цинк от ZkSync

Zinc - это язык программирования, специально разработанный для создания смарт-контрактов и SNARK-цепей на платформе zkSync. Он использует синтаксис Rust, интегрирует элементы Solidity и предлагает уникальные функциональные возможности.

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

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

Noir By Aztec

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

Noir имеет значительные преимущества в расширении спектра приложений, которые могут использовать возможности защиты конфиденциальности, предлагаемые ZKP, тем самым повышая уровень конфиденциальности и эффективность верификации. Он компилируется в промежуточное представление, называемое Abstract Circuit Intermediate Representation (Acer), которое затем может быть дополнительно скомпилировано в R1CS. Отделение системы доказательства рабочего процесса от самого языка позволяет Noir поддерживать различные системы доказательства, включая Aztec Brettenberg, Turbo Plonk, и потенциальные будущие интеграции, такие как Groth16 и Halo2.

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

Важно отметить, что 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, улучшив процесс создания пользовательского интерфейса, и объявила о дальнейших улучшениях API Archive Node для повышения его надежности и ясности.

Лео от 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 и эффективную проверку on-chain.

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


Источник изображения: Circom

Совместимость Circom в первую очередь сосредоточена на широко используемых системах доказательства нулевого разглашения (ZKP), таких как snarkjs и libsnark. Эта совместимость обеспечивает беспрепятственную интеграцию с этими широко используемыми системами, но также означает, что схемы Circom унаследуют определенные особенности и ограничения, связанные с этими зависимостями. Разработчики, предпочитающие или нуждающиеся в альтернативных системах ZKP, могут столкнуться с проблемами совместимости или потребовать дополнительных усилий для адаптации и интеграции схем, созданных Circom, в свои предпочтительные системы.

Поджидать от Lurk Lab

Lurk - это статически охваченный диалект Lisp, под влиянием Scheme и Common Lisp, с уникальной особенностью: он позволяет напрямую доказать правильность выполнения программы с использованием zk-SNARKs, обеспечивая компактную и эффективную верификацию. Основные применения Lurk включают:

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

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

Данные с адресацией контента: Каждая программа Lurk оснащена уникальным идентификатором контента (CID), что делает ее совместимой с IPFS и IPLD.

Turing Completeness: Lurk поддерживает создание и доказательство произвольных вычислительных утверждений.

Функции высшего порядка: Функции-подпрыгивания могут принимать и возвращать другие функции, облегчая выразительное функциональное программирование.

Вычисления с частными данными: Lurk позволяет обрабатывать частные данные, обеспечивая доказуемо правильный вывод без утечек конфиденциальной информации.

При создании универсальных цепей Lurk широко использует выделитель памяти Lisp «cons», который объединяет выражения и генерирует ссылки через хеширование. Ключ заключается в доказательстве того, что два выражения действительно хешируются в одну и ту же ссылку. Эта проверка позволяет Lurk выполнять вычисления в пределах схем snark.

Функциональность Lurk богата, включая поддержку бесконечной рекурсии, циклов, условного управления потоком и нескольких фоновых систем доказательств, таких как Groth16, SnarkPack+ и Nova. Эта универсальность открывает двери к различным приложениям, включая проверяемые вычисления, обработку частных данных и выполнение программ, полностью совместимых с машиной Тьюринга в пределах снарк-схем.

Заключение

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

Отказ от ответственности:

  1. Эта статья перепечатана с [Gatepanewslab]. Все авторские права принадлежат оригинальному автору [ScalingXЕсли есть возражения по поводу этого перепечатывания, пожалуйста, свяжитесь с командой Gate Learn, и они быстро разберутся с этим.
  2. Отказ от ответственности: Взгляды и мнения, высказанные в данной статье, являются исключительно мнением автора и не являются инвестиционными советами.
  3. Переводы статьи на другие языки выполняются командой Gate Learn. Если не указано иное, копирование, распространение или плагиат переведенных статей запрещены.

Изучение языков программирования ZK

Новичок12/24/2023, 3:04:47 PM
Эта статья представляет область применения разных языков программирования ZK, а также их преимущества и недостатки.

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

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

За последнее десятилетие мы стали свидетелями значительного увеличения количества и разнообразия Языков описания цифровых систем (DSL). Эта активность в сфере очевидна в развитии различных языков схемотехники, включая Noir, Leo и Zinc. Независимо от того, нужен вам универсальный вариант, такой как Circom, или настраиваемое решение для конкретной платформы, такой как Cairo, у вас есть возможность выбора из множества языков и фреймворков для написания цифровых схем с нулевым разглашением (ZKP).

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

Каир от StarkWare

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

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

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

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

28 сентября 2023 года Starknet запустил крупное обновление своего языка программирования с Cairo v2.3.0. Эта версия является значительным прорывом в создании контрактов более модульными путем введения новых функций, вариантов хранения и управления событиями, что повышает потенциал смарт-контрактов. Интеграция этих компонентов предлагает гибкий способ расширения функциональности контрактов, позволяя сторонним модулям улучшать функциональность контрактов.

Цинк от ZkSync

Zinc - это язык программирования, специально разработанный для создания смарт-контрактов и SNARK-цепей на платформе zkSync. Он использует синтаксис Rust, интегрирует элементы Solidity и предлагает уникальные функциональные возможности.

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

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

Noir By Aztec

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

Noir имеет значительные преимущества в расширении спектра приложений, которые могут использовать возможности защиты конфиденциальности, предлагаемые ZKP, тем самым повышая уровень конфиденциальности и эффективность верификации. Он компилируется в промежуточное представление, называемое Abstract Circuit Intermediate Representation (Acer), которое затем может быть дополнительно скомпилировано в R1CS. Отделение системы доказательства рабочего процесса от самого языка позволяет Noir поддерживать различные системы доказательства, включая Aztec Brettenberg, Turbo Plonk, и потенциальные будущие интеграции, такие как Groth16 и Halo2.

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

Важно отметить, что 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, улучшив процесс создания пользовательского интерфейса, и объявила о дальнейших улучшениях API Archive Node для повышения его надежности и ясности.

Лео от 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 и эффективную проверку on-chain.

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


Источник изображения: Circom

Совместимость Circom в первую очередь сосредоточена на широко используемых системах доказательства нулевого разглашения (ZKP), таких как snarkjs и libsnark. Эта совместимость обеспечивает беспрепятственную интеграцию с этими широко используемыми системами, но также означает, что схемы Circom унаследуют определенные особенности и ограничения, связанные с этими зависимостями. Разработчики, предпочитающие или нуждающиеся в альтернативных системах ZKP, могут столкнуться с проблемами совместимости или потребовать дополнительных усилий для адаптации и интеграции схем, созданных Circom, в свои предпочтительные системы.

Поджидать от Lurk Lab

Lurk - это статически охваченный диалект Lisp, под влиянием Scheme и Common Lisp, с уникальной особенностью: он позволяет напрямую доказать правильность выполнения программы с использованием zk-SNARKs, обеспечивая компактную и эффективную верификацию. Основные применения Lurk включают:

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

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

Данные с адресацией контента: Каждая программа Lurk оснащена уникальным идентификатором контента (CID), что делает ее совместимой с IPFS и IPLD.

Turing Completeness: Lurk поддерживает создание и доказательство произвольных вычислительных утверждений.

Функции высшего порядка: Функции-подпрыгивания могут принимать и возвращать другие функции, облегчая выразительное функциональное программирование.

Вычисления с частными данными: Lurk позволяет обрабатывать частные данные, обеспечивая доказуемо правильный вывод без утечек конфиденциальной информации.

При создании универсальных цепей Lurk широко использует выделитель памяти Lisp «cons», который объединяет выражения и генерирует ссылки через хеширование. Ключ заключается в доказательстве того, что два выражения действительно хешируются в одну и ту же ссылку. Эта проверка позволяет Lurk выполнять вычисления в пределах схем snark.

Функциональность Lurk богата, включая поддержку бесконечной рекурсии, циклов, условного управления потоком и нескольких фоновых систем доказательств, таких как Groth16, SnarkPack+ и Nova. Эта универсальность открывает двери к различным приложениям, включая проверяемые вычисления, обработку частных данных и выполнение программ, полностью совместимых с машиной Тьюринга в пределах снарк-схем.

Заключение

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

Отказ от ответственности:

  1. Эта статья перепечатана с [Gatepanewslab]. Все авторские права принадлежат оригинальному автору [ScalingXЕсли есть возражения по поводу этого перепечатывания, пожалуйста, свяжитесь с командой Gate Learn, и они быстро разберутся с этим.
  2. Отказ от ответственности: Взгляды и мнения, высказанные в данной статье, являются исключительно мнением автора и не являются инвестиционными советами.
  3. Переводы статьи на другие языки выполняются командой Gate Learn. Если не указано иное, копирование, распространение или плагиат переведенных статей запрещены.
ابدأ التداول الآن
اشترك وتداول لتحصل على جوائز ذهبية بقيمة
100 دولار أمريكي
و
5500 دولارًا أمريكيًا
لتجربة الإدارة المالية الذهبية!