Что означает термин «газ»?

Приложение Ethereum, которое я хочу использовать, говорит о необходимости «газа» для работы. Что такое газ и где его взять?

Ответы (9)

«Газ» — это название специальной единицы, используемой в Ethereum. Он измеряет, сколько «работы» требуется для выполнения действия или набора действий: например, для вычисления одного криптографического хэша Keccak256 потребуется 30 газов каждый раз, когда вычисляется хеш , плюс стоимость дополнительных 6 газов на каждые 256 битов хэша. данные хэшируются. Каждая операция, которая может быть выполнена транзакцией или контрактом на платформе Ethereum, стоит определенное количество газа , при этом операции, требующие большего количества вычислительных ресурсов, стоят больше газа, чем операции, требующие небольшого количества вычислительных ресурсов.

Причина, по которой газ важен, заключается в том, что он помогает обеспечить уплату соответствующей комиссии за транзакции, отправленные в сеть. Требуя, чтобы транзакция платила за каждую операцию, которую она выполняет (или вызывает выполнение контракта), мы гарантируем, что сеть не увязнет в выполнении большого количества интенсивной работы, которая никому не нужна. Это другая стратегия, чем комиссия за транзакцию Биткойн, которая основана только на размере транзакции в килобайтах. Поскольку Ethereum позволяет запускать произвольно сложный компьютерный код, небольшая длина кода может фактически привести к выполнению большого объема вычислительной работы. Поэтому важно измерять проделанную работу напрямую, а не просто выбирать комиссию на основе продолжительности транзакции или контракта .

Итак, если газ — это, по сути, комиссия за транзакцию, как вы ее платите? Здесь становится немного сложнее. Хотя газ — это единица измерения, в которой можно измерять что-то, для газа не существует какого-либо токена . То есть вы не можете владеть 1000 газом. Вместо этого газ существует только внутри виртуальной машины Ethereum в качестве подсчета выполняемой работы. Когда дело доходит до фактической оплаты газа, комиссия за транзакцию взимается в виде определенного количества эфира , встроенного токена в сети Ethereum и токена, которым майнеры вознаграждаются за создание блоков.

Сначала это может показаться странным. Почему бы операциям просто не измерять стоимость напрямую в эфире? Ответ заключается в том, что у эфира, как и у биткойнов, есть рыночная цена, которая может быстро меняться! Но стоимость вычислений не увеличивается или уменьшается только потому, что меняется цена эфира. Поэтому полезно отделить стоимость вычислений от цены токена эфира , чтобы стоимость операции не менялась каждый раз, когда рынок движется.

Терминология здесь становится немного беспорядочной. Операции в EVM имеют стоимость газа , но сам газ также имеет цену газа, измеряемую в эфире. Каждая транзакция указывает цену газа , которую она готова заплатить в эфире за каждую единицу газа, позволяя рынку определять соотношение между ценой эфира и стоимостью вычислительных операций (измеряемой в газе). Комбинация этих двух показателей: общий объем использованного газа, умноженный на уплаченную цену за газ, дает общую комиссию, уплаченную за транзакцию .

Как бы сложно это ни было, важно понимать это различие, потому что оно приводит к одной из самых запутанных вещей в транзакциях Ethereum для начального обучения: есть разница между вашей транзакцией, на которой заканчивается газ, и вашей транзакцией, не имеющей достаточно высокого уровня. плата . Если цена на газ , которую я установил в своей транзакции, слишком низкая, никто даже не удосужится запустить мою транзакцию. Он просто не будет включен в блокчейн майнерами. Но если я предоставляю приемлемую цену на газ , а затем моя транзакция приводит к такому объему вычислительной работы, что совокупные затраты на газ превышают сумму, которую я присвоил в качестве комиссии, этот газ считается «израсходованным» .и я не получаю его обратно. Майнер прекратит обработку транзакции, отменит все внесенные изменения, но все равно включит ее в блокчейн как «неудавшуюся транзакцию», взимая за нее комиссию . Это может показаться суровым, но когда вы понимаете, что настоящая работа для майнера заключалась в выполнении вычислений, вы можете увидеть, что они никогда не вернут эти ресурсы. Так что будет справедливо, если вы заплатите им за проделанную работу , даже если ваша плохо спланированная транзакция закончилась.

