Многомерное ценообразование газа

Продвинутый
Ethereum
Последнее обновление 04-11-2026 07:54:11
Время чтения: 1m
Долгое время проявляли интерес к концепции многомерного газа, и с EIP-4844 у нас фактически есть работающий многомерный газ на Ethereum сегодня. В этом посте исследуются преимущества этого подхода и перспективы его дальнейшего увеличения.

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

  • Сырые вычисления (например, ADD, MULTIPLY)- Чтение и запись в хранилище Ethereum (например, SSTORE, SLOAD, ETH-переводы)- Пропускная способность данных- Стоимость генерацииZK-SNARK доказательствоблокНапример, эта транзакциячто я отправил, стоит в общей сложности 47 085 газа. Это разделено между (i) «базовая стоимость» в размере 21000 газа, (ii) 1556 газа за байты в вызываемых данных, включенных в транзакцию (iii) 16500 газа для чтения и записи в хранилище, (iv) газ 2149 за созданиежурнал, и остальное для выполнения EVM. Комиссия за транзакцию, которую пользователь должен заплатить, пропорциональна газу, который потребляет транзакция. Блок может содержать максимум 30 миллионов газа, и цены на газ постоянно корректируются через @vbuterin/eip-1559-faq">Механизм целевой настройки EIP-1559, обеспечивающий, что в среднем блоки содержат 15 миллионов Газ.

Этот подход имеет одно основное преимущество: поскольку все сливается в один виртуальный ресурс, это приводит к очень простому дизайну рынка. Оптимизация транзакции для минимизации издержек проста, оптимизация блока для сбора максимальных возможных сборов относительно легкая (не включаяMEV) и нет никаких странных стимулов, которые могли бы поощрять объединение некоторых транзакций с другими для экономии на комиссиях.

Но этот подход также имеет одну основную неэффективность: он рассматривает различные ресурсы как взаимозаменяемые, когда фактические ограничения того, что сеть может обработать, не соблюдаются. Один из способов понять эту проблему - посмотреть на эту диаграмму:

Лимит газа налагает ограничение

𝑥1∗𝑑𝑎𝑡𝑎+𝑥2∗компутация- Транзакции, которые сильно зависят от одного ресурса, все еще необоснованно облагаются большим количеством, даже если все остальные транзакции в блоке используют мало этого ресурса.- Он создает стимулы для слияния данных и транзакций с вычислениями в один пакет для экономии затрат.Я бы возражал, что правило в стиле EIP-7623, как для данных транзакции, так и для других ресурсов, может принести достаточно большие преимущества, чтобы оправдать это даже несмотря на эти недостатки. Однако, если и когда мы готовы приложить (значительно большие) усилия по разработке, есть более идеальный подход.

Многомерный EIP-1559: более сложная, но идеальная стратегияДавайте сначала кратко рассмотрим, как работает «обычный» EIP-1559. Мы сосредоточимся на версии, которая была представлена в EIP-4844 для блобов, потому что она математически более элегантна.

Мы отслеживаем параметр, excess_blobs. Во время каждого блока мы устанавливаем:

избыточные_блобы EIP-1559 вернулся в 2020 году. С EIP-4844 у нас теперь есть две отдельно фиксированные цены на газ и на блобы.

Базовая плата за газ за один час 2024-05-08 года, в гвей. Источник: ultrasound.money.

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

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

Для строителей блоков, в большинстве случаев оптимальная стратегия такая же, как и сегодня: включить всё, что действительно. Большинство блоков не полные - ни в газенив каплях. Одним из сложных случаев является ситуация, когда достаточно газа или достаточно блобов, чтобы превысить лимит блока, и строителю потенциально придется решить Многомерная ранцевая задачадля максимизации своей прибыли. Однако даже там существуют довольно хорошие приближенные алгоритмы, и выгоды от создания собственных алгоритмов для оптимизации прибыли в этом случае намного меньше, чем выгоды от того же самого сделать с MEV.

Для разработчиков основной вызов заключается в необходимости переработки функций EVM и окружающей инфраструктуры, которые сегодня разработаны вокруг одной цены и одного лимита, в дизайн, который учитывает несколько цен и несколько лимитов. Одной из проблем для разработчиков приложений является то, что оптимизация становится немного сложнее: в некоторых случаях нельзя однозначно сказать, что A эффективнее B, потому что если A использует больше calldata, а B использует больше выполнения, то A может быть дешевле, когда calldata дешев, и дороже, когда calldata дорог. Однако разработчики всё равно смогут получить разумно хорошие результаты, оптимизируясь на основе длительного исторического среднего уровня цен.

