Skip to content
Бета
Research · Обучение криптовалютам

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

Ethereum и смарт-контракты · 7 October 2026 · 1 мин чтения · By admin

Лимит газа — это максимальный объём вычислений, который вы разрешаете использовать транзакции Ethereum. Если ему не хватает газа, транзакция откатывается, но комиссия за использованный газ всё равно списывается.

What Is a Gas Limit and Why Do Transactions Fail? — OTCN Research cover

Лимит газа — это максимальный объём вычислений, измеряемый в единицах газа, который вы разрешаете использовать транзакции Ethereum. Если транзакции требуется больше, она останавливается, её изменения откатываются, но вы всё равно платите за использованный газ. Транзакции также могут завершаться ошибкой, когда смарт-контракт их отклоняет, например, потому что цена сдвинулась слишком сильно.

Газ, цена газа и лимит газа

Каждая операция в Ethereum имеет фиксированную стоимость в единицах газа. Простой перевод ETH стоит 21 000 газа; взаимодействие со смарт-контрактом стоит больше, в зависимости от того, что делает код. Комиссия, которую вы платите, равна:

Комиссия = использованный газ × (базовая комиссия + комиссия за приоритет)

Базовая комиссия устанавливается сетью и сжигается. Комиссия за приоритет — это чаевые валидатору. Обе величины указываются в гвеях, где 1 гвей равен 0,000000001 ETH. Лимит газа — это ограничение на использованный газ: ваш кошелёк оценивает его, и вам редко нужно его менять.

Наглядный пример

Вы меняете токены с лимитом газа 100 000. Обмен фактически использует 65 000 газа, а базовая комиссия плюс чаевые составляют 20 гвей.

  • Комиссия = 65 000 × 20 гвей = 1 300 000 гвей = 0,0013 ETH
  • Неиспользованные 35 000 газа ничего не стоят.

Теперь тот же обмен с лимитом газа 50 000:

  • Обмену нужно 65 000 газа, поэтому газ закончится после 50 000.
  • Транзакция завершается ошибкой, и обмен не происходит.
  • Вы всё равно платите 50 000 × 20 гвей = 1 000 000 гвей = 0,001 ETH.

Цифры приведены для иллюстрации; реальные комиссии меняются в зависимости от спроса в сети.

Сравнение двух транзакций: при лимите газа 100 000 обмен использует 65 000 газа и стоит 0,0013 ETH; при лимите 50 000 газа он заканчивается, завершается ошибкой и всё равно стоит 0,001 ETH. Рисунок: наглядный пример при 20 гвей. Значения иллюстративные; реальные комиссии меняются в зависимости от спроса.

Максимальная комиссия, комиссия за приоритет и фактическая оплата

Современные кошельки Ethereum запрашивают две цены, а не одну. Максимальная комиссия — это наибольшая сумма, которую вы готовы заплатить за единицу газа в целом; комиссия за приоритет — это чаевые, которые вы предлагаете валидатору. Когда транзакция включается в блок, вы платите текущую базовую комиссию плюс чаевые, а всё остальное между этой суммой и вашей максимальной комиссией никогда не списывается.

Предположим, вы установили максимальную комиссию 30 гвей и комиссию за приоритет 2 гвей, а базовая комиссия на момент включения вашего перевода составляет 18 гвей. Вы платите 20 гвей за единицу: 21 000 × 20 гвей = 0,00042 ETH. Кошелёк ненадолго зарезервировал до 0,00063 ETH, но 10 гвей за единицу, которые вам не понадобились, так и не были потрачены. (Примерные значения.) Таким образом, достаточно высокая максимальная комиссия защищает вас от роста базовой комиссии, не заставляя переплачивать.

Почему транзакции завершаются ошибкой

Недостаток газа. Лимит был установлен слишком низким для того, что требовалось транзакции, часто потому, что его меняли вручную или состояние контракта изменилось после оценки.

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

Комиссия слишком низка для включения. Если разрешённая вами максимальная комиссия ниже текущей базовой комиссии, транзакция ждёт в очереди, а не завершается ошибкой, и, возможно, её придётся заменить транзакцией с более высокой комиссией.

Ускорение или отмена зависшей транзакции

Ожидающую транзакцию можно заменить, пока она ждёт. Кошельки предлагают «ускорить», что повторно отправляет ту же транзакцию с более высокой комиссией, и «отменить», что отправляет транзакцию на нулевую сумму самому себе с тем же порядковым номером, называемым nonce, и с более высокой комиссией. Какая из версий первой будет включена валидатором, та и побеждает, а другая отбрасывается. Замена работает только до того, как исходная транзакция включена в блок; после подтверждения транзакцию отменить нельзя.

Почему оценки газа иногда ошибаются

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

Лимит газа блока отличается

Каждый блок также имеет лимит газа, который ограничивает общий объём газа всех транзакций внутри него. Его устанавливают валидаторы сети, и он определяет, сколько активности помещается в каждый блок продолжительностью 12 секунд. Когда спрос превышает этот объём, базовая комиссия растёт, пока часть пользователей не начнёт ждать. Лимит газа вашей транзакции контролирует только её собственный расход.

Газ в сетях второго уровня

Роллапы, построенные на Ethereum, используют те же концепции: у транзакций есть лимиты газа, комиссии обычно уплачиваются в ETH, а транзакция, которая исчерпала газ или была отменена, всё равно оплачивает использованный газ. Разница в масштабе. Комиссии в большинстве сетей второго уровня составляют небольшую долю от комиссий основной сети, поэтому неудачная транзакция там обходится недорого, хотя привычка проверять ошибки перед повторной попыткой по-прежнему актуальна. См. что такое роллапы Ethereum.

Как читать неудачную транзакцию в блок-эксплорере

Найдите хеш транзакции в блок-эксплорере. Строка статуса показывает, успешна транзакция или нет. Сравните использованный газ (gas used) с лимитом газа (gas limit): если они равны, транзакция исчерпала газ, и увеличение лимита может решить проблему. Если использованного газа меньше лимита, а статус указывает на отмену выполнения (execution reverted), контракт отказал в действии. Причина, если она отображается, объясняет, почему: недостаточный баланс, превышено проскальзывание, продажа закрыта. В этом случае увеличение лимита газа лишь делает следующую неудачу дороже.

Как избежать неудачных транзакций

  • Доверьте оценку лимита газа своему кошельку, если только вы не знаете, почему он неверен.
  • Читайте ошибку в блок-эксплорере: «out of gas» и «execution reverted» требуют разных решений.
  • Для обменов задавайте допустимое проскальзывание, соответствующее скорости движения рынка.
  • Перед повторной попыткой выясните, почему первая попытка не удалась, иначе можно заплатить дважды за один и тот же результат.

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

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

Источники

Leave a Reply

Your email address will not be published. Required fields are marked *