Перейти к основному содержанию
Web3 Actions доступны на платном плане. Чтобы включить их для вашего аккаунта, свяжитесь с нашим отделом продаж.

Что такое Web3 Actions?

Web3 Actions — это программируемые обработчики (hooks) для событий смарт-контрактов и цепочки. Также они могут выступать в роли serverless-бэкендов для ваших dapp’ов. Web3 Action — это обычная функция на TypeScript/JavaScript, которая выполняется на инфраструктуре Tenderly. Web3 Action поставляется с key-value хранилищем для данных, которые нужно сохранять, и управлением секретами для конфиденциальной информации, такой как ключи API. Вы можете рассматривать Web3 Actions как инфраструктуру, строящую Web3-версию автоматизации IFTTT/Zapier, позволяющую вам склеивать смарт-контракты, on-chain события, фронтенды dapp’ов, API и другие сервисы. На основе задаваемых вами правил-триггеров внешние on-chain или off-chain события будут запускать ваш Web3 Action, и ваш код на JavaScript/TypeScript будет обрабатывать событие мгновенно. Web3 Actions выполняются либо в параллельном режиме (по умолчанию), либо в последовательном. В параллельном режиме actions выполняются без какого-либо определённого порядка относительно времени срабатывания. В последовательном режиме actions выполняются в порядке срабатывания. С Web3 Actions вы можете строить системы, которые своевременно информируют вас о нетривиальных событиях. Так вы можете улучшить UX и интерактивность своего dapp’а и расширить возможности проекта за счёт глубины информации, которую можно собирать или делиться через уведомления. Чтобы понять, что возможно с Web3 Actions, вот несколько примеров использования:
  • Отслеживание важных транзакций: постройте систему уведомлений с богатыми данными и близкую к реальному времени о событиях, генерируемых контрактом, отправляя сообщения в Discord, Slack или Telegram, либо записывая их в базу данных.
  • При майнинге блока: отслеживайте изменения в on-chain активах или ценах на газ, чтобы строить кастомизированную аналитику и автоматизацию. Затем отправляйте данные во внешнее API.
  • Экспозиция webhook: расширьте свой dapp, предоставив webhook, обрабатывающий ввод пользователей.
  • Периодическая автоматизация: периодически симулируйте выполнение транзакции с помощью симуляций Tenderly и отправляйте результаты в Slack и/или даже отправляйте транзакцию в цепочку для реализации автоматизации.
Для получения дополнительных идей ознакомьтесь с разделом Сценарии использования Web3 Actions и разных событий.
Web3 Actions имеют ограничения на частоту. Текущий лимит выполнения Web3 Actions — 100 выполнений/5 минут на пользователя. Все дополнительные выполнения будут пропущены.

Руководства по быстрому старту

Следуйте этим руководствам, чтобы быстро начать создавать Web3 Actions через браузер или инструменты командной строки. Настройка Web3 Actions требует написания JavaScript-кода для ваших функций. Создание Web3 Actions с помощью Tenderly CLI включает определение триггеров в yaml-файле конфигурации. Определённый триггер и yaml-конфигурация становятся неотъемлемой частью кодовой базы вашего проекта.
Чтобы настроить Web3 Actions, срабатывающие по событиям, связанным с транзакциями, необходимо использовать подход через CLI.

Шпаргалка по CLI

Понимание Web3 Actions

Вкратце, Web3 Actions указывают Tenderly отслеживать конкретное внешнее событие и запускать ваш код при возникновении событий. Вам нужно предоставить спецификацию триггера, которая связана с предопределённым внешним событием. Web3 Action может срабатывать каждые несколько блоков по мере их майнинга (block trigger), при выполнении подходящей транзакции (transaction trigger), через webhook, который он предоставляет (webhook trigger), или через определённые интервалы времени (periodic trigger). Когда событие происходит, Tenderly выполняет ваш пользовательский код (функцию). Здесь мониторинг становится активным. Вы можете отправлять данные во внешние API, писать в базу данных, доставлять push-уведомления или сообщения с богатыми данными через мессенджеры и даже отправлять новую транзакцию в блокчейн — это лишь некоторые примеры. Давайте познакомимся с тремя ключевыми элементами Web3 Actions: функции, события и спецификация триггера.
The elements of Web3 Actions
Функции: пользовательский код на JavaScript или TypeScript, который вы хотите выполнить при возникновении указанного вами внешнего события. Функции можно писать напрямую в браузере через Tenderly Dashboard или с помощью CLI (в рамках npm-проекта). В обоих случаях функция должна быть именованным экспортом из содержащего её файла. События: экземпляры предопределённых внешних событий, которые вы можете отслеживать, настроив триггер. Функция получает объект события в качестве аргумента, что даёт коду функции доступ к данным о событии. Поддерживаются следующие события:
  • Block: запуск функции каждый раз при майнинге блока.
  • Periodic: запуск функции через определённые интервалы времени.
  • Webhook: вызов Web3 Action через HTTP.
  • Transaction: реакция на транзакции контракта, соответствующие определённому фильтру.
Спецификация триггера: схема или шаблон, описывающий внешние события, которые ваш Web3 Action должен отслеживать. При создании Web3 Action необходимо связать спецификацию триггера с функцией, которую вы хотите запускать. Tenderly выполняет ваш пользовательский код (функцию), когда обнаруживает событие, указанное в триггере. Узнайте, как настроить функции, события и триггеры Web3 Actions.

