:RU: Доступ к данным блокчейна Cardano с помощью Ledger Sync

Перевод статьи Accessing Cardano Blockchain Data with Ledger Sync

image

Команда инженеров Фонда Cardano недавно приступила к разработке инструмента предоставления данных на базе Java под названием Ledger Sync, который предоставляет доступ к данным блокчейна Cardano. Ledger Sync стремится достичь того же уровня полноты данных, что и Cardano DB Sync, также называемая db-sync, предоставляя при этом опцию на языке программирования, хорошо зарекомендовавшем себя в различных компаниях, а также среди широкой базы пользователей. В соответствии с усилиями Фонда по содействию развитию открытого исходного кода Cardano, фреймворк будет выпущен под лицензией с открытым исходным кодом, чтобы предоставить разработчикам и партнерам дополнительный инструмент для индексации цепочки, увеличивая разнообразие экосистемы разработчиков Cardano.

Фонд решил опубликовать репозиторий под лицензией Apache 2.0, которая позволяет использовать фреймворк в коммерческих и некоммерческих приложениях, а также в других инструментах с открытым исходным кодом. Лицензия также обеспечивает правовую определенность в виде патентных прав на инструменты, созданные на ее основе или с ее использованием, а также на изменения в самой платформе, которые должны быть указаны, но не обязательно публично раскрыты. Такое соглашение обеспечивает оптимальную доступность и правовую определенность для компаний, а также других разработчиков и членов сообщества.

Блокчейн как структура данных

Многие системы, основанные на блокчейне, сталкиваются с общей проблемой: данные не могут быть эффективно извлечены способом произвольного доступа из-за организации репозитория в формате связанного списка. Например, чтобы получить доступ к транзакциям, хранящимся в блоке номер 200 на Cardano, приложению пришлось бы выполнить итерацию по первым 199 блокам, прежде чем достичь блока, содержащего желаемую информацию. Если сеть блокчейнов постоянно расширяется, этот подход становится неосуществимым. Например, в настоящее время в сети Cardano создано более 9,5 миллионов блоков.

Тот факт, что определенная информация явно не хранится в блокчейне, представляет собой еще одну проблему. Благодаря модели учета Cardano, основанной на EUTxO, это применимо даже к текущему или историческому балансу кошелька. Чтобы узнать неизрасходованные выходы транзакций (UTXO) в кошельке, нужно было бы отслеживать все UTXO, которые вошли в кошелек и вышли из него, а затем суммировать их для определения окончательного баланса.

Примерно до начала 2022 года db-sync была единственным доступным для разработчиков в экосистеме способом эффективного доступа к данным из блокчейна Cardano. Однако, чтобы достичь вершины цепочки, db-sync также требует обработки огромного объема данных во время начальной синхронизации. Это делает невозможным запуск db-sync для всех проектов. Кроме того, во многих случаях проектам не нужны все данные, предоставляемые db-sync, реальность, которая привела к разработке так называемых цепочечных индексаторов с ограниченной областью действия, позволяет пользователям точно указывать, какие данные необходимо проиндексировать и сделать доступными для определенного приложения. Такие проекты, как Kupo, Scrolls, Oura и Carp, предоставляют сообществу различные способы сделать это.

Помимо этих более технических требований, у бизнеса также часто возникают потребности в надежности таких сервисов предоставления данных. Как правило, эти требования относятся не к фактической реализации в исходном коде, а к тому, как работает такая система. Фонд Cardano разработал Ledger Sync именно для удовлетворения таких требований со стороны бизнеса. Хотя, с одной стороны, он имеет некоторое сходство с db-sync, определенные конструктивные решения делают его более подходящим для распределенных архитектур, поскольку они обеспечивают высокую доступность настроек. Фактически, новый эксплорер Фонда Cardano уже использует Ledger Sync в качестве базового конвейера данных.

Если проектам требуются очень специфические данные из блокчейна Cardano, но они могут отказаться от таких функций, как встроенная высокая доступность и разгрузка консолидации данных, модульные индексаторы цепочек, такие как yaci-store, scrolls и Kupo, представляют собой подходящий выбор. С другой стороны, Ledger Sync предоставляет проектам надежную опцию для слоя данных на основе Java поверх Cardano, особенно когда проектам требуется надежный доступ к данным, связанным с блокчейном, на основе фреймворка, построенного на легкодоступном языке программирования.

Первоначальный дизайн Ledger Sync был направлен на достижение трех целей:

  1. Реализовать сетевые мини-протоколы на Java таким образом, чтобы сетевые данные были доступны способом, родным для языка программирования Java, без зависимостей от других фреймворков.
  2. Разделить этапы простого обхода и консолидации данных, чтобы обеспечить масштабируемую архитектуру, что означает, что части вычислений могут быть распределены по нескольким экземплярам, таким как контейнеры или серверы, с последующей оценкой негативного воздействия, унаследованного от передачи данных по сети вместо их локального хранения на одном сервере.
  3. Внедрить независимую от ноды версию расчета размера вознаграждений, казны и резервов, которую Фонд недавно уже опубликовал с открытым исходным кодом.

