Golos.io: Адаптация к блокчейну CyberWay
Друзья, переезд на новый блокчейн уже не за горами, и мы готовы поделиться первыми итогами проделанной в этом направлении работы.
1. Новый репозиторий для Golos.io
Сейчас адаптируем клиент для CyberWay. На данный момент готовы:
- отображение лент «Новое», «Актуальное» и «Популярное»;
- отображение 3-х режимов отображения лент: обычный, сетка, компактный.
- отображение поста и комментариев к нему;
- отображение лент «Блог» и «Комментарии» в профиле пользователя;
- отображение счетчика комментариев к посту;
- отображение потенциальной награды (пока в rshares);
- авторизация;
- возможность отправить пост и комментарий;
- возможность поставить лайк/дизлайк;
- возможность подписаться/отписаться на пользователя;
- возможность редактирования данных пользователя и настроек;
Осуществили переход на фреймворк Next.js.
2. Библиотеки
Форк eosjs – API Javascript для интеграции с новым блокчейном.
Адаптировали под СyberWay.
JS библиотека представляет из себя обертку над cyber-js. Позволяет взаимодействовать со смарт-контрактами без необходимости погружаться в работу с cyber-js.
Реализовали работу со следующими контрактами:
- ctrl - делегаты и голосование за них;
- cyber - работа с аккаунтом и деплой контрактов;
- cyber.token - работа с токеном;
- emit - эмитирование токенов;
- publish - работа с постами и комментариями, голосование;
- social - фолловинг, блокировка, мета-данные;
- vesting - работа с вестингом.
Документацию еще пишем.
Swift Библиотека – инструмент для взаимодействия со смарт-контрактами и сервисами.
Сделали «режим чтения». Уже можно получать:
- ленты «Актуальное», «Популярное», «Новое»;
- пост и комментарии к нему;
- комментарии, написанные пользователем;
- профиль пользователя.
Помимо этого, с помощью данного сервиса можно пройти авторизацию.
В ближайшее время мы добавим методы для работы со смарт-контрактами.
Java (Kotlin) Библиотека – инструмент взаимодействия со смарт-контрактами и сервисами для Android приложения.
Реализовали:
- создание пользователя;
- эмитирование токенов, их перевод другому пользователю;
- работу с постами и комментариями, голосование;
- фолловинг, блокировку, мета-данные пользователя;
- работу с вестингом;
- интеграцию с сервисами Сyberway - соединение, авторизация;
- получение лент комьюнити, пользователя, подписок;
- получение комментариев к посту, комментариев пользователя;
- документацию к библиотеке.
Core-service – мощный инструмент, на основе которого построена большая часть наших сервисов. При помощи данной библиотеки любой разработчик может написать свой сервис для работы с данными СyberWay.
Реализовали и адаптировали к новому блокчейну следующие функции:
- легкий фреймворк для создания типового микросервиса;
- возможность подписаться на блоки блокчейна CyberWay;
- утилиты для работы с базами данных;
- утилиты для построения сетевого общения между микросервисами;
- мониторинг работоспособности микросервиса;
- утилиты тестирования сокет-соединений;
- утилиты работы с контентом;
- и многое другое.
3. Сервисы
Адаптировали к работе с СyberWay большую часть сервисов Golos.io.
Facade-service в нашей инфраструктуре представляет из себя роутер клиентских запросов. Он готов для взаимодействия с обновленным API CyberWay и прочими сервисами.
Детальное описание реализованных методов можно найти в документации.
Bandwidth-service предназначен для выполнения рутинных операций пользователями с нулевым балансом. Позволяет значительно снизить затраты на регистрацию (так как теперь не обязательно открывать CPU и Network bandwidth). Еще bandwidth provider дает возможность таким пользователям публиковать посты, комментарии и участвовать в голосовании.
Gate-service – сервис обмена данными между frontend и микросервисами Golos.io. Обновлен для использования с новым API.
Prism-service – новая сущность в нашей сервисной инфраструктуре, является заменой seed ноды для приложения Golos. Данное решение более гибкое, чем seed ноды голоса, сейчас это:
- хранилище постов;
- хранилище профилей пользователей;
- построение лент (плюс кеширование);
- расчет предварительных выплат;
- API для получения данных.
С помощью prism-service мы планируем реализовать полнотекстовый поиск по всей базе постов, а также гибкий и удобный поиск по тегам.
Registration-service – cервис для регистрирации пользователей в сети СyberWay.Реализован на основе аналогичного сервиса для блокчейна Golos.
Backend протестировали, занимаемся адаптацией frontend. Также немного улучшили производительность и исправление ошибок.
Notify-service – сервис рассылки уведомлений.
Переделали для работы с СyberWay. Помимо нового формата данных, который сервис способен принимать от блокчейна (в том числе и нового подписчика на блоки), он получил расширение в данных, отправляющихся клиенту. Благодаря интеграции с сервисом-призмой и новым блокчейном, notify-service возвращает дополнительные данные (например, аватар пользователя, поставившего лайк публикации), что значительно увеличивает скорость загрузки сайта и уменьшает нагрузку на клиент.
Auth-service – новый метод авторизации, который мы разработали и вынесли в отдельный сервис.
Теперь вместо того, чтобы создавать «фейковую» транзакцию и записывать ее в цепочку, клиент получает уникальный секрет для устройства и подписывает его своим ключом, а затем отправляет сервису. Сервис проверяет правильность подписанного секрета и сравнивает публичные ключи из подписи и из блокчейна для данного пользователя.
Таким образом, повысили:
- производительность и скорость авторизации, так как выделили ее в отдельный сервис и снизили нагрузку на блокчейн;
- безопасность, за счет увеличения криптографической сложности.
Документацию по работе со всеми сервисами можно посмотреть здесь.
4. Тестирование
Покрыли автотестами следующие смарт-контракты и сервисы:
- создание пользователя;
- эмитирование токенов, их перевод другому пользователю;
- работу с постами и комментариями, голосование;
- фолловинг, блокировку, мета-данные пользователя;
- работу с вестингом;
- интеграцию с сервисами Сyberway - соединение, авторизация;
- получение лент комьюнити, пользователя, подписок;
- получение комментариев к посту, комментариев пользователя;
- registration-service;
- auth-service;
- prism-service.
Итого, к настоящему моменту мы завершили 70% работы, необходимой для полноценного функционирования клиента Golos.io на блокчейне CyberWay.
В течение этой недели планируем выпустить все репозитории в публичный доступ.
Друзья, тестнет Golos.io на CyberWay будет развернут в ближайшее время, о чем мы обязательно вам сообщим, и расскажем что к чему.
Иллюстрация к посту – yandex.ru.
—
Подписывайтесь на официальный аккаунт блог-платформы Golos.io @golosio, чтобы быть в курсе развития проекта! Телеграм для ваших вопросов — https://t.me/golos_support.
Есть предложения, как сделать Golos.io лучше? Пишите в Issues на нашем Github, в наш Телеграм-канал или в чат разработчиков Golos.io в Телеграм!
—
С уважением, команда Golos.io @golosio: @azarod, @bacher, @b1acksun, @chinpu, @dan-kinescop, @des432, @devall, @format-x22, @insider, @ivan-blacky, @kucinskaya.alla, @machtfrei, @muhazokotuha, @msm72, @nickshtefan, @yulia.rodnikova, @yuri-vlad.