跳转到主要内容
Web3 Actions 在付费套餐中提供。如需为您的账户启用,请 联系我们的销售团队

什么是 Web3 Actions?

Web3 Actions 是面向智能合约和链上事件的可编程钩子。它们也可以充当您 dapp 的无服务器后端。Web3 Action 是运行在 Tenderly 基础设施上的普通 TypeScript/JavaScript 函数。 Web3 Action 附带用于持久化数据的键值存储,以及用于管理 API 密钥等敏感信息的 secrets 管理。您可以将 Web3 Actions 视为构建 Web3 版 IFTTT/Zapier 自动化的基础设施,让您能够将智能合约、链上事件、dapp 前端、API 和其他服务黏合在一起。 根据您定义的触发规则,外部链上或链下事件将触发您的 Web3 Action,您的 JavaScript/TypeScript 代码会立即处理该事件。Web3 Actions 可以以 parallel 模式(默认)或 sequential 模式 运行。 在 Parallel 模式下,actions 会以无特定顺序执行(与触发时间相比)。在 sequential 模式下,actions 会按照触发的先后顺序执行。 借助 Web3 Actions,您可以构建及时了解非平凡事件的系统。这样,您可以在 UX 和交互性方面改进 dapp,并通过您可以收集或通过通知分享的信息深度增强项目。 以下是一些 Web3 Actions 的用例,供您感受其可能性:
  • 关注重要事务:为合约发出的事件构建实时(近实时)、数据丰富的通知系统,通过 Discord、Slack 或 Telegram 发送消息,或将其写入数据库。
  • 区块被打包时:监控链上资产或 gas 价格的变化,构建自定义分析和自动化。然后将数据发送到外部 API。
  • 暴露 webhook:通过暴露处理用户输入的 webhook 增强您的 dapp。
  • 周期性自动化:使用 Tenderly simulations 定期模拟事务执行,并将结果发送到 Slack,甚至将事务发送到链上以实现自动化。
如需更多灵感,请查看 Web3 Actions 和不同事件的用例 部分。
Web3 Actions 受到限速。当前的 Web3 Actions 执行使用速率限制为 每用户每 5 分钟 100 次执行。超出部分将被跳过。

快速入门指南

按照这些指南快速开始通过浏览器或命令行工具构建 Web3 Actions。 设置 Web3 Actions 需要您为函数编写 JavaScript 代码。使用 Tenderly CLI 构建 Web3 Actions 时需要在 yaml 配置文件 中定义触发器。所定义的触发器和 yaml 配置将成为您项目代码库不可分割的一部分。
要设置由与事务相关的事件触发的 Web3 Actions,您必须使用基于 CLI 的方式。

CLI 备忘单

理解 Web3 Actions

简而言之,Web3 Actions 指示 Tenderly 监听特定的外部事件,并在事件发生时运行您的代码。 您需要提供与预定义外部事件相关的 触发器规范。Web3 Action 可以在每几个区块被打包时触发(block 触发器)、在相关事务被执行时触发(transaction 触发器)、通过它暴露的 webhook 触发(webhook 触发器),或者按特定时间间隔触发(periodic 触发器)。 当事件发生时,Tenderly 会执行您的自定义代码(函数)。此时,监控成为主动的。例如,您可以将数据发送到外部 API、写入数据库、通过消息服务发送推送通知或数据丰富的消息,甚至向区块链发送新的事务。 让我们熟悉 Web3 Actions 的三个核心元素: 函数事件触发器规范
The elements of Web3 Actions
函数(Functions): 您希望在指定的外部事件发生时执行的自定义 JavaScript 或 TypeScript 代码。函数可以直接在浏览器中通过 Tenderly Dashboard 编写,也可以使用 CLI(在 npm 项目中)编写。无论哪种情况,函数必须是定义文件的具名导出。 事件(Events): 预定义外部事件的实例,您可以通过配置触发器来监听它们。函数将事件对象作为参数接收,使函数代码能够获取有关事件的数据。支持的事件包括:
  • Block: 每次区块被打包时运行一个函数。
  • Periodic: 按特定间隔运行一个函数。
  • Webhook: 通过 HTTP 调用 Web3 Action。
  • Transaction: 对匹配特定过滤条件的合约事务作出响应。
触发器规范: 描述 Web3 Action 应监听的外部事件的架构或模式。 在构建 Web3 Action 时,您需要将触发器规范关联到您希望运行的函数。当 Tenderly 检测到触发器中指定的事件时,就会执行您的自定义代码(函数)。 了解如何配置 Web3 Action 函数、事件和触发器

