Shapella — вывод стейка ETH: partial/full withdrawals и очередь (12.04.2023)

Shapella — комбинированный апгрейд сети Ethereum, запущенный на мейннете в апреле 2023. Он состоит из двух частей:

  • Shanghai — изменения на исполнительном слое (Execution Layer), включающие набор EIP для оптимизации газа и системную операцию «push withdrawals»;
  • Capella — изменения на консенсусном слое (Beacon Chain), открывшие частичные и полные выводы средств валидаторов и механизмы обновления «адресов для вывода».

Shapella завершил многолетный цикл: после перехода на PoS («The Merge») сеть получила двусторонний мост между Beacon Chain и исполнительным слоем — стейкеры наконец могут забирать награды (частично) и/или полностью выходить с возвратом депозита.

Коротко (о чём апгрейд)

  • Что поменялось для валидаторов. Появились автоматические частичные выводы (всё сверх 32 ETH «снимается» и отправляется на адрес вывода) и полные выводы (после выхода валидатора из набора активных — возвращается депозит + невыплаченные награды).
  • Как это работает. На консенсусном слое появился «поток» выводов, а на исполнительном — системная операция доставки этих средств в аккаунты L1.
  • Техническая грань. Чтобы выводы заработали, валидатор должен иметь корректные учётные данные для вывода (withdrawal credentials) — адрес на L1. При старых BLS-креденшалах нужен однократный переход на формат с L1-адресом. См. Withdrawal Credentials и Beacon Chain.

Карточка

Параметр Значение
Название Shapella = Shanghai (Execution) + Capella (Consensus)
Дата запуска Апрель 2023 (мейннет, вечер UTC)
Главная цель Открыть выводы средств валидаторов из Beacon Chain на L1
Что даёт Частичные выводы наград; полный выход валидаторов с возвратом депозита; улучшения газа/опкодов
Ключевые EIP (Execution) EIP-4895 (push withdrawals), EIP-3651 (Warm COINBASE), EIP-3855 (PUSH0), EIP-3860 (initcode), EIP-6049 (депрекация SELFDESTRUCT)
Консенсусный слой (Capella) Автопроход частичных выводов, очередь полных выходов, сообщения для смены адреса вывода

Почему Shapella важен

До Shapella пользователи могли внести депозит 32 ETH и начать валидировать блоки в PoS-сети, но не имели штатной возможности забрать награды или выйти с возвратом депозита (средства были «заблокированы» до включения логики вывода). Это ограничивало гибкость стейкеров и держало отрасль в ожидании. После Shapella ликвидность стейка стала двусторонней:

  • частичный cash-out наград стимулирует долгосрочное участие (оператор может регулярно «снимать сливки»);
  • полный выход снижает барьеры входа — инвесторы знают, как и когда смогут выйти «в ноль» с телом депозита.

Для экосистемы это означает зрелость PoS-контракта: валидаторам не нужно «переписывать правила», они следуют формализованному протоколу очередей/лимитов.

Как делится Shapella: Shanghai vs Capella

Shanghai (Execution Layer):

  • EIP-4895. Добавляет системную операцию, которая «проталкивает» (push) средства из Beacon Chain на L1-счета — именно так награды/депозиты появляются у получателей на исполнительном слое.
  • Оптимизации газа/опкодов.
    • EIP-3651 (Warm COINBASE) — удешевляет первое обращение к адресy COINBASE в блоке;
    • EIP-3855 (PUSH0) — новый опкод, упрощающий и удешевляющий байткод;
    • EIP-3860 — лимиты и тарификация initcode;
    • EIP-6049 — депрекация SELFDESTRUCT (сигнал разработчикам о будущих изменениях семантики).

