Skip to main content
В этом туториале мы покажем вам, как настроить Tenderly Web3 Action для мониторинга запросов на выход валидаторов Lido и отправки уведомлений через Telegram. Этот проект демонстрирует, как использовать Web3 Actions для взаимодействия со смарт-контрактами и внешними API для создания собственной системы уведомлений. Используйте этот шаблон Github-проекта, чтобы настроить собственный мониторинг запросов на выход валидаторов Lido:

Шаблон Web3 Action для мониторинга валидаторов

Обзор проекта

Цель этого проекта — настроить систему, которая отслеживает запросы на выход валидаторов Lido и отправляет уведомления при выполнении определённых условий. Вот краткое описание процесса проекта:
  1. Подпишитесь на релевантные on-chain события: Web3 Action отслеживает события ValidatorExitRequest от контракта Lido в Ethereum mainnet.
  2. Декодируйте событие через Tenderly API: когда событие обнаружено, извлекает детали транзакции через Tenderly API.
  3. Фильтруйте только интересующие события: событие ValidatorExitRequest дополнительно оценивается путём проверки того, что stakingModuleId равен 1, а nodeOperatorId равен 14.
  4. Реагируйте: если произошёл интересующий ValidatorExitRequest, Web3 Action отправляет уведомление в указанный канал Telegram с деталями запроса на выход валидатора.

Предварительные требования

Прежде чем начать, убедитесь, что у вас есть следующее:
  • Установленный Tenderly CLI
  • Node.js (в настоящее время поддерживается v20)
  • npm
  • Токен Telegram-бота и ID канала
  • Аккаунт и проект Tenderly

Настройка

Пройдём шаги настройки вашей системы уведомлений о выходе валидаторов Lido:

Как это работает

Давайте разберём основные компоненты файла lidoEvents.ts:
showLineNumbers
Функция subscribeToLidoValidatorExitRequestFn — это основная точка входа нашего Web3 Action. Она обрабатывает следующие задачи:
  1. Извлекает детали транзакции через Tenderly API
  2. Проверяет, что stakingModuleId равен 1, а nodeOperatorId равен 14
  3. Если условие выполнено, отправляет уведомление в указанный канал Telegram

Tenderly API для трейса транзакции

Ключевая часть этого Web3 Action — получение трейса транзакции через Tenderly API. Вот используемый endpoint API:
Этот endpoint API возвращает подробный трейс транзакции, включающий все логи и события, сгенерированные во время выполнения транзакции. Вот что представляет каждая часть URL:
  • https://api.tenderly.co/api/v1/public-contract/: базовый URL для публичного API контрактов Tenderly
  • ${network}: идентификатор сети (например, 1 для Ethereum Mainnet)
  • ${txHash}: хеш транзакции, которая нас интересует
Ответ этого API содержит массу информации о транзакции, включая:
  • Все сгенерированные события и их параметры
  • Внутренние вызовы, сделанные во время транзакции
  • Произошедшие изменения состояния
В нашем Web3 Action мы используем этот трейс, чтобы найти событие ValidatorExitRequest и извлечь релевантную информацию:
showLineNumbers
Это позволяет нам точно идентифицировать интересующие нас запросы на выход валидаторов и извлекать необходимую информацию для отправки уведомления.
Использование Tenderly API для трейсов транзакций предоставляет мощный способ получить подробную информацию об on-chain событиях без необходимости прямого взаимодействия с блокчейном или запуска собственной ноды.

Кастомизация

Для выходов валидаторов Lido интересующие события распознаются по параметрам stakingModuleId со значением 1 и nodeOperatorId со значением 14. Чтобы изменить эти условия фильтрации или добавить больше событий для мониторинга:
  1. Отредактируйте файл lidoEvents.ts
  2. Обновите проверку условия в операторе if в соответствии с вашими требованиями
  3. Измените формат сообщения или добавьте дополнительную информацию по необходимости
Например, чтобы изменить условия stakingModuleId и nodeOperatorId:
showLineNumbers

Мониторинг и устранение неполадок

Чтобы убедиться, что ваш Web3 Action работает корректно:
  • Отслеживайте выполнения Web3 Action в панели Tenderly
  • Проверяйте логи Tenderly на предмет сообщений об ошибках или деталей выполнения
  • Убедитесь, что у вашего Telegram-бота есть разрешение отправлять сообщения в указанный канал
Эта настройка специально предназначена для мониторинга запросов на выход валидаторов Lido в Ethereum mainnet.

Заключение

Теперь вы настроили пользовательскую систему уведомлений с использованием Tenderly Web3 Actions для мониторинга запросов на выход валидаторов Lido.