Förgrenad blockkedja – vad var det som hände?

(Det här är ett tekniskt inlägg som kräver viss grundläggande förståelse av hur Bitcoin fungerar.)

Natten till igår inträffade en förgrening av blockkedjan där äldre klienter (0.7 och tidigare) betraktade en gren som den rätta medan nyare klienter (v0.8) såg en annan gren som den rätta. Orsaken till det hela var ett block med ovanligt många transaktioner som skapades av en v0.8-klient. Den stora mängden transaktioner gjorde att en bugg visade sig i de äldre versionerna. P.g.a. av en begränsning i den databas som användes i de äldre versionerna (Berkeley DB) så kunde dessa klienter inte hantera blocket vilket gjorde att de såg det som ogiltigt, medan det gick alldeles utmärkt i den nya versionen som använder en annan databas.

Effekten av det här blir att alla som använder en klient av v0.7 eller tidigare ser en version av verkligheten medan de som använder v0.8 ser en annan.

Efter överläggningar kom utvecklarna fram till att den bästa lösningen var att försöka få de miners som använde v0.8 att gå tillbaka till v0.7 så att nätverket slutligen skulle kunna enas om att det är den ”korrekta” kedjan. Det här kan låta konstigt eftersom buggen finns i den tidigare versionen. Anledningen till att man väljer denna lösning istället för att tvinga alla att uppgradera till v0.8 är att den är lättare att genomföra och får mindre påverkan i stort. Med den här lösningen så är det bara miners som påverkas medan vanliga användare, e-plånböcker, handlare etc. kan fortsätta använda den klient de kör.

Beslutet att be miners att nedgradera till en tidigare version meddelas bl.a. på BitcoinTalk och i takt med att miners slutade använda v0.8 så började 0.7-grenen komma ifatt. Efter ca 25 block och 7 timmar med parallella blockkedjor var 0.7-grenen den längsta och allt kunde återgå till det normala. Under denna period rekommenderades mottagare av betalningar att inte lita på transaktioner trots många confirmations. 6 confirmations betyder förstås ingenting om de finns på en gren som kommer att överges. För vanliga användare innebar incidenten egentligen ingenting. Ingen uppgradering eller nedgradering var nödvändig och transaktioner som initierades under perioden har gått igenom även om de för en stund kunde ha en missvisande status.

Det fanns ursprungligen mer hashningskraft på 0.8-grenen så om ingen åtgärd hade vidtagits så hade alla 0.8-klienter sett detta som den rätta kedjan och alla hade varit tvungna att uppgradera till  denna version för att kunna använda Bitcoin. Det här är vad som kallas en ”hård förgrening” (”hard fork”), alltså en förändring av Bitcoins regler som gör att alla användare måste uppgradera till den senaste versionen. Man vill mycket ogärna göra en sådan förändring på grund av de stora konsekvenser det skulle ha för folk som inte är medvetna om den.

Det är dock troligt att en hård förgrening kommer att göras någon gång i framtiden men det kommer då att ske med god framförhållning och implementeras som ”passiv” kod som aktiveras vid en bestämd framtida tidpunkt för att ge alla god tid att uppgradera. Den finns en önskelista för saker som man skulle vilja ha med i en sådan här hård förgrening. Tanken är då att försöka få med flera saker vid förgreningen så att det inte behöver göras fler gånger.

2 Kommentarer

  • bitsandpieces
    13 mars, 2013 - 14:05 | Permalänk

    OK – en fråga från en som inte kan tekniken: Menar du att alla som använder bitcoins måste uppgradera något i sina datorer för att kunna fortsätta använda bitcoins i framtiden? Det låter så, men det verkar orimligt, eller …?

    • D.H.
      13 mars, 2013 - 14:12 | Permalänk

      Det lät kanske värre än vad det är. Om det blir fråga om en hård förgrening någon gång i framtiden så kommer de som kör en egen full klient (Bitcoin-Qt) på sin dator att behöva uppgradera till en nyare version. Om du använder en online-plånbok som t.ex. blockchain.info eller någon av de tunna klienterna (t.ex. Electrum) kommer du med all sannolikhet inte att påverkas alls.

      Det kommer dessutom inte att vara någon brådska när det väl händer. Det kommer att vara något i stil med att du ser till att inte använda en version av Bitcoin-Qt som är äldre än 6 månader när förändringen ska ske.

  • Kommentera

    E-postadressen publiceras inte. Obligatoriska fält är märkta *