Перейти к содержанию

Газ и комиссии за транзакции

Руководство с учетом версии протокола: единицы газа, внутренняя стоимость и стоимость исполнения, лимиты EIP-1559, сжигание базовой комиссии, приоритетная комиссия, REVERT, исчерпание газа, возвраты, blob-газ и компоненты комиссий L2.

Обновлено

Только в образовательных целях; не является инвестиционным советом или инвестиционной рекомендацией. Инвестиции могут привести к убыткам.

Краткий ответ

Газ — протокольная единица учета работы исполнения и доступа к состоянию; комиссия за газ — денежная сумма, рассчитанная как произведение оплачиваемых единиц газа и цены единицы. В Ethereum с EIP-1559 effectiveGasPrice = min(maxFeePerGas, baseFeePerGas + maxPriorityFeePerGas), комиссия за исполнение равна gasUsed * effectiveGasPrice, базовая часть сжигается, а приоритетная направляется получателю комиссии блока. Лимит газа и предельные цены разрешают максимумы, а не задают автоматически списываемые суммы.

Фактический расход зависит от calldata, пути opcodes, расширения памяти, холодного и теплого доступа к состоянию, изменений хранилища, вложенных вызовов, прекомпилированных контрактов, успеха или сбоя, возвратов и активной версии протокола. Более высокая цена может повысить конкурентоспособность включения, но не исправляет REVERT, недостаточный лимит, вредоносный контракт, устаревшую котировку или неверную calldata. Blob-транзакции и многие L2 добавляют отдельные компоненты за данные или протокол, которые нельзя автоматически считать газом EVM.

Сетевая плата
0,000462 native
Фиатный эквивалент
1,39 $
Базовая плата
22 gwei

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

Как это работает

  1. Зафиксируйте сеть, версию протокола, блок или тег состояния, тип транзакции, отправителя, nonce, адрес назначения, value, calldata, список доступа, blob-поля, газовый актив и валюту комиссии. Укажите, относится ли расчет к L1-транзакции, исполнению L2, публикации данных, выводу или составному маршруту.
  2. Восстановите внутренний газ до исполнения: конверт транзакции, стоимость байтов calldata, создание контракта, список доступа и накладные расходы типа. Если лимит меньше внутреннего газа или отправитель не проходит проверку максимальной стоимости, транзакция отклоняется до включенного исполнения, а не включается с последующим откатом.
  3. Проследите исполнение по целевой версии протокола. Учтите динамическую стоимость opcodes, расширение памяти, холодные и теплые счета или слоты, SSTORE, передачу газа вызовам, перевод стоимости, прекомпилированные контракты, журналы и возвраты. Одна функция ABI при разном состоянии может пройти разные ветви и израсходовать разный газ.
  4. Разделяйте результаты. Успешное исполнение фиксирует эффекты. REVERT откатывает неудачный контекст и может вернуть неиспользованный газ его кадра; исключительная остановка из-за исчерпания газа обычно потребляет весь переданный кадру газ. Включенный сбой верхнего уровня все равно расходует nonce и оплачиваемый газ, хотя состояние контракта, перевод стоимости и журналы откатываются.
  5. Оцените газ исполнения. Для транзакции типа 2 вычислите эффективную цену из базовой комиссии, предела приоритета и общего предела, затем разделите оплату на сжигаемую базовую и приоритетную части. Отличайте неиспользованный газ и незатраченный запас ценового лимита от протокольного возврата за допустимую очистку состояния, ограниченного действующим пределом.
  6. Отдельно оцените прочие рынки комиссий. Blob-транзакция платит за исполнение плюс blobGasUsed * blobGasPrice с ограничением maxFeePerBlobGas; базовая blob-комиссия меняется отдельно. Пользовательская комиссия L2 может включать исполнение L2, сжатые данные L1 или blob, сбор оператора или протокола и надбавки по формулам и коэффициентам конкретного развертывания и обновления.
  7. Сверьте оценку, включение и квитанцию. До подписи проверьте баланс относительно value и максимально разрешенных комиссий, симулируйте на закрепленном состоянии и задайте ограниченные пределы. После включения запишите лимит, расход из квитанции, эффективную цену, базовую и приоритетную комиссии, возвраты, blob-газ, поля L2, статус и изменение баланса; отдельно учитывайте ошибку оценки, замену и финальность.

