НОВОЕ: Helius приобретает Light Protocol
отслеживание ончейн-событий в Solana
Блог/Основы

Отслеживание ончейн-событий в Solana

Сооснователь и CEOMert Mumtaz в XMert Mumtaz в LinkedIn
Чтение: 7 мин

Введение

Одна из ключевых задач разработчика в криптоиндустрии — настройка систем, которые отслеживают события в блокчейне. Возможно, вам нужно получать подтверждения платежей, отслеживать продажи NFT и переводы средств или просто контролировать аккаунты в целях безопасности. Каким бы ни был ваш сценарий, система мониторинга блокчейна должна быть отказоустойчивой, надежной и оптимизированной для минимальной задержки.

В этой статье мы рассмотрим несколько способов создания таких систем в Solana, приведем примеры их применения и расскажем, как создавать более эффективные решения с помощью Helius.

Отслеживание событий в блокчейне

Существует два основных способа отслеживать ончейн-события:

  1. Опрос
  2. Потоковая передача данных

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

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

Опрос — простой и распространенный подход, однако он может создавать большой объем сетевого трафика и потреблять много ресурсов, особенно при частых запросах. Потоковая передача эффективнее: сервер отправляет только обновления, сокращая объем передаваемых данных и сетевой трафик.

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

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

Для большинства процессов в блокчейнах, особенно в Solana, лучше использовать потоковую передачу. На это есть несколько причин, но главное — ее проще реализовать и масштабировать для сценариев с высокой нагрузкой, на которых специализируется Solana.

Как отслеживать ончейн-события в Solana

Solana — очень быстрый блокчейн. Новые блоки создаются каждые 400 мс и обычно содержат тысячи транзакций. Удивительно, но медленнее Solana уже не будет. По мере того как основные разработчики совершенствуют систему, скорость обработки новых данных в блокчейне будет только расти. Поэтому крайне важно проектировать системы с учетом масштабирования.

К счастью, в Solana есть несколько способов отслеживать ончейн-данные:

  1. Опрос
  2. Websockets
  3. Geyser
  4. Helius Webhooks

Опрос

Это наименее предпочтительный способ отслеживать события в Solana, хотя концептуально он может быть самым простым. 

В зависимости от нужных данных можно просто настроить цикл, который регулярно вызывает метод JSON-RPC на RPC-ноде Solana. Типичные сценарии — опрос метода getBlock для отслеживания новых блоков или опрос `getSignaturesForAddress` для проверки новых транзакций по заданному адресу.

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

Websockets

RPC Solana также предоставляют разработчикам PubSub Websockets. Доступны следующие типы событий:

Ниже приведен небольшой пример кода на JavaScript для отслеживания изменений аккаунта через Helius RPC, который поддерживает Websockets:

