Кальтер / Блог

Что проверяет симуляция транзакции кошелька и чего она не гарантирует

Разбираем preview, off-chain и enforced simulation на примере MetaMask и составляем проверку до подписи.

Материал подготовлен с помощью ИИ. Источники, учебные примеры и расчёты проверены редакцией перед публикацией.

Схема отделяет прогнозируемые симуляцией изменения от фактического включения и результата транзакции.
Схема отделяет прогнозируемые симуляцией изменения от фактического включения и результата транзакции.

Симуляция транзакции показывает предполагаемый результат исполнения при определённом состоянии сети и данных вызова. Она помогает заметить неожиданный перевод токена или изменение баланса, но не означает, что реальное исполнение уже состоялось или что любой риск исчез.

Что проверить в preview

У MetaMask стандартная off-chain симуляция прогнозирует изменения баланса до отправки. В её документации отдельно описано ограничение: контракт может реагировать иначе на среду симуляции и реальное выполнение; для сложных атак превью может выглядеть безопасно. У MetaMask есть дополнительная функция enforced on-chain simulations для поддерживаемых сценариев, где несовпадение результата вызывает revert, но это свойство нельзя переносить на все кошельки или все типы вызовов (справка MetaMask о transaction simulations).

Симуляция может показать Чего один preview не доказывает
Ожидаемое изменение баланса Что сеть включит транзакцию именно так
Адреса и вызов, распознанные интерфейсом Что контракт добросовестен или неизменяем
Ошибку при текущем состоянии Что состояние останется тем же к исполнению
Одобрение/перевод, видимый в анализе Что скрытые или будущие вызовы отсутствуют

Проверь синтетический swap

Пусть интерфейс показывает: отправляешь 1 условный токен A, прогноз — 98 условных токенов B. До подписи сверь сеть, target contract, calldata/действие, spender и лимит slippage. Числа вымышлены; это не котировка. Если ожидаемый результат позже изменится из-за состояния пула, дедлайна, цены или исполнения, off-chain preview не является гарантией.

Не подтверждай транзакцию лишь по зелёной галочке. Сверь адрес контракта с официальным реестром контрактов проекта, открытым отдельно от страницы, предлагающей подпись, проверь точный объём разрешения и подумай, нужна ли операция вообще. Если кошелёк предоставляет enforced simulation, выясни её границы и поддерживаемую сеть. MetaMask описывает эту дополнительную защиту для своих smart accounts в Extension и поддерживаемых сценариев; проверка добавляет on-chain вычисления и может увеличить сетевую комиссию. Сама симуляция использует централизованный сервер MetaMask — учитывай передачу данных вызова и настройки приватности. После отправки сопоставь hash, receipt, события и фактическое изменение баланса.

Попроси ИИ составить список полей к проверке, но запрети объявлять сделку безопасной только потому, что симуляция прошла. На вход достаточно публичных адресов, calldata и скриншота без личных заметок; никогда не нужны seed, приватный ключ или код подтверждения.

Материал о предварительном исполнении не заменяет аудит контракта. Для базовых правил смотри руководство по безопасности криптоактивов и статусы pending-перевода.