Как оценить комиссии за газ в Ethereum и других сетях
Узнайте, как оценить комиссии за газ: формула, лимит газа против цены газа, eth_estimateGas и подводные камни в Arbitrum и других сетях, с разобранным примером.

Для оценки комиссии за газ умножьте количество газа, которое будет использовать транзакция, на цену, которую вы платите за единицу газа. В Ethereum после EIP-1559 это означает (базовая комиссия + приоритетная комиссия) × использованные единицы газа. Единицы газа получаются в результате симуляции вашей конкретной транзакции. Цена берется из живой сети. Это руководство охватывает обе части, а затем рассматривает, что меняется в решениях второго уровня (L2), со смарт-аккаунтами и когда вы встраиваете платежи в приложение.
(Если вы попали сюда в поисках цены на топливо для вашего автомобиля, эта страница посвящена комиссиям за транзакции в блокчейне.)
Кратко
- Комиссия = использованный газ × цена за газ. Использованный газ измеряет объем вычислительной работы. Цена за газ отражает спрос.
- Симулируйте точную транзакцию с помощью
eth_estimateGasдля получения единиц газа, и прочитайте живые данные о комиссиях для получения цены. Обновляйте оба значения непосредственно перед подписанием. - Лимит газа — это потолок, а не списание. Неиспользованный газ не потребляется, но неудачная транзакция все равно платит за выполненную работу.
- Роллапы вроде Arbitrum добавляют стоимость данных первого уровня (L1). Используйте собственный оценщик каждой цепочки, а не предположения, основанные на Ethereum Mainnet.
- Для платежных приложений сохраняйте оценку, поля комиссии, временную метку и итоговую комиссию из чека, чтобы иметь возможность сверки позже.
Оглавление
- Формула, стоящая за каждой оценкой газа
- Лимит газа против цены газа
- Разобранный пример
- Оценка газа в коде
- Решения второго уровня и другие цепочки не следуют формуле основной сети
- Смарт-аккаунты и спонсируемый газ
- Частые ошибки при оценке
- Что записывать для платежей
- Наш взгляд
- Пропустите настройку комиссий для каждой цепочки
- ЧаВО
- Источники
Формула, стоящая за каждой оценкой газа
Ethereum.org определяет газ как единицу, измеряющую вычислительные затраты, необходимые для выполнения операций в сети. Каждая транзакция потребляет определенное его количество. Затем вы платите цену за каждую единицу. Это дает два отдельных числа:
- Единицы газа зависят от того, что делает транзакция. Отправка ETH на обычный адрес — просто. Вызов смарт-контракта — нет.
- Цена за газ зависит от того, насколько загружена сеть прямо сейчас. Она указывается в гвей.
Главный момент, который скрывают большинство калькуляторов: изменение логики контракта меняет первое число, а перегрузка сети — второе. Хороший интерфейс показывает оба, а не один необъясненный итог.
Гвей и ETH
Один гвей равен 0,000000001 ETH (10^-9). Поэтому для конвертации умножьте единицы газа на цену в гвей, затем разделите на 1 000 000 000, чтобы получить ETH. Умножьте на цену ETH только если вам нужна сумма в долларах. Наш конвертер гвей работает с вей, гвей и ETH в обе стороны.
Что изменил EIP-1559
С момента EIP-1559 у каждого блока есть базовая плата за газ, которая растёт или падает в зависимости от спроса, и базовая плата сжигается. Кроме того, транзакция несёт приоритетную плату (начислительную надбавку) и максимальную плату — самую высокую сумму, которую вы готовы заплатить за газ в сумме. Вы платите базовую плату блока, включающего вашу транзакцию, плюс свою надбавку, пока сумма не превышает вашу максимальную плату.
Таким образом, кошельковая оценка состоит из трёх движущихся частей: единиц, базовой платы и надбавки. Максимальная плата — это защитный предел, а не прогноз.

