![](https://habrastorage.org/getpro/habr/upload_files/2de/622/a12/2de622a12089c918ef195b8a7d1d9302.png)
Основная цель этой работы — позволить разработчикам максимально просто использовать zero knowledge proof в своих приложениях — это достигается за счет минимизации требований к знаниям криптографии.
Что такое zero knowledge proof (ZKP)?
Прежде всего, давайте кратко напомним себе, что такое ZKP. Это некоторая часть данных, которая доказывает, что мы выполнили вычисления правильно; например, что мы использовали закрытый ключ, чтобы отправить кому-то NFT, или что у нас есть какой-то атрибут, который позволяет нам обновлять состояние приложения. Кроме того, это позволяет нам сохранять некоторые данные в секрете, если мы того пожелаем; например, нам не нужно раскрывать тот закрытый ключ, который мы использовали для отправки NFT. И данные доказательства также намного меньше, чем все вычисления, поэтому для них потребуется намного меньше места для хранения (в цепочке) и будет быстрее передаваться.
![](https://habrastorage.org/getpro/habr/upload_files/c1d/867/a54/c1d867a5465f669f771e5bba05667502.png)
Обзор Leo
Leo — это основанный на Rust язык программирования со статической типизацией, созданный для написания частных приложений. Он предназначен для разработчиков, которые могут интуитивно строить блокчейн Aleo, обеспечивая основу для частной децентрализованной экосистемы. Это первый известный язык программирования, который представляет среду тестирования, реестр пакетов, преобразователь импорта, удаленный компилятор и генератор теорем для приложений с ZKP.
Синтаксис Leo сделан на подобии Javascript и Typescript, так что разработчики JS/TS будет иметь очень простую кривую обучения.
![](https://habrastorage.org/getpro/habr/upload_files/96e/a7f/e1f/96ea7fe1f58cf0731df96dfd0638ed65.png)
Что происходит под капотом?
Давайте углубимся дальше и скажем, что вы написали сортировку пузырьком — что на самом деле делает Leo, когда вы запускаете программу?
Он берет ваш код, создает схему проверки, которая представляет вычисление, которое вы хотите запустить, заполняет входные данные нужными значениями, запускает схему, генерирует ключи проверки, а затем объединяет все соответствующие данные в ZKP. Например, вы можете запустить его на входных данных на изображении ниже.
![](https://habrastorage.org/getpro/habr/upload_files/0dd/af7/e64/0ddaf7e6486023e68b1b661fd92c0b58.png)
Но мы знаем, что для использования Leo совсем не нужно особых знаний в криптографии, так что же это за штука с созданием “доказательств”? Подводя итог, можно сказать, что Leo выводит доказательство того, что вы выполнили свои вычисления правильно, а это означает, что если вы запустите описанную выше схему на некотором массиве и представите выходной массив вместе с доказательством, любой наблюдатель сможет подтвердить, что массив действительно был отсортирован по проверкe доказательства, а не массива.
Это может показаться не таким уж быстрым, если массив содержит только 10 элементов, но когда мы начинаем работать со структурами данных, которые имеют миллионы элементов и более сложные вычисления, проверка доказательства (которое всегда одного размера!) начинает приносить намного больше ценности.
Leo также делает больше, чем просто создает для вас схему и генерирует на ее основе доказательство. Он наполнен функциональностью, которая помогает максимально сократить время разработки. Платформа тестирования, реестр пакетов и преобразователь импорта работают вместе, чтобы сэкономить разработчикам много времени, гарантируя, что внешние функции легко импортируются, и что код действительно делает то, что от него ожидалось.
Когда вы строите экосистему, основной целью которой является разработка масштабируемых и безопасных приложений, один из лучших способов улучшить масштабирование— устранить как можно больше препятствий при разработке приложений. Это то, что Leo помогает достичь. Если вы хотите узнать больше, загляните в документацию.
Дискорд: Nikitos#5053
Твиттер: https://twitter.com/X2Stri
Телеграм: @nek1tk