Часть II · Глава 4 из 43

Как работает консенсус

В кульминационной статье мы разобрали, почему Proof of Stake работает. Эта страница — механизм, который его запускает: как миллион валидаторов без единого лидера по очереди создают один блок каждые двенадцать секунд и соглашаются с результатом. Слоты, комитеты, эпохи, финальность, строители блоков и вся жизнь валидатора.

Обновлено 13 сент. 2026 г. · 16 мин
Предполагается
  • proof of stake
  • финальность

В кульминационной статье мы разобрали почему Ethereum использует Proof of Stake: заблокировать реальные деньги, следовать цепочке с наибольшим весом аттестаций и сделать откат финализированного блока настолько дорогим, что он обойдётся в треть всего застейканного ETH. Это принцип. Эта страница — механизм: реальная машина, которая превращает принцип в работающие блоки.

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

1 шаг Часы: слоты

Разбить время на слоты

Если бы любой валидатор мог публиковать блок когда угодно, миллион из них постоянно бы сталкивался — два блока на одной высоте, и без общих часов невозможно сказать, какой пришёл «первым». Нужно изобрести часы. Разобьём время на фиксированные слот Фиксированное окно длиной 12 секунд. В каждом слоте ровно одному валидатору назначено предложить блок; 32 слота составляют эпоху. по 12 секунд и в каждом слоте назначим ровно одного валидатора предлагающим (proposer) — единственным, кто имеет право создать блок в этот момент. Стабильный, безлидерный ритм: один слот, один предлагающий, один блок.

время → #7k #41k #220k #98k #3k #160k #55k #12k один 12-секундный слот · один выбранный предлагающий · один блок
Время делится на 12-секундные слоты. У каждого слота есть один заранее назначенный предлагающий — общий ритм, заменяющий отсутствующие глобальные часы.

Пустые слоты допустимы (если предлагающий офлайн, слот просто проходит), и все согласны с расписанием, потому что слоты отсчитываются от фиксированного времени генезиса. У цепочки теперь есть темп.

→ Шаг 2: выбрать предлагающего через лотерею, которую нельзя обмануть.

2 шаг Лотерея предлагающего

Общее случайное зерно: RANDAO

Сгенерируем одно число, которому доверяет вся сеть и которое нельзя предсказать, — и используем его, чтобы сопоставить каждый слот с предлагающим. Это число — RANDAO Накапливаемая в цепочке случайность: каждый предлагающий добавляет значение (полученное из своей BLS-подписи) к текущему зерну, так что никто в одиночку не контролирует результат и знать его заранее невозможно. . Каждый предлагающий при создании блока раскрывает значение, выведенное из его подписи, и подмешивает его в текущее зерно. Поскольку итоговое зерно зависит от вкладов каждого, ни один валидатор не может им управлять; а поскольку каждый вклад раскрывается только в момент предложения — заранее его не узнать. Зерно детерминированно выбирает предлагающего для каждого слота — и комитеты, о которых речь пойдёт дальше, — так что любой может пересчитать и проверить назначение, но никто не может его сфальсифицировать.

сид RANDAO 0x9f3a…0x2c71…0xb480… предлагающий общий случайный сид выбирает предлагающего каждого слота; непредсказуемо и честно
Общее зерно, перемешиваемое каждым предлагающим, детерминированно выбирает предлагающего для каждого слота из всего множества валидаторов — непредсказуемо заранее, проверяемо после, неподтасовываемо никем.

→ Шаг 3: пусть все проголосуют за то, что видят.

3 шаг Голосуют все

Аттестации: голос от каждого валидатора

