Skip to main content
Это руководство даёт обзор объекта context и того, как использовать его для доступа к утилитам Gateway, Storage и Secrets внутри Web3 Actions. Вы также узнаете, как обращаться к Node RPC через context, как управлять и получать доступ к приватным данным, таким как ключи API, с помощью Secrets, как сохранять данные в Storage и как получать эти данные из вашего приложения.

Context

Объект context даёт вам доступ к Storage и Secrets из вашего кода. Context передаётся первым параметром в ваши функции, обеспечивая доступ к контексту выполнения, когда Tenderly запускает ваш код.
example.ts
Storage и Secrets являются общими для всех actions в рамках проекта в Tenderly.

Gateways

Утилита Gateways (context.gateways) даёт вам доступ к Node RPC, позволяя отправлять транзакции или читать on-chain данные с помощью Web3 Actions. Свойство gateways даёт доступ к методу getGateway(), который требует один аргумент: сеть, к которой вы хотите обратиться. Например, чтобы обратиться к Mainnet, аргумент нужно передавать в формате Network.MAINNET. Пример завершённого выражения, сохранённого в переменной, выглядит так:
example.jsx
Перечисление Network содержит элемент для каждой поддерживаемой сети в Node RPC, например:
  • Network.MAINNET
  • Network.SEPOLIA
  • Network.POLYGON
  • Network.OPTIMISTIC
  • Network.BASE
  • Network.ARBITRUM
Полный список см. в файле networks.ts пакета @tenderly/actions. Для получения дополнительной информации о том, как работает context.gateways, и примеров кода, помогающих понять его использование, прочитайте страницу документации Доступ к Node RPC в Web3 Actions.

Storage

Вы можете использовать утилиту Storage, чтобы сделать ваши Web3 Actions stateful (с состоянием). Storage в Web3 Actions является хранилищем на основе ключей и значений. Вы можете сохранять данные в Storage как из своего пользовательского кода (функций), так и из Tenderly Dashboard. Ниже приведён фрагмент кода, показывающий, как сохранять JSON-объекты в Storage.
example.js
Все функции, взаимодействующие с Storage, являются асинхронными, поэтому вам нужно использовать оператор await, чтобы избежать нежелательного поведения.

Сохранение и получение данных из Storage

Для сохранения данных в Storage используйте следующие функции, которые сохраняют значения соответствующих типов:
  • putBigInt
  • putStr
  • putNumber
  • putJson
Для получения данных из Storage используйте следующие функции, чтобы получить конкретный тип данных:
  • getBigInt
  • getStr
  • getNumber
  • getJson
Ниже приведён пример того, как сохранить и получить JSON-объект из Storage.
example.js

Лимиты Storage

Если лимиты превышены, клиент выдаст ошибку 400 Bad Request с сообщением, указывающим, какой именно лимит был превышен. Storage работает на уровне проекта: все actions в проекте разделяют общий пул ключей.
Storage не является базой данных; он предназначен для небольших stateful-данных, таких как параметры конфигурации или счётчики. Для больших наборов данных или высокочастотных операций используйте внешнюю базу данных и сохраняйте учётные данные в Secrets.

Доступ к Storage через Tenderly Dashboard

Чтобы просмотреть данные, сохранённые в Storage, через Tenderly Dashboard, перейдите в Web3 Actions в меню слева и выберите Storage в меню страницы.
Accessing Web3 Action data saved to Storage

Доступ к данным Web3 Action, сохранённым в Storage

Secrets

Secrets используются для хранения конфиденциальной информации, такой как приватные ключи API для сервисов, которые ваш Web3 Action может вызывать во время выполнения. Secrets хранятся в виде пар ключ-значение и состоят из имени и секретного значения.

Создание и хранение Secrets

Создать секреты можно только через Tenderly Dashboard. Перейдите в Web3 Actions в меню слева и выберите Secrets в меню страницы. Добавьте Secrets, нажав кнопку Add Secret, и укажите имя ключа и значение.
Creating Secrets for Web3 Actions

Создание Secrets для Web3 Actions

Получение данных Secrets из вашего кода

Вы можете получить данные Secrets из вашего кода, используя объект context с методом get(). В качестве аргумента используйте точное имя ключа, указанное в Tenderly Dashboard.
example.js