Утилиты Web3 Actions

Error reporting: обзор в Tenderly Dashboard, где вы можете найти ошибки и инциденты, возникшие во время выполнения ваших Web3 Actions, и повторно выполнить неудачные. Подробнее о обработке ошибок в Web3 Actions. Secrets: место для хранения конфиденциальных данных, таких как ключи API, которые вызываются из вашего кода. Эта информация хранится в Tenderly Dashboard и может быть прочитана только из вашего кода. Storage: проектное key-value хранилище, которое вы можете использовать для сохранения данных между последовательными запусками. Вы можете читать и писать в Storage через Tenderly Dashboard. Узнайте, как управлять Secrets и использовать Storage Web3 Actions.
Web3 Action Storage and Secrets

Поддержка локальной разработки и тестирования

Для быстрой итерации при написании функций Web3 Action узнайте, как npm-пакет @tenderly/actions-test обеспечивает поддержку тестирования и локальной разработки кода функций action.

Сценарии использования Web3 Actions и разных событий

Ниже приведён краткий обзор каждого типа события и примеры использования. 🧾 Transaction event: отслеживает событие транзакции, соответствующее заданному набору критериев, — успешная или неудачная транзакция, переводы значения, определённое количество газа, использованное транзакцией, сгенерированное событие и многое другое. Узнайте о событиях Transaction. Примеры использования:
  • Сбор конкретных данных о транзакциях по мере их совершения и сохранение их в Tenderly Storage.
  • Отправка данных о транзакции в другие сервисы (Web2 или Web3) через HTTP.
  • Отправка уведомлений с богатыми данными о желательных или нежелательных транзакциях через ваши коммуникационные каналы, например Discord.
  • Отправка транзакции в цепочку из самого Web3 Action.
🔢 Block event: отслеживает событие при майнинге блока в выбранной сети. Узнайте о событиях Block. Примеры использования:
  • Мониторинг изменений в on-chain активах для построения кастомизированной аналитики и автоматизации.
  • Мониторинг изменений смарт-контракта раз в несколько заминированных блоков и запуск автоматизации при выполнении условия.
  • Мониторинг цен на газ и автоматизация ваших операций.
🪝 Webhook event: отслеживает событие, когда HTTP-запрос отправляется на URL webhook (action предоставляет webhook). Узнайте о событиях Webhook. Примеры использования:
  • Постройте serverless-бэкенд, обрабатывающий ввод пользователей вашего dapp’а.
  • Получите данные, которые ваши другие Web3 Actions собрали о транзакциях или конкретных изменениях смарт-контракта.
  • Ваша CI-система может вызывать webhook для очистки или подготовки других ресурсов Tenderly, таких как виртуальные окружения, которые вы используете для тестирования.
🕖 Periodic event: отслеживает событие, представляющее прохождение указанного вами временного интервала или CRON-выражения. Узнайте о событиях Periodic. Примеры использования:
  • Периодическая отправка уведомлений с пользовательскими данными, собранными из сети и/или агрегированными в Storage Web3 Actions.
  • Симуляция предложения DAO и отправка напоминания о голосовании в Discord.
  • Симуляция выполнения транзакции с помощью симуляций Tenderly и отправка результата в Slack и/или отправка транзакции в цепочку для реализации автоматизации.
  • Периодическая очистка инфраструктуры Tenderly (например, установка Fork на последний блок Mainnet перед продолжением симуляций).

Руководства по Web3 Actions

Если вам нужен полный туториал, вот пошаговое руководство по мониторингу on-chain игры «крестики-нолики» со всеми необходимыми пояснениями — от развёртывания контракта игры до отображения доски после хода.

Как обрабатывать on-chain события

Чтобы увидеть, как построить Web3 Action для отправки сообщения в Discord при создании пары Uniswap и получения данных с помощью Axios, обратитесь сюда:

Как отправить сообщение в Discord о новом пуле Uniswap

Чтобы развернуть собственный простой оракул в Tenderly Web3 Action, изучите этот туториал:

Как построить собственный оракул

Чтобы посмотреть, как Web3 Action может использовать виртуальные окружения для симуляции транзакции, отправленной в multisig-кошелёк, и отправлять сообщения в Discord с результатами симуляции, попробуйте этот:

Web3 Actions + multisig-кошелёк

Ресурсы

Здесь вы можете найти всю необходимую информацию об основных строительных блоках и сопутствующих инструментах: Подробности о структуре проекта Web3 Actions и общем виде файла конфигурации tenderly.yaml:

Структура проекта

Подробная информация об основных компонентах Web3 Actions и написании конфигурации триггеров в tenderly.yaml:

Функции, события и триггеры Actions

Узнайте об использовании Storage и Secrets:

Context: Gateway, Storage, Secrets

Узнайте об инструментах для локальной разработки и тестирования Web3 Actions:

Локальная разработка и тестирование

Узнайте об утилитах для инспекции и обработки неудачных выполнений Web3 Actions в Tenderly Dashboard:

Error Reporting

Узнайте, как эксплуатировать Web3 Actions: останавливать, обновлять и запускать Web3 Actions вручную:

Остановка, обновление и ручной запуск Web3 Actions