Газ в Ethereum: как рассчитывается комиссия, что такое gas limit и почему транзакция может не пройти

Газ — это единица измерения вычислительной работы, которую сеть Ethereum выполняет при обработке транзакций и исполнении смарт-контрактов. Каждая операция в EVM имеет фиксированную стоимость в газе, а итоговая комиссия зависит от объёма выполненных вычислений и текущей цены газа в сети.

Зачем нужен газ​


Газ решает три задачи одновременно:

  • Защита от спама. Каждое вычисление стоит денег, поэтому массовая отправка бессмысленных транзакций экономически невыгодна.
  • Предотвращение бесконечных циклов. Каждая транзакция обязана задать лимит газа — верхнюю границу вычислений. Если код зациклился, исполнение остановится, когда газ закончится.
  • Компенсация валидаторам. Валидаторы получают приоритетную комиссию (чаевые) за включение транзакции в блок.

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

Единицы измерения: Wei и Gwei​


Газ оплачивается исключительно в ETH. Цены на газ принято выражать в Gwei — это одна миллиардная доля ETH:

ЕдиницаСоотношение
1 WeiНаименьшая единица ETH
1 Gwei1 000 000 000 Wei = 10⁻⁹ ETH

Когда кошелёк показывает «газ стоит 30 Gwei», это означает 0,000000030 ETH за единицу газа.

Формула комиссии​


Общая комиссия за транзакцию рассчитывается так:

Код:
комиссия = единицы использованного газа × (base fee + priority fee)

  • Base fee — минимальная цена за единицу газа, устанавливаемая протоколом для каждого блока. Транзакция с ценой ниже base fee не будет включена.
  • Priority fee (tip) — добровольная надбавка, которую отправитель добавляет, чтобы мотивировать валидатора выбрать именно его транзакцию.

Пример расчёта​


Перевод ETH требует 21 000 единиц газа. Допустим, base fee = 10 Gwei, priority fee = 2 Gwei:

Код:
21 000 × (10 + 2) = 252 000 Gwei = 0,000252 ETH

Из этой суммы 0,00021 ETH (base fee) сжигается протоколом, а 0,000042 ETH (tip) получает валидатор.

Как определяется base fee​


Base fee не задаётся вручную — протокол пересчитывает его для каждого нового блока на основе заполненности предыдущего. Механика работает через сравнение фактического размера блока с целевым:

  • Целевой размер блока равен половине его газового лимита.
  • Если предыдущий блок заполнен выше целевого размера, base fee следующего блока увеличивается (максимум на 12,5%).
  • Если блок заполнен ниже целевого, base fee уменьшается (максимум на 12,5%).
  • Если блок ровно на целевом размере, base fee не меняется.

Корректировка линейна: пустой блок даёт −12,5%, полный блок даёт +12,5%. Экспоненциальный рост при последовательных полных блоках делает удержание высоких комиссий экономически невыгодным для атакующего.

Base fee сжигается — эти ETH изымаются из обращения. Это часть механизма EIP-1559, который сделал комиссии более предсказуемыми и снизил инфляцию ETH.

Priority fee: зачем и сколько ставить​


Приоритетная комиссия — это сигнал валидатору о срочности. Без неё транзакция формально валидна (если покрывает base fee), но валидатору нет стимула включать её раньше других.

На практике:

  • При низкой загрузке сети достаточно 1–2 Gwei.
  • При высокой загрузке (популярные минты, аирдропы, волатильность) приоритетная комиссия может вырасти до десятков Gwei.
  • Кошельки обычно предлагают рекомендуемое значение на основе текущего состояния мемпула.

maxFeePerGas: защита от переплаты​


Параметр maxFeePerGas задаёт абсолютный потолок того, сколько отправитель готов заплатить за единицу газа. Если к моменту включения транзакции в блок base fee оказался ниже, чем maxFeePerGas − priority fee, разница возвращается отправителю.

Это защищает от ситуации, когда транзакция долго висит в мемпуле, base fee резко вырастает, и комиссия оказывается неожиданно высокой.

Gas limit: верхняя граница вычислений​


Gas limit — это максимальное количество единиц газа, которое отправитель готов потратить на одну транзакцию. Он задаётся при отправке и определяет, сколько вычислительных шагов EVM может выполнить.

Тип операцииТипичный gas limit
Простой перевод ETH21 000
Перевод ERC-20 токена~65 000
Взаимодействие со смарт-контрактом100 000 – 300 000+
Деплой контрактаЗависит от размера байткода

Что происходит при избыточном лимите​


