Як розробити додаток на Tezos? Tezos для новачків

Розробка блокчейн-додатків відрізняється від розробки звичайних додатків тим, що в бекенді використовуються смарт-контракти.
Це прості пояснення без коду та складних прикладів, щоб розповісти основи та підказати, в який бік копати. Розповідаємо про корисні інструменти і про те, що потрібно знати для розробки блокчейн-додатку на Tezos.
Теоретичні основи розробки блокчейн-додатків
Як влаштовані децентралізовані додатки? У централізованих продуктах користувач взаємодіє з фронтендом (сайтом або додатком), який передає дані до бекенд-частини на централізованому сервері. Бекенд обробляє дані та зберігає результати операцій у централізованій базі даних.
Децентралізовані програми ж обробляють операції за допомогою смарт-контрактів і зберігають дані в блокчейні. Також вони можуть зберігати деякі дані поза блокчейном, наприклад, реплікувати історію операцій користувачів в окрему базу даних для відображення її на сайті або зберігати токенізовані цифрові об’єкти в IPFS (Interplanetary File System).
Хоча практично всі децентралізовані програми мають фронтенд з графічним інтерфейсом, досвідчені користувачі можуть безпосередньо працювати зі смарт-контрактами додатків. Простий спосіб зробити це — скористатися Better Call Dev, складний — самому викликати контракт у командному рядку за допомогою tezos client.
Якою мовою писати смарт-контракти на Tezos? Смарт-контракти виконує віртуальна машина. ВМ Tezos розуміє лише низькорівневу мову Michelson, яка дуже схожа на Assembler з Термінатора.
Для зручної розробки є високорівневі мови: об’єктно-орієнтований SmartPy та імперативний LIGO. SmartPy схожий на Python, а LIGO має кілька діалектів: PascaLIGO, JsLIGO, CameLIGO, ReasonLIGO.
Де писати смарт-контракти на Tezos? Найзручніший спосіб — встановити плагін для підсвічування синтаксису відповідної мови у ваше улюблене середовище розробки.
Однак спочатку можна скуштувати онлайн-IDE:
- LIGO Playground для LIGO. Дозволяє перевірити компілювання, протестувати роботу функцій та згенерувати скрипт для деплою контракту на блокчейн. Також у ньому є кілька прикладів контрактів різних діалектах;
- SmartPy IDE для SmartPy. Також є компіляція Michelson, тестування і дуже багато шаблонів — від калькулятора до простих ігор;
- VisualTez — візуальне середовище розробки контрактів SmartPy. На нашу думку, ідеально, якщо ви ще не розібралися з синтаксисом.
Що має бути у смарт-контракті? По-перше, у будь-якому контракті має бути сховище (storage) — його власна база даних у блокчейні. По-друге, в ньому повинні бути функції (точки входу або пункти входу), які і будуть змінювати стан сховища. Більше — у нашому курсі про розробку на Tezos.
Як перевірити працездатність смарт-контракту? Спочатку його слід протестувати за допомогою «репетиції» (dry run). При репетиції розробник викликає потрібну точку входу, передає їй параметри для виконання та отримує результат — новий стан сховища.
Також контракти потрібно тестувати, щоби переконатися, що функції працюють як треба. Дивіться воркшоп із тестування.
Що робити з кодом смарт-контракту? Його потрібно задеплоїти до блокчейну, щоб він отримав власну адресу, і інші користувачі змогли до нього звертатися. Для цього потрібно згенерувати спеціальний скрипт і встановити початковий стан сховища, наприклад, емісію токенів або адресу адміністратора. Детальніше про деплой — в курсі.
Для тестування контракту спочатку варто задеплоїти його в тестову мережу — це безкоштовно, і якщо в контракті знайдуться помилки, потенційні користувачі не постраждають. Детальніше — у документації Tezos.
Як працювати зі смарт-контрактом із фронтенду? Для цього є бібліотека Taquito та модуль Beacon.
Taquito — TypeScript-бібліотека з набором функцій на кшталт запиту ончейн-даних від ноди, взаємодії зі смарт-контрактами та підписання операцій приватним ключем користувача.
Beacon — модуль для підключення гаманця Tezos за стандартом TZIP-10. Працює з усіма гаманцями.
Звідки додаток братиме ончейн-дані? Складний спосіб — за допомогою Taquito запитувати потрібні дані прямо від ноди. Складний, тому що програма знадобиться час на отримання інформації.
Простий спосіб — скористатися індексерами. Це окремі оптимізовані під швидкий пошук бази даних, які зберігають дані про блокчейн Tezos. Можна запитувати потрібні дані через API, або запустити індексер на своїй машині. Найпопулярніші — індексер TzKT та фреймворк для створення індексерів DipDup.
Смарт-контракти можна писати як завгодно? Ні, краще дотримуватись стандартів. Наприклад, у Tezos є два стандарти токенів (Financial Assets) — FA1.2 та FA2. Імплементацію цих стандартів можна знайти у шаблонах онлайн-IDE або Github-репозиторіях команд Tezos.
Більше стандартів та пропозицій — на GitLab.
Де знайти відповіді на запитання? Можете запитувати розробників на Tezos Stack Exchange або у спільноті відповідного інструменту чи команди.
Також не соромтеся ставити запитання в наших спільнотах — ми відповімо або підкажемо, де знайти відповідь:
- Telegram-канал
- Twitter українською мовою
- Twitter російською мовою
- Twitter англійською мовою
- YouTube-канал
- hub ForkLog