Крипто-совы на Exonum. Спикеры: Илья Богданов и Алексей Сидоров
В данной лекции разработчики платформы Exonum продемонстрируют приложение Крипто-совы, а также расскажут о внутренней организации приложения.
Приложение Крипто-совы создано на блокчейне Exonum, более детально о самой платформе можно узнать по ссылке: https://golos.io/ru--blokcheijn/@cyberevents/orakuly-dlya-blokcheinov-obzor-platformy-exonum-spiker-aleksei-sidorov
Обзор приложения Крипто-совы
Личный кабинет в приложении выглядит следующим образом:
Изначально выдается 100 токенов. Данные токены можно запрашивать на пополнение раз в несколько минут.
В кабинете уже существует стартовый набор сов
Каждая сова имеет свой ДНК (DNA) - 32-битное число, 24 бита из которых используются в качестве кодировки цвета, 8 бит - кодируют ее внешние характеристики.
Также у пользователя есть список ордеров, то есть другие пользователи могут зайти и приобрести понравившуюся сову.
В инкубаторе на главной странице можно скрестить имеющихся сов
Рассмотрим как приложение выглядит изнутри
Главный файл, который описывает сервис
В backend модули, которые описывают бизнес-логику транзакции называются сервисами, что соответствует смарт-контрактам на Эфириум. Это значит, что вы можете создать приложение на Exonum и подключить к нему определенное количество сервисов.
Есть некоторые вспомогательные сервисы, которые можно отключить, например Анкоринг.
Помимо вспомогательный сервисов, есть Оракулы, которые необходимы для получения данных из внешнего мира.
Основные составные части сервиса
В целом, это похоже на любую разработку backend приложения - есть хранилище данных и бизнес-логика.
Для начала есть определенные константы:
Далее идет описание внутренней структуры данных:
В Rust для этих целей используются макросы. С помощью макросов можно настроить кодогенерацию достаточно сложных структур.
В данном случае макрос генерирует код сериализации, десериализации и все необходимые вспомогательные методы.
Строчки 56-64 описывают крипто-сову. Хеш для каждой крипто-совы уникален.
Строчки 66-76 описывают определенное состояние совы
Далее описывается пользователь, который идентифицируется с помощью публичного ключа
Еще одна важная часть в структуре данных - ордера
Следующий модуль - схема данных
В данном модуле создаются таблицы.
ProofMapIndex - таблица, для каждого значения которой, можно построить доказательство Меркла.
Таким образом, для любого пользователя по запросу (по его публичному ключу) можно построить доказательство существования данного пользователя в таблице.
Кроме Proof таблиц, влияющих на state hash, есть вспомогательные таблицы, которые ускоряют доступ без перебора.
После описания данных и схемы следует уровень бизнес-логики, представленный в модуле транзакции
В данном модуле с помощью макроса описываются все транзакции, которые может принимать сервис.
Далее описывается модуль API, который позволяет общаться с Exonum извне
В итоге все данные собираются в один общий CryptoOwlsService
И в main перечисляются сервисы, с которыми будет работать Exonum блокчейн
В данном случае это:
- конфигурация
- время
- CryptoOwlsService
Открытые данные можно найти на Github https://github.com/exonum/exonum-cryptoowls
Файл https://github.com/exonum/exonum-cryptoowls/blob/master/src/lib.rs
Далее в видео-ролике следует воркшоп, где Илья и Алексей продемонстрируют работу валидаторов в сети Exonum (с момента 39:55)