Інтеграція з Tenderly (налагодження транзакцій)

Транзакція відкотилася з повідомленням "execution reverted" — і це все, що показує Etherscan. Без трасування стеку незрозуміло, в якому саме рядку контракту відбувся revert, які були значення змінних, через який ланцюжок викликів ми дійшли до помилки. Tenderly вирішує це: повне трасування EVM-викона

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

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

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

  • 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

Транзакція відкотилася з повідомленням "execution reverted" — і це все, що показує Etherscan. Без трасування стеку незрозуміло, в якому саме рядку контракту відбувся revert, які були значення змінних, через який ланцюжок викликів ми дійшли до помилки. Tenderly вирішує це: повне трасування EVM-виконання, налагодження як у звичайному дебагері, з брейкпоінтами і переглядом стану. Наша команда з досвідом 5+ років у blockchain-розробці успішно впровадила Tenderly в десятках проєктів, скоротивши час діагностики помилок на 70%.

Що дає Tenderly в роботі

Transaction Simulator — відтворення будь-якої історичної транзакції зі зміною параметрів. Хочете перевірити, що сталося б, якби користувач відправив на 10% більше slippage? Або відтворити транзакцію в стані mainnet на конкретному блоці? Simulator дозволяє це без реальних коштів.

Visual Debugger — покрокове виконання з переглядом stack, memory, storage на кожному опкоді. Для Solidity-розробника це як gdb, тільки для EVM. Особливо цінно при аналізі складних revert у багатоконтрактних викликах — видно точний рядок у вихідниках, якщо контракт верифікований.

Tenderly Forks — sandbox на основі форку mainnet. Деплоїте контракти, виконуєте транзакції в ізольованому середовищі з реальним станом mainnet (реальні Uniswap пули, реальні Aave позиції). Це швидше, ніж anvil --fork-url для інтерактивного налагодження, і зручніше для спільної роботи команди.

Alerts & Monitoring — тригери на події контракту, зміни storage, конкретні функції. Можна налаштувати webhook на Discord/Slack при кожному Transfer токена або при зміні TVL більше ніж на X%.

Web3 Actions — серверлес-функції на TypeScript, які реагують на on-chain події. Наприклад: при детектуванні великої транзакції автоматично призупинити контракт через multisig.

Як Tenderly допомагає в налагодженні складних revert?

Типовий сценарій: користувач скаржиться, що його транзакція на DEX проходить з помилкою, а ви не можете відтворити проблему локально. Tenderly Simulator дозволяє вставити хеш транзакції, змінити slippage або суму, і одразу побачити, на якому кроці відбувається revert. Більше того, можна подивитися повний стан пулу ліквідності на момент транзакції — часто помилка пов'язана з impermanent loss або прослизанням.

Що входить в інтеграцію під ключ?

Компонент Термін виконання Результат
Встановлення плагіну та налаштування верифікації 1 день Контракти автоматично з'являються в Dashboard
Створення Tenderly Forks для тестів 1-2 дні Кожен тест з повним трасуванням
Налаштування алертів і Web3 Actions 2-3 дні Сповіщення у ваш месенджер + автоматичні реакції
Навчання команди 1 день Документація, доступи та демо-сесія

Ми гарантуємо, що після інтеграції ви зможете за 10 хвилин знайти причину будь-якого revert. Зв'яжіться з нами, щоб оцінити ваш проєкт — ми підготуємо план впровадження за 2 робочі дні.

Чому варто використовувати Tenderly Forks?

Замість того щоб запускати anvil --fork локально, ви отримуєте хмарний sandbox із уже включеним трасуванням. Кожна помилка в тесті автоматично веде в Debug UI з повним стеком викликів. Це прискорює рев'ю коду в команді та дозволяє поділитися посиланням на конкретний крок налагодження.

Інтеграція в проєкт

Tenderly SDK встановлюється через npm та інтегрується з Hardhat. У hardhat.config.ts додається плагін @tenderly/hardhat-tenderly, після чого деплой-скрипти автоматично верифікують і пушать контракти в Tenderly Dashboard.

import * as tenderly from "@tenderly/hardhat-tenderly"; tenderly.setup({ automaticVerifications: true }); 

Для Foundry — ручна верифікація через CLI: forge verify-contract --chain mainnet --etherscan-api-key $TENDERLY_ACCESS_KEY.

Найбільш цінна інтеграція — використання Tenderly Forks у тестах. Замість hardhat node --fork форк створюється через Tenderly API, і всі транзакції автоматично трасуються. При падінні тесту — одразу посилання на Debug UI з повним трасуванням.

Приклад налаштування алерту на зміну TVL

У Tenderly Dashboard вибираєте створення тригера з типом "Storage Change", вказуєте адресу пулу та параметр TVL. Далі вибираєте умову: якщо значення зменшилося більш ніж на 5%. Потім вказуєте webhook на Slack. Все налаштовується без коду, але через Web3 Actions можна додати кастомну логіку.

Що не замінює Tenderly

Tenderly не замінює Slither/Mythril для статичного аналізу і не замінює Echidna для фаззингу. Це інструмент для налагодження та моніторингу вже написаного коду, а не для пошуку вразливостей на етапі розробки. У нашому стеку Tenderly живе поруч із Foundry-тестами, не замість них.

Базова інтеграція (плагін + автоверифікація + перші alerts) — 1 день. Налаштування повноцінного моніторингу з Web3 Actions — 2-3 дні. Отримайте консультацію щодо вашого проєкту — ми допоможемо впровадити Tenderly з урахуванням вашого стеку.