GOLOS
RU
EN
UA
golosio
10 месяцев назад

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.

56
150.585 GOLOS
На Golos с October 2016
Комментарии (51)
Сортировать по:
Сначала старые