Web3 Actions 实用工具

错误报告: Tenderly Dashboard 中的概览页面,您可以在其中查找 Web3 Action 执行期间发生的错误和事件,并重新执行失败的执行。了解更多 Web3 Actions 中的错误处理 Secrets: 存储敏感数据(例如 API 密钥)的位置,可从您的代码中调用。这些信息存储在 Tenderly Dashboard 中,且只能从代码中读取。 Storage: 项目范围的键值存储,可用于在连续运行之间持久化数据。您可以通过 Tenderly Dashboard 读写 Storage。了解如何 管理 Secrets 和使用 Web3 Actions Storage
Web3 Action Storage and Secrets

本地开发和测试支持

为了在编写 Web3 Action 函数时快速迭代,请了解 @tenderly/actions-test npm 包如何为 action 函数代码提供 测试和本地开发支持

Web3 Actions 和不同事件的用例

以下是每种事件类型的简要概览和示例用例。 🧾 Transaction 事件: 监听匹配给定条件的事务事件,例如成功或失败的事务、价值转账、事务使用的特定 gas 数量、发出的事件等等。了解 Transaction 事件 示例用例:
  • 在事务发生时收集特定数据并将其存储在 Tenderly Storage 中。
  • 通过 HTTP 将事务数据发送到其他(Web2 或 Web3)服务。
  • 通过您的通信渠道(例如 Discord)发送有关想要或不希望的事务的数据丰富的通知。
  • 从 Web3 Action 本身向链上发送事务。
🔢 Block 事件: 监听所选网络上区块被打包时的事件。了解 Block 事件 示例用例:
  • 监控链上资产的变化以构建自定义分析和自动化。
  • 每隔几个区块被打包监控一次智能合约的变化,并在满足条件时运行自动化。
  • 监控 gas 价格并自动化您的操作。
🪝 Webhook 事件: 监听 HTTP 请求发送到 Webhook URL 时的事件(action 暴露一个 WebHook)。了解 Webhook 事件 示例用例:
  • 构建处理 dapp 用户输入的无服务器后端。
  • 检索您其他 Web3 Actions 收集的有关事务或特定智能合约变化的数据。
  • 您的 CI 可以调用 webhook 来清理或准备其他 Tenderly 资源,例如 您用于测试的 Virtual Environments
🕖 Periodic 事件: 监听表示您指定的时间间隔或 CRON 表达式所对应的事件。了解 Periodic 事件 示例用例:
  • 定期发送带有从网络收集的自定义数据和/或在 Web3 Action Storage 中聚合数据的通知。
  • 模拟 DAO 提案并向 Discord 发送投票提醒。
  • 使用 Tenderly simulations 模拟事务执行,并将结果发送到 Slack,和/或将事务发送到链上以实现自动化。
  • 定期清理 Tenderly 基础设施(例如,在继续 simulations 之前,将 Fork 指向 Mainnet 的最新区块)。

Web3 Actions 教程

如果您希望获得完整的教程,这里有一个逐步指南,用于监控链上井字棋游戏,包含所有相关说明,从部署游戏合约到落子后显示棋盘。

如何处理链上事件

如需了解如何构建 Web3 Action,在 Uniswap 交易对创建时向 Discord 发送消息,并使用 Axios 获取一些数据,请点击此处:

如何在新 Uniswap 池创建时向 Discord 发送消息

要在 Tenderly Web3 Action 中部署您自己的简易 Oracle,请查看此教程:

如何构建自定义 Oracle

如需了解 Web3 Action 如何使用 Virtual Environments 模拟提交到多签钱包的事务,并将模拟结果作为 Discord 消息发送,请尝试以下教程:

Web3 Actions + 多签钱包

资源

您可以在此处找到有关主要构建模块和配套工具的所有相关信息: 查找关于 Web3 Actions 项目结构以及 tenderly.yaml 配置文件总体布局的详细信息:

项目结构

查找有关 Web3 Actions 核心组件以及在 tenderly.yaml 中编写触发器配置的详细信息:

Action 函数、事件和触发器

了解如何使用 Storage 和 Secrets:

上下文:Gateway、Storage、Secrets

了解 Web3 Actions 本地开发和测试的工具:

本地开发和测试

了解在 Tenderly Dashboard 中检查和处理 Web3 Actions 失败执行的实用工具:

错误报告

了解如何操作 Web3 Actions:停止、升级和手动运行 Web3 Actions:

停止、升级和手动运行 Web3 Actions