Часть III · Глава 21 из 43 · London

EIP-1559: рынок комиссий, который сам себя оценивает

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

Обновлено 23 июн. 2026 г. · 13 мин
Предполагается
  • газ
  • мемпул

Каждая транзакция платит за газ, который она сжигает, — но по какой цене за единицу газа? Первые шесть лет существования Ethereum ответом был аукцион, и это было мучительно: комиссии скакали в 10 раз за час, кошельки ошибались с оценкой, а хронической переплатой облагали всех по-тихому. EIP-1559 заменил это. С первого взгляда замена выглядит хитрой и немного произвольной — «базовая комиссия», магические 12,5%, сжигание, — так что не будем её зазубривать. Выведем её, начав с аукциона и исправляя именно то, что не так, шаг за шагом.

1 шаг Слепой аукцион

Проблема: все ставят вслепую

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

каждый называет цену · в блок берут наивысшую 100 gwei (you) 50 gwei 45 gwei 30 gwei 12 gwei 8 gwei топ-ставки заполняют блок остальные простаивают 100 gwei против 45 — переплата; нет заявленной цены, нет открытия цены
Аукцион первой цены: блок заполняется самыми высокими ставками. Поставишь слишком высоко — переплатишь (вы заплатили 100, чтобы обойти 45); поставишь слишком низко — транзакция просто зависнет. Клиринговую цену не знает никто.

Оба сбоя болезненны. Поставишь высоко для надёжности — отдашь намного больше, чем нужно (проклятие победителя). Поставишь низко, чтобы сэкономить, — просидишь в мемпуле часами. А поскольку клиринговую цену никто не видит, каждый кошелёк гадает по-своему, комиссии скачут от блока к блоку, а всплеск спроса превращается в паническую давку ставок. Аукцион не назначает цену ресурсу — он облагает всех налогом за право угадывать.

→ Шаг 2: пусть протокол объявляет цену.

2 шаг Объявленная цена

Объявляем одну цену — и пусть термостат её выставляет

Вот и ход. Вместо аукциона за минимальную цену протокол объявляет единую цену за газ, которую платит каждая транзакция в блоке — базовая комиссия Цена за единицу газа, которую протокол назначает каждый блок (а не участники торгов), одинаковая для всех в этом блоке, и сжигается, а не выплачивается предлагающему. EIP-1559. . Больше никаких торгов за нижнюю границу — вы читаете объявленную цену и платите её. Вся игра в угадайку закрытого аукциона за включение в блок исчезает.

Но это лишь сдвигает вопрос: кто выставляет базовую комиссию и откуда знает правильное число? Спрос меняется поминутно — любая фиксированная цена окажется неверной, а любой человек или оракул, назначающий её, становится мишенью для манипуляций. Хитрость в том, чтобы вообще не прогнозировать спрос, а реагировать на него простым контуром обратной связи — термостатом. Каждый блок смотрит, насколько заполненным был предыдущий блок, и подталкивает базовую комиссию к цели в половину заполнения: выше цели → повышаем; ниже → понижаем; с ограничением ±12,5% за блок, чтобы она никогда не дёргалась.

Интерактив

Симулятор базовой комиссии EIP-1559

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

demand— or click any block to change how full it is
5127gweitarget · 50%
base fee now44.87 gwei
burned / gas44.87 gwei
tip → proposer / gas2.00 gwei

The base fee isn't an auction — it's a controller. Each block, it moves ±12.5% at most, up when the previous block was over half full and down when under, steering the chain toward 50% full. And it's burned, not paid to anyone. Senders add a priority tip on top to compete for ordering.

Точная формула базовой комиссии EIP-1559 в целочисленной арифметике — протестирована модульными тестами против спецификации.

Всё правило — это несколько строк целочисленной арифметики над родительским блоком: ни аукциона, ни оракула, просто контроллер:

