Если говорить коротко, Ethereum Gas - это единица, которая измеряет объем вычислительных усилий, которые потребуются для выполнения определенных операций.
Все операции в сети Ethereum, будь то простая сделка или смарт-контракт, или даже ICO потребляют некоторое количество газа. Газ – это термин, использующийся чтобы подсчитать сумму сборов, которые необходимо оплатить внутри сети, чтобы выполнить операцию.
В этой статье мы постараемся рассказать, что такое Эфириум газ и как он работает.
Что такое Ethereum Газ (Gas)
Как было уже сказано, газ Эфириум является единицей, которая измеряет объем вычислительных усилий, которые потребуются для выполнения определенных операций.
Данный для таблицы ниже были взяты из «Ethereum whitepaper» и дает приблизительное представление о том, сколько газа требуется для той или иной транзакции.
Какую комиссию газа необходимо устанавливать для проведение транзакции
Имя | Значение | Описание |
Gzero | 0 | Без оплаты |
Gbase | 2 | Сумма газа, подлежащего оплате за операции |
Geveryslow | 3 | Количество газа, подлежащего оплате за операции |
Glow | 5 | Количество газа, подлежащего оплате за операции |
Grnid | 8 | Количество газа, подлежащего оплате за операции |
Ghigh | 10 | Количество газа, подлежащего оплате за операции |
Geztcodt | 700 | Количество газа, подлежащего оплате за операции |
Gbalance | 400 | Сумма газа, подлежащего оплате за операцию |
Gsload | 200 | Оплатаза операцию SLOAD. |
Gjumpdext | 1 | Оплата за операцию JUMPDEST. |
Gsset | 20000 | Оплата за операцию SSTORE, когда значение хранения установлено на ненулевое значение. |
Greset | 5000 | Оплачивается за операцию SSTORE, когда нулевая стоимость хранения остается неизменной или установлена на ноль. |
Rsclear | 15000 | Возврат (добавляется в счетчик возврата), когда значение хранилища устанавливается равным нулю с ненулевого значения. |
Rsuicide | 24000 | Возврат (добавлен в счетчик возврата) для уничтожения учетной записи. |
Gsuicide | 5000 | Количество газа, подлежащего оплате за операцию SUICIDE. |
Gcreate | 32000 | Оплата за операцию CREATE. |
Gcodedeposit | 200 | Оплата за операцию CREATE, чтобы для преобразования кода |
Gcall | 700 | Плата за операцию CALL. |
Gcallvalue | 9000 | Плата за перенос ненулевого значения как часть операции CALL. |
Gcallslipend | 2300 | Взнос для указанного контракта вычитается из для передачи ненулевого значения. |
Gnewaccount | 25000 | Оплата за операцию CALL или SUICIDE, которая создает учетную запись. |
Gezp | 10 | Частичный платеж за операцию EXP. |
Gezpbyte | 10 | Частичный платеж при умножении на log. ^ (Exponent)] для операции EXP. |
Gmemory | 3 | Оплата за каждое дополнительное слово при расширении памяти. |
Gtxcreate | 32000 | Оплачивается всеми транзакционными транзакциями после перехода Homestead. |
Gtxdatazero | 4 | Оплачивается за каждый нулевой байт данных или кода для транзакции. |
Gtxdotanonzero | 8 | Оплачивается за каждый ненулевой байт данных или кода для транзакции. |
Gtransactton | 21000 | Оплата за каждую транзакцию. |
Glog | 375 | Частичный платеж за операцию LOG. |
Glogdata | 8 | Оплачивается за каждый байт в данных операции LOG. |
Glogtopic | 375 | Оплачивается за каждую тему операции LOG. |
Gsha3 | 30 | Плата за каждую операцию SHA3. |
Gsha3word | 6 | Оплата за каждое слово (округленное) для ввода данных в операцию SHA3. |
Gcopy | 3 | Частичный платеж за операции «COPY», умноженные на скопированные слова, округленные. |
Gblockhash | 20 | Плата за операцию Blockhash. |
Чтобы лучше понять, как работает Ethereum газ, давайте проведем аналогию. Предположим, вы собираетесь поехать куда-то на машине. Для этого вы:
-
Заезжаете на АЗС и заказываете несколько литров бензина, чтобы вам хватило на поездку.
-
Заливается бензин в бак.
-
Платите за бензин какую-то сумму денег.
Поездка на авто - это операция, которую вы хотите выполнить, например создать смарт-контракт. В нашем случае бензин это Ethereum газ.
АЗС – ваш майнер. Деньги, которые вы платите за бензин – в случае с Эфириум, это деньги которые вы платите это вознаграждение майнера.
Вроде бы все просто и понятно, но возникает логический вопрос…
Зачем вообще нужна система Ethereum Газа?
Ответ прост ... стимулирование.
Ethereum сильно зависит от хэшрейта своих майнеров. Больше майнеров, больше хешрейта, система более безопасная и быстрая.
Чтобы привлечь больше майнеров в систему, нужно сделать систему максимально прибыльной и привлекательной для майнеров. Поэтому была придумана такая «газовая система».
В Ethereum заработать деньги можно либо майнингом либо управлением блока.Майнеры несут ответственность за размещение транзакций внутри своих блоков. Чтобы сделать это, они должны использовать свои вычислительные мощности для проверки смарт-контрактов. Газовая система позволяет им взимать определенную плату за это.
Эта плата известна как гонорар майнера, и это помогает стимулировать майнеров активно участвовать в экосистеме.
Сколько стоит Ethereum газ (Gas Price)
Ethereum газ измеряется в единицах газа. Транзакция, отправленная в сеть Ethereum, требует определенного количества газа (например, 100 газов) в зависимости от того, сколько команд EVM необходимо выполнить.
Итак, как перевести газ в эфир?
Фиксированной цены конвертации не существует. Отправитель транзакции может указать любое количество газа, которое ему нравится. С другой стороны, майнер должен проверить любые транзакции (обычно в первую очередь проверяются те, которые имеют самую высокую цену в единицах газа). Средняя цена Ethereum газ, как правило, составляет порядка 20 Гвэй (или 0,00000002 ETH), но может увеличиваться во время высокого сетевого трафика, так как в следующем блоке больше конкурентов, которые будут включены в следующий блок.
Unit | Wei Value | Wei |
wei | 1 wei | 1 |
Kwei (babbage) | le3 wei | 1,000 |
Mwei (lovelace) | le6 wei | 1,000,000 |
Gwei (shannon) | le9 wei | 1,000,000,000 |
microether (szabo) | lel2 wei | 1,000,000,000,000 |
milliether (finney) | lel5 wei | 1,000,000,000,000,000 |
ether | lel8 wei | 1,000,000,000,000,000,000 |
Вэй - самая маленькая единица эфира, а Гвей состоит из миллиарда вей. Перед тем, как войти, вы укажете цену на газ, которую вы хотите установить, можно смотреть на текущие цены на газ с ETH Gas Station.
Что такое газовый предел Ethereum (Gas Limit)?
Чтобы выполнить операцию в Ethereum, отправитель транзакции должен указать предел газа, прежде чем отправлять его в сеть. Предел газа - это максимальный объем газа, который отправитель желает заплатить за эту транзакцию.
При указании предельного уровня газа необходимо учитывать следующие моменты:
-
Различные операции будут иметь разные затраты газа (как было показано ранее).
-
Майнеры прекращают выполнение, если газ заканчивается.
-
Если газ останется, он будет возвращен создателю операции.
Например:
Предположим, мы добавляем два числа в наш смарт-контракт и он должен выполнить следующие действия:
-
Сохранение переменной. Предположим, что эта операция стоит 45 газов.
-
Добавление двух переменных, предположим, стоит 10 газов.
-
Сохранение результата, который снова стоит 45 газов.
Предположим, что мы указываем газовый предел 120 газов.
Общий газ, используемый майнером для расчета, равен (45 + 10 + 45) = 100 газа.
Плата, выплачиваемая майнеру, при условии, что 1 газ стоит 20 Gwei, составляет (100 * 20 Gwei) = 0,000002 ETH.
Теперь, сколько газа осталось?
120 - 100 = 20 газов.
20 неиспользованных газов возвращается обратно отправителю.
А может случиться так, что предел газа для операции слишком низкий или наоборот слишком высокий:
Сценарий №1: Очень низкий предел
Если газ закончился, но операция не была завершена, то все возвращается в исходное состояние, как будто ничего не произошло. Газ возвращается отправителю, а операция прерывается. Но некоторая работа была выполнена, и майнеры хотят получить вознаграждение за то, что они выполнили. В блокчейне транзакция будет записана как «Failed», и ваш ETH останется в вашем кошельке (то есть перевод с кошелька на кошелек не удался), поскольку для полного выполнения перевода недостаточно газа. Газ, используемый для неудавшейся транзакции, будет получен майнерами для их работы, и вы НЕ получите его обратно. Вот что произойдет, если вы укажете слишком мало газа.
Сценарий №2: Предел газа слишком высок
Итак, что, если мы установим слишком высокий предел газа?
Майнеры ограничены предельным уровнем газа, который им могут предложить, это 6 700 000 газа. Основная транзакция (простая передача ETH) имеет, по крайней мере, потребность в газе 21 000 газа. Майнеры могут включать только транзакции, которые могут быть меньше или равны предельному газу газа.
Но не стоит беспокоиться о выборе предельного значения газа, MyEtherWallet (MEW) и Metamask автоматически устанавливают предельные значения по умолчанию для всех типов транзакций.
Разница между газом и вознаграждением
Теперь вы знаете, что газ и эфир - это не одно и то же. Газ - это объем вычислительной мощности, в то время как эфир - это валюта, используемая для оплаты этого газа.
Теперь давайте рассмотрим некоторые сценарии использования газа и сборов.
Если у операции НИЗКИЙ предел газа, то майнеры не возьмут сделку, потому что недостаточно газа для завершения вычисления.
Если у операции НИЗКИЕ сборы, но достаточно газа, чтобы покрыть ее, майнеры также не захотят проводить операцию, потому что операция с низкой комиссией не является экономически привлекательной для них.
Если операция имеет ВЫСОКИЙ предел газа, то это означает, майнеры не будут ее брать, чтобы не возвращать много.
Если операция имеет ВЫСОКУЮ плату, то майнеры знают, что они получат хорошее вознаграждение и сразу же возьмут ее.
В настоящее время рекомендуемые цены на газ для транзакций с разными приоритетами следующие:
Рекомендуемые цены на Ethereum Gas (основаны на текущей работе сети)
Скорость | Цена Gas (gwei) |
Медленно (<30m) | 13 |
Стандарт (<5m) | 15 |
Быстро (<2m) | 20 |
Фактически вы можете выбрать уровень приоритета своей транзакции. Майнеры будут «работать» и выполнять транзакции, предлагающие более высокую цену, поскольку они получат плату, которую вы платите.
Почему нельзя ставить большой предел газа?
В Solidity, есть две команды, которые гарантируют, что вы получите Ethereum газ обратно.
-
SUICIDE: Это по существу, убивает смарт-контракт. Это приведет к возврату 24000 газа.
-
SSTORE: удаление хранилища, которое возвращает вам 15 000.
Итак, если ваш контракт использует 14 000 газа и удаляет хранилище, вам должны вернуть обратно (15000-14000) 1000?
Не так просто.
В таком случае майнеры потеряют все стимулы. Чтобы избежать подобных сценариев, было введено условие.
Накопленная сумма возврата не может превышать половину используемого газа во время вычисления.
Пример 1
Предположим, у нас есть смарт-контракт, который использует 14 000 газа.
Установленный нами газовый предел составляет 20 000 газа.
Смарт- контракт также включает команду SSTORAGE.
Итак, сколько газа создатель контракта вернет после вычисления?
(20 000-14 000) = 6 000 единиц неиспользованного газа.
Поскольку использовалась команда SSTORAGE, поэтому теоретически он должен получить обратно 15 000 газа.
Однако количество газа, которое было использовано в контракте, составляет 14 000, а 15 000 > 14 000/2 генерируемый REFUND будет 14 000/2 = 7000.
Таким образом, общий газ, который возвращается в конце, составляет 6000 + 7000 = 13 000
Пример 2Предположим, что на этот раз контракт использует 70 000 газа, и он включает в себя функцию SUICIDE.
Функция SUICIDE должна вернуть вам 24 000 единиц газа, 24 000 <70 000/2.
В этой ситуации возврат газа будет 24 000 + неиспользованный газ
Таким образом, если вы хотите, чтобы ваша транзакция выполнялась с большей скоростью, вы должны быть готовы заплатить более высокую цену. Вы, по сути, участвуете в аукционе, победив всех, кто заплатил более низкую цену. Основываясь на приведенной выше таблице, вы должны заплатить 20 Gwei, если вы хотите, чтобы ваша транзакция была завершена в течение 2 минут. Все зависит от вашей срочности.Автор: Сергей Пензев
Для того, чтобы оставить комментарий, необходимо авторизоваться или зарегистрироваться.