> ## 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

> Узнайте, как настроить Web3 Action с доступом к Mainnet через Node RPC.

Вы можете обращаться к [Node RPC](/node-rpc/overview) прямо из функций Web3 Action. Это позволяет отправлять транзакции в Mainnet или тестнеты и читать on-chain данные автоматически через Web3 Actions.

Настройка Web3 Actions для доступа к блокчейну требует минимальной подготовки — одной JavaScript-переменной. Не нужно беспокоиться о копировании/вставке URL-адресов RPC, управлении секретными ключами и т. д. Tenderly позаботится обо всём этом за вас в фоновом режиме.

В этом руководстве вы узнаете, как настроить код функции Web3 Action для использования production-ноды Tenderly для доступа к Mainnet.

## Node RPC в Context

В Web3 Actions доступ к ноде Tenderly включается через объект `context`. Подробнее о [Context в Web3 Actions](/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`

Список сетей можно увидеть в npm-пакете **@tenderly/actions** [здесь](https://github.com/Tenderly/tenderly-actions/blob/main/packages/actions/src/actions.ts).

Чтобы показать, как всё это работает вместе, вот пример JavaScript-переменной, настроенной на доступ к Mainnet:

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

## Пример функции Web3 Action для доступа к Mainnet

Давайте создадим простой 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>

* В качестве Trigger Type выберите **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)
* [Error Reporting для Web3 Actions](/monitoring/web3-actions/references/error-reporting)
