Начинающим

Gas limit и gas price: в чём разница и что можно менять

Gas limit ограничивает объём вычислений, который разрешено потратить, а параметры цены определяют плату за единицу gas.

Gas limit и gas price: в чём разница и что можно менять

Короткий ответ: gas limit ограничивает количество вычислительной работы, которое транзакции разрешено выполнить. Параметры цены газа определяют, сколько отправитель готов платить за каждую фактически использованную единицу. Один параметр отвечает за объём работы, другой – за цену этой работы.

После EIP-1559 большинство обычных Ethereum-транзакций используют не одно поле gas price, а два предела: maxFeePerGas и maxPriorityFeePerGas. В старых и некоторых совместимых сетях по-прежнему встречается единый gasPrice. Поэтому перед ручным изменением важно понять, какой формат показывает кошелёк.

Что такое gas limit

Каждая операция EVM имеет стоимость в единицах gas. Простой перевод нативной монеты требует предсказуемого объёма, а взаимодействие со смарт-контрактом зависит от выполняемого кода и состояния сети. Gas limit задаёт верхнюю границу: больше этого количества транзакция потратить не сможет.

Высокий лимит не означает автоматическое списание всей максимальной суммы. Если операция использовала меньше gas, неиспользованный остаток лимита не оплачивается. Но если вычисления исчерпали весь доступный gas, выполнение остановится, изменения состояния откатятся, а предоставленный gas будет израсходован.

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

Из чего состоит цена газа

В транзакции EIP-1559 сеть задаёт base fee для блока. Эта базовая часть сжигается протоколом. Отправитель также задаёт максимальную приоритетную плату валидатору и общий максимум цены за единицу gas. Фактическая цена не может превысить maxFeePerGas, а разница между этим пределом и реально требуемой ценой не списывается.

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

Legacy-транзакция содержит единый gasPrice. Он одновременно определяет предложение цены за единицу gas, но это не превращает его в лимит вычислений. GasPrice и gas limit остаются разными величинами.

Как оценить максимальный и фактический расход

Приближённый верхний предел для EIP-1559 можно представить как gas limit, умноженный на maxFeePerGas. Это не прогноз итоговой комиссии, а резерв на худший допустимый сценарий. Фактическая комиссия рассчитывается по реально использованному gas и эффективной цене в блоке.

В квитанции подтверждённой транзакции ищите gasUsed и effectiveGasPrice. Их произведение показывает уплаченную сетевую комиссию. Для pending-операции таких окончательных данных ещё нет. Кошелёк может показать оценку, которая изменится после исполнения.

Что можно менять без лишнего риска

Для обычной новой операции разумно оставить автоматическую оценку gas limit. Ручная правка оправдана, если вы понимаете вызов контракта и причина ошибочной оценки известна. Произвольное уменьшение лимита ради экономии не снижает цену каждой единицы и способно привести к неудаче.

Для ускорения pending-транзакции меняют параметры цены, сохраняя тот же nonce и исходное действие. Встроенная функция кошелька обычно делает это безопаснее ручного ввода. Новый хеш будет конкурировать со старым, а не вставать после него.

Для сложного смарт-контракта сначала проверьте симуляцию и сообщение об ошибке. Увеличение gas limit не исправит недостаточный баланс токена, просроченный дедлайн, неверный допуск, ограничение контракта или слишком сильное изменение цены обмена.

Почему высокая комиссия не гарантирует успех

Цена газа влияет главным образом на вероятность включения, а лимит определяет доступный объём вычислений. Ни один из параметров не заставляет контракт принять операцию. Контракт может отклонить вызов после начала выполнения, и тогда состояние откатится. Как читать такой результат, объясняет статья о статусах Failed и Reverted.

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

Практическая проверка перед подписью

  1. Убедитесь, что выбраны правильная сеть, получатель и контракт токена.
  2. Проверьте, показывает ли кошелёк EIP-1559-поля или legacy gasPrice.
  3. Сравните оценку gas limit с типом действия, не уменьшая её наугад.
  4. Посмотрите максимальную сумму комиссии и остаток нативной монеты.
  5. Для обмена или другого вызова проверьте минимум получения, разрешения и срок операции.
  6. Если транзакция уже отправлена, найдите её хеш и статус, а не создавайте новую копию.

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

Итог

Gas limit отвечает за максимальный объём вычислений, а gas price или EIP-1559-параметры – за цену фактически использованной единицы. Неиспользованный gas не оплачивается, но исчерпание лимита во время исполнения приводит к откату и расходу предоставленного gas. Для обычных операций безопаснее оставить оценку кошелька и менять параметры только после понимания причины.