Формула
next = base_fee 1 × (1 ± 2 × (used − target) 3 ÷ target)
  1. 1 текущая цена за газ, которую платят все в блоке
  2. 2 ограничение — не более ±12,5% изменения за один блок
  3. 3 насколько прошлый блок отклонился от цели в половину заполнения
Термостат: выше цели комиссия растёт, ниже — падает, но никогда больше чем на ⅛ за один блок.
base fee responds to how full blocks are target (½-full) full → +12.5%/block demand drops → decays blocks → · gas used per block (bars), base fee ×start (line)
То же правило в действии. Четыре блока на цели держат комиссию ровной; десять полных блоков разгоняют её на +12,5% за блок — кривая 1,125ⁿ, — затем лёгкие блоки плавно её снижают. Контроллер реагирует только на предыдущий блок и никогда не прогнозирует.

Это ограничение в ±12,5% — тихий герой: шок спроса не может умножить вашу комиссию в 10 раз за один блок — она разгоняется за несколько, давая кошелькам стабильное, предсказуемое число, которое можно вам показать. Устойчивая перегрузка всё ещё обходится дорого (1,125ⁿ накапливается), но происходит это заметно и постепенно, а не панически.

→ Шаг 3: дать блокам простор для растяжения.

3 шаг Эластичные блоки

Даём блокам растягиваться, чтобы поглотить всплеск

Разделим «размер, к которому мы стремимся» и «размер, который мы допускаем». Контроллер базовой комиссии нацелен на цель по газу, но блок может раздуться до вдвое больше — газовый лимит равен 2 × target. Поэтому когда спрос подскакивает, лишние транзакции сразу помещаются в эластичное пространство над целью, вместо борьбы на аукционе; затем контроллер видит этот переполненный блок и в течение нескольких следующих блоков разгоняет базовую комиссию, чтобы стянуть спрос обратно к цели.

лимит = 2× цель цель (½ заполнено) базовая комиссия всплеск — до 2× · базовая комиссия возвращается к цели
Блок стремится к половинной заполненности (цель), но может растянуться до 2× от неё. Всплеск сразу попадает в эластичное пространство; затем базовая комиссия растёт в течение следующих блоков, возвращая спрос к цели.

Так эластичность и контроллер — две половины одного механизма: эластичность справляется с моментом (пространство для поглощения всплеска), контроллер — с трендом (переоценка, чтобы всплеск не задержался). Средний блок остаётся заполненным примерно наполовину — именно тот запас, который держит контроллер отзывчивым в обе стороны.

→ Шаг 4: не платить её никому.

4 шаг Сжечь

Сжигаем базовую комиссию; чаевые — предлагающему

Решение почти шокирует с первого взгляда: сжечь базовую комиссию. Уничтожить её. Предлагающий не получает от неё ничего — значит, больше нет причин раздувать её вверх, и контроллеру можно доверять. Бонусом сжигание привязывает дефицит валюты к использованию сети: высокий спрос уменьшает предложение ETH.

Но у предлагающего по-прежнему должна быть причина включать вашу транзакцию и хорошо её упорядочивать, поэтому 1559 добавляет небольшую приоритетную комиссиючаевые — которые платятся предлагающему напрямую, сверх сжигаемой базовой комиссии. Вы подписываете два потолка: maxFeePerGas (максимум, который вы заплатите за газ, база + чаевые) и maxPriorityFeePerGas (чаевые). Вы платите min(maxFeePerGas, baseFee + maxPriorityFeePerGas) — базовая комиссия сжигается, остальное уходит чаевыми.

комиссия за газ = базовая комиссия + чаевые базовая комиссия (сгорает) чаевые сгорело — безвозвратно предлагающий база сгорает → подкупать некого, ETH дефицитнее · чаевые = порядок
Ваша комиссия делится: базовая комиссия сжигается (чтобы никого нельзя было подкупить её раздуть, и ETH становится дефицитнее), а чаевые идут предлагающему — плата за включение и порядок.
04 Глубже Куда двигаться дальше