Тестовата мрежа за сливане на Ethereum Kintsugi е разделена от грешка, ето защо

Събитието за сливане в мрежата на Ethereum е преходът към консенсусния модел Proof-of-Stake от сега използвания модел Proof-of-Work. Това сливане означава, че настоящата основна мрежа на Ethereum и новата верига Beacon, често наричана Ethereum 2.0, ще се слеят в една блокчейн.

За да се тества сливането, тестовата мрежа на Kintsugi беше разгърната през декември. Целта на тестовата мрежа е да изпълнява различни крайни случаи и да наблюдава как се държи системата. Един от разработчиците, участващи в провеждането на тестове на Kintsugi е Мариус ван дер Вийден, разработчик на ядрото на Ethereum, работещ с клиентския екип на Geth (Go-Ethereum).

„Тестовата мрежа работи безупречно в продължение на няколко седмици. Миналата седмица създадох fuzzer, който изпращаше невалидни блокове. Един блок съдържа много информация, като транзакциите, хеша на предишния блок, лимита за газ и т.н.“, казва Мариус ван дер Вайден.

Някои реализации не се изпълниха и не провериха блока

Фъзерът е често срещан тип инструмент за тестване, използван сред разработчиците за генериране на произволни входове към функции или други части от код и се опитват да ги накарат да се счупят по някакъв или друг начин. Става дума за генериране на неправилни и неочаквани входове и наблюдение какво се случва със системата.

Фузърът, създаден от ван дер Вайден, произвежда валиден блок и променя един от негов елемент, за да го направи невалиден. Една техника, която използва, е да промени елемент с друг. В този случай fuzzer промени хеша на блока с родителския хеш.

„Възлите трябва да отхвърлят такъв променен блок. Въпреки това, тъй като родителският хеш сочи към самия валиден блок, някои реализации всъщност не изпълниха и провериха блока, а вместо това го потърсиха в кеша. Тъй като предишният блок беше валиден и в кеша, те приеха, че новият блок също е валиден“, обяснява ван дер Вийден.

Мрежата е разделена два пъти

Резултатът беше, че половината от мрежата, клиентите на Geth, отхвърлиха блока, докато другата половина, клиентите на Nethermind и Besu, го приеха, което доведе до разделяне на веригата, тъй като сега имахме две различни възгледи за правилното състояние. За да се влошат нещата, имаше още един проблем отгоре.

Според ван дер Вийден възлите на веригата Гет от своя страна, която се състои от Лайтхаус-Гет, Призм-Гет, Лодестар-Гет, Нимбус-Гет и Теку-Гет, също се разделят между тях.

„Това разделяне все още се разследва, но изглежда, че 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/