Шаблон Web3 Action для мониторинга валидаторов
Обзор проекта
Цель этого проекта — настроить систему, которая отслеживает запросы на выход валидаторов Lido и отправляет уведомления при выполнении определённых условий. Вот краткое описание процесса проекта:- Подпишитесь на релевантные on-chain события: Web3 Action отслеживает события
ValidatorExitRequestот контракта Lido в Ethereum mainnet. - Декодируйте событие через Tenderly API: когда событие обнаружено, извлекает детали транзакции через Tenderly API.
- Фильтруйте только интересующие события: событие
ValidatorExitRequestдополнительно оценивается путём проверки того, чтоstakingModuleIdравен 1, аnodeOperatorIdравен 14. - Реагируйте: если произошёл интересующий
ValidatorExitRequest, Web3 Action отправляет уведомление в указанный канал Telegram с деталями запроса на выход валидатора.
Предварительные требования
Прежде чем начать, убедитесь, что у вас есть следующее:- Установленный Tenderly CLI
- Node.js (в настоящее время поддерживается v20)
- npm
- Токен Telegram-бота и ID канала
- Аккаунт и проект Tenderly
Настройка
Пройдём шаги настройки вашей системы уведомлений о выходе валидаторов Lido:Как это работает
Давайте разберём основные компоненты файлаlidoEvents.ts:
showLineNumbers
subscribeToLidoValidatorExitRequestFn — это основная точка входа нашего Web3 Action. Она обрабатывает следующие задачи:
- Извлекает детали транзакции через Tenderly API
- Проверяет, что
stakingModuleIdравен 1, аnodeOperatorIdравен 14 - Если условие выполнено, отправляет уведомление в указанный канал Telegram
Tenderly API для трейса транзакции
Ключевая часть этого Web3 Action — получение трейса транзакции через Tenderly API. Вот используемый endpoint API:https://api.tenderly.co/api/v1/public-contract/: базовый URL для публичного API контрактов Tenderly${network}: идентификатор сети (например,1для Ethereum Mainnet)${txHash}: хеш транзакции, которая нас интересует
- Все сгенерированные события и их параметры
- Внутренние вызовы, сделанные во время транзакции
- Произошедшие изменения состояния
ValidatorExitRequest и извлечь релевантную информацию:
showLineNumbers
Использование Tenderly API для трейсов транзакций предоставляет мощный способ получить подробную информацию об on-chain событиях без необходимости прямого взаимодействия с блокчейном или запуска собственной ноды.
Кастомизация
Для выходов валидаторов Lido интересующие события распознаются по параметрамstakingModuleId со значением 1 и nodeOperatorId со значением 14.
Чтобы изменить эти условия фильтрации или добавить больше событий для мониторинга:
- Отредактируйте файл
lidoEvents.ts - Обновите проверку условия в операторе
ifв соответствии с вашими требованиями - Измените формат сообщения или добавьте дополнительную информацию по необходимости
stakingModuleId и nodeOperatorId:
showLineNumbers
Мониторинг и устранение неполадок
Чтобы убедиться, что ваш Web3 Action работает корректно:- Отслеживайте выполнения Web3 Action в панели Tenderly
- Проверяйте логи Tenderly на предмет сообщений об ошибках или деталей выполнения
- Убедитесь, что у вашего Telegram-бота есть разрешение отправлять сообщения в указанный канал