Capella (Consensus / Beacon Chain):

  • Частичные выводы («skim» сверх 32 ETH) — периодический автоматический «сбор» наград у валидаторов, чьи креденшалы вывода указывают на адрес L1 (формат «0x01»).
  • Полные выводы — для валидаторов, «вышедших» из набора (exited + withdrawable), возвращается депозит + награды.
  • Смена типа креденшалов — однократное сообщение для перевода BLS-креденшалов на формат L1-адреса, иначе выводы недоступны.
  • Ограничения по скорости — протокол обрабатывает ограниченное число выводов на слот, чтобы блоки не «забивались» исключительно выплатами.

Частичные vs полные выводы: что и когда приходит

Частичный вывод — это автоматическая «протирка» балансов активных валидаторов: всё, что сверх 32 ETH на их эффективном балансе, перенаправляется на указанный адрес вывода. Пользователь продолжает валидировать, депозит остаётся «на работе», а награды поступают на L1.

Полный вывод — это два шага:

1) Выход валидатора из активного набора (инициируется оператором; валидатор покидает комитеты и перестаёт получать награды);

2) Ожидание статуса «withdrawable» и последующая обработка системой полного вывода (депозит + награды переводятся на адрес вывода).

В обоих сценариях средства доставляются на L1 через системную операцию, добавленную на исполнительном слое. Разница — в том, остаётся ли валидатор активным (частичный) или фиксирует полный выход (полный).

Withdrawal credentials: почему это ключевой параметр

Чтобы получать выводы, у валидатора должны быть креденшалы вывода с адресом L1 (формат «0x01»). В ранних конфигурациях использовались BLS-креденшалы (префикс «0x00») — они не позволяют доставлять ETH в аккаунт L1. Поэтому протокол предусмотрел однократное сообщение о смене типа креденшалов на «0x01».

*Проверка и обновление:*

  • если у валидатора 0x01, частичные выводы начнут поступать автоматически при балансе > 32 ETH;
  • если 0x00, отправьте сообщение о смене (подробнее см. Withdrawal Credentials).

Скорость и очереди: почему «не всем сразу»

Shapella спроектирован с прицелом на стабильность сети. Поэтому:

  • на слот (каждые ~12 с) протокол обрабатывает ограниченное число записей на вывод — это предотвращает «забивку» блоков выплатами;
  • частичные выводы идут «широким потоком» — система регулярно сканирует набор валидаторов и «снимает» излишек;
  • полные выводы ограничены «скоростью выхода» из набора (чтобы не обрушить безопасность) и лимитом обработок на слот; после получения статуса withdrawable средства доставляются тем же автоматическим процессом.

Практический вывод: частичные выплаты приходят регулярно; полные — в горизонте от нескольких часов до дней (в зависимости от накопленной очереди на выход/обработку).

Что поменялось для разработчиков (Execution Layer)

EIP-4895 ввёл системный механизм «push withdrawals» — не контрактный и не пользовательский вызов, а «встроенную» операцию протокола, которая зачисляет ETH на целевые адреса L1. Это значит:

  • приложения не должны писать «обработчики» для специальных событий вывода (средства просто появляются на счёте адресата);
  • gas-модель транзакций осталась прежней; оптимизации коснулись, в частности, первого обращения к COINBASE (EIP-3651) и удобства байткода (EIP-3855/3860).

Для контрактов важнее две практики:

  • не полагаться на SELFDESTRUCT (EIP-6049 — депрекация; готовьтесь к изменению семантики в будущих форках);
  • корректно обрабатывать сценарии, где баланс аккаунта может вырасти «сам по себе» (без входящей пользовательской tx) — из-за системных начислений по выводам.

Что поменялось для операторов/валидаторов (Consensus Layer)

Чек-лист:

  • Проверьте тип withdrawal credentials; при необходимости сделайте переход на формат «0x01».
  • Убедитесь, что адрес вывода — это ваш контролируемый L1-аккаунт/кастоди.
  • Понимайте разницу между частичным и полным выводом: частичный не требует «выхода» из набора; полный — да.
  • Планируйте кэш/ликвидность: если вы оператор пула или валидируете для клиентов, заранее согласуйте регламент выплат и ответственность за комиссии L1.
  • Отслеживайте очереди на выход (если планируете «массовый» полный выход).

