Крипто-совы на Exonum. Спикеры: Илья Богданов и Алексей Сидоров

6 месяцев назад
65 в блокчейн

В данной лекции разработчики платформы Exonum продемонстрируют приложение Крипто-совы, а также расскажут о внутренней организации приложения.

Приложение Крипто-совы создано на блокчейне Exonum, более детально о самой платформе можно узнать по ссылке: https://golos.io/ru--blokcheijn/@cyberevents/orakuly-dlya-blokcheinov-obzor-platformy-exonum-spiker-aleksei-sidorov

Обзор приложения Крипто-совы

Снимок экрана 2018-04-12 в 12.28.27.png

Личный кабинет в приложении выглядит следующим образом:

Снимок экрана 2018-04-12 в 13.05.15.png

Изначально выдается 100 токенов. Данные токены можно запрашивать на пополнение раз в несколько минут.

В кабинете уже существует стартовый набор сов

Снимок экрана 2018-04-12 в 13.08.23.png

Каждая сова имеет свой ДНК (DNA) - 32-битное число, 24 бита из которых используются в качестве кодировки цвета, 8 бит - кодируют ее внешние характеристики.

Также у пользователя есть список ордеров, то есть другие пользователи могут зайти и приобрести понравившуюся сову.

Снимок экрана 2018-04-12 в 13.17.09.png

В инкубаторе на главной странице можно скрестить имеющихся сов

Снимок экрана 2018-04-12 в 13.27.31.png

Снимок экрана 2018-04-12 в 13.31.48.png

Рассмотрим как приложение выглядит изнутри

Главный файл, который описывает сервис

Снимок экрана 2018-04-12 в 13.37.03.png

В backend модули, которые описывают бизнес-логику транзакции называются сервисами, что соответствует смарт-контрактам на Эфириум. Это значит, что вы можете создать приложение на Exonum и подключить к нему определенное количество сервисов.

Есть некоторые вспомогательные сервисы, которые можно отключить, например Анкоринг.

Помимо вспомогательный сервисов, есть Оракулы, которые необходимы для получения данных из внешнего мира.

Основные составные части сервиса

В целом, это похоже на любую разработку backend приложения - есть хранилище данных и бизнес-логика.

Для начала есть определенные константы:

Снимок экрана 2018-04-12 в 14.09.28.png

Далее идет описание внутренней структуры данных:

Снимок экрана 2018-04-12 в 14.10.40.png

В Rust для этих целей используются макросы. С помощью макросов можно настроить кодогенерацию достаточно сложных структур.

В данном случае макрос генерирует код сериализации, десериализации и все необходимые вспомогательные методы.

Строчки 56-64 описывают крипто-сову. Хеш для каждой крипто-совы уникален.

Строчки 66-76 описывают определенное состояние совы

Снимок экрана 2018-04-12 в 14.38.09.png

Далее описывается пользователь, который идентифицируется с помощью публичного ключа

Снимок экрана 2018-04-12 в 14.39.39.png

Еще одна важная часть в структуре данных - ордера

Снимок экрана 2018-04-12 в 14.42.28.png

Следующий модуль - схема данных

Снимок экрана 2018-04-12 в 14.49.59.png

В данном модуле создаются таблицы.

Снимок экрана 2018-04-12 в 14.51.43.png

ProofMapIndex - таблица, для каждого значения которой, можно построить доказательство Меркла.

Таким образом, для любого пользователя по запросу (по его публичному ключу) можно построить доказательство существования данного пользователя в таблице.

Кроме Proof таблиц, влияющих на state hash, есть вспомогательные таблицы, которые ускоряют доступ без перебора.

После описания данных и схемы следует уровень бизнес-логики, представленный в модуле транзакции

Снимок экрана 2018-04-12 в 15.14.25.png

В данном модуле с помощью макроса описываются все транзакции, которые может принимать сервис.

Далее описывается модуль API, который позволяет общаться с Exonum извне

Снимок экрана 2018-04-12 в 15.30.50.png

В итоге все данные собираются в один общий CryptoOwlsService

Снимок экрана 2018-04-12 в 15.38.22.png

И в main перечисляются сервисы, с которыми будет работать Exonum блокчейн

Снимок экрана 2018-04-12 в 15.41.17.png

В данном случае это:

  • конфигурация
  • время
  • CryptoOwlsService

Открытые данные можно найти на Github https://github.com/exonum/exonum-cryptoowls

Файл https://github.com/exonum/exonum-cryptoowls/blob/master/src/lib.rs

Далее в видео-ролике следует воркшоп, где Илья и Алексей продемонстрируют работу валидаторов в сети Exonum (с момента 39:55)

Авторы получают вознаграждение, когда пользователи голосуют за их посты.
Голосующие читатели также получают вознаграждение за свой голос.