Синтаксис файлов 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 и посмотрим, какие команды мы можем выполнять в нашей программе.

--

--

Get the Medium app

A button that says 'Download on the App Store', and if clicked it will lead you to the iOS App store
A button that says 'Get it on, Google Play', and if clicked it will lead you to the Google Play store