Hashvärde, proof-of-work och blockkedja – så fungerar bitcoin

2017-12-21 11:28  

Vad är hashvärde, proof-of-work och bitcoingrävare? Ny Teknik reder ut begreppen bakom bitcoin.

Vad är en kryptovaluta?

Det är en digital valuta som blivit möjlig tack vare internet och kryptografi. En av de bärande tankarna är att människor ska kunna genomföra transaktioner utan att gå via en mellanhand, som till exempel en bank.

Hur fungerar krypteringstekniken?

En kryptovaluta kan fungera på olika sätt. Vi håller oss här till kryptovalutan bitcoin. Till den används asymmetrisk kryptering. Det är en metod från 1970-talet som gjort säker elektronisk kommunikation praktiskt genomförbar.

Kortfattat kan man säga att asymmetrisk kryptering bygger på en öppen nyckel och en privat nyckel. Den öppna nyckeln används för att skicka krypterad elektronisk information och den privata används för att avkryptera informationen.

Det betyder att utbytet av information kan ske utan att avsändaren och mottagaren först delat en hemlighet med varandra.

I fallet med en kryptovaluta är förloppet i princip det motsatta. Avsändaren skickar krypterad information med en privat nyckel och alla andra kan sedan kontrollera att informationen kommer från den privata nyckeln. På så sätt kan man vara säker på att det är avsändaren och ingen annan som skickat informationen. Detta brukar kallas digitala signaturer.

Bitcoin använder dessutom krypteringsteknik i andra komponenter av sitt underliggande system. Vi återkommer till det.

Läs mer:

Läs mer: Här är de 5 största kryptovalutorna

Hur genomför man en transaktion?

För en slutanvändare är det inte mer komplicerat än det är att betala med ett kreditkort. Men för att förstå tekniken som gör transaktionen möjlig behöver vi dela upp processen i flera steg.

Den digitala plånboken och bitcoinadresser

Tekniskt sett förvaras inte bitcoin någonstans. Den som vill köpa, sälja eller handla med bitcoin måste dock ha en digital plånbok.

Den digitala plånboken är en särskild programvara med en eller flera unika adresser. En unik adress genereras med hjälp av den privata nyckel vi berättade om här ovan. Den publika nyckeln är matematiskt knuten till den privata nyckeln tack vare en signaturalgoritm.

För bitcoin heter signaturalgoritmen för nyckelparet ECDSA, eller elliptic curve digital signature algorithm.

En transaktion signeras med den privata nyckeln och verifieras med den publika nyckeln. Det är däremot beräkningsmässigt opraktiskt att försöka klura ut vilken den privata nyckeln är *.

Sajten Coindesk beskrev det så här: ”föreställ dig att din bitcoinadress är ett kassaskåp med en glasdörr. Alla ser vad som är i kassaskåpet men bara den som har den privata nyckeln kan komma åt innehållet”.

En bitcoinadress är dock inget kassaskåp utan kan se ut så här: 16UwLL9Risc3QfPqBUvKofHmBQ7wMtjvM. Raden av siffror, små och stora bokstäver är en hashfunktion av den publika delen av ett privat/publikt nyckelpar. En hashfunktion eller hashvärde är ett sätt att representera data av godtycklig storlek med data av bestämd storlek.

Skälet till att man hashar en publik nyckel är alltså dels för att adressen ovan är kortare än alternativen, dels för att hashning ger ytterligare skydd.

* Multiplicera universums livslängd med en miljon: så lång tid tar det att räkna ut alla möjliga privata nycklar. Såvida du har en dator som kan räkna en biljon nycklar per sekund. Bara att lista alla nycklar skulle kräva lika mycket energi som solen genererar under 32 år. Opraktiskt, som sagt.

Läs mer:

Läs mer: 17-åring: ”Att bli en bitcointrader var perfekt för mig”

Vad består en transaktion av?

Som vi noterat existerar inte bitcoin-pengar någonstans, inte ens i digital representation. Det som kallas bitcoin är egentligen en samling transaktioner till och från digitala plånböcker. Saldon som minskar på ett ställe och ökar på ett annat.

En transaktion består av indata, utdata och en summa. Låt säga att Tina vill skicka 1 bitcoin till Kalle. Summan är då 1 bitcoin. Indata är den dokumentation som visar från vilken adress Tina tog emot den bitcoin hon vill skicka till Kalle. Utdata är Tinas publika nyckel/unika adress.

När Kalle tagit emot 1 bitcoin av Tina kan han i sin tur, tack vare sin privata nyckel, skicka den vidare enligt samma procedur.

En transaktion kan bestå av flera olika indata och utdata och förfarandet ovan är naturligtvis förenklat. Det går dessutom att addera skript som stipulerar hur och när mottagaren kan använda den eller de bitcoin-pengar som skickats.

