Skip to content

Instantly share code, notes, and snippets.

@mafintosh
Last active October 17, 2023 20:39
Show Gist options
  • Save mafintosh/435da6e64a0e15d05fa1f330e0886d4d to your computer and use it in GitHub Desktop.
Save mafintosh/435da6e64a0e15d05fa1f330e0886d4d to your computer and use it in GitHub Desktop.
Blog post about how Bitcoin works in a way non computer people can understand it (Danish)

Bitcoin for voksne

(Chinese version available here)

(English version available here)

Bitcoin er en digital valuta, som ikke har nogen central autoritet. Det er en valuta hvor du ikke behøver at stole på nogen som helst for at vide at den er noget værd. Som begreb minder det meget om guld. Guld har en værdi i sig selv, i modsætning til en 100 kr seddel som kun har værdi hvis den danske stat siger den har værdi. På samme måde er ideen omkring Bitcoins at de har en værdi i sig selv.

Lad os prøve at forstå hvordan Bitcoin fungerer.

Bitcoin er mere eller mindre et stort verdensomspændende computernetværk som hele tiden arbejder på at blive enig om en liste af transaktioner.

En transaktion er fx: "Mathias overførte 100 bitcoins til Martin", lidt ligesom en almindelig bank fungerer internt.

I Bitcoin sprog kalder man en transaktion for en blok og listen af transaktioner for en kæde. Derfor kalder man det for en "blokkæde", eller "blockchain" på engelsk.

Det er vigtigt at forstå at den her liste af transaktioner, eller blockchain, er fuldstændig offentlig og alle kan læse den og se hvilke penge der bliver overført hvorhen. Bitcoin er en meget offentligt valuta af samme grund - ellers kan man jo heller ikke bekræfte at listen af transaktioner i sidste ende passer!

I virkeligheden skriver man heller ikke "Mathias" eller "Martin" i transaktionen . Hvis man gjorde det ville det jo være svært at finde ud af om "Mathias" rent faktisk havde overført pengene, eller om det var en som bare lod som om han var "Mathias".

I stedet for bruger man noget man kalder en kryptografisk nøgle.

Kryptografiske nøgler

En kryptografisk nøgle består af to ting.

En hemmelig nøgle som er et meget, meget stort tilfældigt tal som er i praksis umuligt at gætte, og du skal holde meget hemmeligt.

En offentlig nøgle som er et stort tal også.

Med hjælp af kryptografi kan man lave et system hvor man kan bruge en hemmelig nøgle til at underskrive en transaktion, således at en anden person kan bruge den offentlige nøgle til rent faktisk at bekræfte at det var dig, og kun dig, der underskrev den.

I Bitcoin sprog kalder man disse nøgler for en pung eller "wallet" på engelsk, fordi det er dem du skal bruge for at tilgå dine bitcoins.

Derfor skriver man i transaktionen, "Offentlig nøgle A overførte 100 bitcoins til Offentlig nøgle B" og bruge den hemmelige nøgle til A til at underskrive transaktionen. Så kan ingen snyde med at overføre penge.

Blockchain

Når nu man har sådan en liste af transaktioner er det selvfølgeligt vigtigt at alle er enige om hvordan listen ser ud. Ellers kan man komme ud i situationer hvor en person prøver at snyde ved at overføre de samme 100 bitcoins til mere end en person! Det duer ikke.

Derfor er det vigtigt at det ikke er gratis at smide nye transaktioner på listen. Hvis det var det, ville være let at prøve at snyde ved bare at sende en masse transaktioner på samme tid.

Gratis i den her sammenhæng betyder ikke at det skal koste kroner direkte. Husk at vi prøver at lave ny valuta hvor vi ikke stoler på nogen som helst.

Bevis for arbejde

I stedet for at det koster kroner at putte en ny transaktion i listen koster det i stedet for arbejde. Det lyder måske lidt abstrakt, og det er det også. Tid er penge og arbejde tager tid.

Nu er det et computernetværk vi arbejder med og derfor betyder arbejde at din computer skal prøve at udregne nogle svære ting som tager tid at udføre.

De computere som udfører arbejdet kaldes for guldgravere eller "miners" på engelsk. Grunden til at de kaldes guldgravere er at de bliver belønnet for deres arbejde i form af at de tildeles en mængde Bitcoins. Det er vigtigt at der et incitament for at arbejde for at tilføje en ny transaktion til listen, ellers ville ingen gøre det.