Согласие рождается из голосов, а не из власти. Каждый валидатор подаёт аттестация Подписанный голос валидатора, подаваемый раз в эпоху. В нём указывается блок, который валидатор видит головой (голос за выбор форка, fork choice), и пара контрольных точек source-to-target (голос за финальность по Casper-FFG). — подписанный голос, который одновременно говорит две вещи: вот блок, который я вижу головой (голос за выбор форка, добавляющий вес этой ветке) и вот контрольная точка, которую я считаю текущей (голос за финальность — об этом через минуту). Выбор форка (fork choice) затем следует ветке с наибольшим весом аттестующего стейка, поэтому minoritарная ветка никогда не перевесит честное большинство.

Миллион валидаторов не может голосовать в каждом слоте, не затопив сеть, поэтому их делят на комитет Псевдослучайное подмножество валидаторов. Каждый валидатор попадает ровно в один комитет в одном слоте эпохи — в каждом слоте один или несколько комитетов (до 64) — так что каждый валидатор аттестует ровно раз в эпоху. — эпоха состоит из 32 слотов, и каждый валидатор перемешивается ровно в один комитет в одном из них (в слоте может быть несколько комитетов). Каждый валидатор голосует ровно раз в эпоху, в слоте своего комитета. Голоса накапливаются как вес на цепочке.

комитет блок-голова + контрольная точка накопленный вес голос называет голову (выбор форка) и точку (финальность)
В каждом слоте аттестует один комитет — каждый голос называет голову (добавляя вес выбора форка) и контрольную точку (голос за финальность). Каждый валидатор попадает в один комитет в одном слоте, поэтому голосует ровно раз в эпоху.

→ Шаг 4: превратить накопленные голоса в финальность.

4 шаг Эпохи и финальность

Эпохи, обоснование, финализация

Сгруппируем каждые 32 слота в эпоха Промежуток из 32 слотов (~6,4 минуты). На границах эпох стоят контрольные точки; финальность принимается от эпохи к эпохе. — около 6,4 минуты — и будем считать блок на каждой границе контрольной точкой (checkpoint). Голос за финальность внутри каждой аттестации — это голос за контрольную точку. Правило (Casper-FFG) двухступенчатое: когда ≥⅔ всего застейканного ETH аттестует контрольную точку, она становится обоснованной (justified); когда две контрольные точки подряд обоснованы, более ранняя становится финализированной (finalized).

эпоха N · 32 слотаэпоха N+1 2/3 голосов2/3 голосов обоснованообосновано финализир. 2/3 стейка обосновывают точку; две подряд финализируют первую
32 слота составляют эпоху. Две трети застейканного ETH обосновывают контрольную точку; две обоснованных подряд финализируют первую — и откат финализированного блока потребовал бы слэшинга трети всего стейка.

Финализированный означает экономически необратимый: отменить его можно лишь если валидаторы, держащие треть всего стейка, подпишут две противоречивые контрольные точки — это доказуемо, наказуемо слэшингом и разорительно. В нормальной работе блок финализируется примерно через две эпохи (~13 минут) после предложения. Это число, которого ждёт осторожный торговец.

→ Шаг 5: разделить предложение и строительство.

5 шаг Кто строит блок

Разделение предлагающего и строителя

Разделим маленькую работу (предложить: подписать один заголовок в свой слот) и большую работу (построить: собрать наиболее выгодный порядок транзакций). Специализированные строители (builders) соревнуются в создании самого прибыльного блока — транзакции из мемпула плюс приватный поток ордеров, оптимально упорядоченные для захвата MEV Maximal Extractable Value — прибыль от выбора того, какие транзакции включить и в каком порядке. Строительство с захватом MEV — специализированная работа, поэтому она отдаётся строителям. — и делают ставку за право, чтобы их блок был предложен. Доверенный релей (relay) хранит в эскроу блоки-кандидаты и показывает предлагающему только заголовки и ставки, но никогда не тела блоков. Предлагающий подписывает заголовок с наибольшей ставкой вслепую — берёт на себя обязательство до того, как увидит содержимое, — и только тогда релей раскрывает тело сети.

