Как были выбраны затраты на газ для инструкций Ethereum Virtual Machine?

Различные инструкции EVM имеют разные затраты на попутный газ - вы можете посмотреть список цен на газ в приложение G желтой бумаги .

В то время как грубые величины этих чисел выглядят вполне разумно, точные значения по-прежнему выглядят так, как будто они были выбраны несколько произвольно. С другой стороны, некоторые значения выглядят странно специфическими. Есть ли более глубокая причина для выбора этих точных значений?

35 голосов | спросил Kostya 20 Jpm1000000pmWed, 20 Jan 2016 20:38:08 +030016 2016, 20:38:08

3 ответа


25

Я поделился с вами таблицей , которая объясняет формулу стоимости газа каждого OPCODE .

Версия 1.0 была создана Core Devs для Ethereum. Я с нетерпением жду, как сформулировать будущие обновления. Это решение метаконференции для решения.

ответил Jmiehau 21 Jam1000000amThu, 21 Jan 2016 01:12:21 +030016 2016, 01:12:21
8

Общая стоимость транзакции, которая создает контракт или выполняет контракт, основана на двух факторах:

gasUsed - это общий газ, который потребляется

gasPrice, указанный в транзакции

Total cost = gasUsed * gasPrice

gasUsed

Каждой операции в EVM было назначено количество того, сколько газа он потребляет. gasUsed суммирует весь газ для всех выполненных операций. Существует таблица , которая позволяет увидеть некоторые из них.

Для оценки gasUsed существует API оценки Gas, который можно использовать, но имеет некоторые оговорки .

gasPrice

Пользователь создает и подписывает транзакцию, и каждый пользователь может указать любой желаемый gasPrice, который включает нуль. Тем не менее, клиенты Ethereum, запущенные на Frontier, имели цену по умолчанию в размере 0,05e12 wei. Поскольку майнеры оптимизируют свои доходы, если большинство транзакций передаются с газовой ценностью 0,05e12 вей, было бы трудно убедить шахтера принять транзакцию, которая указывала бы более низкую или нулевую цену газа. Как был выбран вариант по умолчанию в этом вопросе .

Пример

Давайте возьмем контракт, который просто добавляет 2 числа. Из таблицы выше ADD потребляется 3 газа.

Ориентировочная стоимость с использованием цены на газ по умолчанию будет:

3 * 0,05e12 = 1,5e11 wei

Так как 1 Ether равен 1e18 wei, общая стоимость будет равна 0,00000015 Ether.

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

ответил eth 2 FebruaryEurope/MoscowbTue, 02 Feb 2016 02:22:59 +0300000000amTue, 02 Feb 2016 02:22:59 +030016 2016, 02:22:59
3

Каждая инструкция в виртуальной машине Ethereum имеет стоимость, измеренную в единицах газа. Таблица таких затрат для каждой инструкции называется «График оплаты» и является приложением в желтой бумаге Ethereum (в будущем это может измениться). Единственный способ определить (в общем), сколько газа может потребовать определенный призыв к контракту, - это запустить его (не обязательно на блок-цепочке, а в «локальном симуляторе»). Однако, если код контракта взаимодействует с состоянием блочной цепи (например, с использованием инструкций BLOCKHASH, TIMESTAMP, BALANCE), выполнение не может быть точно смоделировано. Поэтому в некоторых случаях реальная стоимость исполнения будет известна только тогда, когда транзакция будет включена в блок. Вот почему вы можете попытаться оценить верхнюю границу того, сколько газа потребуется, и отправить достаточно эфира с транзакцией. Потому что, если этого недостаточно, транзакция завершается сбоем «Исходя из газа», и эфир не возвращается.

ответил Alexey Akhunov 2 FebruaryEurope/MoscowbTue, 02 Feb 2016 02:30:30 +0300000000amTue, 02 Feb 2016 02:30:30 +030016 2016, 02:30:30

Похожие вопросы

Популярные теги

security × 330linux × 316macos × 2827 × 268performance × 244command-line × 241sql-server × 235joomla-3.x × 222java × 189c++ × 186windows × 180cisco × 168bash × 158c# × 142gmail × 139arduino-uno × 139javascript × 134ssh × 133seo × 132mysql × 132