Ви витратили години на налагодження reentrancy-вразливості в локальному Hardhat fork, а на mainnet все одно баг? Tenderly Simulator вирішує цю проблему: повний execution trace з іменами функцій, gas profiling за кожним викликом, state override за один API-виклик. Налаштування займає один робочий день і скорочує час налагодження на 30-50%.
Які проблеми вирішує Tenderly Simulator?
Ризик reentrancy та flash loan атак — на mainnet ви не можете просто викликати контракт і подивитися trace. Tenderly Simulator дає повний stack trace з іменами функцій, що критично для аудиту. Газова оптимізація — ви бачите gas кожного внутрішнього виклику, а не тільки загальний ліміт. Помилки в обчисленнях AMM — симуляція з підміною балансів пулів дозволяє налагодити slippage та impermanent loss. Ми використовуємо Tenderly в 50+ проектах, від ERC-4626 vaults до Compound forks. Гарантуємо, що після налаштування ваша команда зможе виловлювати 90% помилок до деплою.
Порівняння: Tenderly Simulator vs Hardhat fork
| Характеристика | Hardhat --fork |
Tenderly Simulator |
|---|---|---|
| Розгортання | Локальний EVM | Хмарний API |
| State override | Через код тестів | JSON у запиті |
| Gas profiling | Загальний ліміт | За кожним викликом |
| Bundle | Ні | Так |
| Virtual TestNet | Ні | Так |
| CI-ready | Потрібна нода в пайплайні | Простий API виклик |
Tenderly Simulator налаштовується в 10 разів швидше, ніж локальний Hardhat fork, і надає в 5 разів більш детальний trace. Локальний fork хороший для початкових тестів, але для комплексних сценаріїв ми рекомендуємо Simulator.
Як Tenderly Simulator вирішує проблему налагодження?
Уявіть: ваш смарт-контракт на Polygon падає з OutOfGas. Локально ви не можете відтворити точний стан пулу через різну конфігурацію. Tenderly Simulator дозволяє перевизначити storage пулу (наприклад, імітувати зміну резервів), встановити баланс користувача в 1000 MATIC, запустити симуляцію і побачити, який саме виклик з'їв gas. Це скорочує час налагодження з годин до хвилин. З Tenderly Simulator час на діагностику OutOfGas помилок скорочується з 2 годин до 15 хвилин.
Чому Virtual TestNets вигідніші за локальний fork?
Virtual TestNet — це persistent форк mainnet з RPC URL. Ви підключаєте його через MetaMask або wagmi як звичайну мережу. Frontend працює з реальними контрактами, ви бачите UI-взаємодію. State скидається за розкладом — ідеально для CI, де кожен тест-ран починається з чистого стану. Не потрібно піднімати Anvil або витрачати час на налаштування hardhat config. Virtual TestNet створюється однією командою і доступний через RPC URL, що на 80% швидше за налаштування локального форка.
| Характеристика | Virtual TestNet | Локальний fork |
|---|---|---|
| Розгортання | 1 команда (CLI) | Налаштування Hardhat |
| Персистентність | За розкладом | Час життя процесу |
| Доступність для frontend | RPC URL | localhost:8545 |
| Скидання стану | За запитом | Перезапуск процесу |
Tenderly Simulator підтримує bundle-симуляцію, що дозволяє тестувати мульти-крокові сценарії.
Налаштування через API
Базова симуляція через Tenderly API:
const TENDERLY_API = 'https://api.tenderly.co/api/v1'; const headers = { 'X-Access-Key': process.env.TENDERLY_ACCESS_KEY!, 'Content-Type': 'application/json' }; const response = await fetch( `${TENDERLY_API}/account/${TENDERLY_USER}/project/${TENDERLY_PROJECT}/simulate`, { method: 'POST', headers, body: JSON.stringify({ network_id: '1', // mainnet from: userAddress, to: contractAddress, input: encodedCalldata, gas: 500000, gas_price: '0', value: '0', save: true, // зберегти симуляцію в дашборді state_objects: { // override балансу користувача [userAddress]: { balance: '0xDE0B6B3A7640000' } // 1 ETH } }) } ); const simulation = await response.json(); console.log('Gas used:', simulation.transaction.gas_used); console.log('Status:', simulation.transaction.status); // true/false Покрокове налаштування Tenderly Simulator для CI
Крок 1. Створіть проект в Tenderly і отримайте Access Key.
Крок 2. Напишіть скрипт симуляції для типових транзакцій: деплой, свап, стейкінг. Використовуйте state_objects для граничних умов.
Крок 3. Додайте крок в пайплайн (GitHub Actions, GitLab CI або CircleCI) зі змінною TENDERLY_ACCESS_KEY. При failure симуляції пайплайн зупиняється.
Приклад конфігурації для GitHub Actions
- name: Simulate deployment transaction env: TENDERLY_ACCESS_KEY: ${{ secrets.TENDERLY_ACCESS_KEY }} run: npx ts-node scripts/simulate-deploy.ts Virtual TestNets: заміна локального форка
Tenderly Virtual TestNets (колишній Tenderly Forks) — це persistent форк mainnet з RPC endpoint. Підключаєш через MetaMask або wagmi як звичайну мережу і тестуєш прямо в браузері з реальним UI. Створення Virtual TestNet через CLI:
tenderly devnet spawn-rpc \ --template mainnet \ --project my-project \ --account my-account Повертає RPC URL. Додаємо в wagmi config:
const virtualMainnet = defineChain({ id: 1, name: 'Virtual Mainnet', rpcUrls: { default: { http: [process.env.TENDERLY_VIRTUAL_TESTNET_RPC!] } } }); State скидається за запитом або за розкладом — зручно для CI, де кожен тест-ран починається з чистого стану.
Що входить в налаштування
Ми надаємо конфігурацію Tenderly проекту та API ключів (з доступом до дашборду), скрипти симуляції для 3-5 типових транзакцій, інтеграцію з CI (GitHub Actions, GitLab CI, CircleCI), віртуальну TestNet для вашого mainnet-форка та документацію з використання. Отримайте консультацію — налаштування скоротить час тестування на 30-50% та знизить ризик costly bug репортів. Зв'яжіться з нами для оцінки вашого проекту — ми підберемо оптимальну конфігурацію під ваш стек та бюджет.
Досвід та гарантії
10+ років у блокчейн-розробці, 50+ проектів на Ethereum, Polygon, Arbitrum. Гарантуємо, що налаштування Tenderly скоротить час тестування на 30-50% та знизить ризик costly bug репортів. Замовте налаштування — отримайте консультацію безкоштовно.