Взаимодействие со стейкинг-сервисами и пул-токенами

После Shapella сервисы стейкинга получили нормальные «инструменты возврата» — это отразилось на дизайне LST (liquid staking tokens):

  • модель «в один-клик» на вывод стала возможной: сервисы могут запросить выход части валидаторов и вернуть базовый ETH;
  • баланс LST-пулов стал чувствительнее к рыночному спросу: арбитраж между «рыночной ценой LST» и «чистой стоимостью» стал быстрее сходиться;
  • риски операторов/протоколов — в управлении очередями, газом, временными лагами и операционными ошибками.

Чтобы не перегружать эту статью, детали механики LST и рынок «ликвидного стейкинга» выносим в профильный термин: Liquid Staking.

Влияние на сеть и комиссионную экономику

Газ и производительность. Shanghai включил точечные оптимизации (теплый COINBASE, PUSH0, initcode-тарификация), которые улучшают экономику вызовов и развёртывания. Это не «магический» тюнинг TPS, но снижает издержки в ряде паттернов (особенно для провайдеров, которые часто обращаются к COINBASE или плотной генерации байткода).

Безопасность. Ограничения на количество обработок в слот, регулирование выхода валидаторов и автоматизация «частичных» выплат балансируют стабильность Beacon Chain и свободу участников.

Опыт пользователя. Для «обычных» держателей ETH Shapella сделал рынок понятнее: «положил — получаешь награды — можешь забрать награды — можешь вернуть весь депозит». Это улучшает доверие к стейку как к классу доходности.

Сравнение с The Merge и дальнейшие форки

The Merge (переход на PoS) включил новый механизм консенсуса и отключил PoW, но не открывал выводы. Shapella дополнил конструкцию, дав выводы и дев-оптимизации. В последующих апгрейдах протокол двигался дальше (данные/блоб-транзакции, улучшения экономик L2, консенсусные накопители истории и т. п.), но Shapella останется «точкой», где PoS-жизненный цикл стал полноценным.

Практические сценарии (для читателей 24k)

1) Частичный «кэш-аут» наград. Если вы валидируете «в плюс» к 32 ETH — протокол периодически будет переводить излишек на L1; продумайте, куда начисления приходят (self-custody/кастоди). 2) Полный выход. Если нужно закрыть позицию — инициируйте exit, дождитесь статуса withdrawable, затем протокол переведёт всё на адрес вывода. Учитывайте очередь и лимиты на слот. 3) Пулы/сервисы. Согласуйте SLA возврата, опишите клиенту «горизонт ожидания» и списание комиссий. 4) Разработчики. После Shapella учитывайте, что баланс аккаунта может измениться без пользовательской транзакции (из-за системных переводов по выводам).

Часто задаваемые вопросы (FAQ)

Чем «частичный» вывод отличается от «полного»? Частичный — переводит лишь награды сверх 32 ETH и валидатор остаётся активным. Полный — валидатор сначала выходит из набора, затем получает весь депозит + награды.

Как включить частичные выводы? Нужны креденшалы формата 0x01 (адрес L1). Если у вас 0x00 (BLS), отправьте сообщение о смене. См. Withdrawal Credentials.

Сколько ждать полного вывода? Зависит от очереди на выход и лимита обработок в слот. В спокойные периоды — часы/дни; при больших волнах выходов — дольше.

Я LST-держатель, что это меняет? Повышает ликвидность: провайдеры могут «обналичивать» базовый ETH, выстраивая более прямую связь между ценой LST и базовым активом. Подробности — Liquid Staking.

Нужно ли что-то делать дApp-разработчикам? Главное — не полагаться на SELFDESTRUCT и помнить, что баланс адресов может пополняться системно. Если ваш софт мониторит «входящие события», учтите, что выводы не сопровождаются пользовательской tx.

См. также в 24k Wiki

Task Runner