跳转到主要内容
在本教程中,我们将向您展示如何设置 Tenderly Web3 Action 来监控 Lido 验证者退出请求 并通过 Telegram 发送通知。本项目演示了如何使用 Web3 Actions 与智能合约和外部 API 交互以创建自定义通知系统。 使用此 GitHub 项目模板来设置您自己的 Lido 验证者退出请求监控:

验证者监控 Web3 Action 模板

项目概览

本项目的目的是设置一个系统来监控 Lido 验证者退出请求,并在满足特定条件时发送通知。 以下是项目流程的简要说明:
  1. 订阅相关链上事件:Web3 Action 监听以太坊主网上 Lido 合约的 ValidatorExitRequest 事件。
  2. 使用 Tenderly API 解码事件:检测到事件时,使用 Tenderly API 获取事务详情。
  3. 过滤特定感兴趣的事件:进一步评估 ValidatorExitRequest 事件,检查 stakingModuleId 是否为 1 以及 nodeOperatorId 是否为 14。
  4. 响应:如果感兴趣的 ValidatorExitRequest 发生,Web3 Action 将向指定的 Telegram 频道发送包含验证者退出请求详情的通知。

前提条件

在开始之前,请确保您已具备:
  • 已安装 Tenderly CLI
  • Node.js(当前支持 v20)
  • npm
  • 一个 Telegram bot token 和频道 ID
  • Tenderly 账户和项目

设置

让我们一步步设置您的 Lido 验证者退出通知系统:

工作原理

让我们分解 lidoEvents.ts 文件的主要组件:
showLineNumbers
subscribeToLidoValidatorExitRequestFn 函数是我们 Web3 Action 的主入口。它处理以下任务:
  1. 使用 Tenderly API 获取事务详情
  2. 检查 stakingModuleId 是否为 1 且 nodeOperatorId 是否为 14
  3. 如果条件满足,则向指定的 Telegram 频道发送通知

用于事务 Trace 的 Tenderly API

此 Web3 Action 的关键部分是使用 Tenderly API 获取事务 trace。以下是所使用的 API 端点:
此 API 端点返回事务的详细 trace,其中包括事务执行期间发出的所有日志和事件。以下是 URL 各部分的含义:
  • https://api.tenderly.co/api/v1/public-contract/:Tenderly 公共合约 API 的基础 URL
  • ${network}:网络标识符(例如以太坊主网为 1
  • ${txHash}:我们感兴趣的事务的哈希
此 API 的响应包含关于事务的大量信息,包括:
  • 所有发出的事件及其参数
  • 事务期间发生的内部调用
  • 发生的状态变化
在我们的 Web3 Action 中,我们使用此 trace 来查找 ValidatorExitRequest 事件并提取相关信息:
showLineNumbers
这使我们能够精确识别感兴趣的验证者退出请求,并提取发送通知所需的必要信息。
使用 Tenderly API 获取事务 trace 提供了一种强大的方式来访问链上事件的详细信息,而无需直接与区块链交互或设置您自己的节点。

自定义

对于 Lido 验证者退出,感兴趣的事件由参数 stakingModuleId 值为 1 且 nodeOperatorId 值为 14 来识别。 要修改这些过滤条件或添加更多要监控的事件:
  1. 编辑 lidoEvents.ts 文件
  2. 更新 if 语句中的条件检查以匹配您的要求
  3. 根据需要修改消息格式或添加额外信息
例如,要更改 stakingModuleIdnodeOperatorId 条件:
showLineNumbers

监控和故障排除

为确保您的 Web3 Action 正常工作:
  • 在 Tenderly dashboard 中监控您的 Web3 Action 执行
  • 检查 Tenderly 日志以查看任何错误消息或执行详情
  • 确保您的 Telegram bot 有权向指定频道发送消息
此设置专门用于监控以太坊主网上的 Lido 验证者退出请求。

总结

您现在已使用 Tenderly Web3 Actions 设置了一个自定义通知系统,用于监控 Lido 验证者退出请求。