跳转到主要内容
本指南概述了 context 对象,以及如何使用它在 Web3 Actions 中访问 Gateway、Storage 和 Secrets 等实用工具。 您还将了解如何通过 context 访问 Node RPC、如何使用 Secrets 管理和访问 API 密钥等私密数据、如何将数据持久化到 Storage,以及如何从您的应用程序中访问这些数据。

Context

context 是一个对象,它可以让您在代码中访问 Storage 和 Secrets。Context 是您函数中需要指定的第一个参数,它使 Tenderly 运行您的代码时可以访问执行上下文。
example.ts
export const actionFun: ActionFn = async (context: Context, event: Event) => {
  // ...
  await context.storage.putJson(key, storedValue);
};
Storage 和 Secrets 在 Tenderly 项目中的所有 Actions 之间共享。

Gateways

Gateways 实用工具(context.gateways)为您提供对 Node RPC 的访问,让您可以通过 Web3 Actions 发送事务或读取链上数据。 gateways 属性提供了一个名为 getGateway() 的方法,它需要一个参数 —— 您要访问的网络。例如,要访问 Mainnet,参数需要格式化为 Network.MAINNET 存储在变量中的完整语句示例如下:
example.jsx
const defaultGatewayURL = context.gateways.getGateway(Network.MAINNET);
以下是 Node RPC 中每个受支持网络的 getGateway() 方法参数列表:
  • Network.MAINNET
  • Network.GOERLI
  • Network.SEPOLIA
  • Network.POLYGON
  • Network.MUMBAI
  • Network.BOBA_ETHEREUM
有关 context.gateways 工作原理的更多详情以及帮助您理解使用方法的示例代码片段,请阅读 Web3 Actions 上的 Node RPC 访问 文档页面。

Storage

您可以使用 Storage 实用工具让您的 Web3 Actions 成为有状态的。Web3 Actions Storage 是一个基于键值对的存储。您可以通过自定义代码(函数)和 Tenderly Dashboard 将数据保存到 Storage。 以下代码片段展示了如何将 JSON 对象存入 Storage。
example.js
await context.storage.putJson(key, valueStored);
所有与 Storage 交互的函数都是异步的,因此您需要使用 await 运算符 以避免意外行为。

保存和检索 Storage 中的数据

要将数据保存到 Storage,请使用以下函数,它们分别存储对应类型的值:
  • putBigInt
  • putStr
  • putNumber
  • putJson
要从 Storage 中检索数据,请使用以下函数获取特定的数据类型:
  • getBigInt
  • getStr
  • getNumber
  • getJson
以下是将 JSON 对象保存到 Storage 并从中获取的示例。
example.js
await context.storage.putJson('BAR_BAZ', { bar: 'baz' });
//....
const barBaz = await context.storage.getJson('BAR_BAZ');

Storage 限制

限制
每个项目的最大键数1,000
最大键大小1 KB
最大值大小100 KB
如果超出限制,客户端将返回 400 Bad Request 错误,并在消息中指出违反的具体限制。 Storage 是项目范围的,项目中的所有 actions 共享同一个键池。
Storage 不是数据库,它用于存储配置参数或计数器等小型有状态数据。对于大型数据集或高频操作,请使用外部数据库,并将凭据存储在 Secrets 中。

通过 Tenderly Dashboard 访问 Storage

要通过 Tenderly Dashboard 查看保存到 Storage 的数据,从左侧菜单前往 Actions,并从页面菜单中点击 Storage
Accessing Web3 Action data saved to Storage

Secrets

Secrets 用于存储敏感信息,例如 Web3 Action 在执行期间可能调用的服务的私有 API 密钥。Secrets 以键值对的形式存储,由名称和密钥值组成。

创建和存储 Secrets

创建 secrets 的唯一方式是通过 Tenderly Dashboard。从左侧菜单前往 Actions,并从页面菜单中点击 Secrets 点击 Add Secret 按钮添加 Secret,并提供键名和值。
Creating Secrets for Web3 Actions

从代码内部获取 Secrets 数据

您可以使用 context 对象的 get() 方法从代码中获取 Secrets 数据。将您在 Tenderly Dashboard 中指定的确切键名作为参数传入。
example.js
const fooApiKey = await context.secrets.get('FOO_API_KEY');