Hur allt började

Enligt obekräftade rapporter sägs bitcoinskaparen som går under pesudonymen Satoshi Nakamoto ha omkring en miljon bitcoin. Det skulle i så fall innebära att hen just nu är god för strax under 20 miljarder kronor och en av världens 50 rikaste personer.

När Nakamoto skapade bitcoin hade hen klurat ut lösningen på flera svåra tankenötter. För det första: om man ska konstruera en valuta måste det finnas ett sätt att skapa nya pengar. Samtidigt kan man naturligtvis inte tillåta att vem som helst och när som helst kan skapa pengar.

Därtill måste problemet med dubbel spendering lösas. Det vore inte hållbart om Tina i exemplet ovan kan skicka samma bitcoin till flera mottagare.

I början av januari 2009 hade Bitcoin version 0.1 premiär *. Fem dagar senare gjorde Satoshi Nakamoto sin skapelse offentlig via en e-postlista.

”Utannonserar den första versionen av bitcoin, ett nytt elektroniskt kontantsystem som använder ett icke-hierarkiskt nätverk (peer-to-peer) för att förhindra dubbel spendering. Det är helt och hållet decentraliserat utan server eller något styrande organ.”

Vidare proklamerade Nakamoto att antalet bitcoin i omlopp aldrig skulle bli fler än 21 miljoner. Den kod Nakamoto skrivit är det vi i dag kallar blockkedja.

* I det allra första blocket (läs mer om block nedan) fanns textraden ”The Times 03/Jan/2009 Chancellor on brink of second bailout for banks”. Citatet speglar mycket riktigt en förstasidesrubrik i The Times den 3 januari 2009. Det var en påpasslig kommentar till finanskrisen. Bitcoin skapades ju delvis som ett sätt att utmana det traditionella bankväsendet.

Läs mer:

Läs mer: Experten: Blockkedjan är för komplicerad

Blockkedja

Ett block består av en samling transaktioner. Vi beskrev en sådan transaktion här ovan. Det allra första bitcoinblocket – som kallas genesisblocket – genererades av Satoshi Nakamoto själv.

Blocken är matematiskt länkade till varandra. Därav begreppet blockkedja.

Man kan tänka på en blockkedja som en digital motsvarighet till en liggare. Alla transaktioner i ett block och alla block från genesisblocket och framåt redovisas i blockkedjan.

Till skillnad från en fysisk liggare är dock bitcoins blockkedja decentraliserad. Det innebär att den i stället för att existera på en plats existerar på flera. Vem som helst kan låta sin dator bli en så kallad nod i bitcoinnätverket. Denna nod sparar och uppdaterar en egen kopia av blockkedjan.

Vad är det som hindrar dessa noder från att manipulera transaktionshistorien och hävda att de sitter på den korrekta versionen? Svaret heter proof-of-work, något som kan översättas till ”arbetsbördans bevisföring”.

Proof-of-work och bitcoingrävare

Ett antal transaktioner (likt den mellan Tina och Kalle ovan) tillhör ett blocks beståndsdelar. Men ett block blir inte färdigbyggt bara för att ett visst antal transaktioner uppnåtts. Antalet transaktioner i ett block kan alltså skilja sig åt, men ett block får inte överstiga 1 megabyte.

Ett block innehåller också ett matematiskt problem och dess lösning ger ett hashvärde som måste möta ett visst antal förutbestämda regler.

En komponent i det matematiska problemet är hashvärdet från det föregående blocket (ja, ett existerande hashvärde används för att räkna fram ett nytt hashvärde).

Ett hashvärde räknas fram med hjälp av en algoritm. Hashvärdet består av ett heltal som representerar all information i blocket (på det sätt vi beskrev ovan) och kallas därför ofta för ett digitalt fingeravtryck.

Varje enskilt blocks hashvärde är matematiskt länkade till varandra, hela vägen tillbaka till det ursprungliga genesisblocket. Man kan alltså inte skapa ett nytt block utan att ta hänsyn till informationen i alla tidigare block.

Hashvärden är svåra att räkna ut, men deras svårighetsgrad är inte statisk. När bitcoin var en ung valuta kunde en hemdator användas för att lösa det matematiska problemet. I dag krävs det i regel specialbyggda processorer i stora datahallar för att klura ut dem.

Koden är nämligen så skriven att ett nytt block ska genereras i genomsnitt var tionde minut. Vi ska snart gå in på varför den gränsen byggts in bitcoins blockkedja.

När Satoshi Nakamoto formulerade sina tankar på en kryptovaluta förstod hen att ett bra decentraliserat nätverk tjänar på att ha många användare.

