Тестова мережа злиття Ethereum Kintsugi розділена помилкою, ось чому

Подія злиття в мережі Ethereum — це перехід до моделі консенсусу Proof-of-Stake від поточної моделі Proof-of-Work. Це злиття означає, що поточна система основної мережі Ethereum і нова мережа Beacon, яку часто називають Ethereum 2.0, об’єднаються в один блокчейн.

Щоб перевірити злиття, тестова мережа Kintsugi була розгорнута в грудні. Метою тестової мережі є запуск різних граничних випадків і спостереження за поведінкою системи. Одним із розробників, які беруть участь у запуску тестів на Kintsugi, є Маріус ван дер Вейден, розробник ядра Ethereum, який працює з командою клієнтів Geth (Go-Ethereum).

«Тестова мережа працювала бездоганно кілька тижнів. Минулого тижня я створив фаззер, який надсилатиме недійсні блоки. Блок містить багато інформації, як-от транзакції, хеш попереднього блоку, ліміт газу тощо», – каже Маріус ван дер Вейден.

Деякі реалізації не виконали та не перевірили блок

Фаззер — це поширений тип інструменту тестування, який використовується серед розробників для генерування випадкових введених даних для функцій чи інших фрагментів коду та спроби змусити їх тим чи іншим чином зламати. Йдеться про генерацію неправильних і неочікуваних даних і спостереження за тим, що відбувається з системою.

Фазер, створений ван дер Вейденом, створює дійсний блок і змінює один його елемент, щоб зробити його недійсним. Одна з технік, яку він використовує, - це заміна елемента на інший. У цьому випадку фаззер змінив хеш блоку на батьківський хеш.

«Вузли повинні відхилити такий змінений блок. Однак, оскільки батьківський хеш вказував на сам дійсний блок, деякі реалізації фактично не виконували та не перевіряли блок, а шукали його в кеші. Оскільки попередній блок був дійсним і знаходився в кеші, вони вважали, що новий блок також дійсний», — пояснює ван дер Війден.

Мережа розділена двічі

Результатом стало те, що половина мережі, клієнти Geth, відхилили блокування, а інша половина, клієнти Nethermind і Besu, прийняли його, що спричинило розрив ланцюга, оскільки тепер ми мали два різні погляди на правильний стан. Що ще гірше, зверху була ще одна проблема.

За словами ван дер Вайдена, вузли ланцюга Гета, у свою чергу, що складається з Lighthouse-Geth, Prysm-Geth, Lodestar-Geth, Nimbus-Geth і Teku-Geth, також розділяються між ними.

«Це розділення все ще досліджується, але схоже, що у Teku також може бути якийсь механізм кешування, який вийшов з ладу», – каже ван дер Війден.

Оскільки на момент написання існує кілька різних форків тестової мережі Kintsugi, і кожен вузол вважає, що вони знаходяться на правильному розгалуженні, мережа більше не завершується.

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

Інцидент приносить щось хороше

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

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

«Я не думаю, що це затягне об’єднання, оскільки об’єднання ще не заплановано. Але це показує, наскільки важливим є тестування. Я думаю, що об’єднання дуже добре просувається. Нам потрібно ще пару тижнів, щоб отримати програмне забезпечення у прийнятному стані, а потім нам знадобиться кілька місяців для його тестування», – каже ван дер Війден.

Що, якщо це станеться в мережі?

Цікаве питання полягає в тому, що сталося б, якби подібна помилка виникла в мейнчейні.

«Ми почали тестування досить рано, тому очікували пару таких помилок. Така помилка в основній мережі була б досить неприємною, оскільки нам потрібно було б знайти та виправити помилку, в чому ми добре вміємо, випустити код, а потім повідомити всім зацікавленим, що вони повинні оновити свої вузли. Остання частина, на мій погляд, є складною, оскільки деякі користувачі не дуже уважно стежать за розробкою», – каже ван дер Війден.

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

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

Резюме найважливіших щоденних історій у світі криптовалют, DeFi, NFT тощо.

Отримати край на ринку криптоактивів

Отримуйте більше криптоінформації та контексту в кожній статті як платний член CryptoSlate Edge.

Аналіз на ланцюгах

Знімки цін

Більше контексту

Приєднуйтесь зараз за $ 19 / місяць Дізнайтеся про всі переваги

Джерело: https://cryptoslate.com/ethereum-merge-testnet-kintsugi-split-by-bug-heres-why/