Du har säkert hört folk säga att du inte behöver lita på någon tredje part i Bitcoin, att systemet är tillitsfritt (eng. trustless). I denna artikel kommer jag att försöka reda ut vad som egentligen menas med tillitsfritt.
I stora drag innebär tillitsfritt att om Alice skickar 0,130 bitcoin till Bob, så kan Bob själv kontrollera att det coin (engelska för mynt) han får är äkta. Han behöver alltså inte rådfråga t.ex. en bank om coinets äkthet. Han behöver inte heller lita på att Alice skickar ett äkta coin. Han kan verifiera det själv med sin mjukvara som han kör på sin egen dator.
Med äkta menar jag att det är ett coin som härstammar endast från tidigare äkta coins och att det inte redan är spenderat på annat håll.
För att förstå hur Bob kontrollerar äktheten i sitt coin behöver vi förstå vad ett coin är i bitcoinsammanhang. Bitcoin fungerar ungefär som vanliga sedlar och mynt: När jag ska betala 130 SEK i kontanter i kassan på Konsum så lämnar jag fram en hundralapp och två tjugolappar. Tillbaka får jag en tiokrona i växel (100+20+20 - 10 = 130). Om Alice ska betala 0,130 BTC till Bob så tittar hon i sin digitala Bitcoin-plånbok och ser att hon där har ett coin på 0,100 BTC, samt två coins på 0,020 BTC vardera. Hon skapar sedan en transaktion med dessa tre coins som ingångsvärden samt två utgångsvärden, ett utgångsvärde på 0,130 BTC till Bobs Bitcoin-adress, samt ett utgångsvärde på 0,010 BTC till hennes egen Bitcoin-adress, vilket blir hennes växel.
En sak som skiljer fysiska sedlar och mynt från Bitcoin är att sedlar och mynt inte delas och sätts ihop. En sedel förblir samma sedel genom alla transaktioner. I Bitcoin däremot, sätts coins ihop och omfördelas som nya coins vid varje transaktion. I transaktionen ovan klumpas tre coins ihop och fördelas på två nya coins. Vi spenderar tre coins och skapar två nya. Ett coin är alltså ett utgångsvärde ur en transaktion. Coins kan ha vilka valörer som helst, men minimum är 0,000 000 01 BTC = 1 satoshi, d.v.s 1 BTC = 100 000 000 sat.
Nu när vi i stora drag vet hur en Bitcointransaktion ser ut kan vi gå vidare och titta på vad som menas med att ett coin är äkta. Att ett coin är äkta innebär att det
- härstammar endast från tidigare äkta coins
- inte redan är spenderat
Aj då, för att veta om ett coin är äkta behöver vi tydligen veta att de coins som transaktionen spenderade var äkta. Hur gör man det? För att komma vidare behöver vi ha koll på vad blockkedjan är för något. Vad händer med Alices transaktion till Bob efter att hon skapat den?
När Alice skapat sin transaktion till Bob, skickar hon ut den till några av de datorer på internet som kör Bitcoin-mjukvaran. Vi kallar dessa datorer noder. Noderna verifierar och skickar transaktionen vidare till andra noder tills alla noder i nätverket har fått transaktionen.
Alla tidigare giltiga transaktioner lagras i en blockkedja, en kedja av block, där varje block är en lista med transaktioner. Alla noder upprätthåller varsin kopia av denna blockkedja. Vissa av noderna (de som vill) försöker ständigt skapa nya block till blockkedjan, dessa noder kallas för miners (majners). Anta att Greta har en mining-nod. Hennes nod samlar in transaktioner från nätverket — däribland Alices transaktion, Tx4 — och stoppar dessa i ett nytt block. Hon stoppar också in en speciell transaktion som kallas coinbase-transaktion i blocket.
Det finns exakt en coinbase-transaktion i varje block. Det är i dessa coinbase-transaktioner som nya bitcoin skapas. I det blocket som Greta skapade finns en coinbase transaktion som skapar 6,25 nya BTC adresserade till Gretas Bitcoin-adress. Denna specialtransaktion skiljer sig från vanliga transaktioner i att de inte spenderar redan existerande coins, utan skapar dem från tomma intet.
Tyvärr kan man inte skapa nya block hur som helst. Greta, liksom alla andra miners, måste spendera massor av dyr datorkraft för att lyckas skapa ett block. Det är en tävlan mellan miners om att få skapa nästa block och därmed vinna 6,25 splitter nya BTC till sig själv. Exakt hur denna tävlan går till och hur fusk förhindras lämnas utanför denna artikel. Vi lämnar också frågan var siffran 6,25 BTC kommer från därhän, och hur den förändras över tid.
Den som först lyckas skapa ett giltigt block publicerar det till andra noder på Bitcoin-nätveket. Dessa noder verifierar att blocket är korrekt och lägger till blocket sist i kedjan av block, samt skickar blocket vidare till de noder de känner till. Greta kan sedan spendera sina nya 6,25 BTC som hon vill.
Nu börjar vi närma oss pudelns kärna. Lägg märke till hur en nod verifierar det block som den tar emot. Den kontrollerar bland annat
- att coinbase-transaktionen inte skapar mer är 6,25 BTC
- att alla övriga transaktioner i blocket spenderar äkta coins
Tänk dig att noden verifierar blockkedjan från det allra första blocket och framåt, ett block i taget, enligt ovan ända fram till Gretas block. Då inser du hur du kan vara säker på att alla coins, inklusive Bobs coin, är äkta efter att ha verifierat Gretas block. När detta är gjort vet noden att alla nya utgångsvärden också är äkta coins. Ett äkta coin är alltså ett utgångsvärde som inte är spenderat och som antingen sitter på en coinbase-transaktion, eller som härstammar från coinbase-transaktioner. Noderna kan alltså kontrollera alla transaktioner i blockkedjan och försäkra sig om att alla coins är äkta.
Åter till Bob. Bob kör också en nod i Bitcoin-nätverket. När hans nod tar emot Gretas block med Alices transaktion i kommer han kontrollera hela blocket, och eftersom han redan har kontrollerat alla tidigare block, kan han vara säker på att det coin han tar emot är äkta.
Vi har sett hur Bob kan verifiera att det coin han fick från Alice är äkta, helt utan att behöva lita på någon tredje part, tex en bank eller en stat. Det är detta som vi i Bitcoin menar med tillitsfritt (vilket är en löjlig översättning från engelskans trustless).
1972 sjöng Hoola Bandoola Band "Vem i hela världen kan man lita på?", ett budskap som verkar mer aktuellt idag än någonsin. Svaret kom när Bitcoin såg dagens ljus år 2009: Förhoppningsvis dina närstående, övriga kan du verifiera.
PS. Tillitsfritt är inte ett tillstånd som antingen är på eller av. Det finns grader av tillit, och helt tillitsfritt blir det aldrig. Mer om detta en annan gång.