Ethereum spajanje testne mreže Kintsugi podijeljeno je greškom, evo zašto

Događaj spajanja na Ethereum mreži je prijelaz na model konsenzusa Proof-of-Stake sa trenutno korištenog Proof-of-Work modela. Ovo spajanje znači da će se trenutni Ethereum mainnet sistem i novi Beacon lanac, koji se često naziva Ethereum 2.0, spojiti u jedan blockchain.

Da bi se testiralo spajanje, Kintsugi testnet je raspoređen u decembru. Svrha testneta je da pokrene različite rubne slučajeve i posmatra kako se sistem ponaša. Jedan od programera uključenih u izvođenje testova na Kintsugiju je Marius van der Wijden, programer jezgre Ethereuma koji radi s Geth (Go-Ethereum) klijentskim timom.

“Testnet je radio bez greške nekoliko sedmica. Prošle sedmice sam napravio fuzzer koji bi slao nevažeće blokove. Blok sadrži mnogo informacija, kao što su transakcije, heš prethodnog bloka, ograničenje gasa, itd.“, kaže Marius van der Wijden.

Neke implementacije nisu izvršile i potvrdile blok

fuzzer je uobičajen tip alata za testiranje koji se koristi među programerima za generiranje nasumičnih ulaza u funkcije ili druge dijelove koda i pokušaj da ih razbije na ovaj ili onaj način. Radi se o generisanju deformisanih i neočekivanih ulaza i praćenju šta se dešava sa sistemom.

fuzzer koji je kreirao van der Wijden proizvodi važeći blok i mijenja jedan njegov element da ga učini nevažećim. Jedna tehnika koju koristi je promjena elementa u drugi. U ovom slučaju, fuzzer je promijenio blockhash u roditeljski hash.

“Čvorovi bi trebali odbiti tako promijenjeni blok. Međutim, budući da je roditeljski hash ukazivao na sam važeći blok, neke implementacije zapravo nisu izvršile i potvrdile blok, već su ga umjesto toga tražile u kešu. Pošto je prethodni blok bio važeći i u kešu, pretpostavili su da je i novi blok važeći”, objašnjava van der Wijden.

Mreža podijeljena dvaput

Rezultat je bio da je polovina mreže, Geth klijenti, odbila blok, dok ga je druga polovina, Nethermind- i Besu klijenti, prihvatila, uzrokujući podjelu lanca budući da smo sada imali dva različita pogleda na ispravno stanje. Da stvari budu gore, na vrhu je bio još jedan problem.

Prema van der Wijdenu, čvorovi Gethovog lanca, zauzvrat, koji se sastoje od Lighthouse-Geth, Prysm-Geth, Lodestar-Geth, Nimbus-Geth i Teku-Geth, također su podijeljeni između njih.

„Ovo razdvajanje se još istražuje, ali izgleda da Teku može imati i neki mehanizam za keširanje koji nije uspio“, kaže van der Wijden.

Pošto u trenutku pisanja postoji nekoliko različitih forkova Kintsugi testneta i svaki čvor misli da se nalazi na ispravnom račvanju, mreža se više ne finalizira.

“Smislit ćemo nešto da ponovo spojimo mrežu. Već smo ažurirali Nethermind klijent i ti čvorovi su sada u ispravnom lancu. I dalje nam je potrebna ispravka za Teku, pošto je više od 33 posto čvorova Teku, inače se lanac neće finalizirati,” kaže van der Wijden.

Incident donosi nešto dobro

Prema van der Wijdenu, ovaj incident ne zabranjuje niti odlaže dalje testiranje spajanja Ethereuma, niti odlaže samo spajanje. U stvari, van der Wijden kaže da incident zapravo pomaže u testiranju rubnih slučajeva koje bi bilo teško testirati da je mreža ispravno radila.

“Dugi periodi nefinalizacije su izazovni za čvorove i veoma nam je važno da vidimo kako se oni ponašaju u ovom trenutku. Mislimo da će se testna mreža na kraju ponovo spojiti, ali ne mislim da ćemo pokušati ručno da to popravimo, jer nam to daje priliku da testiramo zanimljive rubne slučajeve.”

“Mislim da ovo neće odgoditi spajanje, jer spajanje još nije zakazano. Ali to pokazuje koliko je testiranje važno. Mislim da spajanje napreduje jako dobro. Treba nam još nekoliko sedmica da softver dovedemo u prihvatljivo stanje, a zatim nam treba nekoliko mjeseci da ga testiramo”, kaže van der Wijden.

Šta ako se to dogodi na glavnoj mreži?

Zanimljivo je pitanje šta bi se dogodilo da se ovakav bag pojavio na glavnom lancu.

“Počeli smo s testiranjem prilično rano, pa smo očekivali nekoliko ovakvih grešaka. Takav bug na mainnetu bi ipak bio prilično gadan, budući da bismo morali pronaći i popraviti grešku, u čemu smo prilično dobri, osloboditi kod i onda obavijestiti sve aktere da bi trebali ažurirati svoje čvorove. Posljednji dio je po mom mišljenju najteži dio, jer neki korisnici ne prate razvoj previše pomno”, kaže van der Wijden.

Za više detalja, zainteresovani čitaoci se ohrabruju da pročitaju Marius van der Wijden tvitova o incidentu.

CryptoSlate Newsletter

Sadrži sažetak najvažnijih dnevnih priča u svijetu kriptovaluta, DeFi-ja, NFT-a i još mnogo toga.

dobiti ivica na tržištu kriptoaseta

Pristupite više kripto uvida i konteksta u svakom članku kao plaćeni član CryptoSlate Edge.

Analiza na lancu

Snimke cijena

Više konteksta

Pridružite se sada za 19 dolara mjesečno Istražite sve pogodnosti

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