Код
const solanaWeb3 = require(‘@solana/web3.js’)
const connection = new solanaWeb3.Connection(“https://rpc.helius.xyz?api-key=“);
(async () => {  
connection.onAccountChange(
new solanaWeb3.PublicKey(“5yv6Vh8FNx93TXeSS94xy8VLZMbTqx4vXp7Zg5bDLZtE”),
(updatedAccountInfo, context) => console.log(“Updated account info: “, updatedAccountInfo),“confirmed”  );
})();

‍У Websockets есть важное ограничение. Они удобны для прототипирования, но на практике, по нашему опыту, довольно нестабильны и ненадежны. Настоятельно рекомендуем не использовать их в критически важных процессах, иначе вы будете пропускать события.

Geyser

Кратко: ноды Solana могут передавать вам данные напрямую через интерфейс плагинов, позволяющий настраивать способ их получения. Это самый быстрый способ потоковой передачи данных в Solana с минимальной задержкой. Он совершенно необходим для ликвидаций в DeFi и приложений, чувствительных к задержке.

У валидаторов и RPC Solana есть собственный механизм потоковой передачи данных: плагины Geyser.

Валидаторы поддерживают механизм плагинов под названием «Geyser». Через него сведения об аккаунтах, слотах, блоках и транзакциях можно передавать во внешние хранилища данных, такие как реляционные базы данных, базы данных NoSQL или Kafka. Затем можно создавать RPC-сервисы, которые получают данные из этих внешних хранилищ и позволяют применять более гибкие целевые оптимизации, например кеширование и индексирование.

К сожалению, настройка Geyser может быть сложной и дорогостоящей. Даже после настройки потребуется немало работы в области DevOps, чтобы обеспечить стабильную работу. К счастью, в Helius мы разработали GeyserVM. Он позволяет загрузить плагины и запустить их всего за несколько секунд. Наши отказоустойчивые кластеры с высокой доступностью избавляют вас от проблем с данными, а совместное использование ресурсов позволяет сократить ежемесячные расходы более чем на 200%!

Если вам нужен выделенный сервис Geyser-as-a-Service, мы, конечно, также его предлагаем. Подробнее о нем читайте здесь.

Webhooks

Принцип работы Webhooks прост. Они отслеживают события и при их возникновении отправляют данные на настроенный вами сервер. Например, если вы хотите отправлять уведомление на сервер Discord при каждой продаже NFT, webhook позволит легко это реализовать. 

Для большинства задач по отслеживанию событий в Solana Webhooks будут самым простым, гибким и экономичным решением. Задуматься об альтернативе стоит только в сценариях с экстремально низкой задержкой, где разница в 5 мс может определить успех приложения, например при высокочастотной торговле.

В Helius мы создали самое надежное решение для Webhooks во всей криптоиндустрии. 

Вы можете отслеживать до 100 000 адресов в одном webhook, настраивать нужные типы событий — мы проанализируем их за вас — и просто указать URL своего сервера. Это все, что нужно, чтобы начать работу бесплатно.

Одно из многочисленных преимуществ такого сервиса — вы не только экономите недели или месяцы работы разработчиков, но и получаете эластичный бэкенд, который масштабируется по мере вашего роста. 

Подробнее о Webhooks читайте здесь.

Сценарии использования

Теперь вы знаете, как отслеживать ончейн-события в Solana. Что делать дальше? Вот несколько интересных сценариев:

Боты

  • Когда NFT выставляют на маркетплейсе X, запускать действие «покупка NFT».
  • Когда маржинальная позиция становится нездоровой, запускать действие «ликвидация».

Мониторинг и оповещения

  • Когда программа записывает определенное сообщение в журнал, запускать интеграцию с PagerDuty.
  • Когда баланс токен-аккаунта изменяется более чем на X%, отправлять предупреждение с помощью Dialect.

Индексирование по событиям

  • Когда в заданной программе происходит любая транзакция, отправлять ее напрямую в базу данных или бэкенд.

Уведомления и отслеживание активности

  • Когда происходит перевод с кошелька X на кошелек Y, отправлять уведомление в Slack или по электронной почте.

Аналитика и журналы

  • Когда происходит событие X, отправлять его в ETL-конвейер или сохранять напрямую в Helius для анализа тенденций с течением времени.

Автоматизация процессов

  • Когда происходит событие X, запускать любой набор действий.

Заключение

В этой статье мы рассмотрели различия между опросом и потоковой передачей, разные способы отслеживать блокчейн Solana и несколько примеров использования.

Итак, отслеживать ончейн-события в Solana можно с помощью опроса, Websockets, Geyser или Helius Webhooks. У каждого подхода есть свои преимущества и недостатки. Прежде чем выбирать способ реализации, важно учесть требования вашей системы. Спасибо за внимание!

Чтобы узнать больше о решениях Helius, включая Solana RPC, Solana API, Solana Webhooks и инфраструктуру Solana, посетите наш сайт.

‍

Подпишитесь на Helius

Следите за новостями разработки на Solana и получайте уведомления о наших публикациях