Первоначальная реализация, которая появилась в бета-версии эксплорера Фонда, охватывала первые два пункта. Команда инженеров Фонда в настоящее время работает над третьим пунктом в рамках другого проекта с открытым исходным кодом.

Путешествие к репозиторию Ledger Sync

Команда получила ряд знаний на первом этапе разработки, все они уже учтены в версии, выпущенной под лицензией с открытым исходным кодом.

Мы начали разработку сетевых мини-протоколов на Java с нуля, потому что на момент начала проекта хорошо известная библиотека Yaci еще не была доступна в том состоянии, которое мы считали пригодным для использования. Тем не менее, мы заменили предыдущую реализацию сетевого мини-протокола на Yaci в текущей версии, чтобы ускорить принятие этого проекта сообщества. Изменение означает, что необходимо поддерживать только один технический стек Java и обновлять его с учетом любых изменений в протоколе.

Для координации задач между различными сервисами — таких как разделение обхода от последующей обработки и консолидации данных — команда изначально использовала Redis и Apache Kafka, широко известную платформу потоковой передачи данных с открытым исходным кодом. Хотя этот подход и оказывается эффективным, и Kafka, и Redis предоставляют надежные компоненты в распределенной архитектуре, развертывания довольно дорогостоящие и могут стать громоздкими, особенно для небольших настроек. В последнем выпуске команда заменила необходимость в Kafka и сделала ее необязательной. Хотя Ledger Sync работает без Kafka, разработчики могут использовать встроенный механизм событий, доступный в Yaci Store, и публиковать данные о блоках на различных платформах обмена сообщениями, таких как Kafka и RabbitMQ, а затем использовать их из другого приложения.

Мы также изначально использовали ту же схему базы данных, что и db-sync. Этот подход оказался полезным при параллельной разработке эксплорера от Фонда Cardano, поскольку позволил серверной части эксплорера использовать реальные данные для тестирования. Однако это также привело к проблемам при проектировании Ledger Sync, поскольку мы отклонились от подхода к проектированию, основанного на домене, и не создали встроенную схему для первой версии Ledger Sync. Хотя схема базы данных db-sync служит своей цели, она не поддерживает выбранную архитектуру и направлена на распараллеливание при обработке данных Ledger Sync. Поэтому в настоящее время мы работаем над разработкой новой схемы взамен существующей.

Кроме того, большинство недавних дополнений к исходному коду включают поддержку эры Conway в Yaci. Это обновление позволяет Ledger Sync, а также всем другим инструментам на базе Java работать с последней версией леджера и версией сетевого мини-протокола.

Команда инженеров Фонда также запустила рабочий процесс для реализации параллельной обработки нескольких блоков, а также транзакций в отдельных блоках во время процесса начальной синхронизации. Распараллеливание этих вычислений не является простым, поскольку возникает необходимость учитывать зависимости между UTXO, что, следовательно, снижает производительность, получаемую в результате распараллеливания. Кроме того, текущие усилия по разработке включают в себя предложение схем размещения Ledger Sync в различных сценариях развертывания, например, в настройках на основе Kubernetes или просто с помощью docker-compose.

Предстоящий путь

Помимо своих технических возможностей, Ledger Sync поставляется с обязательством Фонда Cardano обеспечивать непрерывную техническую поддержку, а также эксплуатацию репозитория как проекта с открытым исходным кодом. Помимо фреймворка как библиотеки и инструмента как такового, эти усилия направлены на работу с группами сообщества, стремящимися определить стандартную и потенциальную эталонную реализацию для децентрализованных API-интерфейсов данных, где Ledger Sync мог бы использоваться в качестве базового уровня данных.

Предоставление размещенного API данных, гарантирующего высокую доступность, точность и корректность, с профессиональной моделью поддержки является дополнительной целью. Обеспечение этого удовлетворило бы потребности организаций и бизнеса, облегчив им беспрепятственное внедрение блокчейн-решений и, таким образом, способствуя более широкому принятию блокчейна бизнесом. Однако такое начинание требует согласования и сотрудничества с существующими проектами. Только таким образом становится возможным использовать весь потенциал уже существующей экосистемы Cardano, одновременно обеспечивая подход, поддерживающий разнообразие формирующихся бизнес-моделей.

Фонд Cardano призывает всех попробовать Ledger Sync и начать взаимодействие с нашей командой либо через Discord, либо отправив запрос на новую функцию или отчет об ошибке в репозитории Ledger Sync. Мы с нетерпением ждем ваших отзывов и предложений.

// От переводчика: для получения дополнительных переведенных на русский язык статей о Cardano посетите русскоязычный раздел на форуме Cardano. Видеоролики о Cardano на русском языке можно найти на YouTube канале нашего замечательного амбасадора Тимура Сахабутдинова, а также на канале Чарльз Хоскинсон на русском. Хотите поговорить или задать вопрос о Cardano? Тогда приглашаем в наше уютное русскоязычное сообщество Cardano в Telegram. Оставайтесь на связи, все только начинается!