in

Что такое “газ” и как он влияет на цену транзакций эфира – подробная инструкция


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

Для начала вспомним о том, как выполняются транзакции в сети Bitcoin. Здесь все тривиально: скорость напрямую зависит от размера комиссии, которая измеряется в биткоинах же. Больше комиссия – быстрее выполняется транзакция, меньше – медленнее. Эта простота связана с тем, что биткоин – это первая криптовалюта, которая задумывалась как пиринговая (распределенная) платежная система. И только.

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

Такой распределенный “компьютер” действительно существует и называется “Ethereum Virtual Machine” (сокращенно – EVM), или виртуальная машина Ethereum. С помощью EVM можно выполнять абсолютно любые программы, написанные на каком-либо языке программирования (в частности, на специальном языке Solidity).

Этими программами могут быть смарт-контракты (алгоритмы, помогающие заключать автоматические сделки с криптовалютой) или вообще всё что угодно – вплоть до полноценных игр.

Если проще и понятнее, то Ethereum – это платформа, на которой можно выполнять любые программы. Однако если было бы позволено всем и каждому просто так выполнять любые программы в EVM, то сеть быстро бы перегрузилась и стала неэффективной. Как же справиться с этой проблемой? Легко – достаточно сделать выполнение таких программ платными, а в качестве оплаты брать тот самый газ.

Кстати, именно по этой причине программа-кошелек от разработчиков Ethereum и использует ощутимую часть ресурсов компьютера: она выполняет программы в виртуальной машине EVM.

Случаи использования газа

Рассмотрим основные операции, которые могут выполняться в сети Ethereum:

  • Перевод монет Ethereum, сокращенно – ETH
  • Создание программы или смарт-контракта, его запись в блокчейн
  • Выполнение программы или смарт-контракта.

Все эти операции – платные, оплачиваются они газом. И величина оплаты напрямую зависит от сложности этой операции.

Например, любой перевод монет ETH можно совершить за 21 000 газа. Если же говорить о создании и выполнении программ (смарт-контрактов) – то всё зависит от конкретного случая. Стоимость выполнения программы зависит от того, что она делает. Если она выполняет множество операций, цена будет существенной. При этом запись в блокчейн стоит во много раз дороже, чем та же математическая операция (скажем, сложение чисел).

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

Подробнее о транзакциях в Ethereum

Криптовалюта Ethereum
Криптовалюта Ethereum

Напомним, транзакция – это передача монеток ETH от одного владельца другому, или же выполнение программы или смарт-контракта в сети Ethereum.

Абсолютно любая транзакция в сети Ethereum должна содержать такие данные:

  • Адрес кошелька получателя
  • Сумма перевода
  • Лимит газа, или максимальное количество газа, которое отправитель готов заплатить за транзакцию
  • Дополнительная информация

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

Лимит газа необходим, чтобы не обанкротить человека, создавшего смарт-контракт, если он допустил какую-либо ошибку в своей программе. Представьте, что в результате ошибки программиста программа будет выполняться очень долго. В таком случае, с него должно будет списаться очень большое количество газа, возможно – все средства, что у него имеются. Если установлен лимит газа, можно избежать таких ситуаций.

При этом если в качестве лимита указано 100 000 газа, а для выполнения потребовалось 10 000, то списано будет только нужное количество газа. С другой стороны, если указан лимит в 100 000, а потребовалось всего лишь на единицу больше, то есть 100 001 газа, то весь он потратится и возвращён не будет. Грустно, но это правда. Поэтому за такими вещами необходимо следить.

Стоимость газа

Выше было много сказано о газе, но до сих пор ни слова о том, сколько стоит газ.

Для начала важно усвоить вот что: в эфире есть свои “копейки” (или “центы”, если вам угодно) – то есть мелкие части монеток ETH. Вот какие бывают части:

1 эфир (ETH) = 1000000000000000000 wei (вэй) = 1000000000 gigawei (гигавэй, то есть миллиард вэй) = 1000000 szabo (сабо) = 1000 finney (финни)

Примечание: такие странные названия связаны с тем, что дробные доли эфира названы в честь Вэй Дая (англ. Wei Dai), Хэла Финни (англ. Hal Finney) и Ника Сабо (англ. Nick Szabo). Все эти люди – важные персоны мира криптовалют.

Поскольку вэй – это ну очень маленькая часть монетки ETH, удобнее всего оперировать гигавэями – миллиардами вэев.

С этим разобрались, возвращаемся к газу.

Итак, цена газа… назначается владельцем эфира самостоятельно! Да, в зависимости от используемого вами кошелька, вы можете сами выбрать стоимость единицы газа в рамках определенного диапазона. Например, в кошельке MyEtherWallet вы можете указать стоимость 1 газа в рамках от 1 до 60 гигавэев.

Теперь пример. Если вы хотите переслать эфир с одного кошелька на другой, вам нужно заплатить фиксированную цену в 21 000 газа (об этом уже было упомянуто выше). Если вы укажете цену газа в 30 гигавэев, то за транзакцию вы заплатите 21 000 * 0.00000003 = 0.00063 ETH, что по нынешнему курсу равно где-то $ 0.7. Дорого? Вы всегда можете указать меньшую стоимость единицы газа. Только помните, что есть очередь транзакций, и первыми в этой очереди находятся те из них, которые имеют наибольшую комиссию.

Если вы новичок и не можете подобрать стоимость газа интуитивно, то воспользуйтесь сервисом ETH Gas Station. Он поможет вам с подбором.