Лимит газа против цены газа
Эти два термина сбивают с толку большинство новичков, поэтому вот они рядом.
| Лимит газа | Цена газа | |
|---|---|---|
| Что это | Максимальное количество единиц газа, которое вы разрешаете транзакции использовать | То, что вы платите за единицу, в гвей |
| Задаётся | Вашей оценкой объёма работы | Рыночным спросом плюс ваша надбавка |
| Повышение | Само по себе не повышает комиссию | Повышает комиссию напрямую |
| Слишком низко | Транзакция проваливается | Транзакция ждёт или не включается |
Ключевое поведение: лимит газа — это потолок. Стандартный перевод ETH использует 21 000 газа, и неиспользованный выделенный газ возвращается. MetaMask отмечает, что ручное повышение лимита не обязательно повышает итоговую комиссию, потому что неиспользованный газ не потребляется. Это также не покупает более быстрое подтверждение. Ручной оверрайд лишь защищает вас от заниженной оценки.
Опасность кроется в обратном. Если контракт заканчивает газ во время выполнения, он откатывается, но всё равно потребляет газ, который вы предоставили. И вычисления оплачиваются даже тогда, когда транзакция откатывается. Именно поэтому вы должны симулировать перед тем, как транслировать.
Рабочий пример
Числа ниже иллюстративные, не актуальные цены. Предположим базовую плату 20 гвей и приоритетную плату 2 гвей, итого 22 гвей за газ.
| Транзакция | Единицы газа | Цена за газ | Комиссия в гвей | Комиссия в ETH |
|---|---|---|---|---|
| Обычный перевод ETH | 21 000 | 22 гвей | 462 000 | 0,000462 |
| Одобрение ERC-20 (типичный показ кошелька) | 45 000 | 22 гвей | 990 000 | 0,00099 |
Цифра 21 000 для простого перевода взята с Ethereum.org. Цифра 45 000 — это то, что MetaMask обычно показывает для одобрения ERC-20, но реальное число зависит от контракта и его состояния. Перевод токена или своп снова будут отличаться. В этом вся причина, почему вы не можете захардкодить единицы для чего угодно, кроме простого перевода.
Чтобы получить фиатную цифру, возьмите 0,000462 ETH и умножьте на текущую цену ETH. Делайте это в последнюю очередь и помечайте как приблизительную.
Оценка газа в коде
Если вы строите, а не кликаете, процесс состоит из четырёх шагов.
- Опишите полное намерение транзакции.
eth_estimateGasтребует указания сети, адреса назначения, calldata и значения, а также опционально полей комиссии. Изменение суммы токена, получателя или состояния контракта может изменить оценку. Никогда не используйте повторно оценку от другого перевода. - Вызовите
eth_estimateGasна узле. Он возвращает необходимое количество единиц газа, обычно в виде шестнадцатеричного числа, которое нужно декодировать. - Получите текущие рекомендации по ценам. Запросите у оракула комиссий или вашего узла базовую комиссию и рекомендацию по чаевым для нужной скорости (медленная, стандартная, быстрая).
- Вычислите и покажите диапазон. Умножьте единицы газа на цену и покажите пользователям максимум или диапазон. Оценка — не гарантия, а сеть может измениться между оценкой и включением в блок.
Затем добавьте одну привычку, которая избавит от головной боли: обновите цену непосредственно перед подписанием. Цена газа чувствительна к спросу, поэтому одна и та же транзакция может стоить разную сумму в разное время. Ethereum.org указывает на блок-эксплореры и трекеры газа для получения живых данных, когда вам нужна только быстрая ручная проверка.
Добавляйте запас к лимиту, а не к цене
Небольшой буфер на лимите газа — это дешевая страховка, так как неиспользованный газ не взимается. Добавление запаса к цене за газ, с другой стороны, напрямую увеличивает ваши расходы. Держите эти два решения разделенными в вашем коде.
Layer 2 и другие сети не следуют формуле мейннета
Одна общая формула EVM может ввести в заблуждение. Роллапы взимают плату за две вещи: исполнение на Layer 2 и отправку данных вашей транзакции в Layer 1.
Arbitrum — хороший пример. В его документации сказано, что быстрый путь — это вызов eth_estimateGas и умножение на цену газа дочерней цепи. Возвращаемый лимит газа включает вычисления на Layer 2 плюс буфер на расходы Layer 1. Этот буфер зависит от размера сжатого calldata и ценообразования в родительской цепи, поэтому оценка может сместиться, когда Layer 1 загружен. Для компонентного учета вызов NodeInterface.gasEstimateComponents разделяет итоговую сумму, буфер Layer 1 и данные базовой комиссии. Сам Arbitrum предупреждает, что оценки приблизительны, а реальные комиссии могут отличаться.
Для более глубокого разбора см. наш пост об отслеживании живых комиссий Arbitrum с NodeInterface и формулой Nitro.
Tron работает по совершенно другой модели. Он взимает плату в полосе пропускания и энергии, а не в цене газа, поэтому описанное выше не применяется напрямую. Наше руководство по комиссиям TRON и калькулятор комиссий TRON для переводов USDT-TRC20 охватывают эту модель.
Правило для мультичейн-продуктов: используйте собственный оценщик каждой сети и держите логику, специфичную для цепи, за единым интерфейсом.