Предоставление слишком большой комиссии также отличается от предоставления слишком большого количества эфира. Если вы установите очень высокую цену на газ, вы в конечном итоге заплатите много эфира всего за несколько операций , точно так же, как установите сверхвысокую комиссию за транзакцию в биткойнах. Вы определенно будете в приоритете перед очередью, но ваши деньги уйдут. Однако, если вы указали обычную цену на газ и просто подключили больше эфира, чем было необходимо для оплаты газа, потребленного вашей транзакцией, избыточная сумма будет возвращена вам . Майнеры берут с вас плату только за ту работу, которую они действительно выполняют. Вы можете думать о цене газа как о почасовой оплате труда майнера, а о стоимости газа — как о расписании выполненной им работы .

Есть много других тонкостей, связанных с газом, но это должно дать вам основы! Газ является ключевым механизмом, который делает сложные вычисления в Ethereum «безопасными» для работы сети , потому что любые программы, которые выходят из-под контроля, будут существовать только до тех пор, пока деньги будут предоставлены людьми, которые запросили их запуск. Когда деньги перестают поступать, майнеры перестают над ними работать. И ошибки, которые вы делаете в своей программе, повлияют только на людей, которые платят за ее использование — остальная часть сети не может страдать от проблем с производительностью из-за вашей ошибки. Они просто получат большую зарплату, когда проблемы с производительностью поглотят весь ваш эфир! Без этой важной техники идея универсального блокчейна была бы совершенно невозможной.

тл;др:

  • Газ - это то, как рассчитываются сборы
  • Однако сборы по-прежнему выплачиваются в эфире, что отличается от газа.
  • Стоимость газа — это количество работы, которая затрачивается на что-то, например, количество рабочих часов, тогда как цена газа — это почасовая оплата, которую вы платите за работу, которую необходимо выполнить. Их комбинация определяет общую комиссию за транзакцию.
  • Если цена на газ слишком низкая, никто не будет обрабатывать вашу транзакцию.
  • Если ваша цена на газ в порядке, но стоимость газа для вашей транзакции выходит за рамки бюджета, транзакция завершается неудачно, но все равно попадает в блокчейн, и вы не получаете деньги обратно за работу, которую сделали рабочие.
  • Это гарантирует, что ничто не будет работать вечно, и что люди будут осторожны с кодом, который они запускают. Это защищает как майнеров, так и пользователей от плохого кода!
Обратите внимание, что в настоящее время фактические стандартные хэши SHA-3 — это не то, что вычисляет Ethereum. «sha3» Эфириума — это оригинальный Keccak-256, представленный на конкурс NIST.
Отличный момент, объясняющий разницу между «газом» и «эфиром» и почему существует различие. Сначала мне не очевидно.
Отличное объяснение. Где я могу проверить стоимость газа транзакции?
Отличное объяснение, вы просто не упомянули часто используемое понятие «лимит газа», возможно, это не важно, но я хотел бы знать, что это такое.
Как виртуальная машина Эфириума узнает, сколько вычислительной работы было выполнено?
Как превратить газ в эфир? Каково соотношение?
"Если ваша цена на газ слишком низкая, никто не будет обрабатывать вашу транзакцию"... Как они решают, хорошая ли цена на газ?
@RameshPareek Они определяют стоимость газа в местной валюте, оценивают стоимость электроэнергии, используемой для выполнения работы (и есть верхняя граница благодаря лимиту газа), и выполняют работу только в том случае, если они получат прибыль.
Это должен быть автоматизированный процесс, написанный в исходном коде Эфириума, который решает, хороша цена или нет. Вы можете понять это?

Короткий:

Газ — это плата за выполнение каждой операции, совершаемой на Эфириуме. Его цена выражается в эфире и определяется майнерами, которые могут отказаться обрабатывать транзакцию с ценой газа ниже определенной. Чтобы получить газ, вам просто нужно добавить эфир на свой счет.

Длинная:

Ethereum реализует на блокчейне среду выполнения, называемую виртуальной машиной Ethereum (EVM). Когда вы запускаете децентрализованное приложение (dApp), каждая инструкция выполняется на каждом узле сети. У этого есть стоимость: для каждой операции, которую может выполнить скрипт, есть определенная стоимость, выраженная в количестве единиц газа, которую вы можете увидеть в спецификации EVM.

Цена одной единицы газа определяется майнерами, в настоящее время она составляет от 5 до 21 GWei (один GWei равен 10^9 Wei или 10^-9 эфира). Ethereum использует эфир в качестве внутренней валюты/токена. Ваши счета выражены в эфире. Когда вы развертываете контракт или выполняете транзакцию, газ будет снят с баланса вашего счета. Вы можете указать цену газа или оставить предложенную.

