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 执行使用速率限制为
每用户每 5 分钟 100 次执行。超出部分将被跳过。
快速入门指南
按照这些指南快速开始通过浏览器或命令行工具构建 Web3 Actions。 设置 Web3 Actions 需要您为函数编写 JavaScript 代码。使用 Tenderly CLI 构建 Web3 Actions 时需要在 yaml 配置文件 中定义触发器。所定义的触发器和 yaml 配置将成为您项目代码库不可分割的一部分。- 通过 Tenderly Dashboard 部署 Web3 Actions:了解如何直接在浏览器中设置并部署 Web3 Actions。
- 通过 Tenderly CLI 部署 Web3 Actions:了解如何安装 Tenderly CLI,使用 YAML 配置定义触发器,并通过命令行设置和部署 Web3 Actions。
要设置由与事务相关的事件触发的 Web3 Actions,您必须使用基于
CLI 的方式。
CLI 备忘单
理解 Web3 Actions
简而言之,Web3 Actions 指示 Tenderly 监听特定的外部事件,并在事件发生时运行您的代码。 您需要提供与预定义外部事件相关的 触发器规范。Web3 Action 可以在每几个区块被打包时触发(block 触发器)、在相关事务被执行时触发(transaction 触发器)、通过它暴露的 webhook 触发(webhook 触发器),或者按特定时间间隔触发(periodic 触发器)。 当事件发生时,Tenderly 会执行您的自定义代码(函数)。此时,监控成为主动的。例如,您可以将数据发送到外部 API、写入数据库、通过消息服务发送推送通知或数据丰富的消息,甚至向区块链发送新的事务。 让我们熟悉 Web3 Actions 的三个核心元素: 函数、 事件 和 触发器规范。
- Block: 每次区块被打包时运行一个函数。
- Periodic: 按特定间隔运行一个函数。
- Webhook: 通过 HTTP 调用 Web3 Action。
- Transaction: 对匹配特定过滤条件的合约事务作出响应。
Web3 Actions 实用工具
错误报告: Tenderly Dashboard 中的概览页面,您可以在其中查找 Web3 Action 执行期间发生的错误和事件,并重新执行失败的执行。了解更多 Web3 Actions 中的错误处理。 Secrets: 存储敏感数据(例如 API 密钥)的位置,可从您的代码中调用。这些信息存储在 Tenderly Dashboard 中,且只能从代码中读取。 Storage: 项目范围的键值存储,可用于在连续运行之间持久化数据。您可以通过 Tenderly Dashboard 读写 Storage。了解如何 管理 Secrets 和使用 Web3 Actions Storage。
本地开发和测试支持
为了在编写 Web3 Action 函数时快速迭代,请了解@tenderly/actions-test npm 包如何为 action 函数代码提供 测试和本地开发支持。
Web3 Actions 和不同事件的用例
以下是每种事件类型的简要概览和示例用例。 🧾 Transaction 事件: 监听匹配给定条件的事务事件,例如成功或失败的事务、价值转账、事务使用的特定 gas 数量、发出的事件等等。了解 Transaction 事件。 示例用例:- 在事务发生时收集特定数据并将其存储在 Tenderly Storage 中。
- 通过 HTTP 将事务数据发送到其他(Web2 或 Web3)服务。
- 通过您的通信渠道(例如 Discord)发送有关想要或不希望的事务的数据丰富的通知。
- 从 Web3 Action 本身向链上发送事务。
- 监控链上资产的变化以构建自定义分析和自动化。
- 每隔几个区块被打包监控一次智能合约的变化,并在满足条件时运行自动化。
- 监控 gas 价格并自动化您的操作。
- 构建处理 dapp 用户输入的无服务器后端。
- 检索您其他 Web3 Actions 收集的有关事务或特定智能合约变化的数据。
- 您的 CI 可以调用 webhook 来清理或准备其他 Tenderly 资源,例如 您用于测试的 Virtual Environments。
- 定期发送带有从网络收集的自定义数据和/或在 Web3 Action Storage 中聚合数据的通知。
- 模拟 DAO 提案并向 Discord 发送投票提醒。
- 使用 Tenderly simulations 模拟事务执行,并将结果发送到 Slack,和/或将事务发送到链上以实现自动化。
- 定期清理 Tenderly 基础设施(例如,在继续 simulations 之前,将 Fork 指向 Mainnet 的最新区块)。