Газ — это единица измерения вычислительной работы, которую сеть Ethereum выполняет при обработке транзакций и исполнении смарт-контрактов. Каждая операция в EVM имеет фиксированную стоимость в газе, а итоговая комиссия зависит от объёма выполненных вычислений и текущей цены газа в сети.
Газ решает три задачи одновременно:
Комиссия выплачивается независимо от того, успешна транзакция или нет. Если исполнение завершилось ошибкой на середине, потраченный газ не возвращается.
Газ оплачивается исключительно в ETH. Цены на газ принято выражать в Gwei — это одна миллиардная доля ETH:
Когда кошелёк показывает «газ стоит 30 Gwei», это означает 0,000000030 ETH за единицу газа.
Общая комиссия за транзакцию рассчитывается так:
Перевод ETH требует 21 000 единиц газа. Допустим, base fee = 10 Gwei, priority fee = 2 Gwei:
Из этой суммы 0,00021 ETH (base fee) сжигается протоколом, а 0,000042 ETH (tip) получает валидатор.
Base fee не задаётся вручную — протокол пересчитывает его для каждого нового блока на основе заполненности предыдущего. Механика работает через сравнение фактического размера блока с целевым:
Корректировка линейна: пустой блок даёт −12,5%, полный блок даёт +12,5%. Экспоненциальный рост при последовательных полных блоках делает удержание высоких комиссий экономически невыгодным для атакующего.
Base fee сжигается — эти ETH изымаются из обращения. Это часть механизма EIP-1559, который сделал комиссии более предсказуемыми и снизил инфляцию ETH.
Приоритетная комиссия — это сигнал валидатору о срочности. Без неё транзакция формально валидна (если покрывает base fee), но валидатору нет стимула включать её раньше других.
На практике:
Параметр
Это защищает от ситуации, когда транзакция долго висит в мемпуле, base fee резко вырастает, и комиссия оказывается неожиданно высокой.
Gas limit — это максимальное количество единиц газа, которое отправитель готов потратить на одну транзакцию. Он задаётся при отправке и определяет, сколько вычислительных шагов EVM может выполнить.
Если вы поставили gas limit 50 000 для простого перевода, EVM потратит 21 000, а оставшиеся 29 000 вернутся. Вы платите только за фактически использованный газ.
Здесь два разных сценария:
Второй сценарий — типичная причина «потерянного газа» при взаимодействии с контрактами.
Цена газа определяется спросом на место в блоке. Когда количество желающих отправить транзакции превышает пропускную способность сети, пользователи конкурируют через priority fee. Типичные триггеры всплесков:
Базовая комиссия при этом растёт автоматически: если блоки последовательно заполняются выше целевого размера, base fee увеличивается на 12,5% каждый блок, что быстро делает атаку или спам дорогими.
Газ — не просто механизм оплаты, а элемент безопасности. Без него любой мог бы запустить бесконечный цикл или заспамить сеть нулевыми транзакциями. Лимит газа на блок ограничивает суммарный объём вычислений, которые сеть выполняет за один шаг консенсуса, и гарантирует, что ноды успевают обрабатывать блоки без деградации.
Сжигание base fee дополнительно связывает использование сети с дефляционным давлением на ETH: чем больше транзакций, тем больше монет изымается из обращения.
Каждая инструкция EVM имеет фиксированную стоимость в газе. Например, арифметические операции стоят дёшево, а операции чтения и записи в хранилище (SLOAD, SSTORE) — значительно дороже. Это отражает реальную вычислительную сложность: запись в состояние требует обновления дерева Меркла и влияет на размер данных, которые ноды должны хранить.
Разработчики смарт-контрактов оптимизируют газ, минимизируя количество записей в storage, используя packing переменных и избегая избыточных циклов. Подробнее о механике исполнения контрактов — в материале Смарт-контракты Ethereum: как они выполняются, откуда берётся газ и почему код нельзя изменить после деплоя.
Зачем нужен газ
Газ решает три задачи одновременно:
- Защита от спама. Каждое вычисление стоит денег, поэтому массовая отправка бессмысленных транзакций экономически невыгодна.
- Предотвращение бесконечных циклов. Каждая транзакция обязана задать лимит газа — верхнюю границу вычислений. Если код зациклился, исполнение остановится, когда газ закончится.
- Компенсация валидаторам. Валидаторы получают приоритетную комиссию (чаевые) за включение транзакции в блок.
Комиссия выплачивается независимо от того, успешна транзакция или нет. Если исполнение завершилось ошибкой на середине, потраченный газ не возвращается.
Единицы измерения: Wei и Gwei
Газ оплачивается исключительно в ETH. Цены на газ принято выражать в Gwei — это одна миллиардная доля ETH:
| Единица | Соотношение |
|---|---|
| 1 Wei | Наименьшая единица ETH |
| 1 Gwei | 1 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 |
|---|---|
| Простой перевод ETH | 21 000 |
| Перевод ERC-20 токена | ~65 000 |
| Взаимодействие со смарт-контрактом | 100 000 – 300 000+ |
| Деплой контракта | Зависит от размера байткода |
Что происходит при избыточном лимите
Если вы поставили gas limit 50 000 для простого перевода, EVM потратит 21 000, а оставшиеся 29 000 вернутся. Вы платите только за фактически использованный газ.
Что происходит при недостаточном лимите
Здесь два разных сценария:
- Лимит ниже минимальной стоимости операции. Например, 20 000 для перевода ETH. Транзакция будет отклонена на этапе валидации — она даже не попадёт в блок, газ не спишется.
- Газ закончился во время исполнения. Например, смарт-контракт выполняет сложную логику и расходует весь выделенный газ до завершения. 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: как они выполняются, откуда берётся газ и почему код нельзя изменить после деплоя.