Когда вы говорите: «Цена единицы газа определяется шахтерами», что вы имеете в виду? Приходят ли они к консенсусу где-то через какую-то процедуру или как именно они «решают»?
Каждый узел майнинга должен выбрать цену на газ, которая максимизирует его прибыль.
Исходя из теоретического PoV, каждый узел майнинга должен выбрать цену на газ, которая максимизирует его прибыль. Поскольку блок, потребляющий больше газа, распространяется по сети медленнее, существует более высокая вероятность того, что он станет дядей, получив только уменьшенное вознаграждение. Минимальная приемлемая цена на газ должна быть достаточно высокой, чтобы компенсировать этот повышенный риск. Что до сих пор наблюдалось в реальной сети, так это то, что майнинговые пулы принимают транзакции с более низкими ценами на газ, чем то, что было бы экономически целесообразным, чтобы помочь уменьшить перегрузку сети и увеличить общую стоимость сети/токена.
Итак, 1 газ = 0,000_000_001 эфира? А 1 эфир = 1 000 000 000 газа?

Следующий ответ взят из Ethereum, Gas, Fuel & Fees .

Что такое газ?

Газ — это измерительная единица для использования «Мирового компьютера» Эфириума . По аналогии электричество измеряется по киловатт-часам. Использование большего количества вычислений и хранилищ в Ethereum означает, что используется больше газа. Одной из фундаментальных причин измерения является то, что оно стимулирует людей (майнеров) работать с Мировым Компьютером. Эти майнеры получают комиссию за обработку транзакций, которая определяется схемой учета: газ.

Каждая операция в EVM потребляет газ. Например, на умножение (MUL) расходуется 5 единиц газа, а на сложение (ADD) — 3 единицы газа. Вот таблица операций Ethereum и их потребления газа . (Можно также рассматривать их как расходы на газ, но это, вероятно, затрудняет понимание объяснений, связанных с расходами, сборами и ценами.)

Измерение отличается от сборов, а газ отличается от эфира. Чтобы прояснить это, считайте, что газ является синонимом топлива. Транзакция должна обеспечить достаточное количество топлива или startGas, чтобы полностью покрыть использование вычислительных и складских мощностей EVM. Весь оставшийся газ возвращается инициатору транзакции: пользователю, инициировавшему транзакцию. Транзакция, в которой закончился газ, отменяется, но по-прежнему включается в блок, и соответствующая комиссия выплачивается майнеру .

С обзором с точки зрения топлива, давайте обратимся к обзору сборов. В то время как каждая операция в EVM потребляет предопределенное фиксированное количество газа (например, операция MUL всегда потребляет 5 единиц газа), пользователь может указать цену газа в каждой транзакции . Текущая цена на газ составляет 0,02 мк эфира или 0,00000002 ETH. Плата, которую отправитель платит майнеру, составляет транзакцию (startGas - remainingGas) × gas price.

Вот краткое изложение влияния транзакционного топлива и комиссии за транзакцию:

введите описание изображения здесь

В начале транзакции Эфир, необходимый для startGas, выделяется [1b], а оставшийся газ устанавливается в startGas [1a]. [ 2 ] При каждой операции транзакции газ расходуется, а оставшийся газ снижается. [ 3 ] Если есть исключение Out of Gas, все операции отменяются, и весь эфир, который был изначально отложен, передается майнеру [ 4 ]. [ 5 ] Если транзакция завершается успешно, весь оставшийся газ возвращается отправителю, а остаток выплачивается майнеру.

Простой пример

В следующем фиктивном сценарии предположим, что STORE потребляет 45 единиц газа, а ADD потребляет 10 единиц газа. Сценарий включает в себя сохранение числа 31 в EVM, суммирование 2 чисел и последующее сохранение суммы. Предположим, что отправитель указал startGas 150 и цену газа 0,02 µETH. Ниже приведена иллюстрация обработки транзакции EVM:

введите описание изображения здесь

Создатель платит майнеру комиссию в размере (150 - 50) × 0,02 мкETH = 2 мкETH = 0,000002 ETH.

Топливо против платы

Существует разница между оригинатором, предоставляющим достаточно топлива, и достаточной комиссией. Вот вероятные последствия для транзакции:

введите описание изображения здесь

[ 1 ] Транзакция со слишком небольшим количеством топлива даже не дойдет до майнеров, независимо от взимаемой комиссии.

