Тестовая сеть слияния Ethereum Kintsugi разделена из-за ошибки, вот почему

Событие слияния в сети Ethereum — это переход к модели консенсуса Proof-of-Stake от используемой в настоящее время модели Proof-of-Work. Это слияние означает, что текущая система основной сети Ethereum и новая цепочка Beacon, часто называемая Ethereum 2.0, объединятся в один блокчейн.

Для проверки слияния в декабре была развернута тестовая сеть Kintsugi. Цель тестовой сети — запустить различные крайние случаи и наблюдать за поведением системы. Одним из разработчиков, участвовавших в тестировании Кинцуги, является Мариус ван дер Вийден, основной разработчик Ethereum, работающий с клиентской командой Geth (Go-Ethereum).

«Тестнет работал безупречно пару недель. На прошлой неделе я создал фаззер, который отправлял неверные блоки. Блок содержит много информации, такой как транзакции, хэш предыдущего блока, лимит газа и так далее», — говорит Мариус ван дер Вийден.

Некоторые реализации не выполняли и не проверяли блок

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

Фаззер, созданный ван дер Вейденом, создает допустимый блок и изменяет один его элемент, чтобы сделать его недействительным. Один из методов, который он использует, заключается в замене одного элемента другим. В этом случае фаззер изменил хэш блока на родительский.

«Узлы должны отклонять такой измененный блок. Однако, поскольку родительский хеш указывал на сам действительный блок, некоторые реализации фактически не выполняли и не проверяли блок, а вместо этого искали его в кэше. Поскольку предыдущий блок был действительным и находился в кеше, они предположили, что новый блок также является действительным», — объясняет ван дер Вийден.

Сеть разделилась дважды

В результате половина сети, клиенты Geth, отклонили блок, а другая половина, клиенты Nethermind и Besu, приняли его, что привело к разделению цепочки, поскольку теперь у нас было два разных представления о правильном состоянии. Что еще хуже, была еще одна проблема.

По словам ван дер Вийдена, узлы цепочки гетов, в свою очередь, состоящую из Маяк-Гет, Призм-Гет, Лодестар-Гет, Нимбус-Гет и Теку-Гет, также разделены между собой.

«Это расщепление все еще исследуется, но похоже, что у Teku также может быть какой-то механизм кэширования, который вышел из строя», — говорит ван дер Вийден.

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

«Мы что-нибудь придумаем, чтобы восстановить сеть. Мы уже обновили клиент Nethermind, и теперь эти узлы находятся в правильной цепочке. Нам все еще нужно исправить Teku, так как более 33 процентов узлов являются Teku, иначе цепочка не будет завершена», — говорит ван дер Вийден.

Инцидент приносит пользу

По словам ван дер Вейдена, этот инцидент не запрещает и не задерживает дальнейшее тестирование слияния Ethereum, а также не задерживает само слияние. На самом деле, ван дер Вейден говорит, что этот инцидент действительно помогает тестировать крайние случаи, которые было бы трудно проверить, если бы сеть работала должным образом.

«Долгие периоды незавершения являются сложной задачей для узлов, и для нас очень важно увидеть, как они ведут себя прямо сейчас. Мы думаем, что тестовая сеть в конечном итоге снова соберется, но я не думаю, что мы будем пытаться исправить ее вручную, поскольку это дает нам возможность протестировать интересные пограничные случаи».

«Я не думаю, что это задержит слияние, так как слияние еще не запланировано. Но это показывает, насколько важно тестирование. Я думаю, что слияние идет очень хорошо. Нам нужна еще пара недель, чтобы привести программное обеспечение в приемлемое состояние, а затем нам потребуется пара месяцев на его тестирование», — говорит ван дер Вийден.

Что, если это произойдет в основной сети?

Интересный вопрос: что бы произошло, если бы в основной цепочке произошла подобная ошибка?

«Мы начали тестирование довольно рано, поэтому ожидали пару таких ошибок. Однако такая ошибка в основной сети была бы довольно неприятной, поскольку нам нужно было бы найти и исправить ошибку, в чем мы довольно хороши, выпустить код, а затем сообщить всем заинтересованным сторонам, что они должны обновить свои узлы. Последняя часть, на мой взгляд, самая сложная, поскольку некоторые пользователи не слишком внимательно следят за развитием», — говорит ван дер Вийден.

Для получения более подробной информации заинтересованному читателю рекомендуется прочитать книгу Мариуса ван дер Вейдена. чириканье об инциденте.

Информационный бюллетень CryptoSlate

Содержит краткое изложение самых важных ежедневных новостей в мире криптовалюты, DeFi, NFT и многого другого.

Получить край на рынке криптоактивов

Получите доступ к дополнительным сведениям о криптовалюте и контексту в каждой статье в качестве платного участника Край КриптоСлейт.

Ончейн анализ

Снимки цен

Больше контекста

Присоединяйтесь сейчас за 19 долларов в месяц Узнайте обо всех преимуществах

Источник: https://cryptoslate.com/ethereum-merge-testnet-kintsugi-split-by-bug-heres-why/