Blockkedjor är den teknik som används av alla kryptovalutor, varav bitcoin är den kanske mest kända. Fast vad handlar det om, och finns det andra lösningar som också använder detta? Av Patrik Brinkhäll
Kryptovalutan bitcoin är omåttligt populär, vilket kanske mest beror på att media skriver så mycket om den. Undersökningar visar att få vet exakt vad det är, än mindre hur det framställs och används i praktiken.
Kanske kommer detta att ändras, nu när bitcoin kan handlas på börsen. Fler och fler teknikföretag har också börjat intressera sig för bitcoin, och framför allt dess bakomliggande teknik i form av dess blockchains (blockkedjor). Bitcoin, och egentligen alla så kallade kryptovalutor, är nämligen bara en tillämpning ovanpå blockkedjor. Låt oss titta närmare på de sistnämnda.
Vad är EN blockkedja?
Bitcoin och dess blockkedja är tätt sammankopplade. Det handlar om en kedja av datastrukturer samlade i block, där varje block är ihopkopplat med föregående genom ett kryptografiskt hashvärde som använder algoritmen SHA256. Varje block i sig är också identifierbart med samma typ av hashvärde. Kedjan av block hänger samman ända till första blocket, som kallas för genesis-blocket, och som skapades i början av 2009. Hashvärdet för aktuellt block påverkas av hashvärdet för föregående block, som i sin tur påverkas av blocket innan och så vidare. Kort sagt, för att ändra innehållet i ett block måste hash-ID och pekaren till föregående block ändras på alla block, något som inte är praktiskt genomförbart. Det är också precis denna säkerhet som gör blockkedjan praktisk till andra saker än just virtuella valutor. Hashvärdena överförs aldrig mellan noderna i nätverket, utan beräknas hos varje nod.
Ett block innehåller inte bara block-ID och pekare till föregående, utan även ett antal fält av olika storlek. De kan till exempel ange hur många transaktioner blocket innehåller, där storleken på varje transaktion är 250 byte och där varje block i genomsnitt innehåller 500 transaktioner. Transaktionerna finns sammanställda i ett fält som har strukturen av ett merkle-träd, vilket också kallas ett binärt hash-träd. Det är ett binärt träd som lagrar kryptografiska hashvärden och utgör en digital signatur för de transaktioner som återfinns i blocket. Förutom detta innehåller blocket svårighetsgrad, tidsstämpel och något som kallas ”nonce”. Det sistnämnda har att göra med den process som kallas mining, alltså utvinning av block.
Utvinning av block
För att framställa nya block i bitcoins blockkedja krävs att dessa utvinns genom att datorer i nätverket löser kryptografiska pussel. Som belöning får den som löste pusslet ett antal bitcoin samt transaktionsavgifter för de transaktioner som lagras i blocket. Det är just denna utvinning av nya block som är grundbulten i denna decent-raliserade valuta som bitcoin utgör.
Den nuvarande hastigheten innebär att samtliga block kommer att vara framställda år 2140.
Ett nytt block skapas ungefär var tionde minut och hastigheten regleras genom att ändra svårighetsgrad på problemet som ska lösas. Problemet kallas proof-of-work, där lösningen är en del av varje block och fungerar som bevis på att faktiskt en hel del datorkraft har ägnats åt att lösa problemet. Block där lösningen har hittats läggs till blockkedjan och alla noder i nätverket kommer att uppdateras med denna information.
Den nuvarande hastigheten innebär att samtliga block kommer att vara framställda år 2140. Då kommer det att finnas totalt 21 miljoner bitcoin. Därefter kommer utvinningen av nya block att upphöra. Istället kommer belöningen att bestå av transaktionsavgifter.
Kedjan, PoW och PoS
Blockkedjan har ett antal egenskaper som gör den till en god kandidat även i andra sammanhang. En av dessa är att det inte är möjligt att göra av med samma resurs två gånger. En annan är att då en transaktion har lagrats i blockkedjan, är det inte möjligt att ändra innehållet. Dessutom är alla transaktioner publika för var och en att granska närmare. Tidsstämplar gör att nätverket kommer att förkasta block som för gamla eller för nya. Digitala signaturer används och skript som ska köras kräver auktorisering av ägaren med hjälp av nycklar. Nätverket och dess noder garanterar också att alla block och transaktioner finns lagrade för tid och evighet.
Blockkedjan är en central del i allt detta och för tillämpningen bitcoin används konceptet proof-of-work (PoW) för att noder ska få lägga till block i kedjan. Detta i sin tur kräver att noderna gör mängder av beräkningar. Förvisso kan man sätta svårighetsgraden till något lågt värde, för andra ändamål. Ett annat koncept kallas proof-of-stake (PoS). Det går ut på att den eller de noder som har mest virtuell valuta är de som bekräftar blockets äkthet.
Organisationen Hyperledger
Vi måste i sammanhanget nämna Hyperledger, en sammanslutning av över 100 företag. Bakom den här organisationen står Linux Foundation, och de har tillsammans tagit fram en referensarkitektur i form av Hyperledger Sawtooth. Det är en blockkedja framtagen av Intel, som också har tagit fram en ny algoritm för att lägga till block vilken kallas proof-of-elapsed-time. Förutom detta finns Iroha, som är ett ramverk kring blockkedjan från ett par japanska företag. Därefter har vi Fabric från IBM, som sägs vara en skalbar blockkedja med stöd för behörigheter. Sedan har vi Burrow, som är smarta kontrakt som följer specifikationen för Ethereum. Men det finns även fler projekt, som Cello, Composer och Explorer. Du kan se Hyperledger lite som paraplyorganisationen Apache. Läs mer på www.hyperledger.org.
NXT-plattformen
Den här blockkedjan har funnits sedan 2013 och har även en valuta, där en nxt motsvarar 0,6 dollar. Lösningen innebär att du också kan öppna konton som motsvarar en plånbok (wallet). För varje konto kan alias användas. Flytt av tillgångar registreras på denna blockkedja och nxt används för transaktionsavgifter. Det finns en börs där tillgångar kan köpas och säljas precis som på Stockholmsbörsen. Det går också att skapa egna valutor ovanpå denna plattform, och växlingen av dessa sker mot transaktionsavgifter i nxt. Filer kan laddas upp och lagras i blockkedjan och de rekommenderar att innehåll som kan vara känsligt krypteras. Plattformen innehåller även en marknadsplats där allt kan läggas upp till försäljning; alla priser anges i nxt. Ett meddelandesystem gör att användarna av blockkedjan kan skicka meddelanden som en del av en transaktion. En transaktion kan innehålla villkor som måste bli uppfyllda för att transaktionen ska gå igenom, och transaktioner kan skicka tillgångar till andra lösenordsskyddade konton än kontohavarens. Slutligen kan omröstningar genomföras med upp till 100 svarsalternativ. Läs mer på https://nxtplatform.org.
Ethereum
Ethereum uppfanns 2013 och släpptes sommaren 2015 som öppen kod. Det är en blockkedja och har en valuta kallad ether. Blockkedjan klarar vad som kallas för smarta kontrakt, vilket inte är något annat än möjligheten att skriva skript i samband med transaktioner. Dessa skript exekveras i det som kallas Ethereum Virtual Machine eller EVM. Skriptspråket kallas Solidity och är influerat av C++, Python och Java-script. Det går att koda i Solidity enbart med hjälp av en webbläsare, och det finns även stöd för att avlusa koden. Plånboken Ethereum Wallet finns för en rad plattformar och koden finns att hämta från Github, vilket gäller för all kod i det här projektet. Med hjälp av Ethereums blockkedja, dess valuta ether, plånbok och programmeringsspråket Solidity går det att skapa tillämpningar som kallas Dapps. I skrivande stund finns över 900 sådana som går att finna på www.stateofthedapps.com. Läs mer om Ethereum på www.ethereum.org.
Nimiq
Nimiq är en blockkedja som är webbaserad och skriven i Javascript. Den kommunicerar med övriga noder med hjälp av Websockets och WebRTC och de använder IndexedDB för att lagra blockkedjedata i webbläsaren. Du kan utvinna valuta genom att köra det här i webbläsaren. Visserligen stoltserar Nimiq med att kunna köras enbart med hjälp av en webbläsare, men lösningen kan också användas med en klient. När detta skrivs stöds enbart proof-of-work för att validera block, men det kan komma att ändras i framtiden. Genom att använda sig av Nimiq och dess blockkedja får dina tillämpningar tillgång till valutan med samma namn. Börja utvinna nimiq genom att gå till https://nimiq.com/miner.
Bekanta dig
En sak är säker: kryptovalutor har kommit för att stanna, och det gäller även blockkedjor. Bitcoin var den första tillämpningen som använde blockkedjan och därefter kom andra kryptovalutor. Säkerligen har vi bara sett början på det här. Passa därför på att bekanta dig med hur det fungerar.
Historien om bitcoin
Bitcoin var den första kryptovalutan som lanserades och det skedde år 2009. Dess upphovsman är känd under pseudonymen Satoshi Nakamoto, men dennes egentliga identitet är fortfarande höljd i dunkel. En person har påstått sig vara personen i fråga men har inte riktigt kunna styrka detta. Denne Satoshi publicerade källkoden till hela ekosystemet 2009 och lade därmed också grunden till bitcoin och blockkedjan. Koden går att studera på https://github.com/bitcoin/bitcoin.