Многомерное ценообразование, EVM и подвызовыЕсть одна проблема, которая не возникала с блобами и не возникнет с EIP-7623 или даже с «полной» многомерной реализацией ценообразования для calldata, но возникнет, если мы попытаемся отдельно ценообразовать доступ к состоянию или любой другой ресурс: газовые лимиты при подвызовах.

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

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

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

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

Мы можем подумать о решении в стиле "EIP-7623" для этой проблемы. Вот одна простая реализация: во время выполнения увеличьте стоимость операций с хранилищем в 4 раза; для упрощения анализа давайте скажем, что 10000 газа за операцию с хранилищем. По окончании транзакции вернуть min(7500 * операции_с_хранилищем, газ_выполнения). Результатом будет то, что после вычета возврата пользователю будет начислено:

execution_Газ + 10000 storage_operations - min(7500операции хранения, выполнение Газ)

Который равен:

max(execution_gas + 2500операции хранения, 10000storage_operations)

Это отражает структуру EIP-7623. Другой способ сделать это - отслеживать storage_operations и execution_gas в реальном времени и взимать плату в размере 2500 или 10000 в зависимости от того, сколько max(execution_gas + 2500Операции хранения, 10000Потребление газа (storage_operations) увеличивается в тот момент, когда вызывается опкод. Это позволяет избежать необходимости перераспределения газа в транзакциях, поскольку большая часть его будет возвращена через возвратные средства.

У нас нет тонкой настройки разрешений для подвызовов: подвызов может потреблять всю "квоту" транзакции для дешевых операций хранения. Но у нас есть достаточно хорошее решение, где контракт, делающий подвызов, может установить ограничение и гарантировать, что после завершения подвызова у основного вызова все еще будет достаточно газа для выполнения всех пост-обработок, которые ему нужны.

Самое простое «полное многомерное решение ценообразования», о котором я могу подумать, - это то, что мы рассматриваем пределы газа для подвызовов как пропорциональные. То есть, предположим, что есть

𝑘

различные типы исполнения, и каждая транзакция устанавливает многомерный предел

𝐿1…𝐿𝑘

Предположим, что на текущем этапе выполнения остался газ

𝑔1…𝑔𝑘

Предположим, что вызывается операция CALL, с лимитом газа для подвызова

𝑆

. Пусть

𝑠1=𝑆

, и затем

𝑠2=𝑠1𝑔1∗Газ2

,

𝑠3=𝑠1𝑔1∗𝑔3

, и так далее.

То есть мы рассматриваем первый тип газа (реалистично, выполнение VM) как своего рода привилегированный "единицу учета", а затем назначаем другие типы газа так, чтобы подвызов получал тот же процент доступного газа по каждому типу. Это несколько некрасиво, но это максимизирует обратную совместимость. Если мы хотим сделать схему более "нейтральной" между различными типами газа, за счет жертвы обратной совместимости, мы могли бы просто иметь параметр ограничения газа подвызова, представляющий собой дробь (например, [1...63] / 64) оставшегося газа в текущем контексте).

В любом случае, однако, стоит подчеркнуть, что как только вы начинаете вводить многомерный выполнение газа, врожденный уровень уродства увеличивается, и это кажется трудным избежать. Следовательно, наша задача состоит в том, чтобы сделать сложный компромисс: мы принимаем ли немного больше уродства на уровне EVM, чтобы безопасно разблокировать значительные приросты масштабируемости L1, и если да, то какое конкретное предложение лучше всего подходит для экономики протокола и разработчиков приложений? Довольно вероятно, что ни одно из упомянутых мной выше предложений не является лучшим вариантом, и всё ещё есть возможность придумать что-то более элегантное и лучшее.

