Gå direkt till kursmenyn Gå direkt till innehållet

Blockkedjor

För att förstå bitcoin och kryptovalutor måste man nog först förstå själva tekniken som ligger bakom den, det som kallas blockkedjor. Med denna förståelse kommer förhoppningsvis också insikten att tekniken och användningsområdena bakom blockkedjor är långt mycket större och viktigare än enskilda kryptovalutor. Förhållandet mellan blockkedjor och kryptovalutor är motsvarande förhållandet mellan internet och Google. Internet är den stora viktiga infrastrukturen och Google (Alphabet INC) är företaget vars program och system utnyttjar den infrastrukturen. Blockkedjetekniken är tekniken och infrastrukturen, bitcoin är bara en tänkbar applikation som använder tekniken. I längden har blockkedjor en möjlighet att omforma vårt samhälle långt mycket mer än en enskild kryptovaluta, eller ens alla kryptovalutor tillsammans.

Det decentraliserade registret

Blockkedjor är ett sätt att hålla ett gemensamt och transparent register över någon form av information eller resurser. Det är utformat så att varje förändring av information – exempelvis vem som äger vad – distribueras till varje användare. Systemet bygger asymmetrisk kryptering av den sort vi behandlat i förra lektionen. Med hjälp av denna asymmetriska kryptering kan du som användare vara säker på att informationen i blockkedjan – exempelvis då vem som äger vad – är korrekt, utan att du för den delen får reda på exakt vad den informationen är. Medlemmar i ett decentraliserat blockkedjeregister, exempelvis bitcoin, har alltså inte insyn i vad varje medlem äger och inte äger. Den informationen är privat och krypterad. Däremot kan de, om de handlar med någon annan person i blockkedjenätverket, känna sig trygga med att personen har de resurser den utger sig för att ha, eftersom denna information är distribuerad till alla. En transaktion i bitcoinnätverket kan inte gå igenom om det inte finns täckning för den, eftersom både köpare och säljare har krypterad tillgång till information om var varje bitcoin finns, motsvarande att de har den kunskap en bank vanligtvis har monopol på.

I teorin finns det ingen anledning till varför låneregistret på ett folkbibliotek inte skulle kunna vara gjort i blockkedjeform. Böckerna i samlingen skulle kunna vara distribuerade mellan ett centralt bibliotek och alla intressenter (alla som ville ha ett lånekort) och varje förflyttning av böcker skulle kunna registreras i kedjan på ett sätt som gör att böckerna inte hela tiden skulle behöva förvaras på biblioteket eller lämnas till nästa användare med omvägen via biblioteket. Om jag sökte en bok skulle jag kunna få reda på vilken användare som hade boken (anonymiserat genom kryptering, såklart) och kontakta denna för överlämning av boken, förutsatt att den överenskomna lånetiden gått ut. Att det verkligen skulle vara just den användaren som hade just den boken skulle vara garanterat eftersom varje förflyttning av varje bok skulle finnas registrerat i kedjan och den informationen skulle finnas tillgänglig för inspektion av varje användare.

Som biblioteksanställd ser du nu givetvis hundra anledningar till varför detta låter som en helt galen idé och självklart finns det mängder med skäl till varför det inte fungerar i praktiken – men det finns inget egentligt teoretiskt problem med att ett låneregister för böcker decentraliseras och distribueras med blockkedjeteknik på detta sätt. Fördelen med ett dylikt system skulle till exempel vara att driftssäkerheten ökade och att risken för attacker mot systemet minskade. Låneregistret skulle gå att komma åt helt oavsett hur bibliotekets datorer mådde för stunden.

Hur blockkedjan fungerar

Själva ordet blockkedja säger ganska mycket om vad det handlar om. Informationen i det öppna, distribuerade registret placeras i ett block. Detta block kan innehålla information från flera olika användare.

Blocket länkas sedan till det tidigare publicerade informationsblocket i kedjan genom ett kryptografiskt fingeravtryck – en så kallad “hash”,  som gör att de två blocken sitter ihop på ett sätt som inte går att bryta eller manipulera. I ett blocks hash ingår all exakt information om blocket (storlek, information, identitet). I blockets hash ingår också information om det föregående blockets hash. När detta block sedan läggs till nästa ingår detta blocks hash som en liten del i informationen i nästa block och påverkar i liten grad nästa hash. Detta skapar en kedja där du tydligt kan följa utvecklingen och kontrollräkna varje block. Block B måste innehålla element av block As hash. Block C måste innehålla element av block Bs hash, som då i sin tur har element av block As hash. Det går alltså inte att stoppa in falska block eller en kopia av ett redan godkänt eller existerande block i kedjan. Alla block blir helt unika och dess position i kedjan tydlig och spårbar. När ett informationsblock lagts till kedjan distribueras information om det ut till alla medlemmar i nätverket och med hjälp av kontrollmekanismerna kopplat till hashfunktionerna som förklaras ovan kan alla se att blocket är korrekt tillagt – utan att de för den sakens skull har insyn i exakt vilka förändringar av information som blocket innehåller. I bitcoins fall handlar det ju om information om ekonomiska transaktioner. Varje dator kopplad till blockkedjan kan när som helst kontrollera en bit information i blockkedjan bakåt.

