Что такое gas fee
11 января 2022
Основы Ethereum
Концепция gas fee, то, как они рассчитываются и как влияют на ваши транзакции, — фундамент для понимания того, как работает блокчейн Ethereum.
По сути, Ethereum — это децентрализованный компьютер, который выполняет разные типы транзакций (txns), способных менять состояние блокчейна.
Несколько примеров txns:
- Отправить ETH с одного аккаунта на другой
- Взаимодействовать со смарт-контрактом, например обменять токен на Uniswap
Все txns инициируются аккаунтами сети Ethereum и по сути являются криптографически подписанными инструкциями для компьютера — так называемой виртуальной машины Ethereum (EVM).
EVM — это то, что определяет правила вычисления нового валидного состояния от блока к блоку.
В Ethereum есть два типа аккаунтов:
- Аккаунт, управляемый человеком
- Аккаунт, управляемый программой (т.е. смарт-контрактом)
Оба типа аккаунтов могут:
- Получать, хранить и отправлять ETH и токены
- Взаимодействовать с развёрнутыми смарт-контрактами
Смарт-контракт — это программа, которая «живёт внутри» блокчейна, может быть вызвана txn с другого аккаунта и выполнять множество разных действий, например переводить токены или даже создавать новый контракт.
Поскольку каждая txn в Ethereum требует вычислительных ресурсов для выполнения, каждая txn требует комиссии и должна быть замайнена, чтобы стать валидной.
Основы gas
«Gas» — это комиссия, необходимая для успешного проведения транзакции в Ethereum.
Самый простой и распространённый тип txn — перевод ETH с одного аккаунта на другой. Такая txn требует 21000 gas для выполнения.
Сложные txns, такие как создание смарт-контракта или вызов смарт-контракта, могут стоить существенно дороже.
На высоком уровне gas fee можно разложить на два множителя:
[Gas fee] = [Gas units] * [Gas price per unit].
[Gas units] — это объём вычислительных усилий, необходимых для выполнения конкретных операций в сети Ethereum.
[Gas price per unit] — это цена, зависящая от загруженности сети и выраженная в gwei.
Gwei — это 10^-9 ETH.
Само слово gwei означает giga-wei, и оно равно 10^9 wei.
Wei — наименьшая единица ETH, равная 10^-18 ETH.
Сам wei назван в честь Wei Dai, создателя «предшественника» Bitcoin — b-money, распределённой системы электронных денег.
Раньше расчёт gas был очень сложным, но он упростился после внедрения EIP 1559 (в рамках обновления London) в середине 2021 года.
Если ваш кошелёк поддерживает EIP 1559 (как Metamask), gas для вашей txn будет рассчитан так:
[Gas price] = [Gas units] * ( [Base fee] + [Priority fee] )
В этом конкретном примере:
[Gas price] = 248688 * (168 + 2) * 10^-9 * ETH_price = $128

[Base fee] устанавливается сетью. Она автоматически растёт и снижается в зависимости от загруженности сети.
Эта комиссия сжигается при оплате.
[Priority fee] опциональна и не сжигается. Она идёт майнеру как стимул обработать вашу txn быстрее.
Например, если вы поставите 0 gwei для [Priority fee], скорее всего, у майнера не будет причин включать вашу txn в блок.
Без этой комиссии майнерам было бы экономически выгодно майнить пустые блоки, поскольку они получали бы ту же награду за блок.
Актуальные base fee блока и priority fee для разных скоростей выполнения txn (например, низкая, средняя, высокая) можно найти на различных сайтах. Например здесь: https://etherscan.io/gastracker

[Max fee] включает и [Base fee], и [Priority fee] — это максимальная сумма комиссии, которую вы готовы заплатить за txn.
Metamask изначально устанавливает эту сумму на основе истории предыдущего блока.
Чем выше [Max fee], тем больше шансов, что txn пройдёт успешно в случае всплеска использования блокчейна (т.е. роста [Base fee]) после отправки txn.
Что такое gas limit и зачем он существует
Итак, теперь мы знаем, как формируются комиссии за единицу gas.
Перейдём к [Gas limit] и тому, чем он отличается от фактического использования gas.

[Gas limit] — это максимальное количество [Gas units], которое вы готовы потратить на txn.
Если ваш gas limit окажется ниже фактического количества единиц gas, необходимых для выполнения txn, txn будет неуспешной. EVM тогда откатит все изменения, но gas будет потрачен.
Если бы мы могли точно оценить [Gas limit] для txn, он был бы равен фактическому использованию gas.
Но обычно по разным причинам очень сложно точно оценить, сколько единиц gas нужно для выполнения конкретной txn.
Даже две абсолютно одинаковые txns могут иметь разное использование gas из-за разных состояний EVM в момент выполнения.
Вот пример:
https://ethereum.stackexchange.com/questions/44643/why-gas-used-are-different-for-same-transfer-tx
Заключение
Txns — это по сути список инструкций для EVM. И у любой инструкции есть общепринятая стоимость в gas.
Больше подробностей об этих «стоимостях» и других реализациях EVM можно найти в Ethereum Yellowpaper:
https://ethereum.github.io/yellowpaper/paper.pdf

Если хотите углубиться в эту тему, можно начать с документации Ethereum:
https://ethereum.org/en/developers/docs/gas/
Gas fee — определённо отличная концепция, доказавшая свою состоятельность за многие годы, но следующим большим шагом в принятии Ethereum станет новый слой UI/UX, где обычный пользователь даже не будет знать о её существовании.
Оригинал на английском в моём твиттере. Здесь перевод.