Dubbelspendering är ett klassiskt problem inom system för digitala kontanter. Eftersom ett ”digitalt mynt” enkelt kan kopieras finns det inget som hindrar mig från att lämna över myntet till dig och samtidigt behålla en kopia som jag ger till någon annan. Det vanliga sättet att lösa problemet är att en central auktoritet håller reda på vad som har spenderats.
Det som framförallt skiljer Bitcoin från tidigare digitala valutor / kryptovalutor är att det är helt decentraliserat. Systemet bygger på P2P-teknik och ingen central auktoritet existerar eller behövs.
För att förstå hur Bitcoin fungerar måste man först känna till lite om kryptering och mer specifikt om assymetrisk kryptering. Vi kommer inte att gå in på detaljerna kring detta i denna text men mycket kortfattat så är det speciella med assymetrisk kryptering att två olika krypteringsnycklar används för kryptering respektive dekryptering. Detta gör att nyckeln för kryptering, den publika nyckeln, kan spridas fritt. Vem som helst kan med hjälp av denna kryptera ett meddelande med vetskapen om att bara du som har tillgång till den privata nyckeln kan dekryptera meddelandet. Inom Bitcoin kallas den publika delen av ett sådant nyckelpar (eller egentligen en hashning av den publika delen) för en Bitcoinadress. En adress har ett saldo och vem som helst kan skicka pengar till den, adressen kan alltså liknas vid ett kontonummer . För att skicka pengar vidare från en adress krävs att man känner till den privata nyckeln.
När bitcoins skall överföras från adress A till B skapas en transaktion av ägaren till adress A. Transaktionen signeras med den privata nyckeln som svarar mot adress A och publiceras sedan till nätverket. Nu finns alltså en transaktion som alla noder i nätverket känner till, men enligt problematiken om dubbelspendering skulle förstås ägaren till A samtidigt kunna sända ut en snarlik transaktion där summan istället skickas till adressen C, och en annan där den skickas till adressen D. För att ägaren till adress B skall kunna vara säker på att transaktionen är ”bekräftad” måste nätverket komma överrens om vilken transaktion som är den riktiga.
Eftersom ingen central auktoritet finns som kan journalföra och godkänna transaktioner har Bitcoin istället en publik, distribuerad databas som kallas blockkedjan där alla transaktioner som sker i Bitcoinnätverket lagras. För att en transaktion skall vara bekräftad måste den finnas med i ett block. Att skapa ett block som kommer med i blockkedjan är en tävling mellan ”miners” i nätverket och det är fritt fram för vem som helst att vara med. Priset i tävlingen är ett förutbestämt antal nyskapade bitcoins samt alla transaktionsavgifter som följer med de transaktioner som inkluderas i blocket. Belöningen som från början låg på 50 bitcoins halveras vart fjärde år vilket gör att det totala antalet bitcoins slutligen kommer att stanna på strax under 21 miljoner.
Så hur skapas ett block? Ett block komponeras av de transaktioner som ska inkluderas, en referens till det föregående blocket samt ett godtyckligt värde som kallas ”nonce”. Allt detta hashas sedan med SHA-256 och om värdet då blir lägre än den aktuella svårighetsgraden så har man lyckats skapa ett block som kommer att accepteras av nätverket. När det inte lyckas ändras nonce-värdet och så görs ett nytt försök, om och om igen tills ett godkänt block är skapat (eller någon annan hunnit före). Svårighetsgraden justeras varannan vecka så att nya block alltid ska skapas i snitt var tionde minut.
Eftersom varje block pekar på det tidigare blocket kallas alltså den distribuerade databasen för en blockkedja. Det kan hända att två miners lyckas skapa block ungefär samtidigt så att flera block existerar som pekar på samma ”förälder”. När sådana förgreningar uppstår måste varje deltagande nod måste bestämma sig för vilken gren som är den ”rätta” och regeln är då att den längsta kedjan alltid är den korrekta (”längsta” tar här hänsyn till svårighetsgraden och betyder alltså den kedja som krävt mest datorkraft att ta fram).
När du tar emot en transaktion vill du försäkra dig dels om att transaktionen blivit inkluderad i ett block och att ett visst antal block skapats efter detta i samma kedja. Om en förgrening pågår kan det annars hända att din klient ändrar sig och inser att en annan gren istället är längst. I värsta fall har personen som skickat dig bitcoins skapat en helt annan transaktion som blivit inkluderad i den andra kedjan, alltså försökt sig på en dubbelspendering. Antalet block som skapats efter att din transaktion inkluderats (inklusive blocket där din transaktion finns) brukar kallas för confirmations, eller bekräftelser. En vanlig, om än något godtycklig, regel är att vänta på 6 bekräftelser innan du anser att pengarna är säkert mottagna. Här kan man dock använda lite sunt förnuft, om du tar emot en transaktion på en liten summa från någon du känner väl finns ingen anledning att vänta så länge eftersom risken att blir bedragen är mycket liten.
Det här var en kort och något förenklad beskrivning av hur Bitcoin fungerar. För att lära sig mer rekommenderas följande källor. Håll även utkik efter fler artiklar här på bitcoin.se.