Tenderly Web3 Actions: автоматизация on-chain событий без polling
Представьте: вы отслеживаете крупные депозиты в lending pool. Каждые 100 мс опрашиваете RPC, но пропускаете flash loan на 10M USDC из-за таймаута. Tenderly Web3 Actions устраняют эту задержку полностью. Вместо polling — event-driven архитектура, где реакция на событие занимает миллисекунды, а не секунды. Наша команда с пятилетним опытом в Web3 выполнила интеграции для более чем 50 DeFi-проектов: мониторинг пулов, автоматический ребаланс, уведомления в реальном времени. Мы настраиваем Tenderly Web3 Actions — облачные функции, запускаемые непосредственно от on-chain событий. Инфраструктура Tenderly мониторит ноды, вы пишете логику. Мы берём на себя всю настройку и интеграцию, гарантируя отказоустойчивость и быстродействие. Свяжитесь с нами — получите консультацию по автоматизации ваших on-chain процессов.
Проблемы, которые решаем
Задержки при опросе RPC. Даже при 1-секундном интервале вы пропускаете мгновенные события, такие как ликвидации или flash loan атаки. Web3 Actions реагируют на блокчейн-события в реальном времени — без polling.
Ручной мониторинг множества контрактов. Команды тратят часы на проверку health factor каждого пула вручную. Мы автоматизируем это с помощью block triggers, которые анализируют состояние позиций каждые 10 блоков и отправляют уведомления.
Сложность интеграции с внешними сервисами. Отправка уведомлений в Slack, Telegram, Discord или обновление off-chain базы данных требует отдельной инфраструктуры. Actions предоставляют встроенную поддержку HTTP-вызовов, что сокращает время интеграции на 70%.
Как Tenderly Web3 Actions решают проблему polling?
Сравните два подхода:
| Характеристика | Традиционный polling | Tenderly Web3 Actions |
|---|---|---|
| Время реакции | 1-2 секунды (интервал опроса) | < 100 мс (event-driven) |
| Пропуск событий | Возможен | Никогда |
| Инфраструктура | Свой сервер, RPC-ключи | Tenderly, без управления |
| Сложность интеграции | Средняя (написание polling loop) | Низкая (один Action) |
| Экономия затрат | Базовая (сервер + RPC) | Снижение на 40% (без сервера) |
Tenderly Web3 Actions реагируют в 10 раз быстрее традиционного polling и снижают затраты на инфраструктуру на 40% за счёт отказа от собственного сервера. Это особенно важно для протоколов, где критична каждая миллисекунда.
Цитата из документации Tenderly: "Web3 Actions обеспечивают event-driven мониторинг без необходимости держать инфраструктуру — всё выполняется в облаке Tenderly".
Как мы это делаем
Развернём типовой сценарий: мониторинг крупных депозитов в lending протоколах. Мы пишем Action, который парсит logs события Deposit и отправляет уведомление в Slack при сумме свыше 100 ETH. Используем TypeScript, ethers.js и context.secrets для хранения webhook URL. Деплой через Tenderly CLI — одна команда. Экономия на RPC-запросах достигает 90%.
npm install -g @tenderly/cli
tenderly login
tenderly init
Структура проекта:
tenderly.yaml
actions/
src/
index.ts # точки входа для Actions
package.json
Пример Action:
import { ActionFn, Context, Event, TransactionEvent } from "@tenderly/actions";
import { ethers } from "ethers";
const THRESHOLD = ethers.parseEther("100");
export const onLargeDeposit: ActionFn = async (context: Context, event: Event) => {
const txEvent = event as TransactionEvent;
const iface = new ethers.Interface([
"event Deposit(address indexed user, uint256 amount)"
]);
for (const log of txEvent.logs) {
try {
const parsed = iface.parseLog(log);
if (parsed?.name === "Deposit" && parsed.args.amount > THRESHOLD) {
const webhookUrl = await context.secrets.get("SLACK_WEBHOOK_URL");
await fetch(webhookUrl, {
method: "POST",
headers: { "Content-Type": "application/json" },
body: JSON.stringify({
text: `Large deposit: ${ethers.formatEther(parsed.args.amount)} ETH from ${parsed.args.user}\nTx: ${txEvent.hash}`
})
});
}
} catch {
// Log не относится к нашему контракту — пропускаем
}
}
};
Конфигурация в tenderly.yaml:
account_id: "my-account"
project_slug: "my-project"
actions:
my-project/on-large-deposit:
runtime: v2
sources: actions/src
entrypoint: index:onLargeDeposit
trigger:
type: transaction
transaction:
status:
- mined
filters:
- network: 1
eventEmitted:
contract:
address: "0xYourContractAddress"
name: Deposit
Деплой: tenderly actions deploy.
Какие бывают триггеры?
| Тип триггера | Когда срабатывает | Типичный сценарий |
|---|---|---|
| Transaction | На каждую транзакцию, соответствующую фильтру | Мониторинг депозитов, уведомления о крупных переводах |
| Block | Каждый N-ный блок | Health factor в lending, обновление off-chain индексов |
| Webhook | HTTP-вызов из внешней системы | Интеграция с CI/CD, ручной запуск тестов |
| Alert | На алерт Tenderly Alerting | Порог газа, аномальные транзакции |
Управление секретами и переменными окружения
API ключи, webhook URLs, private keys хранятся в Tenderly Secrets. Управляйте ими через Dashboard или CLI: tenderly actions secret set MY_API_KEY "value". В коде доступны через context.secrets.get("MY_API_KEY"). Это исключает хардкод чувствительных данных.
Хранение состояния между вызовами
Actions stateless по умолчанию, но Tenderly предоставляет key-value хранилище для persistence. Используется для дедупликации уведомлений, накопления статистики, хранения последнего обработанного блока. Пример:
await context.storage.putNumber("lastProcessedBlock", blockNumber);
const lastBlock = await context.storage.getNumber("lastProcessedBlock");
Максимальное время выполнения Action — 25 секунд. Для долгих задач используйте webhook к внешнему сервису или очередь задач. Runtime — Node.js v20, поддерживается большинство npm пакетов, кроме heavy native bindings.
Что входит в работу
- Проектирование архитектуры Actions с учётом ваших сценариев
- Написание и деплой TypeScript-кода
- Настройка секретов и окружения
- Тестирование и отладка с Tenderly Simulation
- Документация по эксплуатации
- Поддержка после запуска
Сроки и стоимость
Сроки настройки — от 1 до 3 рабочих дней, в зависимости от количества сценариев и сложности интеграций. Стоимость рассчитывается индивидуально после оценки вашего проекта. Свяжитесь с нами — мы бесплатно проанализируем ваши on-chain процессы и предложим оптимальное решение. Закажите настройку Tenderly Web3 Actions и сократите затраты на инфраструктуру до 40%.







