Skip to main content
Мониторинг слотов и блоков позволяет отслеживать консенсус сети Solana, время создания блоков и общее состояние сети. С помощью LaserStream вы можете в реальном времени отслеживать продвижение слотов, финализацию блоков и показатели производительности сети, используя SDK helius-laserstream.
Предварительные требования: В этом руководстве предполагается, что вы выполнили инструкции из краткого руководства по gRPC для LaserStream и получили ключ API.

Типы мониторинга

Отслеживание хода достижения сетевого консенсусаОтслеживайте продвижение слотов на разных уровнях подтверждения:
Данные слота включают: номер слота, родительский слот, статус подтверждения (processed / confirmed / finalized) и сведения о лидере.
Лучше всего подходит для: мониторинга состояния сети, анализа временных параметров слотов и отслеживания консенсуса.

Практические примеры

Пример 1. Мониторинг состояния сети

Отслеживайте продвижение слотов и выявляйте проблемы сети:

Пример 2. Мониторинг создания блоков

Отслеживайте создание блоков и объем транзакций:

Пример 3. Мониторинг отфильтрованных блоков

Отслеживайте блоки, содержащие активность определенных программ:

Структуры данных

Каждый слот соответствует примерно 400 мс сетевого времени. Три уровня подтверждения предоставляют последовательно усиливающиеся гарантии: processed (начальный), confirmed (одобрен квалифицированным большинством голосов), finalized (необратимый).
Поля u64 (slot, parent) поступают в виде строк, чтобы сохранить точность за пределами Number.MAX_SAFE_INTEGER. Если вам нужны арифметические операции, преобразуйте их с помощью Number(slot.slot). status — числовое перечисление; используйте CommitmentLevel[slot.status], чтобы получить понятное человеку имя.
Числовые поля (slot, parentSlot, executedTransactionCount, entriesCount, а также значения внутри blockHeight и blockTime) передаются в виде строк, поскольку в базовом proto они имеют тип u64. Для арифметических операций или сравнений оберните их в Number(...).
Размер полных блоков со всеми транзакциями и аккаунтами может достигать нескольких МБ. К ним применяется то же соглашение о представлении u64 в виде строк: для арифметических операций оберните числовые поля в Number(...). Внутри каждой транзакции meta.fee, meta.preBalances, meta.postBalances и другие поля также представлены строками.

Рекомендации по производительности

Slot Monitoring

Низкая нагрузка: очень низкое потребление пропускной способности и минимальные накладные расходы на обработку. Подходит для панелей мониторинга.

Block Metadata

Сбалансированный вариант: умеренное потребление пропускной способности и аналитика на уровне блоков без полного набора данных. Подходит для аналитических задач.

Full Blocks

Большой объем: полные данные транзакций, требующие надежной обработки. Всегда используйте вместе с фильтрами.

Filtered Blocks

Оптимизированный вариант: используйте accountInclude и отключайте ненужные includeAccounts/includeEntries.

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

Отслеживайте состояние и производительность сети: временные параметры слотов, перегрузку и консенсус.

Обработка ошибок

Признак: Пропуски в последовательности слотов.Причины: Проблемы с сетевым подключением, простой валидатора или задержки при обработке клиентом.Решения: Отслеживайте пропуски слотов и создавайте оповещения; реализуйте логику наверстывания с помощью воспроизведения исторических данных; контролируйте состояние подключения.
Признак: Слишком большой объем данных блоков.Решения: Используйте метаданные блоков вместо полных блоков; применяйте фильтры аккаунтов; отключайте ненужные включения (записи, аккаунты); обрабатывайте данные асинхронно.
Признак: Нестабильные временные параметры слотов.Анализ: Рассчитывайте скользящие средние; отслеживайте отклонения; контролируйте показатели состояния сети; сопоставляйте их с производительностью валидаторов.

Рекомендации

Рекомендации для рабочей среды:
  • Начинайте с метаданных — используйте метаданные блоков, прежде чем подписываться на полные блоки
  • Применяйте фильтры — используйте accountInclude, чтобы отбрасывать нерелевантные данные
  • Контролируйте временные параметры — отслеживайте продвижение слотов как ранний индикатор состояния сети
  • Обрабатывайте пропуски — используйте воспроизведение исторических данных, чтобы при повторном подключении автоматически загружать пропущенные слоты
  • Обрабатывайте асинхронно — не блокируйте обработку потока ресурсоемкими вычислениями
  • Выбирайте уровень подтверждения в соответствии с задачей — processed для интерфейсов с низкой задержкой, confirmed/finalized для записи состояния

Следующие шаги

Transaction Monitoring

Фильтруйте транзакции по программе, аккаунту, голосу или статусу ошибки.

Stream Pump AMM Data

Практический пример: отслеживайте транзакции Pump AMM.

Decoding Transaction Data

Преобразуйте двоичные полезные нагрузки transactionUpdate в читаемые транзакции Solana.

Yellowstone protocol reference

Тот же рабочий процесс с использованием низкоуровневого протокола Yellowstone gRPC.