Перейти к основному содержимому

1 запись с тегом "Shapella"

Посмотреть все теги

Обновление Ethereum Shanghai (Shapella): подробный обзор

· 6 мин. чтения
Dora Noda
Software Engineer

Выводы средств, оптимизация газа и что последовало за этим — без лишнего шума.


Краткая версия

Обновление 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, чтобы сосредоточиться на следующей границе: массовой масштабируемости.