Настройка Tenderly Alerting для мониторинга контрактов
Production-контракт без мониторинга — это контракт, о проблемах которого вы узнаёте из Twitter, а не из алерта. Tenderly решает это за 1-2 часа настройки.
Что умеет Tenderly Alerting
Tenderly позволяет настраивать алерты на конкретные события контракта, изменения переменных хранилища, транзакции выше порога, вызовы конкретных функций и failed транзакции. Всё это без написания собственного indexer.
Основные типы триггеров:
| Триггер | Пример использования |
|---|---|
| Successful Transaction | Крупный вывод из vault |
| Failed Transaction | Ошибки в production |
| Event Emitted | Transfer выше 100k USDC |
| State Change | Смена owner/admin |
| Function Called | Вызов pause() или emergencyWithdraw() |
| Balance Change | Изменение баланса treasury |
Настройка
- Добавляем контракт в Tenderly (ABI + адрес + сеть)
- Alerts → Add Alert → выбираем тип триггера
- Настраиваем фильтры (например,
value > 100000e6для USDC) - Выбираем destination: Slack, Telegram, PagerDuty, webhook, email
Для критических событий (pause, owner change, аномальные выводы) — Telegram/PagerDuty с немедленной доставкой. Для информационных (обычные транзакции, события протокола) — Slack-канал для команды.
Webhook интеграция
Tenderly может отправлять webhook POST-запрос с деталями транзакции. Это позволяет строить кастомную логику: авто-пауза контракта при аномалии, запись в базу данных, уведомление с enriched context.
{
"id": "alert_id",
"contract": "0x...",
"network": "1",
"transaction": {
"hash": "0x...",
"from": "0x...",
"value": "1000000000000000000"
},
"trigger": "successful_transaction"
}
Ограничения
Tenderly — managed сервис. Для полного контроля и privacy критических данных рассматриваем альтернативы: собственный indexer на The Graph, Goldsky или OpenZeppelin Defender Sentinel (более гибкий триггер-движок).
Для большинства проектов Tenderly Alerting — оптимальное соотношение скорости настройки и функциональности. Настройка базового мониторинга занимает 1 рабочий день, включая документацию для команды.







