> ## Documentation Index
> Fetch the complete documentation index at: https://docs.tenderly.co/llms.txt
> Use this file to discover all available pages before exploring further.

# Node RPC 访问

> 学习如何设置一个可通过 Node RPC 访问 Mainnet 的 Web3 Action。

您可以直接从您的 Web3 Action 函数中访问 [Node RPC](/node-rpc/overview)。这使您能够在 Mainnet 或测试网上发送事务，并通过 Web3 Actions 自动读取链上数据。

设置 Web3 Actions 以访问区块链只需极少的配置 —— 一个 JavaScript 变量。无需担心复制/粘贴 RPC URL、管理密钥等。Tenderly 会在后台为您处理这一切。

在本指南中，您将学习如何配置您的 Web3 Action 函数代码，以使用 Tenderly 的生产节点访问 Mainnet。

## 上下文中的 Node RPC

在 Web3 Actions 中，通过 `context` 对象启用对 Tenderly 节点的访问。在此了解更多有关 [Web3 Actions Context](/monitoring/web3-actions/references/context) 的信息。

`context` 对象包含一个名为 `gateways` 的属性，它使您可以访问 `getGateway()` 方法。此方法需要一个参数 `Network`，用于指定您要访问的网络。

`Network` 参数也是一个对象，可让您访问 Node RPC 中所有受支持的网络：

* `Network.MAINNET`
* `Network.GOERLI`
* `Network.SEPOLIA`
* `Network.HOLESKY`
* `Network.POLYGON`
* `Network.MUMBAI`
* `Network.OPTIMISTIC`
* `Network.OPTIMISTIC_GOERLI`
* `Network.ARBITRUM_SEPOLIA`
* `Network.BASE`
* `Network.BASE_GOERLI`
* `Network.BOBA_ETHEREUM`
* `Network.BOBA_GOERLI`
* `Network.BOBA_BINANCE`
* `Network.BOBA_BINANCE_RIALTO`

您可以在 **@tenderly/actions** npm 包中查看网络列表 [此处](https://github.com/Tenderly/tenderly-actions/blob/main/packages/actions/src/actions.ts)。

为演示这些如何整合在一起，以下是一个配置为访问 Mainnet 的示例 JavaScript 变量：

```jsx title="example.jsx" showLineNumbers theme={"theme":{"light":"catppuccin-latte","dark":"catppuccin-mocha"}}
const defaultGatewayURL = context.gateways.getGateway(Network.MAINNET);
```

## 访问 Mainnet 的示例 Web3 Action 函数

让我们创建一个简单的 Web3 Action，每次 Mainnet 上打包新区块时它就会被触发。每次区块被打包时，Web3 Action 都会执行自定义代码（也称为 "函数"）。在此阅读更多关于 [Web3 Action 函数](/monitoring/web3-actions/references/functions-events-triggers#action-functions) 的信息。

为了简单起见，下面的示例函数将获取最新被打包区块的区块号并将其记录到控制台。

您可以阅读注释以了解每行代码的作用。

```jsx title="example.jsx" showLineNumbers theme={"theme":{"light":"catppuccin-latte","dark":"catppuccin-mocha"}}
// Required libraries that must be included for the code to work
const ethers = require('ethers');
const { Network } = require('@tenderly/actions');

// Do not change the default 'actionFn' name.
const actionFn = async (context, blockEvent) => {
  // Setting a variable that will store the Node RPC RPC URL and secret key
  const defaultGatewayURL = context.gateways.getGateway(Network.MAINNET);

  // Using the Ethere.js provider class to call the RPC URL
  const provider = new ethers.providers.JsonRpcProvider(defaultGatewayURL);

  // Logging the block number of the latest mined block
  console.log(await provider.getBlockNumber());
};

// Exporting the default module. Do not change this.
module.exports = { actionFn };
```

接下来，前往 **Dashboard** → **Web3 Actions** → **Add Action**。

<Frame caption="Web3 Action 设置向导">
  <img src="https://mintcdn.com/tenderly/XsEZlaGXYskrtN68/images/web3-actions/web3-gateway-access-1.webp?fit=max&auto=format&n=XsEZlaGXYskrtN68&q=85&s=cd389b5d5a1b03614749f8109efc0564" alt="Web3 Action set up wizard" width="924" height="516" data-path="images/web3-actions/web3-gateway-access-1.webp" />
</Frame>

* 对于触发器类型，选择 **Block。**
* 在 **Function** 文本框中，粘贴上面示例中的代码并点击 **Next**。

<Frame caption="Web3 Action 被触发时执行的自定义代码">
  <img src="https://mintcdn.com/tenderly/XsEZlaGXYskrtN68/images/web3-actions/web3-gateway-access-2.webp?fit=max&auto=format&n=XsEZlaGXYskrtN68&q=85&s=59de42e2f199d74202869440163cd350" alt="Custom code that is executed when the Web3 Action is triggered" width="924" height="516" data-path="images/web3-actions/web3-gateway-access-2.webp" />
</Frame>

* 通过选择网络来设置 **Trigger**。在我们的例子中，即 **Mainnet**。
* 同时，设置 **Block Period** 以告诉 Tenderly 执行 Web3 Action 函数的频率。例如，如果您填写 1，Web3 Action 将在每次区块被打包时执行一次。
* 在 **Info** 字段中， **为 Web3 Action 添加名称** 以及可选描述。
* 您还可以设置一个 **Destination**，在此 [接收通知](/monitoring/web3-actions/references/notifications) 关于 Web3 Action 的失败执行。
* 最后， **点击 Create** 以部署 Web3 Action。

从 **Execution History** 页面，我们可以看到该 Web3 Action 正在成功执行。

<Frame caption="Web3 Action 执行历史">
  <img src="https://mintcdn.com/tenderly/XsEZlaGXYskrtN68/images/web3-actions/web3-gateway-access-3.webp?fit=max&auto=format&n=XsEZlaGXYskrtN68&q=85&s=6c237dfe44b6ec64d1f793d57b05d224" alt="Web3 Action execution history" width="924" height="516" data-path="images/web3-actions/web3-gateway-access-3.webp" />
</Frame>

您可以点击 **Execution ID** 查看已执行 Web3 Action 的详细信息以及 JSON 格式的负载。

### 有用的资源

有关如何管理您的 Web3 Actions 和监控执行错误的更多信息，请阅读以下指南：

* [管理 Web3 Actions](/monitoring/web3-actions/references/lifecycle)
* [Web3 Actions 的错误报告](/monitoring/web3-actions/references/error-reporting)
