Как разработать приложение на 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) — его собственная база данных в блокчейне. Во-вторых, в нем должны быть функции (точки входа или entrypoints), которые и будут изменять состояние хранилища. Больше — в нашем курсе о разработке на 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


