Блокчейны EOSIO при их интенсивном использовании способны генерировать невероятное количество данных. Несмотря на то, что EOSIO может с лёгкостью обрабатывать тысячи транзакций в секунду, остальной части приложений экосистемы зачастую сложно поддерживать такой темп. Одной из наиболее распространенных просьб, с которыми к нам обращаются, является добавление возможности запрашивать историю транзакций.
Плагин history
Включенный в релиз программного обеспечения EOSIO 1.0 от 1 июня 2018 года, плагин history дал операторам сетевых узлов EOSIO возможность запрашивать набор данных обо всех действиях, которые совершались в блокчейне. Этот набор действий можно отфильтровать до конкретных приложений и контрактов, дабы снизить нагрузку на обработку и хранение. Хранилище тогда находилось в той же базе данных в памяти, которая обеспечивала работу самого блокчейна. Операторы могли получить доступ к хранимым данным через HTTP API, обычно называемый history API “v1”.
Этот плагин стал достаточно прямым и подходящим решением для лиц, заинтересованных в мониторинге финансовой деятельности. К сожалению, сам факт размещения базы данных в памяти означал, что хранение исторической информации в столь волатильной оперативной памяти было трудно поддерживать и масштабировать. В результате 12 августа 2018 года плагин history был объявлен устаревшим. При тщательной настройке и фильтрации некоторые интеграции, основанные на плагине history, по-прежнему могут нормально работать в полностью загруженных блокчейнах на базе EOSIO, однако разработчики этих приложений должны учитывать, что это вряд ли приведёт к устойчивым долгоиграющим результатам.
Плагин mongodb
Официально выпущенный как часть EOSIO 1.1 20 июля 2018 года, плагин mongodb хранил большую часть тех же данных, что плагин history содержал в документах как часть базы данных MongoDB, которая поддерживалась независимо от узла EOSIO.
Этот плагин не включал в себя HTTP API, эквивалентный плагину history, так как сам MongoDB поддерживал богатый набор интеграций и запросов, которые удовлетворяли большинство потребностей приложений. Члены сообщества смогли выпустить почти полную реализацию “v1” history API, созданную поверх mongodb-plugin, однако она больше не поддерживается.
Этот плагин был объявлен устаревшим 28 июня 2019 года в пользу нового решения, плагина state-history-plugin, который был тогда же переведён в статус стабильного релиза.
Demux
Demux – это javascript фреймворк, который помогает разработчикам при написании приложений, отображающих поток транзакций из блокчейна EOSIO в хранилище данных “вне цепочки”. Этот фреймворк значительно сокращает объём усилий разработчика, необходимый для представления детерминированных артефактов выполнения блокчейна в постоянном хранилище данных.
И хотя сам Demux не предоставляет запрашиваемый интерфейс, в нём можно создать конвейер, заполняющий постоянный источник данных, такой как postgreSQL, данными, которые приложение должно будет запрашивать. Это затруднение усугубляется эксплуатационной проблемой, заключающейся в том, что связанная с обработкой нагрузка может быть непомерно высокой для масштабируемых сетей при мониторинге высокочастотных приложений, например, предназначенных для перевода токенов.
Demux в настоящее время не имеет возможности проверять полные пути транзакций, включающие в себя встроенные действия, и поэтому подходит только для наблюдения за фактическими прямыми транзакциями, совершенными пользователями.
Плагин state-history
В настоящее время поддерживается другой метод извлечения данных из работающего узла EOSIO – state-history-plugin, релиз которого состоялся 28 июня 2019 года. Этот плагин направляет поток информации от работающего узла на внешний процесс, что позволяет не прерывать основную деятельность блокчейна на анализ и индексацию истории.
Выходные данные state-history-plugin не могут напрямую использоваться в качестве решения для отправки запросов к истории. Для полноценного решения нужно написать потребительский процесс, который преобразует поток в релевантные данные и индексы. Предполагается, что процесс интеграции приложений сформирует кастомную логику, основанную на потребностях их бизнеса, в потребительский процесс, который они применят как связующее звено между плагином state-history и их приложениями.
В настоящее время не существует официального стабильного релиза history-tools, представляющего собой коллекцию потребителей state-history-plugin и связанных с ними технологий.
Не за горами
History-tools/fill-pg
History-tools – это совокупность потребителей и сопутствующих технологий, которые могут использовать выходные данные плагина state-history для удовлетворения более высоких эксплуатационных потребностей приложения. Первоначальный стабильный релиз обязательно случится; он будет поддерживать EOSIO v2.0.x и содержать единый потребительский процесс “fill-pg”.
Fill-pg создает и заполняет базу данных postgreSQL различными таблицами и индексами для ускорения запросов, таких как исторический анализ экономической активности. Для того чтобы как-то парсить полученные данные, интегрируемые приложения должны иметь возможность анализировать бинарные полезные данные, присутствующие в действиях протокола EOSIO. Эти бинарные полезные данные соответствуют стандарту сериализации на основе кастомных схем, а для помощи разработчикам, работающим в нисходящем направлении, доступны библиотеки
History-tools/Custom fill-pg
Используя fill-pg в качестве референса, разработчики могут настроить создаваемые таблицы так, чтобы они были более специфичны для их приложений. Это создаст более прямой процесс для извлечения потребностей их приложений в postgreSQL, включая возможность отфильтровывать посторонние данные, которые не имеют отношения к делу. Этот подход в настоящее время используется Voice, созданной Block.one социальной сетью, хотя в будущем это приложение будет требовать большей гибкости и программируемости.
History-tools/WASM-QL
В будущем большая часть этого процесса преобразования и сериализации, зависящего от приложения, будет программироваться функцией, называемой WASM-QL. Это позволит авторам контрактов предоставлять сериализаторы данных и специфичные для домена запросы в рамках развернутого контракта. Для многих специфических потребностей приложений, таких как отслеживание экономической истории, WASM-QL может стать более коротким путём интеграции с крупным приложением.
Создано участниками сообщества
DFuse
Dfuse.io – это SaaS предложение от EOSCanada, предоставляющее гибкий и быстрый механизм запросов на основе GraphQL для блокчейнов на базе EOSIO. Приложения, интегрированные с “v1” history API, смогут довольно легко перейти на этот сервис, однако невозможность разместить его локально может стать препятствием для предприятий с повышенными требованиями к безопасности или проверяемости.
Hyperion
Hyperion – это продукт с открытым исходным кодом, поддерживаемый EOSRio, который предоставляет масштабируемую версию v2 history API, построенную на основе elasticsearch, rabbitMQ и redis. И хотя локальное развёртывание решения с открытым исходным кодом требует некоторого терпения, именно в сообществе вокруг Hyperion вы найдёте одних из самых опытных экспертов EOSIO из существующих сегодня.
Заключение
Создание приложения, способного интегрироваться с высокопроизводительными блокчейнами на EOSIO и отслеживать активность популярных приложений, таких как распространённые токены – это нетривиальная задача. В этой нише уже сформировались сообщества и инструменты, которые помогают разработчикам достичь поставленной цели, однако это всё же не так просто, как установить готовый продукт и запустить его. Дни, когда производительность блокчейна могла покрывать неэффективность интеграций, сочтены. Следующее поколение блокчейнов на основе EOSIO потребует качественной интеграции корпоративно уровня, поскольку для полноценной реализации своего потенциала им будет необходимо масштабироваться.
Оригинал поста: ЗДЕСЬ
@blockchained, Поздравляю!
Ваш пост был упомянут в моем хит-параде в следующей категории: