Gas в сети ethereum - условная величина, определяющая стоимость выполнения кода транзакций, запущенных пользователями. Исчисляется в Gwei (доля ETH, равная 0.000000001 ETH). Является инструментом защиты сети от бесконечно выполняющегося кода. Служит источником криптовалюты для оплаты комиссий майнерам.
Общая теория
Для каждой транзакции в сети эфириума рассчитывается показатель Gas. Он отображает размер комиссии, необходимый для оплаты пользователем, запустившим функцию смарт контракта на выполнение. Не зависимо от функции, будь то перевод ETH или токенов, или выполнение бизнес логики, объём уплачиваемой комиссии определяется сложностью вычислительных процессов для выполнения функции.
Не все функции смарт контрактов платные:
- бесплатные - функции чтения состояния. Не требуют обращения к другим копиям блокчейна, помимо той, на которой была запущена функция чтения. Выполняются очень быстро и не расходуют много вычислительных мощностей. Используются для получения состояния значений параметров тех или иных смарт контрактов.
- платные - функции с записью данных в блокчейн. Требуют процессорного времени на выполнения проверок многими майнерами на различных копиях блокчейна. В качестве вознаграждения майнерам за работу такие функции забирают комиссию с автора транзакции и передают её майнерам.
Общие правила расчёта Gas в сети Ethereum
При формировании транзакции пользователи оперируют двумя понятиями - GAS Limit и Gas value. первый обозначает предел допустимого объёма газа, который готов оплачивать пользователь за выполнение вызова функции. Второй - стоимость единицы газа. Здесь необходимы пояснения по поводу того почему пользователь не владеет точной информацией о стоимости выполнения транзакции.
Прежде всего, выполняемый код функции может формировать различные динамические конструкции в сети, порождая новые контракты, обращаясь к функциям других контрактов и т.д. На момент написания контракта невозможно достоверно и точно определить сколько вычислений всегда будет требовать та или иная функция. Точно это определяется в момент выполнения.
По поводу стоимости - чем более высокую стоимость задаст пользователь при вызове функции, тем с большей вероятностью его транзакция выполнится майнерами ранее остальных транзакций сети. Если в спокойном состоянии сети эфириума это не особенно важно, и можно задавать минимальную стоимость, то при всплесках активности, например, при громких ICO или сильных дампах и пампах курса на биржах, увеличение комиссии поднятием стоимости GAS может помочь увеличить скорость транзакции.