Что такое газ в Ethereum и как он вычисляется
Что такое газ в Ethereum и как он вычисляется
Здравствуйте! Во время изучения материалов и стратегий клуба у вас могли возникнуть разные вопросы касательно комиссий сетей. Что такое газ? Как вычисляются комиссии в блокчейне Ethereum и других сетях? Почему в Ethereum они зачастую такие высокие?
Что такое газ
Газ (gas) — единица измерения количества вычислительных усилий, необходимых для выполнения определенных действий в блокчейне Ethereum.
Само название выбрано не случайно. Подобно тому, как бензин заправляет автомобиль и позволяет ему ехать, газ в сети Ethereum заправляет транзакции и позволяет им выполнять различные операции.
Каждая операция в виртуальной машине Ethereum (EVM) имеет соответствующую стоимость газа. Например, сложение двух чисел стоит 3 газа, получение баланса счета — 400 газов, отправка транзакции — 21 000 газа. Смарт-контракты зачастую состоят из нескольких операций, которые в совокупности могут стоить даже сотни тысяч газа.
Cтоимость газа сама по себе не говорит нам о комиссии за конкретную транзакцию. Чтобы рассчитать плату за действие в блокчейне, необходимо умножить стоимость газа на его цену. Цена газа измеряется в gwei — 0.000000001 ETH. Мы можем рассматривать ее как основную и второстепенную единицу, аналогично долларам и центам или биткоинам и сатоши.
Например, мы хотим отправить простую транзакцию в Ethereum. Монета ETH стоит 1 800 $. Большинство популярных Ethereum-кошельков, например Metamask, оценивают необходимые цены на газ и позволяют выбирать между быстрой, средней и медленной скоростью подтверждения транзакции.
Предположим, кошелек оценил стоимость газа в 100 Gwei. Если мы хотим иметь шанс на подтверждение нашей транзакции в течение следующей минуты, по быстрым расчетам придется заплатить 3,78 $. Расчет: стоимость отправки транзакции (21 000 газа) * цену газа (100 gwei) = 2 100 000 gwei, что составляет 0.0021 ETH или 3.78 $ при курсе 1 800 $ за 1 ETH.
Как вычисляются комиссии
Газ — абстрактная единица, которая существует только внутри EVM, а пользователь всегда оплачивает транзакции в ETH. Наличие отдельной единицы измерения вычислительных усилий нужно, чтобы отвязать цену усилия от цены ETH.
Рост цены часто коррелирует с ростом активности в сети Ethereum, что действительно увеличивает стоимость транзакций. Теперь давайте посмотрим, как именно увеличение активности в сети приводит к росту стоимости транзакций.
Все транзакции, отправляемые в сеть Ethereum, попадают в mempool. Это место, где все отложенные транзакции ожидают, пока валидаторы заберут их и включат в следующий блок Ethereum. У валидаторов есть стимул забирать транзакции с самой высокой ценой газа первыми, потому что они выполняют фиксированный объем работы за более высокую цену. Валидаторы также ограничены в количестве транзакций, которые они могут включить в один блок.
Для примера предположим, что в mempool есть только простые транзакции перевода ETH, каждая из которых стоит 21 000 газа. Лимит на блок со времен обновления EIP-1559 установлен на уровне 25 000 000 газа. Тогда один майнер может включить около 1 190 таких транзакций. Если в mempool есть 2 000 ожидающих транзакций, валидатор будет выбирать транзакции по убыванию цены газа и возьмет 1 190 наиболее прибыльных.
Текущая модель оплаты основана на аукционном механизме. Помимо базовой комиссии, которая автоматически определяется блокчейном в зависимости от загруженности сети, мы платим лично майнеру за приоритет обработки транзакции. В отличие от базовой комиссии, которая полностью сжигается после совершения транзакции, плата за приоритет — это как чаевые, которые полностью достаются валидатору транзакции.
Поэтому пользователи, которые хотят приоритетной обработки транзакций, должны заплатить более высокую плату. Как правило, в большинстве EVM-сетей она составляет 2 gwei, но у менее популярных валидаторов она может быть ниже. Именно из базовой комиссии и платы за приоритет складывается минимальная комиссия, которую мы должны будем заплатить за транзакцию. Но есть и третий не менее важный параметр — лимит газа (gas limit).
Gas limit должен быть равен или выше предполагаемого объема вычислений, необходимого для успешного выполнения конкретной транзакции. EVM перед выполнением каждой операции в рамках транзакции проверяет, достаточно ли газа осталось для конкретной операции. Если газа не хватает, вся транзакция возвращается назад. При этом пользователь все равно заплатит комиссию за транзакцию за тот объем работы, который был проделан майнером, даже если транзакция завершится неудачей.
Это сделано для того, чтобы избежать атак на сеть. Если в ходе транзакции расходуется меньше газа, чем предполагалось изначально, оставшийся объем газа конвертируется в ETH и возвращается отправителю. Также очень важно, чтобы все операции в Ethereum имели правильную стоимость газа по отношению друг к другу. Иначе это может стать еще одним способом атаки.
Одна из таких атак произошла в 2016 г. и привела к разделению блокчейна на две независимые версии (хард форку), в результате которого были изменены цены на некоторые низкоуровневые операции. Теперь, когда мы знаем о газе немного больше, можно рассмотреть несколько решений снижения стоимости транзакций.
Чтобы избежать ситуации, когда транзакция зависает или не исполняется, выставляется gas limit (максимальная комиссия в MetaMask), который готов заплатить пользователь.
Обычно она вычисляется по формуле:
Max Fee = (2 * Base Fee) + Max Priority Fee
Cоответственно, максимальная комиссия не может быть меньше, чем сумма базовой комиссии и платы за приоритет.
Зачастую при совершении транзакции расходуется лишь часть от выставленного газ лимита, например 70% или 80%.
Настройка газа
Настройку газа покажем далее на примере кошелька MetaMask для браузера Chrome. Чтобы перейти к настройке газа, нужно пройти по следующему пути:
Любой кошелек автоматически вычисляет приемлемое значение газа для совершения транзакции. Имейте в виду, что ручное снижение лимита газа может привести к фейлу транзакции. Потраченный же за попытку совершения транзакции газ не возвращается, ведь валидатор успел проделать некоторую вычислительную работу для обработки транзакции.
Зачем нужен газ
Важно также понимать, почему газ вообще должен существовать. EVM, являясь полной по Тьюрингу машиной, позволяет выполнять любой произвольный код. Это одна из главных причин, делающих Ethereum таким мощным, но это также делает его уязвимым для проблемы остановки. Проблема остановки — одна из проблем в теории алгоритмов, которая может неформально быть поставлена.
Даны описание процедуры и ее начальные входные данные. Требуется определить: завершится ли когда-либо выполнение процедуры с этими данными; либо, что процедура всё время будет работать без остановки.
Без газа пользователь может выполнить программу, которая никогда не остановится. Он может либо допустить ошибку в коде, либо просто быть злонамеренным. Чтобы предотвратить это, Ethereum ввел стоимость газа, связанную с каждой операцией, которая не позволит программе работать вечно и привести всю сеть к остановке.
Как экономить на газе
Самый простой способ сэкономить на газе — дождаться низкого значения gwei в сети. Отслеживать его можно на CoinTool или beaconcha.in.
Но в периоды роста рынка такие значения - большая редкость.
Газ в других сетях
Во всех т. н. EVM - совместимых сетях (то есть тех, что поддерживает Metamask) используется подобная Ethereum система вычисления газа за транзакции. Конечно, каждый блокчейн по - своему уникален, но в каждом присутствует промежуточная единица измерения газа - GWEI.
Чем выше GWEI на данный момент, тем дороже транзакции. Отслеживать GWEI в других сетях также можно на CoinTool в разделе Gas Price из меню слева:
Поэтому прежде, чем открыть какую - либо DeFi позицию из представленных на 2 уровне, не поленитесь проверить цену газа и сравнить её с историческими показателями за прошедшую неделю из таблицы "Gas Price History" ниже на той же странице. Если газ сейчас выше, чем обычно, возможно стоит подождать более благоприятного момента, чтобы не переплачивать.
Подведем итоги
В этой статье мы ответили на поставленные вопросы и разобрались в теме газа сети Ethereum. Все EVM-сети имеют схожий принцип работы, поэтому эта информация в любом случае будет полезна для вас. Если остались вопросы, смело задавайте их в нашем чате.