Тестирование 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.

Рабочий порядок

  1. Прочитайте спецификацию и выделите инварианты.
  2. Проверьте позитивные и негативные вызовы на локальной сети.
  3. Проверьте события и состояние после транзакции.
  4. Попросите security review для критичных финансовых контрактов.

Что отдавать команде

  • Invariant checklist.
  • Unit/property test ideas.
  • Список security assumptions.

Частые провалы

  • Проверять контракт только через frontend.
  • Не тестировать forbidden calls для ролей.
  • Игнорировать события, хотя от них зависит индексатор или backend.

Практика

Для контракта staking проверьте: stake, withdraw, reward claim, pause, forbidden withdraw, rounding маленьких сумм, событие на каждую операцию.