Если вы поставили gas limit 50 000 для простого перевода, EVM потратит 21 000, а оставшиеся 29 000 вернутся. Вы платите только за фактически использованный газ.

Что происходит при недостаточном лимите​


Здесь два разных сценария:

  1. Лимит ниже минимальной стоимости операции. Например, 20 000 для перевода ETH. Транзакция будет отклонена на этапе валидации — она даже не попадёт в блок, газ не спишется.
  2. Газ закончился во время исполнения. Например, смарт-контракт выполняет сложную логику и расходует весь выделенный газ до завершения. EVM откатывает все изменения состояния, но весь предоставленный газ списывается как оплата за выполненную работу. Транзакция фиксируется в блокчейне как неудачная (status = 0), а ETH теряются.

Второй сценарий — типичная причина «потерянного газа» при взаимодействии с контрактами.

Почему транзакция может не пройти​


ПричинаЧто происходитГаз списывается?
Gas limit ниже минимума для операцииОтклонение на валидацииНет
Газ закончился при исполненииОткат состояния, транзакция в блоке со статусом «failed»Да, полностью
maxFeePerGas ниже текущего base feeТранзакция не включается в блокНет
Недостаточный баланс ETH на оплату комиссииОтклонениеНет
Nonce уже использованОтклонениеНет
Revert в смарт-контракте (require/assert)Откат состоянияДа, газ за выполненную работу

Почему комиссии бывают высокими​


Цена газа определяется спросом на место в блоке. Когда количество желающих отправить транзакции превышает пропускную способность сети, пользователи конкурируют через priority fee. Типичные триггеры всплесков:

  • Запуск популярных NFT или токенов.
  • Резкие движения рынка, вызывающие массовые ликвидации или обмены на DEX.
  • Аирдропы и минты.
  • Пиковые часы активности (обычно совпадают с рабочим временем в Северной Америке и Азии).

Базовая комиссия при этом растёт автоматически: если блоки последовательно заполняются выше целевого размера, base fee увеличивается на 12,5% каждый блок, что быстро делает атаку или спам дорогими.

Как снизить расходы на газ​


  • Отправляйте в непиковые часы. Когда Северная Америка спит, загрузка сети обычно ниже, и base fee падает.
  • Используйте трекеры газа. Etherscan Gas Tracker, Blocknative и аналоги показывают текущую цену и динамику.
  • Настраивайте maxFeePerGas и priority fee вручную. Кошельки часто закладывают запас, который не всегда нужен.
  • Используйте сети уровня 2 (L2). Arbitrum, Optimism, Base и другие rollup-сети обрабатывают транзакции поверх Ethereum с существенно меньшими комиссиями.
  • Оптимизируйте взаимодействие с контрактами. Если вы разработчик, сокращайте количество операций в одной транзакции, используйте batch-вызовы и эффективные структуры данных.

Газ и безопасность сети​


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

Сжигание base fee дополнительно связывает использование сети с дефляционным давлением на ETH: чем больше транзакций, тем больше монет изымается из обращения.

Типичные ошибки пользователей​


  • Ставить gas limit «с запасом» в тысячи единиц для простого перевода. Это не ускоряет транзакцию и не увеличивает комиссию — вы платите только за фактический расход, но некоторые кошельки могут показывать пугающую максимальную сумму.
  • Не проверять баланс перед отправкой. Комиссия списывается сверх переводимой суммы. Если на счету ровно 1 ETH и вы отправляете 1 ETH, транзакция не пройдёт.
  • Повторно отправлять транзакцию с тем же nonce. Если первая транзакция зависла в мемпуле из-за низкой комиссии, нужно отправить замену с тем же nonce, но более высоким priority fee, а не создавать новую транзакцию с новым nonce.
  • Игнорировать revert. Если транзакция к смарт-контракту стабильно падает с ошибкой исполнения, увеличение газа не поможет — проблема в логике контракта или в переданных параметрах.

Связь с EVM и смарт-контрактами​


Каждая инструкция EVM имеет фиксированную стоимость в газе. Например, арифметические операции стоят дёшево, а операции чтения и записи в хранилище (SLOAD, SSTORE) — значительно дороже. Это отражает реальную вычислительную сложность: запись в состояние требует обновления дерева Меркла и влияет на размер данных, которые ноды должны хранить.

Разработчики смарт-контрактов оптимизируют газ, минимизируя количество записей в storage, используя packing переменных и избегая избыточных циклов. Подробнее о механике исполнения контрактов — в материале Смарт-контракты Ethereum: как они выполняются, откуда берётся газ и почему код нельзя изменить после деплоя.

Источники​


 

Похожие темы

Назад
Верх Низ