Citat:
Nja.Egentligen så lagras inte ens en bitcoin någonstans, utan enbart transaktionerna. När man vill spendera en bitcoin så hänvisar man till den senaste transaktionen, och gör en ny transaktion. Någon form av konto där bitcoinsen lagras existerar inte i egentlig mening.
Rent tekniskt sett så består en transaktion av ett antal outputs och ett antal inputs. Varje input och output är egentligen bara ett matematiskt problem. Inputs i en transaktion är lösningar på tidigare problem, och outputs är nya problem som någon annan måste lösa för att kunna spendera coinsen som tillhör transaktionen. Så för att spendera en bitcoin så löser du ett problem som någon annan specificerat, och definierar ett nytt problem som mottagaren måste lösa. Det råkar bara vara så att i en vanlig transaktion så är det matematiska problemet av typen "signera följande sträng med den privata nyckel som tillhör denna publika nyckel", då detta är mest praktiskt för transaktioner. På så sätt vet du att enbart en person med den privata nyckeln kan lösa problemet. Bitcoinprotokollet tillåter dock betydligt mer avancerade problem för mer specifika användningsområden.
Man skulle kunna säga att Bitcoin är en frågesport där varje fråga motsvarar en viss summa bitcoins och den som kan svaret på en fråga får ställa nästa fråga (eller dela upp bitcoinsen och ställa flera frågor). Och med hjälp av asymmetrisk kryptering kan man försäkra sig om att det bara finns en person som kan svaret på frågan man ställer, och på så sätt göra en "transaktion" till denna person.
Blockkedjan är en kedja av "block" som blir längre och längre. Varje block innehåller många transaktioner (det skapas ett block i genomsnitt var 10:e minut), och lite extra nödvändig data, bl.a. en referens till blocket innan. Det är denna referens som gör det till en kedja. Du kan inte ta bort eller ändra en transaktion i ett block utan att ogiltigförklara alla nästkommande block. När din transaktion hamnar i ett block så får den en konfirmation. Varje nästkommande block i kedjan är en till konfirmation. Eftersom det är en väldigt datorintensiv process att skapa ett block så kan du vara säker på att din transaktion inte kan ändras efter ett visst antal konfirmationer.
Blockkedjan kan dock rensas (pruning på engelska) på väldigt mycket onödig data. När en transaktions output spenderas så behöver den inte lagras längre. Det enda som måste sparas är ospenderade outputs och block headers (obetydlig storlek). Detta är inte impelementerat i dagsläget (arbete pågår dock), och därav växer blockkedjan väldigt snabbt, då alla som kör en full nod sparar hela Bitcoins transaktionshistorik. Så i dagsläget har du rätt i att hela Bitcoins transaktionshistorik sparas, men det är viktigt att veta att det inte är nödvändigt för att Bitcoin ska fungera, och att det finns lösningar för stora optimeringar här.