Bilden beskriver tre block i en blockkedja ochvisar hur hashen för hela det första blocket, kallat block 10 på bilden, ingår i block 11 tillsammans med annan information i form av text. Slutligen illustrerar bilden hur detta nya kompletta block (block 11) utgör en hash för block 12.

CCBY Matthäus Wander

Proof of Work

I samband med att ett block ska få läggas till i kedjan har många blockkedjor infört kravet att datorn eller ett nätverk av datorer ska behöva lösa ett komplicerat matematiskt problem innan blocket godkänns. Detta är en del i kontrollfunktionen för att ett block ska räknas som korrekt av resten av blockkedjenätverket. Problemet ska vara komplicerat nog för att en hel massa datorkraft i det samlade nätverket ska gå åt för att lösa det men samtidigt inte så oändligt komplicerat att det gör att hela blockkedjan stannar upp i väntan på att det ska bli löst. Detta koncept kallas proof of work. Syftet är att om någon bedrägligt försöker ändra, förvanska eller förfalska information i blockkedjan så måste de – på grund av att blocken sitter fästa i varandra med det fingeravtryck som ju hashen i praktiken är, som är länkade till varandra – byta ut varje block i kedjan (eller egentligen räkna om en ny hash för varje nytt fuskat block) för att komma undan med detta lurendrejeri. Eftersom varje block kräver proof of work i form av komplicerade uträkningar så behöver bedragarna då i teorin ha mer beräkningskraft än resten av blockkedjenätverket sammantaget för att lyckas och få sin falska nya blockkedja accepterad av mer än 50 % av nätverket – en så kallad  51 %-attack. Detta är något mycket svårt att lyckas med i ett stort distribuerat blockkedjenätverk och i praktiken har vi bara sett exempel på det i mindre, nystartade nätverk.

Exempel:

I en blockkedja med någon form av påhittad kryptovaluta (låt oss kalla det Krämercoins) med tusen sammanlänkade datorer försöker bedragaren X sig på ett bedrägeri där hen först köper guld av en annan användare i kedjan för ett värde motsvarande 10 miljoner i Krämercoins. Säljaren av guldet behöver inte oroa sig för betalningen. Eftersom all finansiell information om alla Krämercoins finns lagrad i blockkedjan så skulle inte en transaktion gå igenom om det faktiskt inte tidigare i kedjan fanns information om att köparen på något sätt tillskansat sig Krämercoins motsvarande den summan. Betalningen går igenom, köparen får guldet skeppat till sig och säljaren får motsvarande tio miljoner i Krämercoins. Så långt inget konstigt. Men det är nu bedrägeriet sker. Köparen av guldet använder sina hackingfärdigheter och återställer balansen på sitt konto med de pengar hen nyss spenderat och försöker sedan köpa diamanter av en annan användare för samma pengar en gång till. För att blocket som innehåller denna information ska gå igenom måste balansen på köparens konto stämma med informationen i hela den existerande blockkedjan och det gör den inte. Fingeravtrycket har ändrats i och med att information om Krämercoins som skulle vara spenderade nu är ändrat till information om att pengarna är där igen. Andra datorer i nätverket kommer inte att acceptera detta nya block. För att bedrägeriet ska lyckas måste bedragaren justera varje block i kedjan med nya omräknade hashar och kontrollera mer än hälften av datorerna i nätverket för att den “nya” (falska) informationen ska accepteras som den nya sanningen. Eftersom varje block som läggs till kräver proof of work-beräkningar så har bedragaren ett svårt jobb framför sig.

Länk till filmen Hur fungerar en blockchain – Enkel förklaring framtagen av Simply Explained på YouTube.

I korthet

  • Blockkedjor är ett distribuerat register av information.
  • Varje block i kedjan lägger till ny information.
  • Varje block i kedjan är unikt och har ett unikt kryptografiskt fingeravtryck. En del av detta fingeravtryck är kopplat till blocket tidigare vilket gör dess plats i kedjan unik och omöjlig att manipulera utan att byta ut hela kedjan.
  • Varje nytt block som läggs till godkänns i datornätverket som gemensamt äger blockkedjan. Godkännandet sker genom att blocket kontrolleras/kontrollräknas och att det kryptografiska fingeravtrycket stämmer.
  • När ett block i kedjan blivit godkänt har alla tillgång till den nya informationen i blocket.
  • För att få lägga till ett block till kedjan krävs ofta lösning av svåra matematiska problem. Detta kallas proof of work.
  • Proof of work försvårar försök att manipulera blockkedjan. Eftersom manipulation av de faktiska blocken och kedjorna mellan blocken inte är möjlig så kräver bedrägliga förändringar som du gjort i ett block att du istället justerar hela kedjan och gör proof of work för alla block.

Flervalsfråga

Välj rätt svar för att fortsätta till nästa lektion.

Blockkedjans hash kan närmast liknas vid?

Svara rätt på testfrågan för att fortsätta.