Блокчейн
Proof of Stake
В 2022 году Ethereum отключил майнинг за одну ночь. Сеть, потреблявшая электричество как целая Аргентина, внезапно стала тратить энергии меньше, чем 100 домохозяйств. При этом объём заблокированных активов вырос до 30+ миллиардов. Как можно защитить блокчейн без единого ватта «лишнего» электричества? Ответ: заставить валидаторов поставить на кон собственные деньги.
- **Ethereum** - после перехода на PoS (The Merge, сентябрь 2022) снизил энергопотребление на 99.95%, сохранив безопасность сети с 30+ млрд стейка
- **Lido** - крупнейший liquid staking протокол, через который застейкано более 8 млн ETH (~24 млрд); позволяет участвовать без порога в 32 ETH
- **Cosmos / Polkadot / Cardano** - PoS-блокчейны, работающие годами, доказали жизнеспособность модели на практике
Предварительные знания
Staking: залог вместо электричества
В Proof of Work безопасность сети обеспечивается **электричеством**: чтобы атаковать Bitcoin, нужно потратить миллиарды долларов на оборудование и энергию. Но что если заменить физическую энергию на **экономический залог**?
**Staking** - это блокировка криптовалюты в качестве залога для участия в консенсусе. Валидатор говорит сети: «Я ставлю 32 ETH на то, что буду честно подтверждать блоки. Если обману - заберите мой залог». Это экономическая гарантия честности.
**Порог входа:** в Ethereum нужно заблокировать минимум **32 ETH** (~$96 000 при цене $3000). Это фильтрует несерьёзных участников, но создаёт барьер для мелких инвесторов.
Для тех, у кого нет 32 ETH, существует **liquid staking**. Протоколы вроде **Lido** и **Rocket Pool** позволяют стейкать любую сумму: они объединяют средства многих пользователей и запускают валидаторы от их имени. Взамен ты получаешь токен-расписку (stETH, rETH), который можно использовать в DeFi, пока оригинальные ETH работают в стейкинге.
Чем Proof of Stake обеспечивает безопасность сети вместо вычислительной работы?
Slashing: наказание за нечестность
Стейкинг без наказания - как штраф без полиции. Если валидатор ничего не теряет за плохое поведение, у него нет стимула быть честным. **Slashing** - это механизм конфискации части или всего залога за нарушение правил протокола.
В Ethereum есть два основных slashing-нарушения: 1. **Double signing** - валидатор подписывает два разных блока для одного и того же слота. Это попытка создать форк: «я за блок A» и одновременно «я за блок B». 2. **Surround voting** - валидатор голосует так, что одно голосование «окружает» другое по диапазону эпох. Это более тонкая атака на механизм finality.
Размер наказания в Ethereum зависит от масштаба атаки: - **Одиночное нарушение:** потеря ~1 ETH (1/32 стейка) - **Корреляционное наказание:** если много валидаторов нарушают одновременно (координированная атака), штраф растёт пропорционально - вплоть до **полной конфискации 32 ETH** - **Дополнительно:** слэшнутый валидатор исключается из сети и не может вывести оставшийся стейк в течение ~36 дней
Реальные случаи slashing в Ethereum
Slashing происходит не только при атаках
Февраль 2023 - оператор стейкинга случайно запустил один и тот же валидатор на двух серверах (для отказоустойчивости). Оба подписали один слот разными блоками - сработал slashing. Урок: double signing чаще происходит не из-за злого умысла, а из-за ошибок инфраструктуры. Поэтому операторы используют remote signer с anti-slashing базой данных, которая запрещает подписывать слот повторно.
**Корреляционное наказание** - гениальный механизм: если один валидатор ошибся из-за бага - штраф минимальный (вероятно, случайность). Если 1000 валидаторов нарушили одновременно - штраф максимальный (вероятно, координированная атака). Формула: `penalty = validator_stake * 3 * fraction_slashed`.
Валидатор случайно запустил свой узел на двух серверах. Оба подписали один слот. Что произойдёт?
Nothing-at-Stake: фундаментальная проблема PoS
В Proof of Work майнер **физически не может** одновременно майнить на двух форках - его вычислительная мощность конечна. Выбрав форк A, он тратит электричество именно на него и теряет доход от форка B.
В наивном PoS валидатор **ничего не тратит** на голосование. Подписать блок - это одна криптографическая операция, практически бесплатная. Поэтому рациональный валидатор должен голосовать **за все форки сразу** - так он гарантированно окажется на победившей ветке и получит вознаграждение.
Это и есть **nothing-at-stake problem**: если голосование бесплатно, все голосуют за всё, и консенсус перестаёт работать. Сеть не может выбрать одну каноническую цепочку.
**Решение Ethereum:** комбинация **slashing** + **finality gadget** (Casper FFG). Slashing делает голосование за оба форка дорогим (потеря стейка). Finality gadget определяет точку, после которой блок **невозможно отменить** - в отличие от PoW, где нет абсолютной финальности.
**Finality в PoS vs PoW:** в Bitcoin финальность вероятностная - чем больше подтверждений, тем надёжнее (6 блоков = ~60 мин). В Ethereum PoS финальность **абсолютная** - после двух эпох (~12.8 мин) блок финализирован и отмена потребует уничтожения >1/3 всего стейка (~30+ млрд).
Почему в наивном Proof of Stake (без slashing) рациональный валидатор голосует за все форки одновременно?
Validator Selection: кто создаёт следующий блок?
В PoW ответ прост: кто первый решил задачу - тот и создаёт блок. В PoS нет задачи, значит нужен другой механизм выбора. Ключевое требование: выбор должен быть **случайным**, но **непредсказуемым заранее** и **проверяемым постфактум**.
Ethereum использует **RANDAO** - коллективный источник случайности. Каждый валидатор добавляет свой «вклад» в общую случайность через XOR хешей. Результат невозможно предсказать заранее, потому что он зависит от действий всех валидаторов.
В Ethereum время разделено на **слоты** (12 сек) и **эпохи** (32 слота = 6.4 мин). Для каждого слота назначаются: - **Proposer** (1 валидатор) - создаёт блок и получает основное вознаграждение - **Committee** (группа валидаторов) - голосуют за предложенный блок (attestation)
Для дополнительной устойчивости к манипуляции Ethereum комбинирует RANDAO с концепцией **VRF (Verifiable Random Function)**, изученной в уроке bc-11. VRF позволяет каждому валидатору доказать, что его «случайный» вклад действительно получен из его секретного ключа, без раскрытия ключа. Это предотвращает ситуацию, где последний валидатор может выбрать наиболее выгодный для себя reveal.
**Проблема «последнего reveal»:** последний валидатор в эпохе видит вклады всех предыдущих. Он может решить не публиковать свой reveal (получив штраф за пропуск) или выбрать другой, если это выгоднее. Ethereum снижает этот риск через штрафы за inactivity и использование 32 слотов (один злоумышленник не может контролировать все 32 позиции).
**Proposer-Builder Separation (PBS):** в современном Ethereum proposer не обязан сам формировать содержимое блока. Специальные **block builders** соревнуются за право наполнить блок (через MEV-аукцион), а proposer просто выбирает самый прибыльный вариант. Это разделение ролей снижает централизацию.
Proof of Stake менее безопасен, чем Proof of Work, потому что не требует «реальной работы»
Безопасность PoS основана на экономическом залоге: атака на Ethereum требует покупки >33% всего застейканного ETH (~30+ млрд) - и эти средства будут конфискованы через slashing. В PoW атакующий тратит электричество, но сохраняет оборудование. В PoS атакующий **теряет капитал навсегда**, что делает атаку экономически разрушительной для самого атакующего.
«Реальная работа» в PoW - это трата электричества, которая не усиливает безопасность напрямую, а служит экономическим барьером. PoS заменяет этот барьер прямым залогом капитала. Разница в том, что PoW наказывает атакующего косвенно (потраченное электричество), а PoS - напрямую (конфискация стейка). Оба подхода делают атаку экономически невыгодной, но по-разному.
Как Ethereum выбирает, какой валидатор будет создавать следующий блок?
Ключевые идеи
- **Staking** - валидатор блокирует капитал (32 ETH в Ethereum) как экономическую гарантию честности; liquid staking (Lido, Rocket Pool) снижает порог входа
- **Slashing** - автоматическая конфискация стейка за double signing и surround voting; корреляционное наказание масштабируется до полной конфискации при массовых нарушениях
- **Nothing-at-Stake** - фундаментальная проблема наивного PoS: бесплатность голосования провоцирует голосование за все форки. Решается slashing + finality gadget
- **Validator Selection** - RANDAO + VRF обеспечивают случайный, непредсказуемый и проверяемый выбор proposer для каждого из 32 слотов в эпохе. Именно так Ethereum защищает 30+ млрд без единого ватта «лишнего» электричества - экономический залог вместо физической работы.
Связанные темы
Proof of Stake связывает экономику, криптографию и теорию консенсуса:
- Proof of Work — Предшественник PoS - безопасность через энергию вместо залога. PoS решает проблему энергопотребления PoW
- Gasper — Конкретный PoS-протокол Ethereum: LMD-GHOST (fork choice) + Casper FFG (finality) - реализация идей из этого урока
- The Merge — Переход Ethereum с PoW на PoS в сентябре 2022 - крупнейшая миграция консенсуса в истории блокчейна
Вопросы для размышления
- Если 32 ETH стоит ~96 000, а годовая доходность ~4%, насколько это привлекательнее банковского депозита? Какие риски не учитывает простое сравнение APR?
- Liquid staking (Lido) контролирует ~30% всего стейка Ethereum. Не создаёт ли это новую форму централизации, которую PoS должен был предотвратить?
- Можно ли спроектировать PoS-систему без slashing, которая всё равно решает nothing-at-stake? Какие trade-offs это потребует?
Связанные уроки
- bc-14-pow — PoW - предшественник PoS, нужен для сравнения
- bc-16-bft — BFT классический vs stake-weighted BFT
- bc-05-consensus-intro — Консенсус - зачем вообще нужен PoS
- bc-11-vrf — VRF используется для verifiable random validator selection
- prob-01-intro — Validator selection - взвешенная случайная выборка
- st-10-economics — Staking economics - incentive design через slashing
- dist-10-byzantine