Что именно хранят пользователи в блокчейн сети при владении эфиром? В некотором смысле, они удерживают у себя способность выполнять вычисления в сети Ethereum. Такие вычисления выполняются децентрализованным способом:
«Майнер выполняет вычисление, связанное с каждой транзакцией, которая включается в блок, и такое вычисление заканчивается обновлённым состоянием блока. Успешно закончив обработку блока, майнер передаёт блок в сеть. Прежде чем принять блок как действительный, все остальные майнеры и узлы (которые не занимаются майнингом), проверяют достоверность проведённого транзакционного вычисления и полученного изменённого состояния блока, добавляют блок в свою копию блокчейна и переходят к следующему блоку».
Как видно, требуется невероятный избыточный объём вычислений даже для маленького количества обрабатываемой информации (маленького обрабатываемого события) в сети. А именно, каждый узел должен проверять результаты каждой транзакции — читай: каждый узел дублирует все вычисления.
Удивительно то, что, люди, даже независимо от опыта работы с блокчейн приложениями и зная вышеназванный факт, очень редко прямо говорят о нём, или вообще никогда не упоминают его. Как только люди касаются технической стороны дела, такое свойство блокчейн становится очевидной особенностью системы. Но если человек «менее посвящён», то такое свойство системы не и представляется ему столь очевидным. Закономерен вопрос: разве такой подход не является более затратным, например, по сравнению с обычными серверными вычислениями? Да, является, и характер протокола диктует именно такой затратный подход . Следующий постулат, вероятно, является основополагающим принципом экономики криптовалют и связанных с ними вычислений, или, того, и другого:
«Чем больше машин, обрабатывающих код, тем больше денежных затрат, уходящих на обработку кода».
Мы должны помнить, что выполнение кода и обновление состояния блока (-ов) на эфириуме происходит далеко не так же, как на простом сервере. Результирующие изменения состояния блока в сети эфириум имеют иные свойства, чем подобные же изменения, получаемые при помощи вычислений на сервере, а именно – свойства неизменяемости и публичной проверяемости. Давайте сначала посмотрим, сколько в действительности стоят вычисления в сети, а затем мы сможем попытаться решить, «стоит ли оно того».
Итак, сколько это стоит?
Газ
Все операции низкого уровня, доступные в EVM (виртуальная машина Ethereum), называются OPCODE. К ним относятся такие операции, как ADD — добавление двух целых чисел, BALANCE — получение баланса учётной записи, CREATE — создание нового контракта с предоставленным кодом, и др. Каждая из этих OPCODE имеет связанное (с соотв. операцией) число, называемое «газ». Газ — это абстрактное число, которое воплощает в себе относительную сложность операций. Например, операция ADD использует 3 газа, в то время как операция MUL (умножение двух целых чисел) использует 5 газов, поэтому MUL — сложнее, чем ADD.
Здесь собраны газы, необходимые для каждого OPCODE в EVM. Эта информация взята из самой последней версии «Yellow Paper» эфириума (EIP-150 Revision) — официальной спецификации протокола эфириум.
Важно отметить, что базовая стоимость всех транзакций — 21000 газов. Поэтому, если вы просто переводите средства и не взаимодействуете с контрактом, ваша транзакция обойдётся в 21000 газов. Если вы взаимодействуете с контрактом, ваша транзакция будет стоить 21000 газов плюс количество любых газов, связанных с выполнением контракта.
Цена газа
В то время как количество газа прикреплено к операции, сумма, оплачиваемая пользователем за единицу газа – цена газа — динамична и диктуется рыночными условиями. Цена газа — это значение, показывающее, сколько эфира пользователь готов заплатить за газ. Когда пользователь отправляет транзакцию, он указывает цену на газ в Gwei / Gas (1 Gwei равна 0,000000001 ETH), а сумма пошлины, которую он платит, равна произведению цены газа на количество использованного газа (gas_price * gas_used). Эта пошлина выплачивается майнерам, и поэтому они отдают предпочтение сделкам с более высокой ценой на газ. Чем выше цена за газ, которую пользователь готов заплатить, тем быстрее будет обрабатываться его транзакция.
ETH Gas Station является отличным ресурсом для понимания текущих условий газового рынка. Раздел «Рекомендуемые цены на газ для потребителя» (“Recommended User Gas Prices”) показывает диапазон цен на газ и ожидаемое время транзакций.
Сколько это стоит в действительности?
Стоимость операции в эфириуме вычисляется как gas_price * gas_used, но как это перевести в эфир и доллары? Здесь таблица некоторых примерных операций и связанных с ними расходов по текущей срединной цене на газ (28 Gwei) и текущему обменному курсу USD / ETH ($295 / ETH).
Каждая строка показывает:
- задачу и требуемое количество газа для выполнения;
- затраты на выполнение задачи в ETH и в USD;
- количество задач, приходящихся на 1 ETH и $1;
- количество задач, приходящихся на каждый блок;
- количество блоков для завершения этой задачи.
Сложение чисел
Ниже приведен пример из таблицы, показывающей затраты, связанные со сложением или вычитанием двух целых чисел.