Налаштування Tenderly Web3 Actions: автоматизація on-chain подій

Tenderly Web3 Actions: автоматизація on-chain подій без polling Уявіть: ви відстежуєте великі депозити в lending pool. Кожні 100 мс опитуєте RPC, але пропускаєте flash loan через таймаут. Tenderly Web3 Actions усувають цю затримку повністю. Замість polling — event-driven архітектура, де реакція н

Напрямки блокчейн-розробки

Часті запитання

Останні роботи

  • image_website-b2b-advance_0.webp
    Розробка сайту компанії B2B ADVANCE
    1450
  • image_web-applications_feedme_466_0.webp
    Розробка веб-додатків для компанії FEEDME
    1308
  • image_websites_belfingroup_462_0.webp
    Розробка веб-сайту для компанії БЕЛФІНГРУП
    1003
  • image_ecommerce_furnoro_435_0.webp
    Розробка інтернет магазину для компанії FURNORO
    1269
  • image_logo-advance_0.webp
    Розробка логотипу компанії B2B Advance
    719
  • image_crm_enviok_479_0.webp
    Розробка веб-додатків для компанії Enviok
    1009

Tenderly Web3 Actions: автоматизація on-chain подій без polling

Уявіть: ви відстежуєте великі депозити в lending pool. Кожні 100 мс опитуєте RPC, але пропускаєте flash loan через таймаут. 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%.