验证者监控 Web3 Action 模板
项目概览
本项目的目的是设置一个系统来监控 Lido 验证者退出请求,并在满足特定条件时发送通知。 以下是项目流程的简要说明:- 订阅相关链上事件:Web3 Action 监听以太坊主网上 Lido 合约的
ValidatorExitRequest事件。 - 使用 Tenderly API 解码事件:检测到事件时,使用 Tenderly API 获取事务详情。
- 过滤特定感兴趣的事件:进一步评估
ValidatorExitRequest事件,检查stakingModuleId是否为 1 以及nodeOperatorId是否为 14。 - 响应:如果感兴趣的
ValidatorExitRequest发生,Web3 Action 将向指定的 Telegram 频道发送包含验证者退出请求详情的通知。
前提条件
在开始之前,请确保您已具备:- 已安装 Tenderly CLI
- Node.js(当前支持 v20)
- npm
- 一个 Telegram bot token 和频道 ID
- Tenderly 账户和项目
设置
让我们一步步设置您的 Lido 验证者退出通知系统:git clone https://github.com/Tenderly/tenderly-lido-validator-monitoring-solution
cd tenderly-lido-validator-monitoring-solution
account_id: "<YOUR_ACCOUNT_ID>"
actions:
<YOUR_ACCOUNT_ID>/<YOUR_PROJECT_SLUG>:
runtime: v2
sources: actions
specs:
action_name:
description: Get a notification when condition matches on Lido tx
function: lidoEvents:subscribeToLidoValidatorExitRequestFn
execution_type: parallel
trigger:
type: transaction
transaction:
status:
- mined
filters:
- network: 1
eventEmitted:
contract:
address: 0x0de4ea0184c2ad0baca7183356aea5b8d5bf5c6e
name: ValidatorExitRequest
project_slug: "<YOUR_PROJECT_SLUG>"
要添加 secrets,前往您项目内的 Web3 Actions 并导航到 Secrets 部分。
工作原理
让我们分解lidoEvents.ts 文件的主要组件:
showLineNumbers
subscribeToLidoValidatorExitRequestFn 函数是我们 Web3 Action 的主入口。它处理以下任务:
- 使用 Tenderly API 获取事务详情
- 检查
stakingModuleId是否为 1 且nodeOperatorId是否为 14 - 如果条件满足,则向指定的 Telegram 频道发送通知
用于事务 Trace 的 Tenderly API
此 Web3 Action 的关键部分是使用 Tenderly API 获取事务 trace。以下是所使用的 API 端点:https://api.tenderly.co/api/v1/public-contract/:Tenderly 公共合约 API 的基础 URL${network}:网络标识符(例如以太坊主网为1)${txHash}:我们感兴趣的事务的哈希
- 所有发出的事件及其参数
- 事务期间发生的内部调用
- 发生的状态变化
ValidatorExitRequest 事件并提取相关信息:
showLineNumbers
使用 Tenderly API 获取事务 trace 提供了一种强大的方式来访问链上事件的详细信息,而无需直接与区块链交互或设置您自己的节点。
自定义
对于 Lido 验证者退出,感兴趣的事件由参数stakingModuleId 值为 1 且 nodeOperatorId 值为 14 来识别。
要修改这些过滤条件或添加更多要监控的事件:
- 编辑
lidoEvents.ts文件 - 更新
if语句中的条件检查以匹配您的要求 - 根据需要修改消息格式或添加额外信息
stakingModuleId 和 nodeOperatorId 条件:
showLineNumbers
监控和故障排除
为确保您的 Web3 Action 正常工作:- 在 Tenderly dashboard 中监控您的 Web3 Action 执行
- 检查 Tenderly 日志以查看任何错误消息或执行详情
- 确保您的 Telegram bot 有权向指定频道发送消息