Det skulle dock vara omöjligt att attrahera många användare genom att be dem upplåta processorkraft till höga kostnader (investeringar i hårdvara, lokaler samt energikostnader) för att säkerställa att blocken ska kunna länkas samman av hashvärdekedjan. Det krävdes någon form av belöning. Och belöningen heter naturligtvis bitcoin.

Alla noder utgör tillsammans det totala bitcoinnätverket. På noderna sparas som sagt en kopia av blockkedjan. Men den som vill kan också upplåta sin nod till att utföra de beräkningar som krävs för att bygga ett nytt block.

I praktiken innebär det att noderna slåss om att lösa det matematiska problemet först. Det blir som en datorernas mattetävling där de prövar och förkastar flera miljarder hashvärden per sekund.

När en nod uppger att den löst problemet kontrolleras dess lösning av de andra noderna i nätverket. Det är en av fördelarna med den krypteringsteknik som används: det matematiska problemet är svårt att lösa, men dess lösning är enkel att verifiera.

Om nätverkets noder uppnår konsensus – att blocket godkänns av övriga noder – adderas blocket till blockkedjan, varpå den vinnande noden erhåller bitcoin. Det är så här bitcoin-pengar överhuvudtaget uppstår * och det är också därför det oftare kallas bitcoinbrytning än mattetävling.

I takt med att bitcoinnätverket blivit större har dess samlade beräkningskraft ökat. Men ett block byggs med ungefär samma genomsnittsintervall. Om hastigheten med vilket ett nytt block adderas ökar eller minskar justeras med jämna mellanrum svårighetsgraden för att räkna ut hashvärdet.

Enligt Satoshi Nakamoto är ett av skälen till detta att undvika ”energispill”. Under den tid det tar för den nod som funnit en lösning att meddela andra noder tar det i genomsnitt en minut. Den minuten ägnar noderna åt att fortfarande hitta en egen lösning. Minskar man den så kallade blocktiden går en större procentuell andel åt till slöseri av resurser.

Det finns dock andra kryptovalutor med kortare blocktid som uppger att de snabbare kan verifiera ett nytt block.

De matematiska problem vi nämnt ovan kan ha flera olika lösningar. Det finns alltså en risk att två noder ungefär samtidigt uppger att de klurat ut problemet och avser bygga varsitt block.

Det oavgjorda resultatet leder till att nätverket letar efter ny lösning, ett nytt block, som kommer att peka på ett av de föregående två. När så sker förkastas det andra blocket. Det finns ett inbyggt incitament till varför det blir på det viset: bitcoin erhålles bara om ett block i kedjan uppnår konsensus i nätverket.

Konsensus handlar inte om att en bitcoingrävarkommitté sätter sig ner för ett sammanträde, utan är ett för noderna kodat bitcoinprotokoll som favoriserar den blockkedja som spenderat mest sammanlagd beräkningskraft, vilket kallas proof-of-work.

Eftersom uträkningen av hashvärden bygger på sannolikhet kommer den blockkedjan (som spenderat mest beräkningskraft) att stå pall för eventuella försök till manipulation. Bara om en illvillig aktör kontrollerar 51 procent av noderna är det fara å färde. Det är det som kallas proof-of-work.

De allra första blocken i bitcoins blockkedja grävde Satoshi Nakamoto själv, enligt samma regler som gäller än i dag.

* Bitcoin-mynt genereras enligt förutbestämda regler. Efter att 210000 block grävts fram halveras antalet bitcoin-mynt som delas ut per block. I början var det 50 bitcoin. Idag är det 12,5. När alla bitcoin-mynt – totalt 21 miljoner – är i omlopp är tanken att bitcoingrävare ska tjäna sitt levebröd på transaktionskostnader. Om du vill se hur många bitcoin som är i omlopp nu kan du klicka här.

Grävpooler

I takt med att det krävts allt mer kraftfull hårdvara för att gräva bitcoin har ”gruvindustrin” organiserat sig i pooler. De kommer överens om att dela på bitcoinbelöningar proportionerligt till hur mycket hashkraft de bidrar med.

Det här är dock inte utan bekymmer: Kina har ett kraftigt övertag vad gäller gruvpooler. Enligt vissa uppskattningar utgör kinesiska pooler 81 procent av hela marknaden.

Peter Ottsjö

Kommentarer

Välkommen att säga din mening på Ny Teknik.

Principen för våra regler är enkel: visa respekt för de personer vi skriver om och andra läsare som kommenterar artiklarna. Alla kommentarer modereras efter publiceringen av Ny Teknik eller av oss anlitad personal.

Här är reglerna för kommentarerna på NyTeknik

  Kommentarer

Dagens viktigaste nyheter

Aktuellt inom

Debatt