билдерbid 0.08 Ξ билдерbid 0.12 Ξ билдерbid 0.05 Ξ релейхранит блоки предлагающий✓ подписывает лучший headerвслепую блок опубликован билдеры ставят; тело раскрывается только после коммита предлагающего
Строители делают ставки; релей хранит блоки в эскроу; предлагающий вслепую подписывает лучший заголовок, и только после этого тело раскрывается. Прибыльная работа вынесена наружу — домашний стейкер остаётся конкурентоспособным.

Одиночный домашний стейкер, который никогда не обгонит профессиональную команду в строительстве блоков, просто принимает лучшую ставку и зарабатывает столько же. Сегодня это работает как внепротокольный MEV-Boost; встраивание в протокол — enshrined PBS — активно разрабатывается, потому что доверие к релеям остаётся уязвимым местом.

→ Шаг 6: познакомимся с валидатором.

6 шаг Жизнь валидатора

Депозит, аттестации, выход — или слэшинг

Валидатор — это 32 ETH и набор ключей. Его жизнь — конвейер: внести 32 ETH, подождать в ограниченной по темпу очереди активации (чтобы состав валидаторов не менялся рывками), затем стать активным — аттестовать каждую эпоху, предлагать в редкий слот, выпавший по лотерее. Выполняй обязанности правильно и вовремя — получай стабильное вознаграждение; пропускай — плати небольшие штрафы; если цепочка перестаёт финализироваться, утечка бездействия постепенно сокращает стейк отсутствующих валидаторов, пока активные две трети не восстановятся. Чтобы уйти, подай запрос на добровольный выход, подожди в очереди выхода и выведи стейк.

Ξ deposit 32Ξ activation active exit queue Ξ withdraw слэшинг ✗ изгнан, стейк урезан 32 ETH → очередь → аттестации → выход → вывод; обман = слэшинг
32 ETH внутрь → очередь активации → годы аттестаций (и редкие предложения) → очередь выхода → вывод средств. А если допустить двусмысленность — слэшинг: принудительный выход и сжигание стейка.

И обрыв, который придаёт реальность всем предыдущим шагам: слэшинг Наказание за доказуемо противоречивые сообщения — предложение двух блоков в одном слоте или подачу конфликтующих аттестаций. Валидатор принудительно выводится, а часть его стейка (вплоть до всего) сжигается. . Подпиши два блока в одном слоте или две конфликтующие аттестации — и любой может подать доказательство; валидатора принудительно выводят, а часть его стейка — вплоть до полного — сжигается. Каждое «они не могут солгать, не потеряв деньги» из кульминационной статьи — это вот это: автоматическое, доказуемое, встроенное в протокол наказание.

03 Спека и код Несколько вещей, которые мы пропустили

Остаток маячной машины

Шесть шагов — это позвоночник; на нём висит горсть реальных механизмов:

  • Комитет синхронизации. Ротирующая группа из 512 валидаторов, обновляемая каждые 256 эпох (~27 часов), подписывает каждый заголовок блока. Она нужна, чтобы лёгкие клиенты могли следить за цепочкой, проверяя один небольшой, медленно меняющийся набор подписей вместо миллиона аттестаций.
  • Маячная цепочка и исполнение. Всё вышесказанное живёт на консенсусном уровне (beacon chain). Реальные транзакции и исполнение EVM — на уровне исполнения; с момента Слияния (Merge) каждый блок объединяет оба уровня, и консенсусный уровень управляет уровнем исполнения через engine API.
  • Агрегация. Отдельные аттестации агрегируются (BLS-подписи объединяются в одну) перед записью в цепочку — именно это позволяет миллиону голосов за эпоху вообще уместиться.
  • Лимиты и консолидация валидаторов. Эффективный баланс валидатора ограничен сверху (исторически 32 ETH; увеличен для крупных стейкеров в EIP-7251), чтобы вес оставался пропорциональным, а состав управляемым.
04 Глубже Куда двигаться дальше