Обновление Ethereum Shanghai (Shapella): подробный обзор
Выводы средств, оптимизация газа и что последовало за этим — без лишнего шума.
Краткая версия
Обновление Shapella, объединяющее названия Shanghai (для уровня исполнения) и Capella (для уровня консенсуса), было запущено в сети Ethereum 12 апреля 2023 года. Его главной особенностью стало включение вывода средств из стейкинга впервые с момента запуска Beacon Chain.
Главное изменение, EIP-4895, внедрило систему, при которой вывод средств валидаторов автоматически «передаётся» с уровня консенсуса на уровень исполнения, не требуя транзакций пользователя или комиссий за газ. Наряду с этим были выпущены четыре меньших EIP для тонкой настройки EVM, включая снижение стоимости газа (Warm COINBASE), оптимизацию байт-кода (PUSH0) и ограничения на создание контрактов (Initcode metering). Обновление также послужило последним предупреждением для разработчиков о том, что опкод SELFDESTRUCT
будет удалён.
Shapella фактически завершила цикл Merge, а следующее крупное обновление, Dencun, последовало 13 марта 2024 года, сместив фокус сети на масштабируемость с помощью EIP-4844 «блобов».
Почему Shapella стала критически важной вехой
С момента создания Beacon Chain и до апреля 2023 года стейкинг ETH был улицей с односторонним движением. Вы могли внести 32 ETH для обеспечения безопасности сети и получения вознаграждений, но не могли вывести свой основной капитал или эти вознаграждения уровня консенсуса. Эта заблокированная ликвидность была значительным обязательством и барьером для многих потенциальных стейкеров.
Shapella изменила всё, открыв дверь для вывода средств.
Ядром обновления был EIP-4895, который гениально разработал системную «операцию вывода средств». Вместо того чтобы требовать от стейкеров создания транзакции и оплаты газа для вывода средств, сам протокол теперь автоматически собирает соответствующие средства с уровня консенсуса и передаёт их на уровень исполнения. Этот чистый, основанный на «push»-механизме дизайн минимизировал сложность и риски, сделав изменение гораздо более простым для безопасного тестирования и развёртывания.
Что на самом деле изменилось: EIP простыми словами
Shapella представляла собой пакет из пяти ключевых предложений по улучшению Ethereum (EIP):
-
EIP-4895 — Выводы средств Beacon Chain (на основе «push»-механизма) Это было главное событие. Оно позволило как частичным (вознаграждения), так и полным (основной капитал + вознаграждения) выводам средств перетекать с уровня консенсуса на указанный адрес вывода стейкера. Ключевое новшество заключается в том, что это не инициированные пользователем транзакции; это автоматические операции, встроенные в предлагаемые блоки.
-
EIP-3651 — «Тёплый COINBASE» Этот EIP привнёс небольшую, но важную оптимизацию газа. В EVM
COINBASE
относится к адресу производителя блока (валидатора), а не к бирже. До Shapella, при первом доступе смарт-контракта к этому адресу в рамках транзакции, он нёс более высокую стоимость газа. EIP-3651 сделал адресCOINBASE
«тёплым» по умолчанию, снизив стоимость газа для протоколов, которые часто взаимодействуют с ним, например, для тех, кто платит MEV-чаевые непосредственно создателю блока. -
EIP-3855 — Опкод
PUSH0
Простое, но элегантное дополнение к EVM. Этот новый опкод,PUSH0
, делает именно то, что заявлено: он помещает значение ноль в стек. Ранее разработчикам приходилось использовать более тяжёлые и дорогие опкоды для достижения этой цели.PUSH0
делает байт-код немного меньше и более эффек тивным по газу, особенно для многочисленных контрактов, которые инициализируют переменные нулём. -
EIP-3860 — Ограничение и измерение
initcode
Это изменение ввело два правила для кода, используемого для создания смарт-контракта (initcode
). Во-первых, оно ограничило максимальный размерinitcode
49 152 байтами. Во-вторых, оно добавило небольшую комиссию за газ за каждый 32-байтовый фрагмент этого кода. Это предотвращает атаки типа «отказ в обслуживании», связанные с чрезмерно большими контрактами, и делает затраты на создание контрактов более предсказуемыми. -
EIP-6049 — Устаревание
SELFDESTRUCT
(Предупреждение) Это было не изменение кода, а официальное предупреждение сообществу разработчиков. Оно сигнализировало о том, что функциональность опкодаSELFDESTRUCT
, который позволяет контракту удалять себя и отправлять свой ETH на целевой адрес, будет кардинально изменена в будущем обновлении. Это дало разработчикам время постепенно отказаться от его использования до того, как обновление Dencun позже изменило его поведение с помощью EIP-6780.
Выводы средств 101: Частичные против полных
Shapella представила два типа автоматических выводов средств, каждый со своими правилами.
-
Частичные выводы средств Это автоматический сбор вознаграждений. Если баланс валидатора превышает 32 ETH за счёт вознаграждений уровня консенсуса, протокол автоматически «снимает» избыточную сумму и отправляет её на указанный адрес вывода средств. Валидатор остаётся активным и продолжает выполнять свои обязанности. Это происходит без каких-либо действий со стороны стейкера.
-
Полные выводы средств (Выход) Это для стейкеров, которые хотят прекратить валидацию и получить весь свой баланс. Стейкер должен сначала отправить сообщение о добровольном выходе. После периода ожидания валидатор получает право на полный вывод средств. После обработки в рамках сбора весь баланс отправляется на адрес вывода средств, и валидатор больше не является частью активного набора.
Пропускная способность и частота
Сеть спроектирована для плавной обработки выводов средств без возникновения нестабильности.
- До 16 выводов средств могут быть включены в каждый блок (каждые 12 секунд), что позволяет обрабатывать максимум около 115 200 выводов средств в день.
- Предлагающий блок сканирует список активных валидаторов и включает первые 16 подходящих выводов средств. Следующий предлагающий блок продолжает с того места, где остановился предыдущий, гарантируя, что каждый валидатор получит свою очередь в очереди.
- Чтобы предотвратить массовый исход, дестабилизирующий сеть, количество валидаторов, которые могут выйти за эпоху (каждые ~6,4 минуты), ограничено лимитом оттока. Этот лимит динамичен и зависит от общего числа активных валидаторов, сглаживая волны выхода.
Также важно отметить, что вознаграждения уровня консенсуса обрабатываются этим механизмом вывода средств EIP-4895, в то время как вознаграждения уровня исполнения (приоритетные комиссии и MEV) отправляются непосредственно на настроенный адрес получателя комиссии валидатора и доступны немедленно.
Что последовало: Dencun и путь к масштабируемости
Shapella ознаменовала успешное завершение «эры Merge». Теперь, когда стейкинг стал полностью ликвидным, двусторонним процессом, разработчики обратили своё внимание на следующую большую задачу Ethereum: масштабируемость.
Следующее крупное обновление, Dencun (Deneb + Cancun), вышло 13 марта 2024 года. Его центральным элементом был EIP-4844, который представил «блобы» — новый, более дешёвый способ для роллапов второго уровня публиковать данные транзакций в основной сети Ethereum. Это значительно снизило комиссии за транзакции в L2 и стало огромным шагом вперёд в дорожной карте, ориентированной на роллапы. Dencun также выполнил обещание EIP-6049, реализовав EIP-6780, который значительно ограничил возможности опкода SELFDESTRUCT
.
Общая картина
Shapella стала важнейшей вехой доверия для консенсуса Proof-of-Stake Ethereum. Включив вывод средств, она снизила риски стейкинга, восстановила ликвидность и подтвердила способность сети выполнять сложные, скоординированные обновления. Она также принесла ряд прагматичных улучшений EVM, которые устранили технический долг и проложили путь для будущих оптимизаций.
Короче говоря, Shapella не просто открыла дверь для вывода средств для стейкеров — она укрепила основу пост-Merge эры и расчистила путь для Ethereum, чтобы сосредоточиться на следующей границе: массовой масштабируемости.