Отказ от ответственности:- Эта статья перепечатана из [[Виталик Бутерин]], Все авторские права принадлежат оригинальному автору [Виталик Бутерин]. Если есть возражения к этому повторному изданию, пожалуйста, свяжитесь с [Gate Learn](https://www.Gate.com/questionnaire/3967команда, и они решат это незамедлительно.- Отказ от ответственности: Взгляды и мнения, высказанные в этой статье, являются исключительно мнением автора и не являются инвестиционным советом.- Переводы статьи на другие языки выполняются командой Gate Learn. Если не указано иное, копирование, распространение или плагиат переведенных статей запрещены.

Пригласить больше голосов

sign up guide logosign up guide logo
sign up guide content imgsign up guide content img
Sign Up

Похожие статьи

В чем заключаются ключевые различия между Solana (SOL) и Ethereum? Сравнение архитектуры публичных блокчейнов
Средний

В чем заключаются ключевые различия между Solana (SOL) и Ethereum? Сравнение архитектуры публичных блокчейнов

В статье подробно анализируются ключевые отличия Solana (SOL) и Ethereum: архитектура, механизмы консенсуса, подходы к масштабированию и структура узлов. На основе этого формируется прозрачная и удобная для повторного использования методика сравнения публичных блокчейнов.
04-11-2026 08:11:26
Глубокий анализ токеномики stETH: как Lido распределяет доход от стейкинга и захватывает ценность
Новичок

Глубокий анализ токеномики stETH: как Lido распределяет доход от стейкинга и захватывает ценность

stETH — ликвидный токен стейкинга, выпускаемый Lido DAO (LDO). Он отражает застейканные активы ETH пользователя и доход от стейкинга в сети Ethereum, а также позволяет использовать эти активы в DeFi-экосистеме во время стейкинга. Токеномика Lido DAO основана на двух основных активах: stETH и LDO. stETH служит для получения дохода от стейкинга и поддержания ликвидности, а LDO обеспечивает управление протоколом и настройку ключевых параметров. Вместе эти активы формируют двухтокенную модель ликвидного стейкингового протокола.
04-11-2026 08:12:18
Какие ключевые элементы входят в протокол 0x? Подробный обзор архитектуры Relayer, Mesh и API
Новичок

Какие ключевые элементы входят в протокол 0x? Подробный обзор архитектуры Relayer, Mesh и API

0x Protocol формирует децентрализованную инфраструктуру для торговли на основе основных компонентов: Relayer, Mesh Network, 0x API и Exchange Proxy. Relayer отвечает за офчейн-рассылку ордеров, Mesh Network обеспечивает обмен ордерами, 0x API предоставляет единый интерфейс предложения ликвидности, а Exchange Proxy контролирует ончейн-исполнение сделок и маршрутизацию ликвидности. Вместе эти компоненты создают архитектуру, которая объединяет офчейн-распространение ордеров с ончейн-расчетом сделок. Благодаря этому Кошельки, DEX и DeFi приложения могут получать доступ к ликвидности из различных источников через единый интерфейс.
04-11-2026 08:12:49
Как функционирует система управления Lido DAO? Обзор роли токена LDO
Новичок

Как функционирует система управления Lido DAO? Обзор роли токена LDO

Lido DAO (LDO) — децентрализованная автономная организация, управляющая протоколом ликвидного стейкинга Lido. Держатели токенов LDO голосуют по параметрам протокола, стратегиям работы узлов и общему направлению развития экосистемы. Механизм управления Lido DAO как базовой инфраструктуры сектора ликвидного стейкинга напрямую определяет безопасность протокола, структуру дохода и долгосрочную траекторию роста.
04-11-2026 08:12:18
Pendle против Notional: сравнительный анализ DeFi-протоколов с фиксированным доходом
Средний

Pendle против Notional: сравнительный анализ DeFi-протоколов с фиксированным доходом

Pendle и Notional — ведущие протоколы в секторе фиксированного дохода DeFi. Каждый из них использует собственные механизмы для генерации дохода. Pendle реализует функции фиксированного дохода и торговли доходностью на основе модели разделения доходности PT и YT. Notional предоставляет возможность фиксировать ставки заимствования через торговую площадку кредитования с фиксированной процентной ставкой. Pendle оптимален для управления активами дохода и торговли процентными ставками, а Notional специализируется на кредитовании с фиксированной процентной ставкой. Оба протокола способствуют развитию рынка фиксированного дохода DeFi, отличаясь подходами к структуре продукта, дизайну ликвидности и целевой аудитории.
04-11-2026 08:12:37
0x Protocol против Uniswap: чем отличаются протоколы Книги ордеров от модели AMM?
Средний

0x Protocol против Uniswap: чем отличаются протоколы Книги ордеров от модели AMM?

Протоколы 0x Protocol и Uniswap предназначены для децентрализованной торговли активами, но реализуют разные торговые механизмы. 0x Protocol использует архитектуру офчейн книги ордеров с ончейн расчетами, агрегируя ликвидность из множества источников для создания инфраструктуры торговли для кошельков и DEX. Uniswap применяет модель Автоматизированного маркетмейкера (AMM), предоставляя ончейн обмен активов через пулы ликвидности. Основное отличие между ними — в способе организации ликвидности. 0x Protocol акцентирует внимание на агрегировании ордеров и эффективной маршрутизации сделок, что делает его оптимальным для базовой поддержки ликвидности приложений. Uniswap задействует пулы ликвидности, чтобы обеспечивать пользователям прямые услуги обмена, выступая надежной платформой для ончейн исполнения торговых операций.
04-11-2026 08:12:49