Уявіть: ви розгорнули AMM-пул на Sepolia, протестували всі функції локально — свопи, додавання ліквідності — і все проходить. На mainnet користувачі скаржаться, що за певної комбінації токенів транзакції зависають. Виявляється, оракул Chainlink на тестнеті повертав ціну з 6 знаками після коми, а на mainnet — з 8. Різниця в пріоритеті gas price призвела до недооцінки газу. Такий баг виявив би тестнет за годину, якби тестували з реальними адресами оракулів.
Локальні тести на Foundry anvil або Hardhat node проходять — і команда вважає контракт готовим до mainnet. Але тестнет регулярно виявляє те, що локальне середовище пропускає: коректність ABI під час взаємодії через реальний гаманець, поведінку сторонніх оракулів та протоколів, затримки транзакцій, edge cases з gas estimation. Ми на практиці переконалися: без повноцінного тестнет-циклу в mainnet вилітають баги, які коштують щонайменше 15-30% від бюджету на доопрацювання.
Які тестнети актуальні?
Для Ethereum-сумісних мереж на даний момент основними тестовими мережами є:
| Тестнет | Чейн | Особливості |
|---|---|---|
| Sepolia | Ethereum L1 | Основний ETH тестнет, PoS консенсус |
| Holesky | Ethereum L1 | Більший validator set, краще для staking |
| Amoy | Polygon | Замінив Mumbai |
| Arbitrum Sepolia | Arbitrum L2 | ArbOS, L1→L2 messaging |
| Optimism Sepolia | Optimism L2 | OP Stack, fault proofs |
| Base Sepolia | Base L2 | OP Stack, Coinbase |
| BSC Testnet | BNB Chain | Паралельно з mainnet |
Goerli виведений з експлуатації — не деплоїти туди нічого нового.
Що перевіряємо на тестнеті?
-
Верифікація через Etherscan. Деплой без верифікації — червоний прапорець для користувачів та аудиторів. Використовуємо
forge verify-contractабоhardhat verify. Важно: compiler version та optimization settings у конфігу мають точно збігатися з тими, що були при деплої. Розбіжність в одне налаштування — не верифікується. - Взаємодія через Metamask/Safe. Сигнатури функцій, читабельні назви параметрів в Etherscan UI, коректні події в Transaction logs. Перевіряємо, що ABI опубліковано та frontend коректно декодує відповіді.
- Gas estimation. Реальний газ на тестнеті vs локальний. Foundry
gas_priceв anvil за замовчуванням 1 wei — на тестнеті базова комісія плаваюча. Тест зvm.txGasPrice()не завжди відображає реальність. Наприклад, на Sepolia стандартна транзакція ERC-20 transfer коштує ~50 000 газу, а на локальному anvil — ~45 000. Різниця в 10% може бути критичною для high-frequency трейдингу. - Інтеграція з протоколами. Якщо контракт використовує Chainlink Price Feeds, Uniswap, Aave — на тестнеті деплоїмо їх адреси або використовуємо офіційні тестнет-деплої. Chainlink надає Price Feeds на Sepolia (офіційна документація). Uniswap V3 задеплоєно на Sepolia. Aave V3 — на Sepolia.
Як ми виконуємо тестнет-тестування?
Ми застосовуємо методику, відпрацьовану на 30+ проєктах (5+ років досвіду в Solidity). Процес включає:
- Аналіз залежностей — визначаємо всі зовнішні протоколи, оракули, мости.
- Скрипт деплою — пишемо Foundry Script з
vm.broadcast()для відтворюваного деплою. - Верифікація — автоматична верифікація всіх контрактів на Etherscan.
- Функціональне тестування — перевіряємо всі основні та граничні сценарії.
- Upgrade-тест — якщо контракт upgradeable, тестуємо повний цикл проксі-імплементації.
- Регресія — після виправлення багів повторюємо всі кроки.
Що входить у нашу роботу?
- Деплой та верифікація на тестнеті (Sepolia/Goerli/Holesky та інших за запитом)
- Ручне тестування всіх публічних функцій за допомогою cast та Metamask
- Автоматизація сценаріїв на Foundry Script — до 50+ тестів на контракт
- Інтеграційне тестування з реальними протоколами (Chainlink, Uniswap, Aave)
- Документація результатів — таблиця з пройденими тестами та скріншотами
- Підтримка фіксів — після виправлення контракту повторне тестування
Як автоматизувати тестування на тестнеті?
Для цього використовуємо Foundry Script з параметром --broadcast та --verify. Наприклад:
forge script script/DeployMyContract.s.sol:Deploy \ --rpc-url sepolia --broadcast --verify -vvvv Після деплою скрипт може викликати функції контракту через vm.prank та vm.expectRevert для перевірки доступу.
Основні команди Foundry
| Команда | Призначення |
|---|---|
forge script --rpc-url --broadcast --verify |
Деплой та верифікація |
cast call <contract> <function> |
Читання даних |
cast send <contract> <function> |
Відправка транзакції |
cast 4byte-decode <calldata> |
Розшифровка calldata |
Терміни та вартість
Типове тестнет-тестування нового контракту середнього розміру: 1-3 дні. Для контрактів з багатьма інтеграціями — до тижня. Вартість розраховується індивідуально — зв'яжіться для оцінки вашого проєкту.
Отримайте консультацію з тестнет-стратегії та переконайтеся, що ваш контракт не поповнить список збиткових багів. Зв'яжіться з нами для обговорення вашого проєкту.







