Перейти к основному содержанию
Это руководство даёт обзор объекта context и того, как использовать его для доступа к утилитам Gateway, Storage и Secrets внутри Web3 Actions. Вы также узнаете, как обращаться к Node RPC через context, как управлять и получать доступ к приватным данным, таким как ключи API, с помощью Secrets, как сохранять данные в 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 являются общими для всех actions в рамках проекта в Tenderly.

Gateways

Утилита Gateways (context.gateways) даёт вам доступ к Node RPC, позволяя отправлять транзакции или читать on-chain данные с помощью Web3 Actions. Свойство gateways даёт доступ к методу getGateway(), который требует один аргумент — сеть, к которой вы хотите обратиться. Например, чтобы обратиться к Mainnet, аргумент нужно передавать в формате Network.MAINNET. Пример завершённого выражения, сохранённого в переменной, выглядит так:
example.jsx
const defaultGatewayURL = context.gateways.getGateway(Network.MAINNET);
Вот список аргументов для метода getGateway() для каждой поддерживаемой сети в Node RPC:
  • Network.MAINNET
  • Network.GOERLI
  • Network.SEPOLIA
  • Network.POLYGON
  • Network.MUMBAI
  • Network.BOBA_ETHEREUM
Для получения дополнительной информации о том, как работает context.gateways, и примеров кода, помогающих понять его использование, прочитайте страницу документации Доступ к Node RPC в Web3 Actions.

Storage

Вы можете использовать утилиту Storage, чтобы сделать ваши Web3 Actions stateful (с состоянием). Storage Web3 Actions — это хранилище на основе ключей и значений. Вы можете сохранять данные в Storage как из своего пользовательского кода (функций), так и из Tenderly Dashboard. Ниже приведён фрагмент кода, показывающий, как сохранять 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 КБ
Максимальный размер значения100 КБ
Если лимиты превышены, клиент выдаст ошибку 400 Bad Request с сообщением, указывающим, какой именно лимит был превышен. Storage работает на уровне проекта — все actions в проекте разделяют общий пул ключей.
Storage — это не база данных, он предназначен для небольших stateful-данных, таких как параметры конфигурации или счётчики. Для больших наборов данных или высокочастотных операций используйте внешнюю базу данных и сохраняйте учётные данные в Secrets.

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

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

Secrets

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

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

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

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

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