Quick Take

  • Обновление сети Ethereum в Константинополе было отложено после обнаружения уязвимости, связанной с EIP-1283
  • Более 80% узлов в настоящее время работают за пределами Константинополя
  • Основные разработчики соберутся в пятницу, чтобы решить, каким будет план действий.
  • Уязвимость поднимает интересные вопросы, касающиеся степени и определения неизменности Эфириума

Что случилось?

Всего за один день до того, как должно было начаться обновление сети Ethereum в Константинополе, ChainSecurity, интеллектуальная служба аудита контрактов, раскрытый непреднамеренное последствие, связанное с введением EIP-1283 более дешевых затрат на газ для операций SSTORE, что может открыть действующие контракты для атак с повторным входом.

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

То, что эта уязвимость не была обнаружена на этапе тестирования, говорит о сложности протокола Эфириума: Виталик Бутерин прокомментировал«Если у вас есть N возможностей протокола, есть N ^2 способы, которыми они потенциально могут сломаться… Мой личный вывод из этого состоит в том, чтобы быть гораздо более ясным в отношении записи инвариантов (свойств, гарантируемых протоколом), на которые мы полагаемся, чтобы мы могли проверять их при изменении ».

Призыв к действию:

Любые узлы, которые уже обновили своих клиентов до версии в Константинополе, должны либо перейти на исправленную версию — для Geth 1.8.21для паритета 2.2.7 — или понизить до доконстантинопольской версии. Цифры из Ethernodes предполагают, что 80,1% клиентов обновлены до правильного состояния. Любые узлы, которые не смогут обновить своих клиентов, не смогут синхронизироваться и участвовать в процессе согласования в «законной» цепочке Ethereum.

От владельцев смарт-контрактов, пользователей или владельцев токенов, которые не запускают узлы, никаких действий не требуется.

Что дальше?

Основные разработчики соберутся в пятницу, чтобы обсудить, как действовать и установить время блока для повторного введения обновления в Константинополе. Ожидается, что EIP-1283 будет исключен из вилки, хотя альтернативные предложения включите добавление условия в SSTORE, которое заставляет его вернуться, если останется менее 2300 газов. Предварительное обсуждение в AllCoreDevs Gitter показало, что задержка может составлять порядка нескольких недель: самая ранняя возможная дата, вероятно, будет понедельник 21 января, так как обновление вряд ли будет перенесено на выходные.

Тем временем «бомба сложности» Эфириума, которая экспоненциально увеличивает сложность майнинга, замедляет время прохождения блоков и, соответственно, выдаёт награды за блок, уже активирована. Тем не менее, в настоящее время увеличение сложности является относительно незначительным, и блоки продолжают добывать примерно каждые 15 секунд. Кроме того, кратковременная отсрочка сокращения выпуска с 3 ETH до 2 ETH на блок вряд ли окажет какое-либо существенное влияние на общий объем непогашенной поставки.

Среднее время блокировки Эфириума

Рост предложения Эфириума

Источник: Etherscan

Что это значит для будущих обновлений?

Внедрение и быстрое устранение EIP-1283 вызвало более Обсуждение о том, как приступить к обновлению семантики EVM, несовместимой с ранее существовавшими смарт-контрактами. Это особенно актуально в контексте плана Ethereum 2.0 ввести аренду хранилища, где каждая учетная запись должна будет платить небольшую сумму ETH за блок за каждый байт хранилища, которое она занимает.

Дебаты носят скорее философский характер, они сосредоточены на значении «неизменности» и ответственности основных разработчиков перед разработчиками умных контрактов. С одной стороны, разработчики умных контрактов хотят иметь гарантии того, что их код будет неизменным, как было обещано с самого начала Ethereum, и утверждают, что изменение способа интерпретации кода путем обновления кодов операций может нарушить неприкосновенность неизменности. С другой стороны, разработчики ядра хотят свободы для дальнейшего улучшения протокола — в конце концов, EIP-1283 был разработан для уменьшения сложности хранения контрактов — и хотя они не намеренно вводят поведение, которое может нарушить инвариант, они не могут полностью гарантировать, что изменения не будет вводить эффекты второго порядка.

В то время как мы можем ожидать, что немедленный курс действий для EIP-1283 будет раскрыт по пятничному запросу, эта более широкая мета-дискуссия вокруг степени и точного определения неизменности Эфириума, вероятно, продолжится в ближайшие годы, так как Эфириум 2.0 продолжает формироваться.