Примеры расчета

  • Успешная транзакция типа 2 и пределы. Лимит равен 120,000, расход 70,000, базовая комиссия 25 gwei, максимальная приоритетная 3 gwei, максимальная общая 40 gwei. Эффективная цена — min(40, 25 + 3) = 28 gwei; фактическая комиссия — 70,000 * 28 gwei = 0.001960 ETH: 0.001750 ETH сжигается, 0.000210 ETH составляет приоритетную часть. Максимальное разрешение — 120,000 * 40 gwei = 0.004800 ETH; неиспользованные 50,000 gas и запас ценового лимита не являются протокольным возвратом за очистку.
  • REVERT и исчерпание газа. У двух включенных вызовов лимит 100,000, эффективная цена 30 gwei. Вызов A выполняет REVERT, когда расход в квитанции достигает 60,000, поэтому комиссия равна 60,000 * 30 gwei = 0.001800 ETH. Вызов B исчерпывает весь лимит, поэтому комиссия равна 100,000 * 30 gwei = 0.003000 ETH. Оба сбоя верхнего уровня откатывают эффекты и расходуют nonce, но REVERT может сохранить неиспользованный газ, а исчерпание — нет.
  • Предел возврата. В учебном примере для EIP-3529 исполнение до возврата потребляет 100,000 gas, а счетчик возврата равен 30,000 gas. Применяется не более 100,000 / 5 = 20,000 gas, поэтому оплачивается 100,000 - 20,000 = 80,000 gas. При 20 gwei комиссия равна 0.001600 ETH, а не 0.002000 ETH, экономия — 0.000400 ETH; правила и допустимые операции зависят от версии протокола.
  • Отдельный рынок blob-комиссии. Гипотетическая транзакция использует 100,000 газа исполнения по 20 gwei и два blob. При 131,072 blob gas/blob расход blob-газа равен 262,144; при цене 5 gwei blob-комиссия — 262,144 * 5 gwei = 0.00131072 ETH. Исполнение стоит 0.002000 ETH, итого протокольная комиссия — 0.00331072 ETH. Цена 5 gwei условна; blob-комиссия не является приоритетной выплатой валидатору или полной сквозной комиссией пользователя L2.

Риски

  • Неверная сеть, версия протокола, газовый актив, тип транзакции или валюта комиссии.
  • Смешение единиц газа, wei, gwei, ETH и фиатных пересчетов.
  • Принятие лимита газа за ожидаемую или фактическую комиссию.
  • Непрохождение проверок внутреннего газа или максимальной стоимости.
  • Устаревшая оценка после изменения состояния, базовой комиссии или calldata.
  • Лимит ниже потребности фактической ветви исполнения.
  • Предположение, что более высокая цена газа предотвращает REVERT.
  • Смешение REVERT, исчерпания газа, недопустимого opcode и предварительного отклонения.
  • Пропуск обработанного сбоя дочернего вызова при статусе верхнего уровня 1.
  • Ошибка в цене холодного и теплого доступа или неполный список доступа.
  • Игнорирование памяти, передачи газа, прекомпилированных контрактов или журналов.
  • Применение устаревших возвратов за хранилище или превышение их предела.
  • Смешение неиспользованного газа или запаса лимита с протокольным возвратом.
  • Максимальная комиссия ниже базовой комиссии блока включения.
  • Переплата приоритета без учета политики сборщика блока или секвенсора.
  • Отсутствие нативного газового актива при наличии других активов.
  • Пропуск blob-газа, его предела или платы за доступность данных.
  • Перенос формулы исполнения, данных, коэффициентов и оператора одной L2 на все L2.
  • Игнорирование гонок замены, nonce, удаления транзакции и резервирования баланса.
  • Принятие оплаты или успеха за доказательство безопасности контракта или финальности.

Распространенные заблуждения

  • Газ составляет процент от переводимой стоимости.
  • Повышение лимита обязательно увеличивает списание.
  • Высокий максимум или приоритет гарантирует успешное исполнение.
  • Неиспользованное разрешение и возврат за очистку — один механизм.
  • Комиссия L2 равна только локальному газу EVM, а blob-газ — обычный газ исполнения.

Похожие темы

Источники

Навигация

Поиск по вики...