Golos.io это фронтенд, который напрямую работает с API блокчейна GOLOS. Каждое действие пользователя отправляется в блокчейн, а возвращаемый ответ обрабатывается и отображается, что накладывает ряд ограничений.
"Прямая" архитектура.
На данный момент, отображение информации настроено на те данные, которые блокчейн возвращает на запросы hot, trending, discuss... Каждый запрос на просмотр статьи вновь отправляется в блокчейн для поиска материала по нику автора и прямой ссылке на материал. Категорией же считается только первый тег, указанный пользователем при написании статьи. Только он участвует в «гонке» тегов, отображаясь в панели тегов тем выше, чем больше собрано голосов под ним.. и это тоже возвращается запросом к блокчейну.
Подобный «прямой» подход накладывает ряд ограничений, не позволяющих решить некоторые прикладные задачи, связанные с нестандартной сортировкой тегов и выводом информации с учетом всех указанных пользователем меток или других параметров (таких, как цена на товар, например). Поскольку нет никакой базы данных, то решение проблемы возможно только путем модификации кода API, что само по себе задача не из легких и пока доступна только разработчикам Steem. Но, даже если мы реализуем фильтрацию по нескольким тегам, то это не решит всех потребностей разработчиков сторонних приложений, и рано или поздно.. проблема вернется.
"Буферная" архитектура.
Для того, чтобы решить проблему гибкости вывода данных из блокчейна, предлагается использовать буфер в виде непрерывно синхронизируемой базы данных mySQL. Каждый раз, когда блокчейн формирует новый блок, данные считываются и сортируются согласно требованиям разработчика в соответствующие поля таблиц базы данных. Подобный подход позволяет обойти все видимые ограничения использования API блокчейна, открывая широкие возможности новых применений.
Реализация.
Парсер написан на языке PHP и работает с любой нодой (локальной или удаленной, Steem или Golos), считывая и сортируя информацию по следующим таблицам:
- Статьи;
- Комментарии;
- Категории;
Каждый указанный пользователем тег записывается в соответствующее поле таблицы Статьи, что позволяет реализовать сортировку вывода информации любым мыслимым способом. Также, таблица Статей содержит все полные и непрерывно обновляемые данные, которые используются для построения графического вывода без повторного обращения к блокчейну.
Таблица комментариев обновляется по тому же принципу, но теги комментариев не имеют широкой структуры, поскольку в блокчейне для них сохраняется только родительская категория (первый тег статьи). Это же позволяет, при необходимости, ограничить получение комментариев только нужными категориями.
Таблица категорий является подготовленным набором строк для построения введенных пользователем тегов в формате дерева, где каждая вложенная категория появляется при наличии предыдущей. Например, теги указанные как Голос -> Евразия -> Россия -> Москва будут вложены друг в друга и построены именно в таком порядке.
Возможности.
С помощью буферного подхода возможно реализовать структурированную базу знаний на любую тематику. Парсер может собирать данные как из блокчейна целиком, так по одной категории, что необходимо нам для зарождающихся сообществ.
GitHub
Ссылка на репозиторий: github.com/dacom-dark-sun/parser
Заголосуйте моего делегата куда-нибудь повыше, пожалуйста (@Dark.Sun). Что-то мне не нравится внизу списка болтаться, а без напоминаний, похоже, тут никак :)
Я бы еще добавил тэги блокчейн и приложение, или что-то подобное. А так, крутая штука. Перевод для Стима уже готов, там есть пара мест, которые нужно уточнить, так что свяжись со мной.
Ок, спасибо! Поправил)