Газ (Gas) в сети Ethereum: как считаются комиссии и от чего зависит цена?

Газ в сети Эфир Gas в Ethereum — это мера «весa» вычислений и операций в сети Ethereum. Каждая операция в EVM стоит определённое количество gas, а пользователь платит за фактически израсходованный gas в ETH.

Именно через газ (gas) протокол измеряет нагрузку на сеть и назначает комиссию: чем сложнее транзакция и чем выше спрос на блоки, тем больше ETH нужно заплатить.

Gas в Ethereum — как считается стоимость транзакции

Зачем в Ethereum нужен gas

В Ethereum одна и та же монета ETH используется и как:

  • средство оплаты комиссий;
  • стейк валидаторов в Proof-of-Stake;
  • актив для DeFi и хранения стоимости.

Чтобы не привязывать «цену операции» к самой монете напрямую, вводится отдельная единица — gas:

  • gas измеряет, сколько ресурсов требует операция (чтение/запись в storage, хеширование, вызовы контрактов и т.д.);
  • gas price (цена за единицу gas) показывает, сколько ETH пользователь готов заплатить за единицу нагрузки;
  • итоговая комиссия = gas_used × эффективная цена gas.

Такое разделение позволяет:

  • удерживать формат комиссий стабильным, даже если курс ETH к фиату сильно меняется;
  • тонко управлять лимитами блока и приоритетом транзакций;
  • заставить отправителей «платить за сложность», защищая сеть от спама и бесконечных вычислений.

Подробнее о газе в других EVM-сетях см. Gas в блокчейнах и EVM-сетях.

Поля gas в транзакции Ethereum

Современная транзакция в Ethereum (тип 2 после EIP-1559) содержит несколько газовых параметров.

  • gas limit

Максимальное количество gas, которое пользователь разрешает потратить на эту транзакцию. Если во время выполнения газ закончится, транзакция откатывается с ошибкой out-of-gas, но уже потраченный gas не возвращается.

  • maxFeePerGas

Максимальная цена за единицу gas, которую готов заплатить пользователь, с учётом base fee и чаевых. Это «общий потолок» цены gas.

  • maxPriorityFeePerGas

Максимальный размер чаевых (tip) валидатору за единицу gas. Чаевые определяют приоритет транзакции относительно других.

  • gas price

В «legacy»-транзакциях типа 0 задавалась одна цена gas. После EIP-1559 она остаётся в старом формате для обратной совместимости, но современные кошельки используют maxFeePerGas / maxPriorityFeePerGas.

Часть полей заполняет кошелёк автоматически, подбирая значения под текущую загрузку сети.

Как работает EIP-1559: base fee и чаевые

После обновления London комиссия в Ethereum делится на две части:

  • base fee (базовая комиссия)

Общая для всех транзакций в блоке. Задаётся протоколом и сжигается (burn), то есть выводится из обращения. Base fee автоматически подстраивается от блока к блоку:

  • если блоки переполнены — base fee растёт;
  • если блоки полупустые — base fee снижается.
  • priority fee (чаевые валидатору)

Доплата валидатору за включение транзакции. Пользователь задаёт максимум через maxPriorityFeePerGas, а фактическая чаевая может быть ниже.

Связка полей:

  • пользователь указывает maxFeePerGas и maxPriorityFeePerGas;
  • протокол знает текущую base fee для блока;
  • эффективная цена gas для транзакции:

effectiveGasPrice = baseFee + min(maxPriorityFeePerGas, maxFeePerGas - baseFee)

Важно:

  • если maxFeePerGas сильно больше base fee, лишнее не списывается, а остаётся на балансе отправителя;
  • пользователь платит только за фактически использованный gas: gas_used × effectiveGasPrice;
  • gas limit — это верхняя граница, а не гарантированная трата.

Как выбирается приоритет транзакции

Когда транзакция попадает в мемпул, валидаторы (или блок-строители) формируют блок:

  • сортируют транзакции по эффективным чаевым (priority fee) и общей выгоде;
  • учитывают ограничения по размеру блока и gas limit блока;
  • часто используют инфраструктуру MEV (MEV-Boost и аналоги) для дополнительного дохода.

