Настройка Tenderly Simulator: gas profiling, fork-симуляция, CI

Вы потратили часы на отладку reentrancy-уязвимости в локальном Hardhat fork, а на mainnet всё равно баг? Tenderly Simulator решает эту проблему: полный execution trace с именами функций, gas profiling по каждому вызову, state override за один API-вызов. Настройка занимает один рабочий день и сокраща

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

Часто задаваемые вопросы

Последние работы

  • 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

Вы потратили часы на отладку 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 fork 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 репортов. Закажите настройку — получите консультацию бесплатно.