Вступ до мови програмування Leo
Aleo зібрав солідну команду компіляторів, щоб створити дуже амбітну мову компілятора схем. Основна мета цього зусилля полягає в тому, щоб дозволити розробникам якомога простіше використовувати докази нульового рівня знань у своїх програмах - це досягається шляхом мінімізації вимог до криптографічних знань. Тож як саме Лео досягає цього, і що вам потрібно знати, щоб почати його використовувати? Давай дізнаємось.
Ключові поняття Для початку давайте коротко нагадаємо собі, що таке доказ нульового знання. Це деяка частина даних, яка доводить, що ми провели обчислення правильно; наприклад, що ми використали закритий ключ, щоб надіслати комусь NFT, або що у нас є якийсь атрибут, який дозволяє нам оновлювати стан програми. Крім того, це дозволяє нам зберігати деякі дані в секреті, якщо ми бажаємо; наприклад, нам не потрібно розкривати приватний ключ, який ми використовували для відправки NFT. І дані підтвердження також набагато менші, ніж усі обчислення, тому для них буде потрібно набагато менше місця для зберігання (в ланцюжку) і буде швидше спілкуватися.
Це дуже абстрактна ідея, тому, можливо, вона буде більш відповідальною, якщо ми пов’язуємо її з проблемами масштабованості, які ми зараз спостерігаємо в галузі. Подивіться на труднощі, з якими стикаються різні ланцюги, щоб отримати достатню кількість транзакцій в секунду, і вимоги щодо масштабування рішень для розширення можливостей ланцюгових ігор. Такі інструменти, як розділення стану, були корисними, але нам потрібно додати більше, щоб підтримати зростання цих випадків використання (і майбутніх варіантів використання, про які ми навіть не знаємо). Крім того, ZKP також дозволяють нам приховувати дані, які ми не хочемо розкривати; звичайно, це неможливо для інших рішень масштабування.
Тепер, як зробити ZKP? Ну, це створено для нас за допомогою системи доказів і чогось, що називається схемою ZK – насправді це схема, яку нам доведеться побудувати, і це те, що Лео зробить для вас! Бібліотеки, які перетворюють схеми ZK на докази, вже існують, досі люди використовували ці бібліотеки безпосередньо.
Подумайте про пристрій, який ви зараз використовуєте, всередині нього є схеми, які виконують усі ці обчислення, чи не так? Ну, хіба ці схеми не просто вентилі NAND з нулями та одиницями, які проходять через них? Схеми ZK дуже схожі, за винятком того, що замість елементів NAND вони створені з вентилів додавання та множення, а замість нулів і одиниць ми маємо числа між нулем і p, де p — феноменально велике просте число. Ви починаєте помічати, що ми можемо виконувати стільки ж обчислень у схемах ZK, скільки в реальних схемах?
Тепер ми підійшли до суті питання, причини, чому Aleo так багато інвестує у створення компілятора схем Leo – перетворення ідей високого рівня додатків у схеми ZK відбувається феноменально повільно, тому що вам потрібно вручну зібрати всі вентилі додавання та множення, щоб уявіть, які обчислення мають представляти вашу програму. Я маю на увазі, скільки часу вам знадобилося б, щоб написати звичайні програми, якби вам довелося об’єднати елементи NAND для побудови обчислень... не звучить весело, чи не так?
Ну, це поточний стан створення схеми ZK. По суті, вам доведеться працювати на рівні побудови схеми, тому що поки що недостатньо інфраструктури для автоматизації низькорівневих, повторюваних частин. А насправді це навіть гірше. Мало того, що у нас ще немає цієї автоматизації, але й для того, щоб почати будувати схеми ZK, потрібно багато криптографічних знань. Для подолання цього бар’єру для вступу людям у більшості випадків знадобиться кілька місяців повного навчання. Не зовсім підходить для розробки продукту.
Огляд Leo Leo — це мова програмування зі статичним типом, натхненна Rust, створена для написання приватних програм. Він призначений для розробників, щоб інтуїтивно будувати на блокчейні Aleo, забезпечуючи основу для приватної децентралізованої екосистеми. Це перша відома мова програмування, яка впроваджує платформу тестування, реєстр пакетів, резольвер імпорту, віддалений компілятор і генератор теорем для додатків загального призначення з нульовим знанням.
Leo розроблено, щоб видалити якомога більше вимог до криптографічних знань. Більше того, він розроблений так, щоб нагадувати Javascript і Typescript, щоб армія розробників JS/TS (приблизно 12 мільйонів з них, кількість розробників крипто-розробників карликова) могла легко навчатися.
Давайте перескочимо вперед і скажемо, що ви написали програму Leo, як-от сортування бульбашками на зображенні вище — що насправді робить Leo, коли ви запускаєте програму?
Він бере ваш код, створює схему підтвердження, яка представляє обчислення, які ви хочете виконати, заповнює вхідні дроти потрібними значеннями, запускає схему, генерує ключі підтвердження/перевірки, а потім об’єднує всі відповідні дані в ZKP. Наприклад, ви можете запустити його на вхідних даних на зображенні нижче.
Але ми сказали, що вам зовсім не потрібно багато криптографічних знань, щоб використовувати Leo, так що ж це за все це створення доказів? Підсумок полягає в тому, що Лео виводить доказ того, що ви правильно виконали обчислення, тобто якби ви запустили вищевказану схему на якомусь масиві та представили вихідний масив разом із доказом, будь-який спостерігач міг би підтвердити, що масив насправді був відсортований за перевірка доказу, а не масиву.
Тепер це може здатися не дуже, якщо масив містить лише 10 елементів, але коли ми починаємо працювати зі структурами даних, які містять мільйони елементів, і більш складними обчисленнями, перевірка доказу (яке завжди однакового розміру!) починає передавати результат. набагато більше цінності. Але це не публікація про те, як отримати цінність від ZKP, ця публікація має допомогти розробникам вивчити Leo, щоб вони самі могли створювати цінні програми.
Лео також робить більше, ніж просто створює схему для вас і генерує на її основі докази. Він наповнений функціональними можливостями, які допомагають максимально скоротити час розробника. Платформа тестування, реєстр пакетів і розпізнаватель імпорту працюють разом, щоб заощадити багато часу розробникам, гарантуючи, що зовнішні функціональні можливості імпортуються легко, а код насправді виконує те, що від нього очікувалося.
Коли ви створюєте екосистему, основна мета якої полягає в тому, щоб дозволити розробку масштабованих додатків, які є приватними, один із найкращих способів стимулювати зростання — усунути якомога більше тертя в розробці додатків. Це те, чого Лев допомагає досягти. Якщо ви хочете дізнатися більше, перегляньте ігровий майданчик або документи для розробників.