Короткий ответ: комиссия оплачивает вычисления и место в блоке, а не обещанный пользователю результат. Если Ethereum-транзакция попала в блок и во время исполнения завершилась ошибкой, изменения состояния откатываются, но узлы уже выполнили работу. Поэтому потраченный gas остаётся оплаченным.
Важно отличать неудачную транзакцию в блоке от запроса, который кошелёк или узел отклонил до отправки. В первом случае есть TxID, блок, квитанция и фактический расход gas. Во втором подтверждённой транзакции может вообще не существовать, поэтому сетевой комиссии за неё нет.
Что происходит при выполнении смарт-контракта
Транзакция задаёт вызов, лимит gas и параметры цены. Валидатор включает её в блок, EVM выполняет инструкции контракта и учитывает использованные единицы. Если условие контракта вызывает revert, ожидаемые изменения балансов и хранилища отменяются. При этом вычисления до точки отказа уже состоялись.
Комиссия также защищает сеть от бесконечных циклов и бесплатного спама. Если бы ошибочные вызовы ничего не стоили, любой участник мог бы заставлять узлы выполнять бесполезную работу без ограничений.
Когда комиссия списывается, а когда нет
Транзакция подтверждена со статусом Failed или Reverted. Она включена в блок, nonce использован, gas потрачен. Основное действие не завершилось, но комиссия удержана за фактическую работу.
Во время исполнения закончился gas. EVM откатывает изменения и расходует предоставленный лимит. Простое повышение цены gas не исправит нехватку вычислительного лимита.
Кошелёк не дал подписать запрос. Если операция не была создана и передана в сеть, сетевого TxID нет и комиссия не списывается. Интерфейс может показывать ошибку оценки, недостаточный баланс или неверные параметры.
Узел отклонил транзакцию до включения. Например, она может быть структурно недействительной или не проходить обязательные проверки. Пока транзакция не исполнялась в блоке, сетевой платы за исполнение нет.
Транзакция остаётся pending. Кошелёк может резервировать максимальную сумму и показывать уменьшенный доступный баланс, но окончательная комиссия появится после включения. Сначала проверьте хеш через инструкцию о том, как найти и проверить транзакцию.
Как проверить, сколько gas действительно потрачено
- Откройте TxID в обозревателе правильной сети.
- Убедитесь, что указан номер блока, а не только pending-статус.
- Найдите статус квитанции: success или failure.
- Посмотрите gasUsed и effectiveGasPrice.
- Сравните адрес контракта, метод, сумму и созданные события с тем, что вы собирались сделать.
GasUsed показывает фактически потреблённые единицы, а effectiveGasPrice – цену единицы в этом блоке. Их произведение соответствует сетевой комиссии. Gas limit является верхней границей, а не обязательным расходом. Разница подробно разобрана в статье про gas limit и цену газа.
Почему действие могло завершиться ошибкой
Контракт способен отклонить операцию из-за недостаточного допуска токена, минимальной суммы получения, истёкшего срока, паузы, запрета для адреса или другого условия в коде. Состояние могло измениться между симуляцией кошелька и фактическим включением в блок, поэтому успешная предварительная оценка не является гарантией.
Out of gas отличается от обычного revert причиной, но результат для полезного действия похож: изменения не сохраняются. Точную подсказку иногда можно найти в данных ошибки или расшифрованном вызове. Общий порядок чтения результата есть в материале о Failed и Reverted.
Стоит ли сразу повторять операцию
Нет, пока причина не установлена. Если повторить те же параметры, контракт может снова отказать, а сеть снова спишет комиссию. Увеличение gas limit помогает только при доказанной нехватке лимита. Повышение maxFeePerGas или priority fee влияет на включение, но не устраняет неверный адрес, запрет контракта или недостаточный допуск.
Перед новой попыткой проверьте нативную монету для комиссии, доступный баланс токена, сеть, контракт, разрешения, сумму и ограничения приложения. Если сама комиссия несоразмерна действию, разберите, почему плата сети выше суммы перевода. Не подтверждайте новую транзакцию только ради проверки гипотезы крупной суммой.
Может ли поддержка вернуть комиссию
Сетевая комиссия уже распределена по правилам блокчейна и не находится на балансе кошелька или обычного приложения. Сервис может иметь собственную компенсационную политику, но технической отмены подтверждённой платы за gas нет. Не верьте обещанию «разморозить комиссию» после дополнительного перевода.
Для обращения подготовьте TxID, сеть, публичный адрес, адрес контракта, время, описание действия и снимок сообщения об ошибке. Не отправляйте seed-фразу, приватный ключ, пароль или 2FA. Эти секреты не помогают прочитать квитанцию, зато позволяют получить контроль над кошельком или аккаунтом.
Как не заплатить комиссию второй раз
Сохраните хеш неудачной операции и сравните новую попытку с её параметрами до подписи. Если ошибка связана с контрактом или условиями обмена, дождитесь понятного объяснения приложения либо проверьте действие на небольшой сумме. Не увеличивайте одновременно и лимит, и цену газа: после такой правки невозможно понять, что именно было исправлено. Когда кошелёк снова показывает то же предупреждение симуляции, остановитесь – повторная отправка с высокой комиссией не превращает заведомо ошибочный вызов в успешный.
Итог
Неудачная транзакция может сохранить комиссию, потому что сеть уже включила её в блок и выполнила код до ошибки. Сначала убедитесь, что есть подтверждённая квитанция, затем проверьте gasUsed, effectiveGasPrice и причину отказа. Повторяйте действие только после устранения причины, а не после произвольного увеличения комиссии.



