Ethereum merge testnet Kintsugi rozdělena podle chyby, zde je důvod

Událost sloučení v síti Ethereum je přechodem na konsensuální model Proof-of-Stake z aktuálně používaného modelu Proof-of-Work. Toto sloučení znamená, že současný systém mainnetu Ethereum a nový řetězec Beacon, často označovaný jako Ethereum 2.0, se spojí do jednoho blockchainu.

Pro testování sloučení byla v prosinci nasazena testovací síť Kintsugi. Účelem testnetu je spouštět různé okrajové případy a sledovat, jak se systém chová. Jedním z vývojářů zapojených do testování na Kintsugi je Marius van der Wijden, vývojář jádra Ethereum spolupracující s týmem klientů Geth (Go-Ethereum).

"Testnet běžel bezchybně několik týdnů." Minulý týden jsem vytvořil fuzzer, který by posílal neplatné bloky. Blok obsahuje spoustu informací, jako jsou transakce, hash předchozího bloku, limit plynu a tak dále,“ říká Marius van der Wijden.

Některé implementace neprovedly a neověřily blok

Fuzer je běžný typ testovacího nástroje, který vývojáři používají ke generování náhodných vstupů do funkcí nebo jiných částí kódu a snaží se je nějakým způsobem rozbít. Jde o generování chybných a neočekávaných vstupů a sledování, co se stane se systémem.

Fuzer vytvořený van der Wijdenem vytvoří platný blok a změní jeden jeho prvek tak, aby byl neplatný. Jedna technika, kterou používá, je změna prvku na jiný. V tomto případě fuzzer změnil blockhash na rodičovský hash.

"Uzly by měly odmítnout takto změněný blok." Protože však nadřazený hash ukazoval na samotný platný blok, některé implementace ve skutečnosti blok neprovedly a neověřily, ale místo toho jej vyhledaly v mezipaměti. Protože předchozí blok byl platný a v mezipaměti, předpokládali, že nový blok je také platný,“ vysvětluje van der Wijden.

Síť rozdělená dvakrát

Výsledkem bylo, že polovina sítě, klienti Geth, blok odmítla, zatímco druhá polovina, klienti Nethermind a Besu, jej přijali, což způsobilo rozdělení řetězce, protože jsme nyní měli dva různé pohledy na správný stav. Aby toho nebylo málo, navrch byl ještě jeden problém.

Podle van der Wijdena se mezi ně zase rozdělily uzly gethského řetězce, které sestávají z Lighthouse-Geth, Prysm-Geth, Lodestar-Geth, Nimbus-Geth a Teku-Geth.

"Toto rozdělení se stále vyšetřuje, ale zdá se, že Teku může mít také nějaký mechanismus ukládání do mezipaměti, který selhal," říká van der Wijden.

Vzhledem k tomu, že v okamžiku psaní existuje několik různých forků testovací sítě Kintsugi a každý uzel si myslí, že jsou na správném vidlici, síť se již nedokončuje.

"Něco vymyslíme, abychom dali síť zase dohromady." Klienta Nethermind jsme již aktualizovali a tyto uzly jsou nyní ve správném řetězci. Stále potřebujeme opravu Teku, protože více než 33 procent uzlů je Teku, jinak se řetězec nedokončí,“ říká van der Wijden.

Incident přináší něco dobrého

Podle van der Wijdena tento incident nezakazuje ani nezdržuje další testování sloučení Etherea a ani samotné sloučení nezdržuje. Ve skutečnosti van der Wijden říká, že incident ve skutečnosti pomáhá otestovat okrajové případy, které by bylo obtížné testovat, pokud by síť fungovala správně.

„Dlouhá období nedokončení jsou pro uzly náročná a je pro nás velmi důležité vidět, jak se chovají právě teď. Myslíme si, že se testnet dá nakonec zase dohromady, ale nemyslím si, že se to budeme snažit ručně opravit, protože nám to dává příležitost otestovat zajímavé okrajové případy.“

„Nemyslím si, že to zdrží sloučení, protože sloučení ještě není naplánováno. Ale ukazuje to, jak důležité je testování. Myslím, že sloučení postupuje opravdu dobře. Potřebujeme ještě několik týdnů, abychom software dostali do přijatelného stavu, a pak potřebujeme několik měsíců na jeho testování,“ říká van der Wijden.

Co když se to stane na mainnetu?

Zajímavá otázka je, co by se stalo, kdyby se na hlavním řetězci objevila taková chyba.

"Začali jsme s testováním poměrně brzy, takže jsme očekávali několik chyb, jako je tato. Taková chyba na mainnetu by však byla docela ošklivá, protože bychom museli najít a opravit chybu, v čemž jsme docela dobří, uvolnit kód a pak dát všem stakeholderům vědět, že by měli aktualizovat své uzly. Poslední část je podle mého názoru nejtěžší, protože někteří uživatelé vývoj příliš nesledují,“ říká van der Wijden.

Pro více podrobností doporučujeme čtenářům, kteří mají zájem, přečíst si knihu Mariuse van der Wijdena tweety o incidentu.

Zpravodaj CryptoSlate

Obsahuje shrnutí nejdůležitějších každodenních příběhů ze světa kryptoměn, DeFi, NFT a dalších.

Získat hrana na trhu kryptoměn

Získejte přístup k více kryptografickým poznatkům a kontextům v každém článku jako placený člen CryptoSlate Edge.

On-chain analýza

Cenové snímky

Více kontextu

Připojte se hned za 19 $ měsíčně Prozkoumejte všechny výhody

Zdroj: https://cryptoslate.com/ethereum-merge-testnet-kintsugi-split-by-bug-heres-why/