[ 2 ] Если для транзакции предоставлено достаточное количество топлива, но комиссия слишком низкая, даже если транзакция может быть достигнута майнерами, после проверки транзакции майнеры не будут выполнять никаких вычислений.

[ 3 ] Транзакция с низким расходом топлива подразумевает, что она будет использовать небольшие вычислительные ресурсы или ресурсы хранения EVM или что во время выполнения она столкнется с исключением Out of Gas и будет отменена.

[4, 5, 6] Комиссии определяют порядок, в котором транзакции будут включены в блокчейн.

[ 7 ] Причина, по которой предоставление большого количества топлива может привести к тому, что транзакция займет больше времени, обсуждается в разделе «Потенциальные задержки с высоким startGas».

В Биткойне измерение осуществляется с помощью байтов: количества байтов в транзакции. В Эфириуме вычисления также необходимо измерять, потому что небольшой объем кода может быть программой, которая будет работать вечно. Учет учета является одной из причин для газа. Но наличие газа не означает взимания платы.

Например, в приватной цепочке у каждой учетной записи может быть X газа в день, или у каждой учетной записи может быть Y газа за транзакцию, или какая-то другая схема. С другой стороны, наличие сборов не означает обязательного использования газа: сборы могут основываться на различных измерениях, например, на байтах. Безопасность в общедоступной цепочке блоков требует как газа, так и комиссий, в то время как альтернативы более применимы к частным цепочкам (например, схема, в которой каждая учетная запись имеет X газа в день, может быть атакована Сивиллой в общедоступной цепочке, где любой может создать учетную запись). .

Ярким примером измерения, не требующего платы , является вызов контракта с вызовом по сравнению с транзакцией . Как поясняется в разделе Кто получает вознаграждение за вызов по контракту? , вызов с «вызовом» по- прежнему использует измерение, но не требует платы.

Предположим, я вызываю функцию в контракте с низким газом. Кто-то другой знает об этом и пытается пролететь передо мной — вызывает ту же функцию с большим количеством газа через несколько секунд после меня. Будет ли его транзакция обработана первой? Это кажется серьезной уязвимостью
@gpanterov Я предполагаю, что вы имели в виду «низкая цена на газ» вместо «низкий газ». Да, его транзакция может быть обработана первой, если так решат майнеры (и они, вероятно, так и сделают). Майнеры имеют полный контроль над порядком транзакций. Это не уязвимость, это просто то, как все работает в Ethereum (и почти в любой другой распределенной системе). Разработчики контрактов всегда должны предполагать, что злоумышленник попытается получить выгоду, переупорядочив транзакции своих пользователей.
Этот ответ, по-видимому, был скопирован модератором с сайта media.consensys.net/ethereum-gas-fuel-and-fees-3333e17fe1dc без указания авторства или ссылки.
У меня есть вопрос. В случае монеты, основанной на Ethereum, назовем ее XOXO... Я выпускаю 1M. Люди покупают все это (потому что это так популярно)... когда оплата производится в XOXO с адреса 123 на адрес 456... как оплачивается газ? На данный момент они имеют дело с XOXO, а не с эфиром.

Дополнительный полезный контент о газе в Ethreum: http://ethdocs.org/en/latest/ether.html#gas-and-ether

Газ и эфир

Предполагается, что газ является постоянной стоимостью сетевых ресурсов/использования. Вы хотите, чтобы реальная стоимость отправки транзакции всегда была одинаковой, поэтому вы не можете ожидать, что будет выпущен газ, валюты в целом нестабильны.

Поэтому вместо этого мы выпускаем эфир, стоимость которого должна варьироваться, но также реализуем цену на газ в терминах эфира. Если цена эфира растет, цена газа в пересчете на эфир должна снижаться, чтобы реальная стоимость газа оставалась неизменной.

Газ имеет несколько связанных с ним условий: цены на газ, стоимость газа, лимит газа и сборы за газ. Принцип, лежащий в основе Gas, заключается в том, чтобы иметь стабильное значение того, сколько стоит транзакция или вычисление в сети Ethereum.

  • Стоимость газа — это статическое значение стоимости вычислений в единицах газа, и цель состоит в том, чтобы реальная стоимость газа никогда не менялась, поэтому эта стоимость всегда должна оставаться стабильной с течением времени.
  • Цена на газ — это стоимость газа в пересчете на другую валюту или токен, например эфир. Чтобы стабилизировать стоимость газа, цена на газ представляет собой плавающее значение, поэтому, если стоимость токенов или валюты колеблется, цена на газ изменяется, чтобы сохранить то же реальное значение. Цена на газ определяется равновесной ценой того, сколько пользователи готовы потратить и сколько узлов обработки готовы принять.
  • Лимит газа — это максимальное количество газа, которое может быть использовано на блок. Он считается максимальной вычислительной нагрузкой, объемом транзакций или размером блока блока, и майнеры могут постепенно изменять это значение с течением времени.
  • Плата за газ фактически представляет собой количество газа, которое необходимо заплатить для выполнения конкретной транзакции или программы (называемой контрактом). Плата за газ блока может использоваться для обозначения вычислительной нагрузки, объема транзакций или размера блока. Плата за газ выплачивается майнерам (или связанным подрядчикам в PoS).

Другие полезные ссылки:

https://www.reddit.com/r/ethereum/comments/271qdz/can_someone_explain_the_concept_of_gas_in_ethereum/ https://www.reddit.com/r/ethereum/comments/3fnpr1/can_someone_possily_explain_the_concept_of/ https://www.reddit.com/ р/эфириум/комментарии/49gol3/can_ether_be_used_as_a_currency_eli5_ether_gas/

Газ — это, по сути, внутреннее ценообразование для выполнения транзакции или контракта.

Цена на газ за транзакцию или контракт устанавливается с учетом природы Ethereum и его EVM (кода виртуальной машины Ethereum).

Таким образом, чем сложнее транзакция или операция, тем больше газа она будет стоить.

Газ — это то, что вы платите за выполнение кода в блокчейне и перевод эфира на другой адрес. За каждую инструкцию на виртуальной машине Ethereum вы платите определенное количество газа. Некоторые инструкции дорогие, а некоторые дешевые.

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

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

Сначала я хочу рассказать о EVM (виртуальная машина Ethereum). Поскольку мы знаем, что сеть Ethereum представляет собой набор компьютеров, и на каждом компьютере установлено программное обеспечение EVM, а также на всех этих системах есть копия блокчейна, к которой подключены все майнеры. через ЭВМ. Когда разработчик пишет смарт-контракт, код компилируется с машинным кодом, и машинный код сохраняется в блокчейне, который выполняется EVM. Я не буду в этом вопросе объяснять, что происходит с этим кодом в блокчейне.

Теперь эфир против газа ??

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

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

Поскольку сеть Ethereum представляет собой децентрализованную цепочку блоков, в которой нет единого лица или органа, контролирующего ее работу, создан механизм, предотвращающий перегрузку сети или спам транзакциями. Этот механизм взимает с отправителей транзакций небольшую комиссию, называемую платой за газ, которая затем используется для вознаграждения майнеров, подтверждающих транзакции в сети.

Эта комиссия представлена ​​в виде эфира (ETH), который также используется в сети Ethereum для облегчения передачи ценностей, выплат за майнинг и исполнения смарт-контрактов.

Плата за газ работает аналогично тому, как работает газ/топливо для наших автомобилей. Чтобы добраться из пункта А в пункт Б, транспортное средство должно быть заправлено достаточным количеством бензина.

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

Источник

Подробности смотрите в другом ответе, но у газа нет единицы измерения.
@Исмаэль, ты совершенно прав, и спасибо, что поправил меня. Отредактировал мой ответ.
Развертывание в основной сети (т. е. фактическая запись в блокчейн Ethereum) требует реального газа и, следовательно, реальных денег. Лучшей практикой при разработке приложений Web3 является сначала развертывание в тестовой сети, так как вы можете протестировать свое приложение, и оно бесплатное. Для Ethereum вы захотите использовать тестовую сеть Goerli... что это влечет за собой то, что вы используете фактически поддельный тестовый эфир («testETH») для тестирования вашего проекта/контракта. Вы получаете этот Goerli testETH от сборщиков Goerli, таких как goerlifaucet.com.
@a-gupta Спасибо за добавление объяснения тестовой сети.

Развертывание в основной сети (т. е. фактическая запись в блокчейн Ethereum) требует реального газа и, следовательно, реальных денег. Лучшей практикой при разработке приложений Web3 является сначала развертывание в тестовой сети, так как вы можете протестировать свое приложение, и оно бесплатное. Для Ethereum вы захотите использовать тестовую сеть Goerli... что это влечет за собой то, что вы используете фактически поддельный тестовый эфир («testETH») для тестирования вашего проекта/контракта. Вы получаете этот Goerli testETH от сборщиков Goerli, таких как goerlifaucet.com.

Вы также можете оценить плату за газ с помощью таких инструментов