Разработчики Ethereum исправили ошибку с депозитами перед Glamsterdam

26 октября в спецификацию Ethereum внесли исправление, предотвращающее зачисление ETH для стейкинга на баланс сборщиков блоков после активации обновления Glamsterdam.

Разработчики Ethereum исправили ошибку с депозитами перед Glamsterdam
Фото: ForkLog

Ошибка в правилах обработки депозитов могла привести к тому, что ETH, предназначенные для стейкинга, попадали бы на баланс сборщиков блоков вместо валидаторов после активации апдейта. Проблему обнаружили 12 октября. Она касалась обработки депозитов в момент перехода сети на новые правила консенсуса.

Glamsterdam предусматривает встроенное в протокол разделение ролей валидаторов и сборщиков блоков — enshrined proposer-builder separation (ePBS). При ePBS валидатор отвечает за предложение блока, а сборщик формирует его содержимое, отбирая и упорядочивая транзакции. После обновления обе роли смогут использовать отдельные механизмы регистрации и внесения депозитов.

По прежней версии спецификации, если депозит сначала регистрировал сборщика блоков, последующие поступления с тем же публичным ключом зачислялись на его баланс независимо от назначения активов. Возможный сценарий: оператор регистрировал сборщика с собственным адресом вывода, затем стейкинг-протокол отправлял депозит для создания валидатора с тем же публичным ключом. Если оба перевода оставались в очереди на момент обновления, средства протокола могли попасть на баланс сборщика, и оператор получал возможность вывести чужие ETH. При этом сам валидатор не создавался.

Разработчик под псевдонимом avsetsin, обнаруживший проблему, указал, что потенциально затронуты схемы стейкинга, где один участник финансирует валидатора, а другой управляет его ключами. Однако анализ отдельных протоколов носил предварительный характер и не подтверждал наличие уязвимостей в их действующих контрактах.

Первоначальное предложение опубликовали 12 октября: разделять депозиты валидаторов и сборщиков по учетным данным для вывода средств. 19 октября сопровождающий спецификацию Ethereum Джастин Тралья закрыл предложение из-за недостаточной поддержки со стороны команд клиентского ПО, но позднее вопрос вернули на рассмотрение.

22 октября разработчики отложили активацию Glamsterdam в тестовой сети Hoodi из-за необходимости дополнительно проверить влияние EIP-8037 на существующие смарт-контракты. На фоне изменения графика они вернулись к обсуждению исправления депозитов. 23 октября разработчик клиента Prysm под псевдонимом potuz поддержал подход, но попросил дополнить набор тестов. После их добавления разработчик под ником Lodestar подтвердил успешное прохождение испытаний и отсутствие непредвиденных побочных эффектов.

26 октября исправление объединили с основной веткой спецификации Ethereum, обсуждение ошибки закрыли. Glamsterdam — следующее крупное обновление Ethereum, направленное на увеличение пропускной способности сети. Помимо разделения ролей валидаторов и сборщиков, оно предусматривает списки доступа к данным на уровне блоков и изменения стоимости вычислительных операций. 6 октября обновление активировали в тестовой сети Sepolia. Следующим этапом должны были стать испытания на Hoodi с увеличением лимита газа до 200 млн единиц на блок, однако активацию, назначенную на 26 октября, отложили. Новую дату разработчики пока не объявили.