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