Сокращения:
- HF - Хардфорк
- БЧ - Блокчейн
При разработке приложения Mapala Beta еще на 16HF. Сформировались проблемы мешающие нормальному функционированию приложения.
- Работа с данными БЧ.
- Изначально приложение проектировалось сразу на два БЧ steem/golos.
- Регистрация в приложении с автоматическим созданием аккаунта в блокчейне.
- SPA/SSR, SEO, sitemap.xml, итд.
Работа с данными БЧ.
Основная проблема - это работа с базой БЧ. Так как API ноды не обеспечивала необходимой гибкости выборок, было решено написать свой бек-энд который будет парсить блоки и хранить операции в удобном формате. В результате получилось удобное API, но из-за постоянных обновлений протокола и обновления структуры данных в базе, была необходимость при каждом обновлении кода, синхронизировать базу заново. Так же API было ориентированно только для работы с приложением Mapala.
С выходом 18HF команда голоса обрадовала нас релизом mongo-plugin’а благодаря которому взаимодействовать с базой БЧ стало намного проще. Я решил написать GraphQL сервис для голоса на основе mongo базы. Получилось удобное API, которое можно развивать, при этом каждый раз не синхронизироваться заново. Приложение Mapala использует GolosQL для запроса аккаунтов/постов с фильтрацией по тегу приложения(mapala/ru—mapala).
Приложение проектировалось сразу на два блокчейна steem/golos.
Как следствие, блокчейны пошли по разным путям развития, соответственно поддерживать совместимость с двумя разными интерфейсами как для бек-энда так и для фронтенда стало технически сложно. Из этого было выработано правило: один БЧ - один фронтенд. Проще отдельно развивать несколько фронтендов под разные БЧ, при этом используя общие модули где это возможно.
Регистрация в приложении с автоматическим созданием аккаунта в БЧ.
Для хранения данных пользователя и авторизации использовался внутрений аккаунт, хранящийся на бекенде, а аккаунт БЧ импортировался на стороне клиента. Это создало массу проблем: несовпадение имен аккаунтов, невозможность импортировать ключи повторно в новом аккаунте(внутреннем), при регистрации пользователи не сохраняли и теряли свои приватные ключи.
Имхо, без понимания базовых принципов работы БЧ, пользователь не сможет полноценно пользоваться приложением. Регистрировать аккаунты с префиксом приложения, генерировать имена аккаунтов по OAuth авторизации со стороннего сервиса, не имеет особого смыла. Регистрация была временно отключена, функцию регистратора выполняет golos.io. Вывод: 1 аккаунт в БЧ - много фронтендов/приложений.
SPA/SSR, SEO, sitemap.xml.
Изначально фронтенд разрабатывался как SPA приложение, СЕО оставляло желать лучшего, поэтому приложение было переписано на SRR. Для добавления веса фронтенду, в конце каждого поста добавляется баннер со ссылкой на источник. Добавлен sitemap который генерируется динамически. Вывод: Приложение для медиа-БЧ должно быть СЕО оптимизированным.
Что представляет из себя приложение golos.mapala сейчас?
- Фронтенд, взаимодействующий с отрытым АПИ(GolosQL).
- Авторизация посредством posting ключа.
- Оптимизированное СЕО, SSR.
- Современные технологии веб разработки, vue/nuxt.js/es7, docker.
https://golos.mapala.net
https://github.com/avral/golos.mapala
P.S Для разработчиков.
Данное приложение можно использовать как каркас для создания приложений на блокчейне голос.
При проектировании приложения, я старался заложить максимальный уровень абстракции.
Параметры “config/index.js”, указанны параметры для golos.mapala.
- app: идентификатор приложения ->
mapala/1.1
- app_tags: летна постов фильтруется по даррым тегам
['mapala', 'ru--mapala']
- tag_for_post: первый тег в редакторе, при создании публикации ->
mapala
- pagination: количесто постов, для подгрузки в ленту для каждой итерации ->
10
Тех поддержка -> telegram: @avral
Ваш пост поддержали следующие Инвесторы Сообщества "Добрый кит":
alex2016, dimarss, ohlamoon, vadbars, dany2323, vict0r, gans91, kssenia, svinsent, alex-zi, polyakov, baltiyka, voronchihin, cattyshark, mryabinin, prost, sareon, soroka, dim447, zhasmin, skiexpert, bounty-compaing, kr-alexey, makcl, ratrin, brainmechanic, kiorsergey, annadolphin, pkrugloff, esperos, yurij12
Поэтому я тоже проголосовал за него!
Узнать подробности о сообществе можно тут:
Разрешите представиться - Кит Добрый
Правила
Инструкция по внесению Инвестиционного взноса
Вы тоже можете стать Инвестором и поддержать проект!!!
Если Вы хотите отказаться от поддержки Доброго Кита, то ответьте на этот комментарий командой "!нехочу"
dobryj.kit теперь стал Делегатом! Ваш голос важен для всего сообщества!!!
Поддержите нас:
@avral Сколько диска и оперативки занимает база и Клиент? Благодарю за ответ и пост.
Спасибо.
Я запускаю все в контейнерах. Поэтому покажу статистику образов/контейнеров.
Вес образов:
Вес данных: Нода + Монга ~ 100Gb
RAM (контейнеры):
Клиент: 188Mb
GolosQL: 207MB
Нода 200Mb (shared_memory.bin на диске)
Монга: 12GB
Все это хостится на 32Gb RAM сервере.
Но, для разворачивания клиента хватит 512MB сервера, так как остальные сервисы для взаимодействия с данными находятся в публичном доступе.
https://golos-ql.mapala.net
https://golos-mongol.mapala.ne
Кстати, хотелось бы увидеть посты с примерами запросов основных данных:
Благодарю. Пожалуйста.