Aleo — это не просто zkRollup или анонимный блокчейн. Это набор инструментов для запуска приложений, основанных на доказательствах ZK, и поддержания обновленного состояния решения блокчейна L1. И самое главное, эти инструменты позволяют создавать zk-приложения без каких-либо знаний о zk, криптографии и даже не требуют понимания разработки блокчейна. В этой серии мы создадим простую программу Aleo и рассмотрим ее компоненты, процесс развертывания и использование.

Краткий обзор набора инструментов Aleo

  1. snarkOS — децентрализованная операционная система для приложений с нулевым разглашением
  2. snarkVM — виртуальная машина для выполнения с нулевым разглашением
  3. aleo — комплект разработки программного обеспечения (SDK) для транзакций с нулевым разглашением
  4. leo — язык программирования Leo. Функциональный язык со статической типизацией для приложений с нулевым разглашением

Как видите, все эти инструменты призваны помочь вам в разработке и запуске приложений на базе ZK. И это не то! Вы можете создавать приложения с помощью Aleo Studio — IDE для ZK proofs или вы всегда можете установить расширение для VSCode или Sublime Text (поддержка IntelliJ находится в разработке).

Настройка среды

Важное замечание: поскольку стек Aleo в настоящее время находится в активной разработке, я бы порекомендовал вам собрать все инструменты из исходного кода.

  1. Прежде всего, нам нужно установить Rust и Cargo.

Давайте установим их:

  • macOS или Linux:

curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh

  • Окна:

Загрузите 64-разрядный исполняемый файл Windows или 32-разрядный исполняемый файл Windows и следуйте инструкциям на экране.

Пожалуйста, убедитесь, что у вас установлена ​​последняя стабильная версия Rust (не ниже 1.62.0 на момент публикации статьи)

2. Далее мы устанавливаем aleo SDK. Это поможет нам создать учетные записи aleo и запустить локальную ноду для целей разработки:

# Download the source code
git clone https://github.com/AleoHQ/aleo && cd aleo
# Build in release mode
$ cargo build --release

3. Наконец, нам нужно установить leo:

# Move up from aleo folder
cd ..
# Download the source code
git clone https://github.com/AleoHQ/leo
cd leo

# Build in release mode
$ cargo build --release

Leo — это язык высокого уровня, который позволяет легко писать приложения для Aleo. Я бы сказал, что это выглядит как простая версия Rust.

4. Давайте добавим наши папки выпуска leo и aleo в переменную PATH:

# open bashrc
nano ~/.bashrc
# put this two lines to the end of the file:
export PATH="$HOME/leo/target/release:$PATH"
export PATH="$HOME/aleo/target/release:$PATH"
#save changes and update current shell:
source ~/.bashrc
# check leo availablity:
leo
leo
The Aleo Team <[email protected]>
CLI Arguments entry point - includes global parameters and subcommands
# <...>
#check aleo availablity:
aleo
aleo
The Aleo Team <[email protected]>
# <...>

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

Привет, мир!

Команда Aleo предоставила удобные команды leo-cli для создания шаблона приложения, включая очень простой и рабочий пример. Давайте создадим и запустим этот пример:

# Move up from leo folder
cd ..
# generate new leo project
leo new hello
       New ✅ Created an Aleo program 'hello' (in "/my_lovely_machine/hello")

Большой! Теперь у нас есть наше первое приложение zk. Не торопитесь, чтобы открыть для себя его компоненты: src , program.json , Leo.toml — чувствуешь себя как дома! Да, у нас есть несколько странных папок, таких как input и output, о которых мы поговорим позже. Но нигде нет жесткой криптографии.

Давайте запустим и посмотрим, работает ли это:

leo run
 # fetching required parameters
 # end of running output:
🚀 Executing 'hello.aleo/main'...
• Executing 'hello.aleo/main'...
 • Executed 'main' (in 5280 ms)
➡️  Outputs
• 3u32

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

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

P.S. Если установка прошла гладко и вы чувствуете, что готовы идти дальше, можете приступить ко второй части, она уже опубликована.