Упрощённо:

  • транзакции с более высокой priority fee попадают в блок раньше;
  • слишком низкая maxPriorityFeePerGas и/или maxFeePerGas может означать долгое ожидание в мемпуле.

Для пользователя это выглядит как выбор профиля комиссии в кошельке: «быстро», «стандартно», «экономно».

Gas, gwei и итоговая комиссия

В Ethereum:

  • цена gas почти всегда указывается в gwei;
  • 1 gwei = 10⁻⁹ ETH.

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

fee (ETH) = gas_used × effectiveGasPrice

Пример:

  • gas_used = 50 000
  • effectiveGasPrice = 30 gwei = 30 × 10⁻⁹ ETH

fee = 50 000 × 30 × 10⁻⁹ = 0.0015 ETH

Часть этой суммы (base fee) сжигается, часть (priority fee) идёт валидатору.

Gas в L2-экосистеме Ethereum

В Layer-2 на Ethereum gas тоже присутствует, но:

  • внутри L2 пользователь платит нативным токеном L2 (ETH или отдельным токеном сети);
  • финальная стоимость включает:
    • вычисления и хранение внутри L2;
    • долю расходов на публикацию данных в L1 (особенно после EIP-4844 и blob-транзакций);
  • при мостах между L1 и L2 дополнительно платится gas за операции депозита/вывода на обеих сторонах.

Поэтому «дешёвый gas на L2» — это результат вынесения части нагрузки с L1 и оптимизации публикации данных, а не отсутствие комиссии как таковой.

Типичные ошибки и мифы про gas в Ethereum

  • «Если поставлю большой gas limit, спишут больше»

Нет. Протокол спишет ETH только за реально использованный gas. Повышенный лимит нужен, чтобы транзакция не упёрлась в out-of-gas из-за слишком низкой границы.

  • «Gas — это токен, который можно хранить отдельно»

Gas — единица измерения, а не отдельная монета. Платёж всегда в ETH (или нативном токене конкретной L2-сети).

  • «Комиссии забирают разработчики протокола»

В Ethereum base fee сжигается, priority fee получает валидатор или блок-строитель. dApp может брать свою надбавку (protocol fee), но это отдельный слой.

  • «Можно отправить транзакцию без комиссии»

Формально — нет: любой вызов, который меняет состояние (перевод, взаимодействие со смарт-контрактом), требует gas и комиссии. Без оплаты транзакция просто не будет принята сетью.

Краткий чек-лист по настройке gas для пользователя

  • Проверяйте сеть: используете ли вы правильную сеть (Ethereum L1, конкретный L2, тестнет).
  • Не бойтесь ставить чуть завышенный gas limit — неиспользованный gas вернётся.
  • Ориентируйтесь на подсказки кошелька по maxFeePerGas и maxPriorityFeePerGas, но в часы пик допускайте, что «экономный» профиль может долго висеть.
  • Следите за итоговой суммой в ETH перед подтверждением: кошелёк обычно показывает прогноз комиссии.
  • Для редких и критичных операций (мосты, крупные переводы) лучше выбрать более высокий приоритет, чтобы снизить риск долгого ожидания.

Частые вопросы (FAQ)

Куда уходит комиссия за gas в Ethereum? Base fee сжигается в протоколе, уменьшая общий оборот ETH. Priority fee (чаевые) получает валидатор или блок-строитель, который включил транзакцию в блок. Дополнительные «protocol fee» могут забирать сами dApp-протоколы.

Что будет, если выставить слишком низкую комиссию? Транзакция попадёт в мемпул и может долго ждать, пока не снизится нагрузка или пока валидатор не решит включить её. В крайних случаях узлы могут «забыть» её через время. В некоторых кошельках транзакцию можно заменить новой с более высокой комиссией.

Почему комиссии в Ethereum сильно меняются по дням и часам? Base fee зависит от заполненности блоков. Если одновременно много пользователей совершают сложные операции (DeFi, NFT, мем-коины), спрос на место в блоках растёт — вместе с ним растут base fee и готовность пользователей платить более высокую priority fee.

Почему операции со смарт-контрактами дороже обычных переводов ETH? Потому что контракт выполняет больше инструкций EVM, чаще обращается к storage и другим контрактам. Всё это потребляет больше gas, а значит — увеличивает итоговую комиссию.

См. также

Task Runner