Синтаксис файлів Leo

Alexander Budovskiy
2 min readFeb 20, 2022

Спочатку відкрийте проект hello-world в Aleo Studio(для красивого підсвічування синтаксису) або в обраному вами текстовому редакторі.

Leo.toml — це файл маніфесту Leo, за допомогою якого можна налаштувати наш пакет.

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.lua є точкою входу в Leo проекті. Він повинен містити функцію з ім’ям main. Давайте розберемо структуру файлу Leo.

src/main.leo

// The ‘hello-world’ main function.
function main(a: u32) -> u32 {
return a
}

Ключове слово function вказує на визначення функції в Leo. Наша основна функція в 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.html, input файл починається з секції, укладеної в дужки [ ]. 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 і подивимося, які команди ми можемо виконувати в нашій програмі.

--

--