Синтаксис файлов Leo
Сначала откройте проект hello-world в Aleo Studio (для красивой подсветки синтаксиса) или в выбранном вами текстовом редакторе.
Leo.toml — это файл манифеста Leo, c помощью которого можно настроить наш пакет.
Leo.toml
[package]
name = “hello-world”
version = “0.1.0”
Раздел с названием[package] определяет, что в следующих строках будет представлена основная информация о том, как будет компилироваться пакет. В будущих релизах Leo будет поддерживать другие разделы для предоставления информации про [dependencies], [accounts] и [modules].
[package]
Имя пакета — это официальное имя пакета, которое другие разработчики смогут найти после публикации вашего пакета. В именах пакетов допускаются только строчные буквы и цифры, разделенные дефисами.
name = “hello-world”
Все файлы в текущем пакете будут скомпилированы с указанной Leo version.
version = “0.1.0”
Синтаксис для схем (Circuits)
Откройте файл src/main.leo. Файл main.leo является точкой входа в Leo проекте. Он должен содержать функцию с именем main. Давайте разберем структуру файла Leo.
src/main.leo
// The ‘hello-world’ main function.
function main(a: u32) -> u32 {
return a
}
Ключевое слово function указывает на определение функции в Leo. Наша main функция в hello-world принимает один входной параметр a с типом u32 и возвращает один результат с типом u32. Тело функции заключено в фигурные скобки { }. В Leo принято размещать открывающую фигурную скобку на той же строке, что и определение функции, добавляя между ними один пробел.
function main(a: u32) -> u32 {
Внутри функции main находится единственный оператор return, который возвращает входящий параметр функции - a. Операторы return в Leo уникальны, поскольку они не заканчиваются точкой с запятой.
return a
Подключение входных данных программ
Компилятор Leo собирает схему (circuit) из файла main.leo. Откройте файл inputs/hello-world.in. Файлы, заканчивающиеся на .in и .state, предоставляют входные данные для программы.
inputs/hello-world.in
// The program input for hello-world/src/main.leo
[main]
a: u32 = 1;
b: u32 = 2;[registers]
r0: u32 = 0;
По аналогии с манифест файлом Leo.toml, inputs файл начинается с секции, заключенной в скобки [ ]. main указывает, что мы определяем приватные входные данные программы.
[main]
Присвоение входных данных делит (shares) синтаксис с явным присвоением значения переменной в обычных файлах .leo. Здесь мы присваиваем входной переменной с именем a и типом u32 значение 1. Компилятор Leo получит эти значения и предоставит их в качестве входных данных в схему (circuit) во время проверки (proving time).
a: u32 = 1;
b: u32 = 2;
Раздел [registers] определяет регистры, которые программа может читать и записывать. В транзакции Aleo эти регистры будут использоваться для передачи данных между записями. Нам пока не нужно слишком беспокоиться о входном регистре r0.
[registers]
r0: u32 = 0
Теперь давайте заглянем в Leo CLI и посмотрим, какие команды мы можем выполнять в нашей программе.