Подробное описание EIP-7706 и новейшего механизма Ethereum Gas
Автор оригинала : @Web3 Марио
Введение : Виталик выпустил предложение EIP-7706 13 мая 2024 года, предлагая дополнительное решение к существующей модели Gas, разделяя расчет газа calldata и настраивая механизм ценообразования базовой платы, аналогичный газу Blob, чтобы еще больше снизить эксплуатационные расходы L2. Соответствующие предложения необходимо проследить до EIP-4844, предложенного в феврале 2022 года, что было давно. Поэтому я проконсультировался с соответствующими материалами и надеюсь сделать резюме последнего механизма Ethereum Gas, чтобы все могли быстро понять.
В настоящее время поддерживаются модели Ethereum Gas — EIP-1559 и EIP-4844.
В первоначальном проекте Ethereum использовал простой аукционный механизм для ценообразования комиссий за транзакции, который требовал от пользователей активного участия в торгах за свои собственные транзакции, то есть установления цены на газ. Обычно, поскольку комиссии за транзакции, выплачиваемые пользователями, будут принадлежать майнерам, майнеры будут определять порядок упаковки транзакций в соответствии с принципом экономической оптимальности и ценой предложения. Обратите внимание, что это игнорирует MEV. В то время основные разработчики считали, что этот механизм сталкивается со следующими четырьмя проблемами:
-
Несоответствие между волатильностью уровней комиссий за транзакции и консенсусной стоимостью транзакций: для активных блокчейнов существует достаточный спрос на упаковку транзакций, что означает, что блоки могут быть легко заполнены, но это часто также означает, что общая волатильность комиссий чрезвычайно велика. Например, когда средняя цена газа составляет 10 Gwei, предельная стоимость принятия сетью другой транзакции в блоке в 10 раз больше, чем когда средняя цена газа составляет 1 Gwei, что неприемлемо.
-
Ненужные задержки для пользователей: из-за жесткого ограничения по газу на блок и естественных колебаний исторического объема транзакций транзакции часто ждут несколько блоков, прежде чем будут включены, что неэффективно для сети в целом; т. е. отсутствует механизм релаксации, который позволяет одному блоку быть больше, а следующему меньше, чтобы компенсировать разницу в спросе от блока к блоку.
-
Неэффективное ценообразование: Простой механизм аукциона приводит к низкой эффективности в определении справедливой цены, что означает, что пользователям сложно дать разумную цену. Это означает, что во многих случаях пользователи платят высокие сборы.
-
Блокчейн без вознаграждений за блоки будет нестабилен: когда вознаграждения за блоки, получаемые в результате майнинга, отменяются и принимается модель чистых комиссий, это может привести к большой нестабильности, например, стимулированию майнинга родственных блоков, которые крадут комиссии за транзакции, открывая более мощные векторы атак корыстного майнинга и т. д.
До предложения и внедрения EIP-1559 модель Gas имела свою первую итерацию. EIP-1559 был предложен Виталиком и другими основными разработчиками 13 апреля 2019 года и был принят в обновлении London 5 августа 2021 года. Этот механизм отказывается от механизма аукциона и принимает модель двойного ценообразования базовой платы и приоритетной платы, в которой базовая плата будет количественно рассчитываться с помощью установленной математической модели, основанной на взаимосвязи между потреблением газа, сгенерированным в родительском блоке, и плавающей и рекурсивной целью газа. Интуитивный эффект заключается в том, что если потребление газа в предыдущем блоке превышает заранее определенную цель газа, базовая плата будет увеличена, а если оно меньше цели газа, базовая плата будет снижена. Это может лучше отражать соотношение спроса и предложения и сделать прогноз разумного газа более точным, чтобы избежать заоблачных цен на газ, вызванных неправильной работой, поскольку расчет базовой платы напрямую определяется системой, а не свободно указывается пользователем. Конкретный код выглядит следующим образом:
Видно, что когда parent_gas_used больше parent_gas_target, базовая комиссия текущего блока будет сравниваться с базовой комиссией предыдущего блока плюс значение смещения. Значение смещения — это максимальное значение parent_base_fee, умноженное на смещение общей комиссии за газ предыдущего блока относительно цели газа и модуля цели газа и константы и 1. Логика аналогична в противоположном случае.
Кроме того, плата Base больше не будет распределяться среди майнеров в качестве вознаграждения, а будет уничтожена напрямую, так что экономическая модель ETH находится в дефляционном состоянии, что способствует стабильности стоимости. С другой стороны, плата Priority эквивалентна вознаграждению, которое пользователи дают майнерам, которое может быть оценено свободно, что в определенной степени позволяет повторно использовать алгоритм сортировки майнеров в определенной степени.
По мере приближения 2021 года разработка Rollup постепенно улучшается. Мы знаем, что и OP Rollup, и ZK Rollup означают, что некоторые данные проверки после сжатия данных L2 необходимо загрузить в цепочку через calldata для достижения доступности данных (Data Available) или напрямую передать в цепочку для проверки. Это заставляет эти решения Rollup сталкиваться с большими расходами на газ при поддержании окончательности L2, и эти расходы в конечном итоге будут переложены на пользователей. Поэтому стоимость использования большинства протоколов L2 в то время была не такой низкой, как предполагалось.
В то же время Ethereum также сталкивается с дилеммой конкуренции за пространство блоков. Мы знаем, что каждый блок имеет Gas Limit, что означает, что общее потребление Gas всех транзакций в текущем блоке не может превышать это значение. Согласно текущему Gas Limit в 30000000, существует теоретический предел в 30 000 000 / 16 = 1 875 000 байт, где 16 означает, что EVM необходимо потреблять 16 единиц Gas для обработки каждого байта calldata, что означает, что максимальный размер данных, который может переносить один блок, составляет около 1,79 МБ. Данные, связанные с Rollup, генерируемые сортировщиком L2, обычно имеют большой размер, что вызывает конкуренцию с подтверждением транзакций других пользователей основной цепи, что приводит к меньшему количеству транзакций, которые могут быть упакованы в один блок, что, в свою очередь, влияет на TPS основной цепи.
Чтобы решить эту дилемму, основные разработчики предложили предложение EIP-4844 5 февраля 2022 года, и оно было реализовано после обновления Dencun в начале второго квартала 2024 года. В предложении предлагался новый тип транзакции, называемый Blob Transaction. По сравнению с традиционным типом транзакции, основная идея Blob Transaction заключается в добавлении нового типа данных, а именно данных Blob. В отличие от типа calldata, данные Blob не могут быть доступны напрямую EVM, а только к их хешу, также известному как VersionedHash. Кроме того, есть два сопутствующих дизайна. Во-первых, по сравнению с обычными транзакциями цикл GC транзакций Blob короче, что гарантирует, что данные блока не будут слишком раздуты. Во-вторых, данные Blob имеют собственный механизм Gas. Общий эффект аналогичен EIP-1559, но в математической модели выбрана естественная экспоненциальная функция, чтобы сделать ее более устойчивой при работе с колебаниями масштаба транзакции, поскольку наклон естественной экспоненциальной функции также является естественной экспоненциальной функцией. Это означает, что независимо от того, в каком состоянии находится масштаб транзакций сети в данный момент, когда масштаб транзакций стремительно растет, базовая плата blob gas будет реагировать более полно, тем самым эффективно сдерживая активность транзакций. В то же время функция также имеет важную особенность. Когда горизонтальная ось равна 0, значение функции равно 1.
базовая_комиссия_за_газ_blob = МИН_БАЗОВАЯ_КОЛИЧЕСТВО_ЗА_ГАЗ_BLOB * e**(избыточная_комиссия_blob / ОБНОВЛЕНИЕ_ДОЛИ_БАЗОВОГО_КОЛИЧЕСТВА_BLOB)
Среди них MIN_BASE_FEE_PER_BLOB_GAS и BLOB_BASE_FEE_UPDATE_FRACTION — две константы, а избыточная_блоб_газ определяется разницей между общим потреблением газа блоба в родительском блоке и константой TARGET_BLOB_GAS_PER_BLOCK. Когда общее потребление газа блоба превышает целевое значение, то есть разница положительная, e**(excess_blob_gas / BLOB_BASE_FEE_UPDATE_FRACTION) больше 1, то базовая_фишка_за_блоб_газ увеличивается, в противном случае она уменьшается.
Таким образом, некоторые сценарии, которые хотят использовать только возможности консенсуса Ethereum для хранения определенных крупномасштабных данных для обеспечения доступности, могут быть выполнены с низкими затратами, не сжимая емкость упаковки транзакций блока. Если взять сортировщик Rollup в качестве примера, ключевая информация L2 может быть инкапсулирована в данные blob через транзакцию blob, а логика проверки в цепочке может быть реализована через versionedHash посредством сложной конструкции в EVM.
Следует отметить, что текущие настройки TARGET_BLOB_GAS_PER_BLOCK и MAX_BLOB_GAS_PER_BLOCK накладывают ограничение на основную сеть, а именно цель в 3 блоба (0,375 МБ) на блок и ограничение в 6 блобов (0,75 МБ) на блок. Эти начальные ограничения призваны минимизировать нагрузку на сеть, вызванную этим EIP, и, как ожидается, будут увеличиваться в будущих обновлениях, поскольку сеть демонстрирует надежность с большими блоками.
Дальнейшее уточнение модели потребления газа в среде исполнения – EIP-7706
После уточнения текущей модели Ethereum Gas давайте рассмотрим цели и детали реализации предложения EIP-7706. Предложение было предложено Виталиком 13 мая 2024 года. Подобно данным Blob, это предложение удаляет модель Gas, соответствующую другому специальному полю данных, которое называется calldata. И оптимизирует соответствующую логику реализации кода.
В принципе, логика расчета базовой платы calldata такая же, как и базовая плата за данные blob в EIP-4844. Оба используют экспоненциальную функцию и вычисляют коэффициент масштабирования текущей базовой платы на основе отклонения между фактическим значением потребления газа в родительском блоке и целевым значением.
Стоит отметить, что существует новый дизайн параметра, LIMIT_TARGET_RATIOS=[2, 2, 4], где LIMIT_TARGET_RATIOS[0] представляет целевое отношение класса операции выполнения Gas, LIMIT_TARGET_RATIOS[1] представляет целевое отношение класса данных Blob Gas, а LIMIT_TARGET_RATIOS[2] представляет целевое отношение класса calldata Gas. Этот вектор используется для расчета целевых значений газа, соответствующих трем типам газа в родительском блоке. Логика расчета следующая, то есть используется LIMIT_TARGET_RATIOS для деления лимита газа:
Логика настройки gas_limits следующая:
gas_limits[ 0 ] должен соответствовать существующей формуле корректировки
gas_limits[ 1 ] должен быть равен MAX_BLOB_GAS_PER_BLOCK
gas_limits[ 2 ] должен быть равен gas_limits[ 0 ] // CALLDATA_GAS_LIMIT_RATIO
Мы знаем, что текущий gas_limits[ 0 ] равен 30000000, а CALLDATA_GAS_LIMIT_RATIO установлен на 4, что означает, что текущий целевой газ calldata составляет около 30000000 // 4 // 4 = 1875000. Согласно текущей логике расчета газа calldata, каждый ненулевой байт потребляет 16 Gas, а нулевой байт потребляет 4 Gas. Предполагая, что распределение ненулевых и нулевых байтов в определенном calldata составляет 50% каждый, в среднем требуется 10 Gas для обработки 1 байта calldata. Следовательно, текущий целевой газ calldata должен соответствовать 187500 байтам данных calldata, что примерно вдвое превышает текущее среднее использование.
Преимущество этого в том, что это значительно снижает вероятность достижения calldata предела газа, и посредством экономической модели использование calldata поддерживается на относительно постоянном уровне, а также предотвращает злоупотребление calldata. Причина такого дизайна заключается в устранении препятствий для разработки L2, а с данными blob стоимость сортировщика еще больше снижается.
Эта статья взята из интернета: Подробное описание EIP-7706 и новейшего механизма Ethereum Gas
По теме: Прогнозируется, что 3 оптимистичных альткоина превзойдут биткоин (BTC) в мае
Вкратце Binance Coin имеет все шансы стать одним из самых эффективных активов, учитывая его продолжающуюся консолидацию и близость к формированию нового ATH. PEPE, который уже отметил рост на 585% за последние три месяца, все еще может вырасти еще на 41%. Tron (TRX) только что предотвратил смертельный крест на дневном графике, предоставив ему пространство и возможность для дальнейшего роста. Bitcoin (BTC) является крупнейшей криптовалютой в мире, но порой даже альткоины могут превзойти показатели королевской монеты. BeInCrypto анализирует, какие три таких альткоина обладают потенциалом превзойти BTC в мае. Binance Coin (BNB) все еще в конкуренции Цена Binance Coin находится в консолидации более полутора месяцев, пытаясь закрыться выше $640. Однако альткоин не смог…