Ethereum spajanje testne mreže Kintsugi podijeljeno bugom, evo zašto

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

Za testiranje spajanja, Kintsugi testnet je raspoređen u prosincu. Svrha testneta je pokrenuti različite rubne slučajeve i promatrati kako se sustav 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 tjedana. Prošli tjedan sam napravio fuzzer koji bi slao nevažeće blokove. Blok sadrži puno informacija, kao što su transakcije, hash prethodnog bloka, ograničenje plina, itd.”, kaže Marius van der Wijden.

Neke implementacije nisu izvršile i potvrdile blok

Fuzzer je uobičajena vrsta alata za testiranje koji se koristi među programerima za generiranje nasumičnih ulaza u funkcije ili druge dijelove koda i pokušaj da se razbiju na ovaj ili onaj način. Radi se o generiranju krivo oblikovanih i neočekivanih ulaza i promatranju što se događa sa sustavom.

Fuzzer koji je kreirao van der Wijden proizvodi valjani blok i mijenja jedan njegov element kako bi ga učinio 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 predmemoriji. Budući da je prethodni blok bio valjan i u predmemoriji, pretpostavili su da je valjan i novi blok”, objašnjava van der Wijden.

Mreža se dvaput podijeli

Rezultat je bio da je polovica mreže, Geth klijenti, odbila blok, dok ga je druga polovica, Nethermind- i Besu klijenti, prihvatila, uzrokujući cijepanje lanca budući da smo sada imali dva različita pogleda na ispravno stanje. Da stvari budu još 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 se razdvajanje još uvijek istražuje, ali izgleda da bi Teku također mogao imati neki mehanizam za caching koji nije uspio", kaže van der Wijden.

Budući da u trenutku pisanja postoji nekoliko različitih vilica Kintsugi testneta, a svaki čvor misli da se nalazi na ispravnoj račvi, mreža se više ne finalizira.

“Smislit ćemo nešto da ponovo spojimo mrežu. Već smo ažurirali Nethermind klijent i ti su čvorovi sada u ispravnom lancu. Još uvijek trebamo ispravak za Teku, budući da 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 odgađa daljnje testiranje spajanja Ethereuma, niti odgađa samo spajanje. Zapravo, 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.

“Duga razdoblja nefinalizacije su izazovna za čvorove i vrlo nam je važno vidjeti kako se oni ponašaju u ovom trenutku. Mislimo da će se testnet na kraju ponovno spojiti, ali ne mislim da ćemo ga pokušati ručno popraviti jer nam daje priliku testirati zanimljive rubne slučajeve.”

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

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

Zanimljivo je pitanje što bi se dogodilo da se ovakav bug dogodio na mainchainu.

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

Za više pojedinosti, zainteresiranog čitatelja potičemo na čitanje Mariusa van der Wijdena Tweets na incident.

CryptoSlate bilten

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

Nabavite rub na tržištu kriptoaseta

Pristupite više kripto uvida i konteksta u svakom članku kao član koji plaća 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/