Кстати, не выставляйте слишком большую цену на газ – в этом нет особого смысла! Транзакции в Ethereum выполняются куда быстрее, чем в сети Bitcoin. Некоторые этого не понимают и выставляют большую стоимость газа, о чем потом очень сильно жалеют. Например, в 2016 году один человек совершил транзакцию, заплатив в качестве комиссии 761 ETH. По курсу 2016 года это было около $6000, но если пересчитать размер комиссии, пользуясь современным курсом, она составила бы $927 500. Уму непостижимо!

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

Pending, или ожидание

Так как стоимость единицы газа в ряде программ-кошельков можно выставлять в широком диапазоне, это может сыграть с их владельцами злую шутку. Представьте, что вы выставили очень маленькую стоимость газа. Что произойдет в таком случае? Транзакция окажется в самом конце очереди, и будет обрабатываться долго. Если повезет – несколько часов, если не повезет – вплоть до нескольких недель!

Если вы прочитали это прежде, чем выставить цену газа, к примеру, в 1 Gwei, можно вас поздравить – вы избежали проблем. А вот если вы все-таки человек бережливый, то вы откроете для себя такое явление, как состояние транзакции под названием pending, или ожидание.

Чтобы объяснить, что такое pending, приведу пример.

Допустим, вы отправили транзакцию с маленькой стоимостью газа (1 Gwei) и поняли, что придется ждать целый день, пока она обработается. Затем вы решили, что это никуда не годится, и отправили такую же транзакцию, но с более высокой стоимостью газа.

В этом случае вас ждет неприятное открытие: все отправления с одного адреса, как правило, обрабатываются в порядке их отправки. То есть пока не дождется очереди отправки ваша самая “плохая” транзакция с низкой ценой газа, остальные транзакции не будут обработаны. Эта “плохая” транзакция называется запирающей – она как бы закрывает путь остальным транзакциям с адекватной ценой за единицу газа.

Что же делать, если возникла запирающая транзакция?

Транзакции Ethereum
Транзакции Ethereum

Начнем с того, что транзакции в сети Ethereum объединяются в блоки, и в рамках этого блока каждая из транзакций имеет уникальный номер, носящий название “nonce”. В случае, если будут отправлены две транзакции, имеющие одинаковое значение nonce, то обработается лишь одна из них, а другая будет удалена как некорректная.

Это позволяет использовать лазейку для удаления запирающей транзакции: мы выясняем nonce запирающей транзакции, увеличиваем стоимость единицы газа, а затем формируем и посылаем новую транзакцию с этими данными. Что произойдет в результате? Запирающая транзакция будет удалена, так как в обработку узлом сети будет принята та транзакция, которая имеет большую стоимость единицы газа. Проблема решена!

Но как это сделать на практике?

Myetherwallet.com
Myetherwallet.com

Необходимо будет воспользоваться возможностями сайта https://www.myetherwallet.com/, поскольку он позволяет устанавливать цену единицы газа вручную. Для удаления запирающей транзакции мы отправим “пустую” транзакцию (то есть сформируем новую транзакцию с высокой стоимостью газа и с нулевым количеством отправленных монет).

А алгоритм действий по удалению запирающей транзакции следующий:

1. Заходим на сайт etherscan.io, в поле “Address” вводим адрес, который использовался для отправки транзакции. Нажимаем на кнопку “Go”.

2. Отобразится список всех транзакций, выполненных с вашего кошелька. Кликаем по ссылке “pendingTxns”, чтобы показать только транзакции, находящиеся в состоянии ожидания (pending).

3. Список транзакций, имеющих статус ожидания, будет отображать в том числе и цену на газ, установленную для каждой из них. Запирающая транзакция в большинстве случаев является первой в списке. Чтобы посмотреть более подробные данные о транзакции, необходимо нажать на хэш транзакции (уникальное числовое значение), оформленный в виде ссылки.

4. Откроется подробное описание транзакции. Нам нужны два значения – nonce и from (адрес, с которого была отправлена транзакция). Копируем их.

5. Теперь нам нужно зайти по ссылке https://www.myetherwallet.com/#offline-transaction и совершить так называемую оффлайн-транзакцию. Все данные, которые скопировали в предыдущем шаге, мы будем вводить в поля на этой странице:

Итак, заполняем поля на сайте:

  • From Address – в этом поле указываем адрес, с которого была отправлена запирающая транзакция;
  • To Address – здесь указываем любой адрес
  • Gas price – тут указывается стоимость единицы газа. Поскольку нам нужно, чтобы запирающая транзакция удалилась быстрее, указываем цену чуть выше среднего – 30 GWei. Поскольку 1 GWei – это миллиард Wei, укажем в этом поле значение 30000000000.
  • Nonce – в этом поле укажем значение, которое скопировали в предыдущем шаге.
  • Value Amount – количество отправляемых монет. Здесь указываем 0, так как мы ничего не отправляем, а просто хотим удалить запирающую транзакцию.

6. Осталось разблокировать кошелек и послать транзакцию. После разблокировки кнопка “Generate Transaction” станет активной. Нажмите на нее, а затем – на кнопку “Send Transaction”.

7. Появится новое окно – в нем нажмите на кнопку “Yes, I am sure! Make transaction”.

Готово, после проделанных операций запирающая транзакция должна довольно быстро удалиться. За удалением можно наблюдать на сайте etherscan.io (введите там ваш адрес). Если у вас имеется несколько транзакций, в каждой из которых вы установили очень низкую стоимость единицы газа, то проделайте описанную процедуру с каждой из этих транзакций.

Источник: БитФин

«агрузка...

Добавить комментарий

Такой e-mail уже зарегистрирован. Воспользуйтесь формой входа или введите другой.

Вы ввели некорректные логин или пароль

Sorry that something went wrong, repeat again!

Дмитрий Медведев: криптовалюты исчезнут через несколько лет

Рост биткоина в 2013 году

Новое исследование подтвердило ответственность ботов MtGox за резкий рост цены биткоина в 2013 году