Cardano hard fork update

Cardano repareert stille walletfout die blockchain-sync kon stoppen

Altcoin Nieuws12 sep , 8:25
Een Cardano-wallet kon onder een specifieke combinatie van softwareversies stilvallen zonder duidelijke foutmelding. De oorzaak zat diep in de consensussoftware: een node en client verwachtten verschillende versies van dezelfde genesisdata.
cardano-wallet kon daardoor stoppen met het volgen van de blockchain. Cardano zelf bleef wel gewoon blocks verwerken en consensus bereiken.
Het consensusteam heeft de fout nu gerepareerd in ouroboros-consensus 4.2.1.0. Dat bevestigt het team in zijn officiële ontwikkelupdate.

Eén extra veld bracht communicatie uit balans

De fout begon bij een ogenschijnlijk kleine wijziging in cardano-ledger-shelley.
Versie 1.19.0.0 voegde een extra veld toe aan het zogenoemde Shelley genesis-record. Daardoor groeide de datastructuur van vijftien naar zestien velden.
Alleen veranderde de versie van het node-to-clientprotocol niet mee.
Dat protocol bepaalt welke gegevens een Cardano-client en een node tijdens hun communicatie van elkaar mogen verwachten.
Door de mismatch kon een nieuwe client zestien velden verwachten, terwijl een oudere node er slechts vijftien verstuurde.

Wallet bleef wachten op data die nooit kwam

Juist de manier waarop de fout zichtbaar werd, maakte hem lastig.
Tests binnen de officiële cardano-wallet-repository laten zien dat een client met het nieuwe formaat tegen Cardano-node 11.0.1 kon blijven wachten op ontbrekende data.
Er kwam geen nette foutmelding.
De wallet bleef op het genesispunt hangen en paste geen nieuwe blocks meer toe. Volgens de testresultaten reageerde zelfs een verzoek om netwerkinformatie niet meer normaal.
Voor een gebruiker of operator zag dat eruit alsof de wallet simpelweg niet meer synchroniseerde.
Het consensusteam noemt dit expliciet een silent failure.

Omgekeerde combinatie ging juist hard onderuit

De fout werkte niet in beide richtingen hetzelfde.
Een nieuwe wallet die zestien velden verwachtte tegenover een oude node met vijftien velden kon stil blijven hangen.
Bij de omgekeerde combinatie ging het proces juist wel zichtbaar stuk.
Een oudere wallet tegenover een nieuwere node kreeg een decodeerfout wegens het verschil in de grootte van het Shelley genesis-record. Daarna stopte het walletproces.
Dat verschil is technisch belangrijk.
In het ene geval zag de operator een fout. In het andere geval leek de software alleen niets meer te doen.

Cardano kiest voor oud formaat én flexibele decoder

De reparatie pakt beide kanten aan.
GetGenesisConfig verstuurt opnieuw het oorspronkelijke formaat met vijftien velden. Tegelijkertijd kan de decoder voortaan antwoorden met zowel vijftien als zestien velden verwerken.
Volgens het consensusteam hoeft een client daardoor niet te wachten tot iedere reeds uitgerolde node apart is bijgewerkt.
Het extra veld kan voor deze query worden weggelaten zonder noodzakelijke informatie te verliezen.
De wijziging voorkomt daarmee dat clients en nodes door een verschil in ledger-versie opnieuw vastlopen op dezelfde datastructuur.

Dit was geen breuk van Cardano zelf

Het woord consensus verdient hier voorzichtigheid.
De fout bevond zich in ouroboros-consensus, de softwarelaag die een belangrijke rol speelt binnen Cardano. Dat betekent niet dat het Cardano-netwerk plots verschillende geldige blockchains accepteerde.
De beschikbare testgegevens laten een ander probleem zien.
Een client kon de gegevens van een node niet correct verwerken en daardoor stoppen met synchroniseren. Er is geen aanwijzing dat nodes door deze fout een ongeldige chain als geldig accepteerden.
Dat maakt dit vooral een probleem rond compatibiliteit en beschikbaarheid.
Voor diensten die voortdurend de laatste toestand van de blockchain moeten kennen, is dat nog steeds serieus.
Denk aan exchanges en andere partijen binnen de altcoinmarkt die eigen nodes of wallets gebruiken om stortingen en transacties te volgen.

Leios krijgt tegelijk nieuwe aanpassingen

De reparatie kwam tijdens bredere werkzaamheden aan de kernsoftware van Cardano.
Het consensusteam werkte in dezelfde ontwikkelperiode verder aan Ouroboros Leios. Nodes kregen onder meer aangepaste logica voor het downloaden van Leios-data en caching van recente transacties.
Ook werd een tweede oorzaak aangepakt waardoor eerlijke nodes tijdens het synchroniseren ongewenst van elkaar konden worden losgekoppeld.
Daarnaast draait het opruimen van oude ledger-states voortaan in een aparte thread. Daardoor hoeft geheugenvrijgave niet langer te wachten op het maken van een snapshot.

Kleine softwarewijziging, zichtbaar gevolg

De walletfout laat vooral zien hoe gevoelig communicatie tussen verschillende softwareversies kan zijn.
Eén extra veld veranderde het formaat van een datastructuur. Omdat de bijbehorende protocolversie niet veranderde, konden node en client denken dat ze dezelfde taal spraken terwijl hun verwachtingen verschilden.
Cardano bleef produceren.
Maar voor een getroffen wallet kon het netwerk ineens volledig stil lijken te staan.
Dat verschil van één veld was genoeg.

Stop met te veel betalen voor je crypto. Bij de Amsterdamse exchange Finst handel je tegen de laagste tarieven van Nederland, zonder verborgen kosten.

👀 Bekijk Finst nu

Let op: Beleggen in crypto brengt risico’s met zich mee. Handel alleen met geld dat u kunt missen.

Ga verder met lezen
loading
Dit vind je misschien ook leuk
Laat mensen jouw mening weten

Loading