Det er også vigtigt at man kan bevise at arbejde blev udført og at en guldgraver ikke bare lader som om. Derfor kalder vi det et "Bevis for arbejde", eller "Proof of work" på engelsk.

Det arbejde som Bitcoin bygger på er en teknik som kaldes "hashing", og nej ikke den slags hashing som foregår ude på Christiania.

Hashing

Hashing er en matematisk og datalogisk teknik hvor man har en maskine der modtager et meget meget stort tal og udskriver en meget mindre tal.

hashing(meget stort tal) -> meget mindre tal

Det samme store tal giver altid det samme meget mindre tal og det er i praksis umuligt at gætte det store tal som var inputtet hvis man kender det lille tal.

Vi kan bruge hashing til at lave et "Bevis for arbejde".

Det fungerer meget simpelt. Jeg vælger blot to tal, fx, 1.000.000 og 42, og så beder jeg dig om at finde et meget stort tal hvor

hashing(meget stort tal + 42) < 1.000.000

Den eneste måde du kan finde et tal hvor det er opfyldt er ved at prøve et helt masse tal! Der er ingen genvej. Derfor ved jeg at du er nødt til at arbejde for at finde det. Det virkeligt smarte er at hvis jeg istedet for 1.000.000, havde sagt 500.000 så ved jeg at du er nødt til at arbejde dobbelt så meget i gennemsnit fordi udfaldsrummet er halvt så stort.

Dermed har vi en måde at lave et "bevis for arbejde".

Grave efter digitalt guld

Når vi har en ny transaktion vi gerne vil lave gør vi det på den her måde.

  1. Vi laver en ny transaktion ved brug at vores hemmelige og offentlige nøgle.
  2. Vi kigger på den nuværende liste af transaktioner og ligger alle tallene sammen på listen og lægger dem til tallene i vores transaktion. Vi kalder det her tal for en "udfordring" eller "challenge" på engelsk.
  3. Vi udgiver vores transaktion og udfordring på netværket.
  4. Når en anden computer (guldgraver) har udført arbejde hvor hashing(meget stort tal + udfording) < 1.000.000 bliver transaktionen tilføjet til listen og guldgraveren bliver tildelt en mængde Bitcoins.

Det er ved at grave efter digitalt guld på denne måde at der bliver tilføjet nye Bitcoins til netværket og penge bliver overført til hinanden.

I virkeligheden falder mængden af Bitcoins der bliver tildelt til en guldgraver over tid, og tallet 1.000.000 afhænger af hvor mange computere der er på netværket.

Begge dele er for at skabe et incitament for at grave efter Bitcoins, det bliver sværere og sværere at finde dem, ligesom med rigtigt guld, og selv om du bare køber en masse computere bliver det heller ikke lettere (1.000.000 bliver bare mindre og du skal udføre mere arbejde).

Det er af samme grund at du kan læse i medier omkring det voldsomme energiforbrug Bitcoins har. Det er bygget ind i systemet for at skabe incitament for grave efter dem! I den oprindelige artikel som beskriver Bitcoins, antager man faktisk at strøm kommer 100% fra vedværende kilder af samme grund - ellers bliver energikravet voldsomt.

Der også indbygget en begræsning for hvor mange transaktioner man kan lave per 10 minutter, i praksis 6.6 transaktioner per sekund. Denne begræsning blev lavet for at forhindre at en masse mennesker kunne fylde listen af transaktioner op med en masse ubrugbar data på kort tid. Derfor bliver det blot dyrere og tager længere tid hvis mange mennesker vil overføre Bitcoins inden for de samme 10 minutter.

I de seneste år har der været en enorm voksende interesse for Bitcoin. I dag koster en Bitcoin transaktion omkring 150 kr, hvilket er et højt gebyr at betale hvis du for eksempel ville købe et computerspil som kostede 400 kr. De er en af grundene til at nogle mener Bitcoins, i dag, ikke ville kunne bruges som en hverdagsvaluta.

@kaspth
Copy link

kaspth commented Jan 21, 2018

Rigtig fed oversigt for os som ikke lige har sat sig ind i hvordan det hele spiller sammen. Tusind tak :)

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment