Приложение Ethereum, которое я хочу использовать, говорит о необходимости «газа» для работы. Что такое газ и где его взять?
«Газ» — это название специальной единицы, используемой в Ethereum. Он измеряет, сколько «работы» требуется для выполнения действия или набора действий: например, для вычисления одного криптографического хэша Keccak256 потребуется 30 газов каждый раз, когда вычисляется хеш , плюс стоимость дополнительных 6 газов на каждые 256 битов хэша. данные хэшируются. Каждая операция, которая может быть выполнена транзакцией или контрактом на платформе Ethereum, стоит определенное количество газа , при этом операции, требующие большего количества вычислительных ресурсов, стоят больше газа, чем операции, требующие небольшого количества вычислительных ресурсов.
Причина, по которой газ важен, заключается в том, что он помогает обеспечить уплату соответствующей комиссии за транзакции, отправленные в сеть. Требуя, чтобы транзакция платила за каждую операцию, которую она выполняет (или вызывает выполнение контракта), мы гарантируем, что сеть не увязнет в выполнении большого количества интенсивной работы, которая никому не нужна. Это другая стратегия, чем комиссия за транзакцию Биткойн, которая основана только на размере транзакции в килобайтах. Поскольку Ethereum позволяет запускать произвольно сложный компьютерный код, небольшая длина кода может фактически привести к выполнению большого объема вычислительной работы. Поэтому важно измерять проделанную работу напрямую, а не просто выбирать комиссию на основе продолжительности транзакции или контракта .
Итак, если газ — это, по сути, комиссия за транзакцию, как вы ее платите? Здесь становится немного сложнее. Хотя газ — это единица измерения, в которой можно измерять что-то, для газа не существует какого-либо токена . То есть вы не можете владеть 1000 газом. Вместо этого газ существует только внутри виртуальной машины Ethereum в качестве подсчета выполняемой работы. Когда дело доходит до фактической оплаты газа, комиссия за транзакцию взимается в виде определенного количества эфира , встроенного токена в сети Ethereum и токена, которым майнеры вознаграждаются за создание блоков.
Сначала это может показаться странным. Почему бы операциям просто не измерять стоимость напрямую в эфире? Ответ заключается в том, что у эфира, как и у биткойнов, есть рыночная цена, которая может быстро меняться! Но стоимость вычислений не увеличивается или уменьшается только потому, что меняется цена эфира. Поэтому полезно отделить стоимость вычислений от цены токена эфира , чтобы стоимость операции не менялась каждый раз, когда рынок движется.
Терминология здесь становится немного беспорядочной. Операции в EVM имеют стоимость газа , но сам газ также имеет цену газа, измеряемую в эфире. Каждая транзакция указывает цену газа , которую она готова заплатить в эфире за каждую единицу газа, позволяя рынку определять соотношение между ценой эфира и стоимостью вычислительных операций (измеряемой в газе). Комбинация этих двух показателей: общий объем использованного газа, умноженный на уплаченную цену за газ, дает общую комиссию, уплаченную за транзакцию .
Как бы сложно это ни было, важно понимать это различие, потому что оно приводит к одной из самых запутанных вещей в транзакциях Ethereum для начального обучения: есть разница между вашей транзакцией, на которой заканчивается газ, и вашей транзакцией, не имеющей достаточно высокого уровня. плата . Если цена на газ , которую я установил в своей транзакции, слишком низкая, никто даже не удосужится запустить мою транзакцию. Он просто не будет включен в блокчейн майнерами. Но если я предоставляю приемлемую цену на газ , а затем моя транзакция приводит к такому объему вычислительной работы, что совокупные затраты на газ превышают сумму, которую я присвоил в качестве комиссии, этот газ считается «израсходованным» .и я не получаю его обратно. Майнер прекратит обработку транзакции, отменит все внесенные изменения, но все равно включит ее в блокчейн как «неудавшуюся транзакцию», взимая за нее комиссию . Это может показаться суровым, но когда вы понимаете, что настоящая работа для майнера заключалась в выполнении вычислений, вы можете увидеть, что они никогда не вернут эти ресурсы. Так что будет справедливо, если вы заплатите им за проделанную работу , даже если ваша плохо спланированная транзакция закончилась.
Предоставление слишком большой комиссии также отличается от предоставления слишком большого количества эфира. Если вы установите очень высокую цену на газ, вы в конечном итоге заплатите много эфира всего за несколько операций , точно так же, как установите сверхвысокую комиссию за транзакцию в биткойнах. Вы определенно будете в приоритете перед очередью, но ваши деньги уйдут. Однако, если вы указали обычную цену на газ и просто подключили больше эфира, чем было необходимо для оплаты газа, потребленного вашей транзакцией, избыточная сумма будет возвращена вам . Майнеры берут с вас плату только за ту работу, которую они действительно выполняют. Вы можете думать о цене газа как о почасовой оплате труда майнера, а о стоимости газа — как о расписании выполненной им работы .
Есть много других тонкостей, связанных с газом, но это должно дать вам основы! Газ является ключевым механизмом, который делает сложные вычисления в Ethereum «безопасными» для работы сети , потому что любые программы, которые выходят из-под контроля, будут существовать только до тех пор, пока деньги будут предоставлены людьми, которые запросили их запуск. Когда деньги перестают поступать, майнеры перестают над ними работать. И ошибки, которые вы делаете в своей программе, повлияют только на людей, которые платят за ее использование — остальная часть сети не может страдать от проблем с производительностью из-за вашей ошибки. Они просто получат большую зарплату, когда проблемы с производительностью поглотят весь ваш эфир! Без этой важной техники идея универсального блокчейна была бы совершенно невозможной.
тл;др:
Короткий:
Газ — это плата за выполнение каждой операции, совершаемой на Эфириуме. Его цена выражается в эфире и определяется майнерами, которые могут отказаться обрабатывать транзакцию с ценой газа ниже определенной. Чтобы получить газ, вам просто нужно добавить эфир на свой счет.
Длинная:
Ethereum реализует на блокчейне среду выполнения, называемую виртуальной машиной Ethereum (EVM). Когда вы запускаете децентрализованное приложение (dApp), каждая инструкция выполняется на каждом узле сети. У этого есть стоимость: для каждой операции, которую может выполнить скрипт, есть определенная стоимость, выраженная в количестве единиц газа, которую вы можете увидеть в спецификации EVM.
Цена одной единицы газа определяется майнерами, в настоящее время она составляет от 5 до 21 GWei (один GWei равен 10^9 Wei или 10^-9 эфира). Ethereum использует эфир в качестве внутренней валюты/токена. Ваши счета выражены в эфире. Когда вы развертываете контракт или выполняете транзакцию, газ будет снят с баланса вашего счета. Вы можете указать цену газа или оставить предложенную.
Следующий ответ взят из 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 газа в день, может быть атакована Сивиллой в общедоступной цепочке, где любой может создать учетную запись). .
Ярким примером измерения, не требующего платы , является вызов контракта с вызовом по сравнению с транзакцией . Как поясняется в разделе Кто получает вознаграждение за вызов по контракту? , вызов с «вызовом» по- прежнему использует измерение, но не требует платы.
Дополнительный полезный контент о газе в Ethreum: http://ethdocs.org/en/latest/ether.html#gas-and-ether
Газ и эфир
Предполагается, что газ является постоянной стоимостью сетевых ресурсов/использования. Вы хотите, чтобы реальная стоимость отправки транзакции всегда была одинаковой, поэтому вы не можете ожидать, что будет выпущен газ, валюты в целом нестабильны.
Поэтому вместо этого мы выпускаем эфир, стоимость которого должна варьироваться, но также реализуем цену на газ в терминах эфира. Если цена эфира растет, цена газа в пересчете на эфир должна снижаться, чтобы реальная стоимость газа оставалась неизменной.
Газ имеет несколько связанных с ним условий: цены на газ, стоимость газа, лимит газа и сборы за газ. Принцип, лежащий в основе Gas, заключается в том, чтобы иметь стабильное значение того, сколько стоит транзакция или вычисление в сети Ethereum.
Другие полезные ссылки:
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.
Вы также можете оценить плату за газ с помощью таких инструментов
Бадр Беллай