Тестирование smart contracts
Smart contract после деплоя трудно исправить, поэтому проверки должны быть строгими: unit/property tests, инварианты, права, события, upgradeability, экономические сценарии и реакции на ошибочные вызовы.
Что важно понять
- Access control: owner, roles, multisig, pause/unpause.
- Инварианты: баланс, supply, collateral ratio, невозможность двойного списания.
- Events, revert reasons, boundary values, overflow/underflow, rounding.
- Upgrade/migration, emergency stop, oracle failure, reentrancy-sensitive flows.
Рабочий порядок
- Прочитайте спецификацию и выделите инварианты.
- Проверьте позитивные и негативные вызовы на локальной сети.
- Проверьте события и состояние после транзакции.
- Попросите security review для критичных финансовых контрактов.
Что отдавать команде
- Invariant checklist.
- Unit/property test ideas.
- Список security assumptions.
Частые провалы
- Проверять контракт только через frontend.
- Не тестировать forbidden calls для ролей.
- Игнорировать события, хотя от них зависит индексатор или backend.
Практика
Для контракта staking проверьте: stake, withdraw, reward claim, pause, forbidden withdraw, rounding маленьких сумм, событие на каждую операцию.