Перейти к основному содержанию
Вы можете обращаться к Node RPC прямо из функций 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. Объект 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 здесь. Чтобы показать, как всё это работает вместе, вот пример JavaScript-переменной, настроенной на доступ к Mainnet:
example.jsx
const defaultGatewayURL = context.gateways.getGateway(Network.MAINNET);

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

Давайте создадим простой Web3 Action, который будет срабатывать каждый раз, когда в Mainnet майнится новый блок. Каждый раз, когда блок майнится, Web3 Action будет выполнять пользовательский код, также называемый «функцией». Подробнее о функциях Web3 Action. Для простоты приведённая ниже функция будет получать номер последнего заминированного блока и выводить его в консоль. Читайте комментарии, чтобы понять, что делает каждая строка кода.
example.jsx
// 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 };
Далее перейдите в DashboardWeb3 ActionsAdd Action.
Web3 Action set up wizard
  • В качестве Trigger Type выберите Block.
  • В текстовом поле Function вставьте код из примера выше и нажмите Next.
Custom code that is executed when the Web3 Action is triggered
  • Установите Trigger, выбрав сеть. В нашем случае это Mainnet.
  • Также установите Block Period, чтобы сообщить Tenderly, как часто выполнять функцию Web3 Action. Например, если вы укажете 1, Web3 Action будет выполняться каждый раз при майнинге блока.
  • В полях Info добавьте имя для Web3 Action и необязательное описание.
  • Вы также можете задать Destination, куда будете получать уведомления о неудачных выполнениях Web3 Action.
  • Наконец, нажмите Create, чтобы развернуть Web3 Action.
Со страницы Execution History мы видим, что Web3 Action выполняется успешно.
Web3 Action execution history
Вы можете нажать на Execution ID, чтобы увидеть детали выполненного Web3 Action и полезную нагрузку в JSON.

Полезные ресурсы

Для получения дополнительной информации об управлении вашими Web3 Actions и мониторинге ошибок выполнения прочитайте следующие руководства: