Перейти к основному содержанию
В этом руководстве вы узнаете, как развернуть Web3 Actions через Tenderly CLI, который отслеживает майнинг блоков и просто выводит номер блока.

Предварительные требования

У вас должны быть установлены и правильно настроены npm и Tenderly CLI на локальной машине. Инструкции по установке см. в Шпаргалке по CLI Web3 Actions.

Инициализация проекта Web3 Actions

Перейдите в папку в вашей системе, где вы хотите разместить код Web3 Action, и выполните следующую команду, чтобы инициализировать новый проект Web3 Actions:
example
tenderly actions init
По умолчанию проект будет настроен на использование TypeScript. Если вы предпочитаете обычный JavaScript, добавьте флаг языка и укажите javascript:
example
tenderly actions init --language javascript
Когда будет предложено, выберите существующий проект Tenderly из вашего аккаунта или создайте новый.
Creating a new Tenderly project
Далее введите имя корневого каталога, где будет храниться ваш код. Если вы хотите оставить по умолчанию actions, нажмите Enter или введите пользовательское имя каталога.
Adding a directory name
Структура папок вашего проекта должна выглядеть так:
example
/actions
|--- example.ts
|--- package.json
|--- package-lock.json
|--- tsconfig.json
|--- /node_modules
      |--- @tenderly
      |--- /typescript
tenderly.yaml

Сборка и развёртывание Web3 Action

Вот шаги, которые нам нужно предпринять для сборки и развёртывания Web3 Action:
  • Создать функцию action
  • Настроить блочный триггер для запуска функции
  • Развернуть код в Tenderly с помощью CLI

Создание функции action

Скопируйте следующий код в файл example.ts:
example.tsx

export const blockHelloWorldFn: ActionFn = async (context: Context, event: Event) => {
  let blockEvent = event as BlockEvent;
  console.log('Block number is: ', blockEvent.blockNumber);
};
Это определяет и экспортирует функцию action. На следующем шаге мы настроим её так, чтобы она запускалась после каждых 10 заминированных блоков. Примечания: Обратите внимание, что функция асинхронна и принимает два аргумента: объект Context и объект Event.
  • Объект Context обеспечивает доступ к Storage и Secrets. Подробнее об этом можно прочитать здесь.
  • Аргумент event — объект, содержащий информацию о внешнем (on-chain) событии, вызвавшем action. Поскольку мы хотим запускать этот action по блочному событию, аргумент event будет иметь тип BlockEvent. Объект BlockEvent содержит информацию о заминированном блоке, такую как номер блока, хеш блока и временная метка блока.

Настройка триггера в tenderly.yaml для нового action

Шаг 1: замените содержимое файла tenderly.yaml на следующее:
example.yaml
account_id: ''
project_slug: ''
actions:
  username/project-slug:
    runtime: v1
    sources: actions
    specs:
      block-number-printer:
        description: Example Web3 Action that logs block number once it is mined.
        function: example:blockHelloWorldFn
        trigger:
          type: block
          block:
            network:
              - 1
            blocks: 10
Шаг 2: замените username и project-slug на ваше имя пользователя и slug вашего проекта. Ознакомьтесь с этим руководством, чтобы узнать, как найти имя организации, имя пользователя и slug проекта. Примечания: Файл tenderly.yaml содержит спецификации триггеров для каждого action в проекте и связывает триггер с функцией action. Здесь мы создаём action под именем block-number-printer.
  • Свойство function ссылается на функцию blockHelloWorldFn из файла example.ts.
  • Этот action будет срабатывать на каждом 10-м заминированном блоке в сети 1, согласно свойству trigger.
Подробнее об Внешних событиях и типах триггеров.

Сборка и развёртывание actions

Вернитесь в терминал и выполните следующую команду, чтобы развернуть все определённые вами Web3 Actions. После успешного развёртывания actions появятся в UI Tenderly.
example
tenderly actions deploy
Обновление Web3 Actions без простоя\ Чтобы обновить Web3 Action, просто отредактируйте исходный код и/или tenderly.yaml и выполните tenderly actions deploy.

Перед тем как продолжить

Помните:
  • Команду deploy нужно запускать из папки, содержащей файл tenderly.yaml.
  • Если вы инициализируете actions для нескольких проектов Tenderly в одном и том же каталоге, при запуске deploy вас попросят выбрать проект. Будут развёрнуты только actions, принадлежащие выбранному проекту.
  • Все actions, принадлежащие одному проекту, развёртываются одновременно.
  • Любой файл, на который ссылается ваш JavaScript/TypeScript, должен находиться в actions root. Не ссылайтесь на файлы вне этой папки.

Ресурсы