Bitcoin er et digitalt valutakoncept, som den legendariske og gådefulde Satoshi Nakamoto præsenterede i 2009. Det bruger blockchain-teknologi som infrastruktur og fungerer decentralt, direkte fra person til person. Whitepaperet, som Nakamoto skrev for at forklare konceptet, er obligatorisk læsning for enhver, der vil forstå bitcoin og kryptovaluta generelt. Det forklarer ikke kun bitcoin som idé, men også hvordan et system med byzantinsk fejltolerance kan fungere i et decentralt miljø.
Først og fremmest bør enhver, der interesserer sig for Bitcoin, vide, at den vigtigste forudsætning for, at bitcoin overhovedet kunne blive til virkelighed, er blockchain-teknologien – og forstå, hvordan den teknologi fungerer.
Hvad er blockchain?
En blockchain er en kæde af blokke, der hver indeholder data, og som hverken overvåges eller styres af en central myndighed. Disse informationskæder er kryptografisk sikret og kan ikke bringes til tavshed takket være deres decentrale struktur. Blockchain bygger grundlæggende på to datastrukturer: pointere og hægtede lister.
Pointere
Pointere er variabler, der angiver, hvor en anden variabel befinder sig. Normalt indeholder variabler i programmering data. (I eksemplet int a = 10 har heltalsvariablen a værdien 10.) Pointere gemmer derimod ikke en værdi som data, men peger på adressen på den variabel, der indeholder dataene.
Hægtede lister
Hægtede lister er en af de vigtigste byggesten i datastrukturer, og de ser groft sagt sådan ud.
En række blokke, der hver indeholder bestemte data og er forbundet til den næste blok via en pointer. Pointervariablen indeholder adressen på den næste knude og skaber dermed forbindelsen. Som vi så ved slutknuden, indeholder den sidste pointer ingen data.
Det vigtige her er, at hver pointer indeholder adressen på den næste blok. Men hvor er pointeren til den første blok? Den første blok kaldes genesis-blokken, og dens pointer ligger inde i selve systemet.
En hash-pointer er en pointer, der indeholder hashen af den foregående blok.
Hashing er en proces, der tager data af vilkårlig længde og med en bestemt funktion producerer et resultat af samme længde, uanset hvad dataene indeholder. I Bitcoins tilfælde tages overførselstransaktionen som data og køres gennem SHA-256-algoritmen, der giver et resultat med fast længde. Uanset længden på de indtastede data producerer SHA-256-algoritmen altid et resultat på 256 bit.
I sin enkleste form er en blockchain en hægtet liste som vist nedenfor.
En blockchain er en hægtet liste, hvor hver blok indeholder data og en hash-pointer, der peger på blokken før den. Så hvad er en hash-pointer? Hash-pointere minder meget om almindelige pointere, men ud over adressen på den foregående blok indeholder de også hashen af dataene i den blok. Netop denne lille forskel i opbygningen er det, der gør blockchain-teknologien så sikker.
Lad os et øjeblik antage, at en angriber vil angribe blok 3 og ændre dataene i den. På grund af hash-funktionen vil selv den mindste ændring i data give en helt anderledes hash. Den mindste ændring af dataene i blok 3 ændrer den hash, der er gemt i blok 2, ændringen i blok 2 påvirker hashen i blok 1, og dermed skulle hele kæden ændres, hvilket er umuligt. Det er den mekanisme, der gør blockchains umulige at bringe til tavshed.
Hvad er mining?
Mining er den proces, der skal til for at skabe nye bitcoins. Bitcoin-mining fungerer efter princippet Proof of Work – POW. Kort sagt skal det være meget svært at løse en opgave, men når du først har løst den, skal det være meget nemt at bevise, at løsningen er rigtig.
Før vi når til Bitcoins brug af POW som koncept, så lad os prøve at forstå, hvorfor kryptovalutaer overhovedet har brug for sådan et system.
Før Bitcoin blev der skabt forskellige digitale valutaer, men når man bygger et decentralt netværk fra person til person i et digitalt miljø, er den største hindring det logiske problem, der kaldes de byzantinske generalers problem. Fordi Nakamoto lykkedes med at løse dette problem i bitcoin ved hjælp af POW, kunne bitcoin komme til verden og fortsætter i bedste velgående.
De byzantinske generalers problem
Lad os fortsætte med at forklare de byzantinske generalers problem, som også bruges flittigt i akademiske arbejder. De byzantinske generaler, der planlægger at angribe fjendens by, har to problemer:
Generalerne befinder sig meget langt fra hinanden, så det er umuligt for en central myndighed at styre belejringen.
Fjenden har også en stærk hær, så angrebet skal udføres af generalerne på nøjagtig samme tid, hvis det skal lykkes.
Mens belejringshærene omringer byen, videregiver hver hær ordren fra hæren til højre til hæren til venstre, og på den måde holdes kommunikationen i gang. Problemet er bare, at når der kommer en ordre om, at vi angriber onsdag, kan en hær være uforberedt og sende et svar tilbage: nej, angreb på fredag. Eller soldaten med beskeden kan blive taget til fange af fjenden, eller indholdet af den besked, han bærer, kan blive ændret. I et så usikkert miljø vil ethvert angreb mislykkes, hvis der ikke opnås fuld koordinering.
Det samme logiske problem gælder for blockchain-netværk, der udgør infrastrukturen bag kryptovalutaer som bitcoin. Det er utroligt store netværk – og hvordan skulle vi kunne stole på hver eneste person i dem? Vi vil måske sende nogen 4 ether, men hvordan kan vi stole på, at en ondsindet person ikke laver beløbet om til 40 ether?
Satoshi Nakamoto løste dette logiske problem ved at introducere proof-of-work-protokollen. Lad os se, hvordan den fungerer:
Når den belejrende hær vil videregive beskeden "vi angriber på mandag" til hæren til venstre for sig, skal den følge disse trin;
Først tildeles den oprindelige besked en tilfældig, engangsgenereret værdi kaldet "nonce". En nonce kan være en hvilken som helst værdi i det hexadecimale talsystem.
Derefter køres beskedteksten med den tildelte nonce-værdi gennem hash-funktionen, og man får et resultat. I det fiktive angreb, vi forestiller os, antager vi, at kommandanterne har aftalt kun at dele de hash-resultater med hinanden, hvor de første 5 tegn er nul.
Hvis hash-funktionens resultat giver det ønskede, sender de beskeden videre til den næste general. Hvis resultatet ikke passer, må man ændre den tildelte nonce-værdi tilfældigt og gentage processen, indtil man får et resultat med fem nuller forrest. Sådan et system kræver ufatteligt lang tid og regnekraft.
Bliver soldaten med beskeden taget til fange, eller ændres beskedens indhold, vil hash-resultatet ændre sig markant på grund af hash-funktionens egenskaber. Når generalerne gennemgår beskeden, opdager de, at de første fem tegn i hashen ikke er nuller, og trækker angrebet tilbage.
Selv om det er meget usandsynligt, kan enhver hash-funktion give sammenfaldende resultater. I teorien bør der for to separate input A og B ikke være nogen sandsynlighed for, at H(A) = H(B), men i praksis er ingen hash-funktion helt kollisionssikker.
Hvad sker der så i det usandsynlige tilfælde, hvor soldaten med beskeden fanges, beskeden ændres, og hash-resultatet alligevel ender med at se ud, som generalerne forventer? Det ville selvfølgelig være en tidskrævende proces, men det er ikke umuligt. Over for det bruger generalerne deres numeriske overtag.
Problemet kan løses ved, at tre generaler sender beskeder til venstre samtidig, i stedet for at en enkelt general på skift sender beskeden fra højre mod venstre. Hvis generalerne samler deres egne beskeder til én kumulativ besked, kører den gennem hash-funktionen, tildeler resultatet en nonce-værdi og derefter sender det gennem hash-funktionen igen, skal de første seks tegn i resultatet denne gang være nul.
På det stadie vil det være et alvorligt tidsspild at finde nonce-værdien for beskeden og ændre dens indhold.
Til gengæld er opgaven let for de generaler, der modtager beskeden; de skal bare lægge den nonce-værdi, de har fået, til hash-resultatet og sammenligne resultaterne. Det trin er en meget hurtig og enkel proces. Denne idé er selve mekanismen bag proof-of-work-princippet.
At finde nonce-værdien til den rette hash kræver enorm regnekraft og tid
Men det tager meget kort tid at gennemgå resultaterne og afgøre, om der er ond hensigt på spil.
Sådan udfører minere proof-of-work-protokollen i Bitcoin-mining. De bruger deres regnekraft til at løse den kryptografiske opgave foran dem og skabe den næste blok. På Bitcoin-blockchainen dannes der en blok hvert 10. minut.
Hvordan foregår overførsler i Bitcoin-netværket?
Lad os sige, at John vil sende nogle bitcoins til Dave. Hvordan foregår den overførsel? Bitcoin-overførsler fungerer helt anderledes end overførsler af fiatpenge. Ville John give Dave 10 USD, ville han fysisk tage sedlen op af pungen og række den til Dave, og så var overførslen gennemført. Men med bitcoin er det anderledes – det er ikke noget, vi ejer fysisk. Det, vi har, er beviset på, at vi ejer bitcoin.
Der er to ting, vi bør vide og være opmærksomme på;
Minerne bekræfter og sikrer overførselstransaktionerne med de data, de lægger i den blok, de skaber. De tager også et gebyr for den service.
Ser vi på fiatvalutaer, kender og følger vi ikke historien bag den seddel, vi har i hånden. Der findes ingen praktisk måde at gøre det på. Med bitcoin er hver eneste overførsel derimod registreret i netværket.
Lad os i lyset af det se på bitcoin-overførslen mellem John og Dave. Overførslen har to dele; input og output.
For at John kan gennemføre overførslen, skal han have bitcoin fra tidligere overførsler. Som nævnt registreres alle overførsler i bitcoin-netværket.
John skal samle de bitcoins, han tidligere modtog i overførslerne TR(0), TR(1) og TR(2), oprette en ny overførsel ved navn TR(INPUT) og sende den til Dave. Her bliver TR(INPUT) til inputdata for den nye overførsel.
Sådan ser en bitcoin-overførsel groft sagt ud fra inputsiden.
Outputdataene indeholder ganske enkelt det antal bitcoins, Dave skal have efter den nye overførsel, plus byttepengene, der sendes tilbage til John som TR(INPUT)-værdien i hans næste overførsel.
Ser vi bort fra byttepengene, indeholder processen ét enkelt output, men overførsler med flere outputs er også mulige. Denne beskrivelse viser enkelt, hvordan en overførsel finder sted i bitcoin-netværket. For at det kan lykkes, skal bestemte betingelser dog være opfyldt.
Betingelser, som overførsler skal overholde:
TR(INPUT) > TR(OUTPUT). Inputoverførslen skal altid være større end outputoverførslen. Ved hver overførsel betales forskellen mellem input og output (output + byttepenge) til minerne som gebyr. Altså: Mining-gebyr = TR(INPUT) - (TR(OUTPUT) + BYTTEPENGE)
På inputsiden skal TR(0)+TR(1)+TR(2)=TR(INPUT) gælde. Med andre ord skal John have nok bitcoin til at sende til Dave. Har han ikke nok bitcoin til at gennemføre transaktionen, afvises overførslen af minerne.
Nu skal Dave bevise, at han ejer de bitcoins, der er sendt til ham. John har krypteret sin bitcoin-overførsel med Daves offentlige nøgle. Dave kan kun åbne den med sin private nøgle.
Samtidig skal John bevise, at han har nok bitcoin til at sende til Dave. Det gør han ved at signere den overførsel, han vil gennemføre, med sin egen private nøgle. Enhver kan åbne den med Johns offentlige nøgle og verificere, at han faktisk har den nødvendige mængde bitcoins. Dette bevis kaldes signaturdata.
Inputdata (inklusive signaturdata) og outputdata lægges sammen og køres gennem hash-algoritmen SHA-256. Resultatet af algoritmen kaldes overførslen.
Én ting skal man huske: for at en bitcoin-overførsel kan gennemføres, skal den miner, der har minet blokken, fysisk lægge overførslen ind i blokken. Den miner, der har minet blokken, kan modtage gebyr for alle de overførsler, han har lagt i den. Efterhånden som overførselsmængderne vokser med tiden, må overførsler vente på en ny blok, fordi blokkene er helt fyldte. De, der ikke vil vente, betaler et højere mining-gebyr, så deres overførsel skiller sig ud og bliver mere attraktiv for minerne.
Det gav anledning til replace-by-fee-princippet. Det fungerer ganske enkelt sådan: Selv om John sendte 5 BTC til Dave, kommer transaktionen aldrig med i en blok og forbliver afventende, fordi mining-gebyret blev holdt lavt. Der er ingen måde at fortryde eller annullere transaktionen på, da brugte bitcoins ikke kan hentes tilbage. Men hvis John laver en overførsel til samme adresse med samme BTC-beløb og sætter mining-gebyret højere, betragtes den gamle overførsel som ugyldig, og den nye venter på at blive behandlet.
Fremtiden for Bitcoin og kryptovaluta generelt rummer utallige muligheder. Blockchain-anvendelser kender ingen grænser, og projekterne på området bliver mere succesfulde og sikrere dag for dag.
På rejsen fra varepenge over brugen af ædelmetaller som guld og sølv til papirpenge og nominelle valutaer er tanken om penge i et virtuelt miljø ikke ny – men først i nyere tid er den blevet mulig at føre ud i livet.
Ifølge nogle er han en gruppe i CIA, ifølge andre et rumvæsen, og måske er han virkelig en cyberpunk ved navn Satoshi Nakamoto. Hvem det end er, lod han os selv om at bestemme, hvad der skal ske videre med hans idéer og deres praksis, som fuldstændig ændrer synet på vores værdier, og hvordan vi opbevarer dem. Han banede vejen for idéer, der er mere avancerede end hans egne, og overbeviste verden om at anlægge et helt andet perspektiv.

Satoshi havde ikke glemt at gemme en besked i genesis-blokken – startblokken – som han minede og skrev ind som hard code. Han noterede datoen 3. januar 2009 og vedhæftede en overskrift fra den britiske avis Times den dag om de banker, der stod bag den verdensomspændende økonomiske krise: "Ministeren er på nippet til en anden redningspakke til bankerne". Med de ord gør han formentlig grin med centralbankvæsenet. Hvorfor Satoshi skabte denne adresse i startblokken, som der ikke kan bruges midler fra, vides ikke. Der er indtil videre sendt 16 BTC anonymt til adressen, og derfor vil det samlede udbud på 21 millioner bitcoins i realiteten aldrig blive nået.
Det tog kun 9 år for Bitcoin at nå niveauer, der skræmmer verdens centralbanker – og der er stadig lang vej igen.