Умные аккаунты и спонсируемый газ
Если вы используете абстракцию аккаунта с пеймастером, простой расчёт комиссии за обычную транзакцию недостаточен. ERC-7677 объясняет, что оценка пеймастера зависит от контекста, поскольку кошелёк и бандлер знают, как именно будет отправлена пользовательская операция. В стандарте указано, что кошельки должны использовать значения газа, предоставленные пеймастером, для полей, специфичных для пеймастера, включая газ после операции, так как бандлеры могут занизить эти затраты.
На практике: рассчитывайте комиссию через тот же путь кошелька, пеймастера и бандлера, который вы будете использовать для трансляции. Не используйте повторно число, полученное от обычной транзакции.
Типичные ошибки при оценке
- Показ одного числа без контекста. Пользователь должен видеть единицы измерения, цену и максимальное значение.
- Использование максимального лимита кошелька как ожидаемой оплаты. Лимит — это потолок. Умножение его на цену завышает вероятную комиссию.
- Расчёт один раз и подписание позже. Цены и состояние контракта меняются. Повторно симулируйте непосредственно перед подписанием.
- Применение предположений Ethereum Mainnet к роллапу. Вы упустите компонент данных первого уровня (Layer 1).
- Игнорирование неудач. Отменённая транзакция всё равно стоит газа. Сначала симулируйте и покажите ошибки, прежде чем пользователь заплатит.
- Отсутствие аудиторского следа. Без записей финансовый отдел не может сверить котировки с фактически списанными средствами.
Что записывать для платежей
Если ваше приложение переводит деньги, относитесь к оценке как к данным, которые стоит хранить. Для каждой транзакции сохраняйте:
- сеть и контекст блока
- оценку газа и установленный вами лимит газа
- использованные поля комиссии (базовая плата, чаевые, максимальная плата)
- временную метку оценки
- итоговую комиссию из чека транзакции (receipt)
Сравнение котировки с чеком покажет, насколько ваши оценки дрейфуют, и достаточно ли ваших буферов или они слишком большие. Это также даёт службе поддержки прямой ответ, когда клиент спрашивает, почему изменилась комиссия.
Наша точка зрения
Большинство команд, с которыми мы общаемся, не сталкиваются с проблемой формулы. Они борются со всем, что вокруг неё: запуск нод для нескольких сетей, декодирование сырых ответов, обработка особенностей комиссий каждой цепочки и поддержание всего этого в актуальном состоянии по мере изменений сетей.
Мы создали Chaingateway именно для закрытия этого пробела. Идея — один REST API для таких сетей, как Ethereum, Tron, Bitcoin, Solana, Polyggon, BNB Chain и Arbitrum, с автоматическим расчётом газа и предварительно декодированными данными, чтобы вашей команде не пришлось поддерживать отдельный путь расчёта комиссий для каждой сети. Наш взгляд: оценка комиссии должна быть встроенным шагом отправки транзакции, а не побочным проектом, который ваши разработчики перестраивают для каждой цепочки.
Мы также считаем, что котировка должна быть честной. Показывайте оценку как оценку, храните комиссию из чека рядом с ней, и позвольте цифрам научить вас, где должны находиться ваши буферы.
— Bitblade
Пропустите настройку комиссий для каждой цепочки
Если вы создаёте кошельки, выплаты или потоки депозитов, наш Blockchain API позволяет создавать кошельки, отправлять переводы токенов с автоматическим расчётом газа и получать декодированные данные транзакций через один интерфейс. Сочетайте его с Chaingateway Webhooks, чтобы получать уведомления в реальном времени о поступлении платежей вместо опроса. Запросы подписываются с помощью HMAC.
Тарифы оплачиваются в месяц или в год, и вы можете увидеть каждый уровень на странице цен:
| План | Ежемесячно | Ежегодно |
|---|---|---|
| Plus | 49 EUR в месяц | 490 EUR в год |
| Pro | 99 EUR в месяц | 990 EUR в год |
| Premium | 249 EUR в месяц | 2490 EUR в год |
| Enterprise | 499 EUR в месяц | 4990 EUR в год |
Разрабатываете специально для Arbitrum? Узнайте, как отправлять ERC-20 токены в Layer 2 за один REST-вызов. Для базовой информации об ETH, газе и ERC-20 токенах хорошей отправной точкой станет наш обзор Ethereum.
Источники
- Ethereum gas and fees: technical overview, ethereum.org
- How to estimate the gas fee, MetaMask Help Center
- How gas fees, limits, and network fees work, MetaMask Help Center
- How to estimate gas in Arbitrum, Arbitrum docs
- ERC-7677: Paymaster Web Service Capability
- EIP-1559, Ethereum Improvement Proposals
Рекомендуем
Часто задаваемые вопросы
Промоделируйте свою точную транзакцию с помощью eth_estimateGas, чтобы получить количество единиц газа. Получите текущую базовую комиссию и рекомендацию по приоритетной комиссии, затем вычислите (базовая комиссия + приоритетная комиссия) × единицы газа. Конвертируйте из gwei в ETH, а в доллары — только если вам нужно отобразить сумму в фиате.
Лимит газа — это максимальное количество единиц газа, которое вы разрешаете транзакции использовать. Цена газа — это то, что вы платите за единицу, в gwei. Лимит — это потолок, и неиспользованный газ не взимается, в то время как цена напрямую масштабирует вашу комиссию.
Не всегда. Оценка основана на условиях в момент запроса, а сеть может измениться до того, как ваша транзакция будет включена. В Ethereum вы платите базовую комиссию блока, который вас включает, плюс ваш чаевые, ограниченные вашей максимальной комиссией. Показывайте пользователям диапазон или максимум, а не гарантированную цифру.
Да, в большинстве случаев. Вычисления, произошедшие до отката (revert), всё равно оплачиваются, а транзакция, которая заканчивается газом в середине выполнения, потребляет предоставленный газ. Предварительная симуляция позволяет выявить многие ошибки до того, как вы потратите средства.
Роллапы взимают плату за выполнение в Layer 2 и за публикацию данных в Layer 1. В Arbitrum оцененный лимит газа включает буфер для этой стоимости Layer 1, которая меняется в зависимости от цены в родительской цепи. Используйте собственный метод оценки цепи.
Готовы собрать это сами? Получите свой API-ключ — 7-дневный пробный период, без карты — или посмотрите API блокчейна для полного справочника по эндпоинтам.