June 11, 2022

Введение в язык программирования Leo

1 февраля, 2022 год
Команда Aleo
Ссылка на официальную статью Aleo: https://www.aleo.org/post/leo-programming-language
Мой Дискорд: useless_dorozhkina#1394

Aleo собрали надежную команду компиляторов, чтобы создать очень амбициозный язык компилятора схем. Главная цель данного начинания — сделать использование доказательства с нулевым разглашением в своих приложениях, настолько легким для разработчиков, насколько это возможно — это достигается благодаря минимизации требуемых криптографических знаний. Но как именно Leo достигает этого, и что нужно знать, чтобы начать использовать Leo? Давайте узнаем.

Ключевые понятия

Во-первых, давайте вспомним, что такое доказательство с нулевым разглашением. Это какая-то часть данных, которая доказывает, что мы правильно выполнили вычисления; например, что мы использовали приватный ключ, чтобы отправить кому-то NFT, или что у нас есть какой-то атрибут, который позволяет обновлять состояние условного приложения. Кроме того, это доказательство позволяет нам оставлять часть данных засекреченной, если мы того хотим; например, мы не обязаны раскрывать приватный ключ, который мы использовали, что отправить NFT. И это доказательство гораздо меньше всего вычисления, поэтому оно требует гораздо меньше памяти (в сети) и будет быстрее передаваться.

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

Итак, как можно сделать доказательство с нулевым разглашением? Оно делается для нас системой доказательства и кое-чем, называемым схемой с нулевым разглашением — на самом деле, это схема, которую мы будем вынуждены создать, и это то, что Leo сделает для вас! Библиотеки, которые превращают схемы с нулевым разглашением в доказательства, уже существуют, до сих пор люди использовали эти библиотеки напрямую.

Подумайте об устройстве, которое вы используете прямо сейчас, внутри оно имеет схему, которая выполняет все вычисления, верно? Что ж, не является ли оно просто логическими шлюзами И-НЕ с нулями и единицами проносящимися сквозь них? Схемы с нулевым разглашением очень похожи на это, только вместо логических шлюзов И-НЕ они сделаны из шлюзов сложения и умножения, так что вместо нулей и единиц мы имеем дело с числами от нуля до p, где p — это феноменально большое простое число. Вы начинаете понимать, что возможно мы будем способны проводить столько же вычислений в схемах с нулевым разглашением, сколько мы можем делать реальных схемах?

Теперь мы пришли к сути проблемы, причине, по которой Aleo инвестирует так много в создание компилятора схем Leo: превращение идей о приложениях высокого уровня в схемы с нулевым разглашением происходит чрезвычайно медленно, потому что вам нужно вручную собирать все складывающие и умножающие логические шлюзы для того, чтобы представить, какие вычисление будет выполнять ваше приложение. Подумайте только, сколько времени у вас уходило бы на создание обычного приложения, если бы вам приходилось собирать вместе шлюзы И-НЕ, чтобы построить вычисление… звучит совсем не весело, не так ли?

Что ж, это то, что у нас есть на данный момент, касаемо создания схем с нулевым разглашением. По существу, вам нужно работать на уровне составления схем, потому что пока что у нас нет достаточной инфраструктуры, чтобы автоматизировать низкоуровневые повторяющиеся элементы. И, на самом деле, все даже хуже. У нас не только нет подобной автоматизации, но также требуется огромное количество криптографических знаний, чтобы только начать строить схемы с нулевым разглашением. У большинства людей уйдут месяцы полноценного обучения, чтобы преодолеть этот барьер. Звучит вовсе не здорово для создания продукта.

Обзор Leo

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

Leo создан для того, чтобы, насколько это возможно, снизить требуемый уровень криптографических знаний. Более того, он создан так, чтобы напоминать Javascript и Typescript, чтобы у армии разработчиков JS/TS (около 12 миллионов, уменьшающееся число крипто-разработчиков) было очень простое обучение.

Давайте заглянем вперед, и представим, что вы написали программу в Leo, она представлена на картинке выше; что же Leo делает, когда вы запускаете эту программу?

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

Но мы утверждали, что вам вовсе не нужно будет много криптографических знаний, чтобы использовать Leo, так что же насчет всего этого создания доказательств? Коротко говоря, благодаря Leo, на выходе вы получаете доказательство того, что ваше вычисление работает правильно, а это значит, что, если бы вы запустили вышеупомянутую схему на каком-то массиве и представили выходной массив вместе с доказательством, любой наблюдатель, проверив доказательство, а не сам массив, смог бы подтвердить, что этот массив действительно был отсортирован.

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

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

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

~

Если вам понравился этот перевод, пожалуйста, поставьте ему реакцию в дискорде Aleo! :)

Спасибо за внимание!