Ethereum merge testnet Kintsugi rozdelené podľa chyby, tu je dôvod

Udalosť zlúčenia v sieti Ethereum je prechodom na model konsenzu Proof-of-Stake z aktuálne používaného modelu Proof-of-Work. Toto spojenie znamená, že súčasný mainnetový systém Ethereum a nový reťazec Beacon, často označovaný ako Ethereum 2.0, sa spoja do jedného blockchainu.

Na testovanie zlúčenia bola v decembri nasadená testovacia sieť Kintsugi. Účelom testovacej siete je spúšťať rôzne okrajové prípady a sledovať, ako sa systém správa. Jedným z vývojárov, ktorí sa podieľajú na spustení testov na Kintsugi, je Marius van der Wijden, hlavný vývojár Ethereum spolupracujúci s klientskym tímom Geth (Go-Ethereum).

„Testovacia sieť bežala bezchybne niekoľko týždňov. Minulý týždeň som vytvoril fuzzer, ktorý posielal neplatné bloky. Blok obsahuje veľa informácií, ako sú transakcie, hash predchádzajúceho bloku, limit plynu atď.,“ hovorí Marius van der Wijden.

Niektoré implementácie nevykonali a neoverili blok

Fuzer je bežný typ testovacieho nástroja, ktorý vývojári používajú na generovanie náhodných vstupov do funkcií alebo iných častí kódu a snažia sa ich nejakým spôsobom rozbiť. Ide o generovanie chybných a neočakávaných vstupov a sledovanie toho, čo sa stane so systémom.

Fuzer vytvorený van der Wijdenom vytvorí platný blok a zmení jeden jeho prvok tak, aby bol neplatný. Jedna technika, ktorú používa, je zmeniť prvok na iný. V tomto prípade fuzzer zmenil blockhash na rodičovský hash.

„Uzly by mali odmietnuť takto zmenený blok. Keďže však nadradený hash poukazoval na samotný platný blok, niektoré implementácie v skutočnosti blok nevykonali a neoverili, ale namiesto toho ho vyhľadali vo vyrovnávacej pamäti. Keďže predchádzajúci blok bol platný a vo vyrovnávacej pamäti, predpokladali, že je platný aj nový blok,“ vysvetľuje van der Wijden.

Sieť rozdelená dvakrát

Výsledkom bolo, že polovica siete, klienti Geth, blok odmietla, zatiaľ čo druhá polovica, klienti Nethermind- a Besu, ho prijali, čo spôsobilo rozdelenie reťazca, pretože sme teraz mali dva rôzne pohľady na správny stav. Aby toho nebolo málo, navrchu bol ešte jeden problém.

Podľa van der Wijdena sa medzi ne rozdelili aj uzly gethského reťazca, ktoré pozostávajú z Lighthouse-Geth, Prysm-Geth, Lodestar-Geth, Nimbus-Geth a Teku-Geth.

"Toto rozdelenie sa stále vyšetruje, ale zdá sa, že Teku môže mať aj nejaký mechanizmus ukladania do vyrovnávacej pamäte, ktorý zlyhal," hovorí van der Wijden.

Keďže v momente písania existuje niekoľko rôznych forkov testovacej siete Kintsugi a každý uzol si myslí, že sú na správnej vidlici, sieť sa už nedokončuje.

"Vymyslíme niečo, aby sme dali sieť opäť dokopy." Klienta Nethermind sme už aktualizovali a tieto uzly sú teraz v správnom reťazci. Stále potrebujeme opravu Teku, pretože viac ako 33 percent uzlov je Teku, inak sa reťaz nedokončí,“ hovorí van der Wijden.

Incident prináša niečo dobré

Podľa van der Wijdena tento incident nezakazuje ani neodkladá ďalšie testovanie zlúčenia Etherea a ani samotné zlúčenie neodďaľuje. V skutočnosti van der Wijden hovorí, že incident skutočne pomáha otestovať okrajové prípady, ktoré by bolo ťažké otestovať, ak by sieť fungovala správne.

„Dlhé obdobia nedokončenia sú pre uzly náročné a je veľmi dôležité, aby sme videli, ako sa práve teraz správajú. Myslíme si, že sa testovacia sieť dá nakoniec opäť dokopy, ale nemyslím si, že sa to budeme snažiť manuálne opraviť, pretože nám to dáva príležitosť otestovať zaujímavé okrajové prípady.“

„Nemyslím si, že by to oddialilo zlúčenie, pretože spojenie ešte nie je naplánované. Ale ukazuje, aké dôležité je testovanie. Myslím si, že zlučovanie napreduje naozaj dobre. Potrebujeme ešte pár týždňov, aby sme softvér dostali do prijateľného stavu, a potom potrebujeme pár mesiacov na jeho otestovanie,“ hovorí van der Wijden.

Čo ak sa to stane na mainnete?

Zaujímavou otázkou je, čo by sa stalo, keby sa na hlavnom reťazci vyskytla takáto chyba.

„Začali sme s testovaním pomerne skoro, takže sme očakávali niekoľko takýchto chýb. Takáto chyba na mainnete by však bola dosť nepríjemná, pretože by sme potrebovali nájsť a opraviť chybu, v ktorej sme celkom dobrí, uvoľniť kód a potom dať všetkým zainteresovaným vedieť, že by mali aktualizovať svoje uzly. Posledná časť je podľa môjho názoru najťažšia, pretože niektorí používatelia nesledujú vývoj príliš pozorne,“ hovorí van der Wijden.

Ak chcete získať ďalšie podrobnosti, odporúčame čitateľom, aby si prečítali knihu Mariusa van der Wijdena tweety o incidente.

Spravodaj CryptoSlate

Obsahuje súhrn najdôležitejších každodenných príbehov vo svete krypto, DeFi, NFT a ďalších.

Získať hrana na trhu kryptomien

Získajte prístup k ďalším kryptickým poznatkom a kontextu v každom článku ako platený člen CryptoSlate Edge.

On-chain analýza

Cenové snímky

Viac súvislostí

Pripojte sa teraz za 19 dolárov mesačne Preskúmajte všetky výhody

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