За пост начислено вознаграждение
Этот материал написан посетителем сайта, и за него начислено вознаграждение.
Только начали пользоваться сетью Ethereum? Впервые столкнулись с таким понятием, как «газ» (Gas)? В данной статье попробуем последовательно разобраться с особенностями транзакций сети Ethereum. Разберем такие понятия, как Gas, Gas limit, цена Gas, а также Gwei
Gas в Ethereum
Если вы каким-либо образом работали со смарт-контрактами, переводили ETH или участвовали в ICO, то вы сталкивались с газом. Эта механика, выраженная в gas limit (лимит газа) и gas price (цена за газ), является ключевой для проведения транзакций в экосистеме Эфириум.
Чтобы понять детали, нужно вспомнить базовую концепцию проекта Ethereum.
Ethereum — гигантская сеть, которая состоит из объединенных компьютеров с установленным клиентом. Эта взаимосвязанная сеть называется виртуальной сетью Ethereum (EVN), как бы глобальным суперкомпьютером, где все транзакции обновляются и записываются на каждый компьютер.
Эфир (ETH) — это внутренняя валюта блокчейна Ethereum и используется как «топливо» для сети: для операций, передачи ценности, системы поощрений.
Новым в блокчейне Ethereum была возможность исполнять смарт-контракты (относительно биткоина). Это контракты, предварительно запрограммированные с набором необходимых правил и положений, которые выполняются самостоятельно, без необходимости в посреднике.
как работают смарт-контракты
Почему транзакции занимают так много времени?
Поскольку все пользователи конкурируют друг с другом за пространство для блока, если вы установите слишком низкую плату за газ, майнеры предпочтут не включать вашу транзакцию в блок в ближайшем будущем. Таким образом, ваша транзакция занимает так много времени, потому что вы не установили достаточно высокую плату за газ, чтобы ваша транзакция была включена в блокировку в ближайшем будущем. Вам придется подождать, пока плата за газ, которую готовы платить другие пользователи, снизится, чтобы ваша плата за газ была привлекательной для майнеров.
Отказ от ответственности: Эта статья предназначена для общего руководства и информационных целей только для новичков, участвующих в криптовалютах и DeFi. Содержание этой статьи не должно толковаться как юридическая, деловая, инвестиционная или налоговая консультация. Вам следует проконсультироваться со своими консультантами по всем юридическим, деловым, инвестиционным и налоговым последствиям и советам. ConsenSys не несет ответственности за потерянные средства. Пожалуйста, используйте здравый смысл и проявите должную осмотрительность, прежде чем взаимодействовать со смарт-контрактами.
Spread the love
Зачем нужен газ?
ETH открыто торгуется на биржах, и его рыночная цена может быстро меняться. Создание единиц GAS заключается в том, чтобы отделить стоимость вычислительной работы в сети Ethereum от изменчивой рыночной цены Ethereum, так как стоимость вычислений изменяется не так быстро.
Пример:
При создании смарт-контракта вы рассчитываете на фиксированные взносы в эфире. Например, когда ETH стоил $10, а вам нужно было заплатить за работу 0,5 ETH, цена в долларах вас устраивала — всего 5 долларов.
Но эфир вырос, теперь за 0,5 ETH придется заплатить 250 долларов, например. Это мешает использовать систему для разработки и запуска приложений. Поэтому была создана система с газом.
Что такое Gas?
Газ в Эфириум — это единица измерения вычислительной работы для осуществления транзакций или смарт-контрактов в сети Ethereum. Это не монета, не какая-то часть токена, это динамический показатель, через который будет выставляться счет уже в ETH.
Эта система похожа на использование киловатт для измерения электричества в доме. Количество потраченной электроэнергии не измеряется сразу в рублях, вместо этого счет выставляют за кВт/ч.
Важно понимать, что для разных видов транзакций требуется разное количество газа. Как и с электричеством или бензином: мощный прибор или двигатель потратит больше в сравнении со слабым.
Например, простая транзакция отправки ETH с адреса на адрес стоит 21 000 газ. Выполнение смарт-контрактов осуществляется майнером, который тратит свое время, электричество и мощности на выполнение кодов и завершение транзакции. Для смарт-контракта газ будет другим.
Журнал транзакций ETH
Чтобы отслеживать разного рода переводы и сообщения, сеть Ethereum ведет логи. Они генерируются при выполнении каждой транзакции.
В логах содержится следующая информация:
- Адрес счёта регистратора лога;
- Темы, представляющие различные действия, произведенные вследствие выполнения этой транзакции;
- Данные, которые связаны с данными задачами.
Gas Limit
Лимит газа — это максимальное количество газа, которое вы готовы потратить на определенную транзакцию. Высокий уровень газа означает, что для выполнения интеллектуального контракта необходимо выполнить большую вычислительную работу.
Для стандартного переноса ETH требуется предел газа в 21 000 единиц газа. Это указывается в дополнительных опциях в кошельке при переводе. Нужно указывать лимит с запасом: непотраченные единицы все равно вернутся обратно.
На изображении сверху отмечено, что лимит газа установлен на отметке 42000. Для транзакции понадобилось 21080 единиц GAS, также указана текущая цена в ETH и Gwei за один газ и общая стоимость транзакции.
Чем сложнее команды, которые вы хотите выполнить, тем больше газа вы должны заплатить. Вы можете увидеть это в действии, когда участвуете в ICO за ETH или когда вы хотите вывести монеты на биржу — плата за перевод намного выше, чем 21 000 газа по умолчанию. Это связано с тем, что интеллектуальные контракты ICO обладают гораздо более сложными кодами и требуют гораздо больших вычислений, чем простой перенос ETH. Обычно около 200-300 тысяч Gas.
Ограничение газа — лимит — действует как механизм безопасности, чтобы защитить вас от полного растрачивания средств из-за каких-либо ошибок.
Уже ставший классическим пример для лимита газа — бак автомобиля, расчитанный на определенный объем топлива.
Gas Station — актуальная цена на gas
Рекомендуемые цены на газ (исходя из текущих условий сети):
- для транзакции с низким приоритетом (до 30 минут) — 1 Gwei
- стандартное время проведения (до 5 минут) — 3 Gwei
- высокий приоритет, транзакция в следующем блоке (меньше 2 минут) — 6 Gwei
Цену пользователь назначает самостоятельно, но часто все доверяют настройкам по умолчанию в кошельке. Иногда цену можно уменьшить, если транзакцию не нужно проводить очень срочно. Безопасная самая низкая цена на июнь 2022 указана выше.
Чтобы еще уменьшить комиссию за транзакцию в Ethereum, можно выставить цену за 1 gas в районе 1-2 wei (самая маленькая часть Ether). Пока мемпул не перегружен и блоки не заполнены под завязку (максимально вмещают 6 700 000 gas), такую транзакцию тоже могут забрать. Но это можно быть рисковано. Кроме того, в MyEtherWallet и официальном клиенте нельзя выставить цену ниже 1Gwei через ползунок. В MEW способ работает при «Оффлайн-переводе».
EthGasStation предназначена для повышения прозрачности цен на газ, там можно посмотреть все актуальные данные по газу и транзакциям в сети Ethereum. Этот сайт помогает установить актуальную рыночную цену за единицу газа и не переплачивать.
Находится по адресу ethgasstation.info
Куда уходят ваши сборы за газ?
Вы можете спросить: «Почему моя транзакция будет подтверждена, если я установлю более высокую плату за газ?» Отличный вопрос!
Когда вы отправляете транзакцию в Ethereum, вы конкурируете с другими людьми, которые также хотят отправить транзакцию. Хотя вы можете отправлять своей маме немного эфира, кто-то в Индии может торговать на Uniswap. Каждый человек пытается выполнить свою транзакцию одновременно. Но только определенное количество транзакций может быть включено в блок Ethereum, и каждые примерно 13 секунд появляются только новые блоки. Фактически в каждом блоке всего 12,5 млн единиц газа. Это означает, что все соревнуются друг с другом за включение своей транзакции в следующий блок. Когда спрос высок, а предложение ограничено, поскольку в блок может быть включено только определенное количество транзакций, цена должна увеличиваться.
Но когда вы отправляете транзакции, где они, прежде чем майнеры их одобрят? Эти транзакции отправляются в пул памяти, сокращение от «пул памяти». Мемпул — это место, где находятся все транзакции, которые были отправлены, но еще не проверены. Короче говоря, мемпул — это очередь ожидания проверки. Майнеры, которые проверяют транзакции перед выполнением, чтобы убедиться, что они не являются вредоносными, выбирают транзакции, которые должны быть включены в следующий блок из мемпула.
«Так почему же майнеры выбирают мою транзакцию из мемпула раньше всех?» Потому что, конечно, я заплачу им больше!
Майнеры выбирают, какие транзакции должны быть включены в следующий блок, исходя из того, насколько высока плата за газ, установленная пользователями перед отправкой транзакции. Чем выше плата за газ, тем выше вероятность, что майнер захочет включить вашу транзакцию в следующий блок. В этой ситуации возникает конкуренция, поскольку вы конкурируете со всеми, устанавливая плату за газ в течение этого периода времени за пространство блока.
Что делать, если для транзакции мало газа?
Транзакции будут обрабатываться майнерами до тех пор, пока у вас не исчерпан газ. Блокчейн будет записывать транзакцию как «Failed», и ETH останется в кошельке, поскольку для завершения перевода недостаточно газа.
Газ, использованный для неудавшейся транзакции, останется у майнеров, и вы НЕ получите его обратно. Это объясняется тем, что ресурсы на выполнение перевода тратились.
Чтобы исправить транзакцию с низким количеством газа, нужно дождаться ее невыполнения и провести заново, указав правильный лимит. К сожалению, повысить лимит в процессе уже нельзя.
Еще раз:
- указывать лимит газа нужно с запасом,
- различные операции будут по-разному тратить газ,
- майнеры не будут обрабатывать перевод по исчерпании лимита,
- оставшийся после транзакции газ возвращается.
Создание квитанции транзакции
Логи в заголовке выводятся из данных логов, содержащихся в квитанции завершенных переводов. Покупая в магазинах, вы получаете квитанцию. Также и с Ethereum: он генерирует квитанции для транзакций. В квитанции содержится следующая информация:
- номер блока;
- хэш блока;
- хэш транзакции;
- количество газа, использованного для выполнения перевода;
- общий объем газа, использованный в этом блоке после завершения перевода;
- логи, генерируемые во время выполнения транзакции и другая информация.
Газ для разработчиков смарт-контракта
Запуск смарт-контрактов в сети стоит дороже, поскольку они выполняют различные действия. Каждый смарт-контракт разрабатывается индивидуально и адаптируется под нужды проекта. Например, для элитного проекта можно позволить цену за газ в $5, а для какого-нибудь мессенджера — нет.
Существуют две основные издержки, связанные с отправкой и выполнением транзакции Ethereum:
- Стоимость исполнения,
- Стоимость сделки.
Стоимость исполнения в первую очередь связана с хранением глобальных переменных и вычислительной мощностью, используемой для расчетов.
Вот цены за разные операции:
- Добавить или вычесть два целых числа 3 gas
- Умножить или разделить два целых числа 5 gas
- Сравнить два целых числа 3 gas
- Создать новый контракт 32000 gas
- Сохранение 256-битного слова 20000 gas
- Сохранить 1 МБ (31250 256-битных слова) 625000000 gas
- Отправить 1 транзакцию 21000 gas
- Включить 1 байт (не нуль) в данные транзакции 68 gas
- Включить 1 МБ в данные транзакции 68000 gas
- Развертывание контракта (первый раз) ~ 32 000 gas
- Затраты на ввод транзакций (общие) ~ 4 для 0-байтовых и 64 для не-0 байтовых входов
- Стоимость транзакций по контракту ~ 32 000 gas
Также по отдельным операциям:
Хорошо написанный контракт, скорее всего, переместит максимум вычислений за пределы цепи.
Общий размер смарт-контракта будет играть роль в размере комиссии. Если вы можете разделить контракт на более мелкие отдельные части, это снизит расходы на газ при взаимодействии с ними.
Самая дорогая операция с точки зрения газа — хранение. Хранение больших объемов данных в блокчейне обычно не используется: чаще сохраняют только хеш. И сокращают код:
string STATUS = ‘unknown status’; —> uint STATUS = 0; //T
Также нужно удалить столько дублирования внутри структур, сколько возможно.
Разработчики должны знать эти затраты и проектировать dApps с их учетом.
Все про газ в Ethereum и других криптовалютах
Crypto Fox
Jun 29, 2022 · 7 min read
В этой статье рассказываем про концепцию лимита газа, самого понятия газ и цены на него, что является центральной особенностью блокчейна Ethereum и всей экосистемы. Также отвечаем на вопрос, является ли GAS отдельной валютой. Кроме того, рассказываем про Gas в Neo и ETH Classic.
Если вы каким-либо образом работали со смарт-контрактами, переводили ETH или участвовали в ICO, то вы сталкивались с газом. Эта механика, выраженная в gas limit (лимит газа) и gas price (цена за газ), является ключевой для проведения транзакций в экосистеме Эфириум.
Чтобы понять детали, нужно вспомнить базовую концепцию проекта Ethereum.
Ethereum — гигантская сеть, которая состоит из объединенных компьютеров с установленным клиентом. Эта взаимосвязанная сеть называется виртуальной сетью Ethereum (EVN), как бы глобальным суперкомпьютером, где все транзакции обновляются и записываются на каждый компьютер.
Эфир (ETH) — это внутренняя валюта блокчейна Ethereum и используется как «топливо» для сети: для операций, передачи ценности, системы поощрений.
Новым в блокчейне Ethereum была возможность исполнять смарт-контракты (относительно биткоина). Это контракты, предварительно запрограммированные с набором необходимых правил и положений, которые выполняются самостоятельно, без необходимости в посреднике.
ETH открыто торгуется на биржах, и его рыночная цена может быстро меняться. Создание единиц GAS заключается в том, чтобы отделить стоимость вычислительной работы в сети Ethereum от изменчивой рыночной цены Ethereum, так как стоимость вычислений изменяется не так быстро.
Пример:
При создании смарт-контракта вы рассчитываете на фиксированные взносы в эфире. Например, когда ETH стоил $10, а вам нужно было заплатить за работу 0,5 ETH, цена в долларах вас устраивала — всего 5 долларов.
Но эфир вырос, теперь за 0,5 ETH придется заплатить 250 долларов, например. Это мешает использовать систему для разработки и запуска приложений. Поэтому была создана система с газом.
Газ в Эфириум — это единица измерения вычислительной работы для осуществления транзакций или смарт-контрактов в сети Ethereum. Это не монета, не какая-то часть токена, это динамический показатель, через который будет выставляться счет уже в ETH.
Эта система похожа на использование киловатт для измерения электричества в доме. Количество потраченной электроэнергии не измеряется сразу в рублях, вместо этого счет выставляют за кВт/ч.
Важно понимать, что для разных видов транзакций требуется разное количество газа. Как и с электричеством или бензином: мощный прибор или двигатель потратит больше в сравнении со слабым.
Например, простая транзакция отправки ETH с адреса на адрес стоит 21 000 газ. Выполнение смарт-контрактов осуществляется майнером, который тратит свое время, электричество и мощности на выполнение кодов и завершение транзакции. Для смарт-контракта газ будет другим.
Лимит газа — это максимальное количество газа, которое вы готовы потратить на определенную транзакцию. Высокий уровень газа означает, что для выполнения интеллектуального контракта необходимо выполнить большую вычислительную работу.
Для стандартного переноса ETH требуется предел газа в 21 000 единиц газа. Это указывается в дополнительных опциях в кошельке при переводе. Нужно указывать лимит с запасом: непотраченные единицы все равно вернутся обратно.
На изображении сверху отмечено, что лимит газа установлен на отметке 42000. Для транзакции понадобилось 21080 единиц GAS, также указана текущая цена в ETH и Gwei за один газ и общая стоимость транзакции.
Чем сложнее команды, которые вы хотите выполнить, тем больше газа вы должны заплатить. Вы можете увидеть это в действии, когда участвуете в ICO за ETH или когда вы хотите вывести монеты на биржу — плата за перевод намного выше, чем 21 000 газа по умолчанию. Это связано с тем, что интеллектуальные контракты ICO обладают гораздо более сложными кодами и требуют гораздо больших вычислений, чем простой перенос ETH. Обычно около 200–300 тысяч Gas.
Ограничение газа — лимит — действует как механизм безопасности, чтобы защитить вас от полного растрачивания средств из-за каких-либо ошибок.
Уже ставший классическим пример для лимита газа — бак автомобиля, расчитанный на определенный объем топлива.
Рассчитываться комиссия за транзакцию в сети Эфириум будет по следующей формуле:
Например, на текущий момент классические цены таковы:
- 21010 Gas тратится,
- цена за единицу газа 6 Gwei, или 0,000000006 ETH,
- всего на транзакцию потребуется выделить 126060 Gwei, или 0,00012606 ETH.
Рекомендуемые цены на газ (исходя из текущих условий сети):
- для транзакции с низким приоритетом (до 30 минут) — 1 Gwei
- стандартное время проведения (до 5 минут) — 3 Gwei
- высокий приоритет, транзакция в следующем блоке (меньше 2 минут) — 6 Gwei
Цену пользователь назначает самостоятельно, но часто все доверяют настройкам по умолчанию в кошельке. Иногда цену можно уменьшить, если транзакцию не нужно проводить очень срочно. Безопасная самая низкая цена на июнь 2022 указана выше.
Чтобы еще уменьшить комиссию за транзакцию в Ethereum, можно выставить цену за 1 gas в районе 1–2 wei (самая маленькая часть Ether). Пока мемпул не перегружен и блоки не заполнены под завязку (максимально вмещают 6 700 000 gas), такую транзакцию тоже могут забрать. Но это можно быть рисковано. Кроме того, в MyEtherWallet и официальном клиенте нельзя выставить цену ниже 1Gwei через ползунок. В MEW способ работает при «Оффлайн-переводе».
EthGasStation предназначена для повышения прозрачности цен на газ, там можно посмотреть все актуальные данные по газу и транзакциям в сети Ethereum. Этот сайт помогает установить актуальную рыночную цену за единицу газа и не переплачивать.
Находится по адресу ethgasstation.info
Транзакции будут обрабатываться майнерами до тех пор, пока у вас не исчерпан газ. Блокчейн будет записывать транзакцию как «Failed», и ETH останется в кошельке, поскольку для завершения перевода недостаточно газа.
Газ, использованный для неудавшейся транзакции, останется у майнеров, и вы НЕ получите его обратно. Это объясняется тем, что ресурсы на выполнение перевода тратились.
Чтобы исправить транзакцию с низким количеством газа, нужно дождаться ее невыполнения и провести заново, указав правильный лимит. К сожалению, повысить лимит в процессе уже нельзя.
Еще раз:
- указывать лимит газа нужно с запасом,
- различные операции будут по-разному тратить газ,
- майнеры не будут обрабатывать перевод по исчерпании лимита,
- оставшийся после транзакции газ возвращается.
Запуск смарт-контрактов в сети стоит дороже, поскольку они выполняют различные действия. Каждый смарт-контракт разрабатывается индивидуально и адаптируется под нужды проекта. Например, для элитного проекта можно позволить цену за газ в $5, а для какого-нибудь мессенджера — нет.
Существуют две основные издержки, связанные с отправкой и выполнением транзакции Ethereum:
- Стоимость исполнения,
- Стоимость сделки.
Стоимость исполнения в первую очередь связана с хранением глобальных переменных и вычислительной мощностью, используемой для расчетов.
Вот цены за разные операции:
- Добавить или вычесть два целых числа 3 gas
- Умножить или разделить два целых числа 5 gas
- Сравнить два целых числа 3 gas
- Создать новый контракт 32000 gas
- Сохранение 256-битного слова 20000 gas
- Сохранить 1 МБ (31250 256-битных слова) 625000000 gas
- Отправить 1 транзакцию 21000 gas
- Включить 1 байт (не нуль) в данные транзакции 68 gas
- Включить 1 МБ в данные транзакции 68000 gas
- Развертывание контракта (первый раз) ~ 32 000 gas
- Затраты на ввод транзакций (общие) ~ 4 для 0-байтовых и 64 для не-0 байтовых входов
- Стоимость транзакций по контракту ~ 32 000 gas
Также по отдельным операциям:
Хорошо написанный контракт, скорее всего, переместит максимум вычислений за пределы цепи.
Общий размер смарт-контракта будет играть роль в размере комиссии. Если вы можете разделить контракт на более мелкие отдельные части, это снизит расходы на газ при взаимодействии с ними.
Самая дорогая операция с точки зрения газа — хранение. Хранение больших объемов данных в блокчейне обычно не используется: чаще сохраняют только хеш. И сокращают код:
string STATUS = ‘unknown status’; —>uint STATUS = 0; //T
Также нужно удалить столько дублирования внутри структур, сколько возможно.
Разработчики должны знать эти затраты и проектировать dApps с их учетом.
Принцип работы у ETC с газом у этого форка остался такой же, как и у оригинальной цепи.
Каждой операции в EVM было присвоено определенное количество газа, которое он потребляет. gasUsed — сумма всего газа для всех выполненных операций. Существует таблица, которая дает представление о некоторых ценах. Для Классика:
Для оценки gasUsed существует API-интерфейс — evaluationGas.
Он имитирует попадание транзакции в текущий блок. Но также не может гарантировать точных расчетов, только примерные затраты.
Кроме эфира, GAS используется в сети Нео. Но тут у него другая концепция и принципиальные отличия:
- это отдельный токен,
- торгуется на бирже самостоятельно,
- можно получить за хранение NEO в определенных кошельках.
Посчитать свои дивиденды можно с помощью этого калькулятора https://neotogas.com/
GAS также используется для проведения смарт-контрактов внутри сети. Он является операционным токеном. Его цена не высчитывается из НЕО, а существует сама по себе.
В экосистеме NEO одноименный токен используется для управления. В сети алгоритм консенсуса dBFT. Монеты дают право голоса.
GAS перечисляется с каждым новым блоком. Точнее не целый токен, а его часть.
NeoGas генерируется каждые ~20 секунд в количестве 8 штук. Все они распределяются между держателями NEO на этот момент времени.
Через 2 млн блоков количество газа уменьшается на 1 токен.
В DigixDAO для управления системой используются DGD, а основной токен для покупки — DGX
IGNT используется для «доказательства членства» в Ignite и продавался на ICO. Но им нельзя торговать, он используется для управления и участия в рейтинге. А токен IGNITEX торгуется на бирже и доступен для обмена вне системы.
Power Ledger использует POWR и Sparkz: один токен привязан к фиату, используется для транзакций, а другой используется внутри платформы.
MintHealth выплачивает VIDA как вознаграждение, внутренние баллы лояльности, а токены MHST позиционируются как акции, через который привлекают капитал в проект.
Больше гайдов, новостей и обзоров на нашем сайте и каналах:
Telegram / ВКонтакте / Twitter!
Ethereum Classic
Принцип работы у ETC с газом у этого форка остался такой же, как и у оригинальной цепи.
Каждой операции в EVM было присвоено определенное количество газа, которое он потребляет. gasUsed — сумма всего газа для всех выполненных операций. Существует таблица, которая дает представление о некоторых ценах. Для Классика:
Для оценки gasUsed существует API-интерфейс — evaluationGas.
Он имитирует попадание транзакции в текущий блок. Но также не может гарантировать точных расчетов, только примерные затраты.
NEO Block GAS
Кроме эфира, GAS используется в сети Нео. Но тут у него другая концепция и принципиальные отличия:
- это отдельный токен,
- торгуется на бирже самостоятельно,
- можно получить за хранение NEO в определенных кошельках.
Посчитать свои дивиденды можно с помощью этого калькулятора https://neotogas.com/
GAS также используется для проведения смарт-контрактов внутри сети. Он является операционным токеном. Его цена не высчитывается из НЕО, а существует сама по себе.
В экосистеме NEO одноименный токен используется для управления. В сети алгоритм консенсуса dBFT. Монеты дают право голоса.
GAS перечисляется с каждым новым блоком. Точнее не целый токен, а его часть.
NeoGas генерируется каждые ~20 секунд в количестве 8 штук. Все они распределяются между держателями NEO на этот момент времени.
Через 2 млн блоков количество газа уменьшается на 1 токен.