I denne artikkelserien, som vil bli publisert i flere deler, har Kryptografen samarbeidet tett med en av Norges fremste kunnskapskilder hva angår de tekniske aspektene rundt Bitcoin – Torkel Rogstad.

Sammen håper vi på å være i stand til å gi deg som leser en noe dypere forståelse for hvordan Bitcoin er «bygget sammen», gjennom å belyse et utvalg av de teknologiske byggeklossene bitcoin-protokollen består av. 

Vi bruker norske begreper på byggeklossene, men vi inkluderer også de engelske navnene, så det blir lettere for deg å utforske konseptene videre på egenhånd. 

Før du leser videre, vil vi oppfordre deg til å lese Bitcoins tekniske byggeklosser – Del 1. og  «Bitcoin Whitepaper», senere oversatt til norsk av Kryptografen. Dette er dokumentet som Satoshi Nakamoto publiserte 31. Oktober 2008. Under hvert konsept vi diskuterer i denne serien vil vi skrive hvor du kan finne igjen det samme konseptet i whitepaperet. På denne måten håper vi å inspirere til videre egenutforskning. 

Subsidiehalvering

Whitepaper: ikke omtalt, noget overraskende.

En av Bitcoins aller viktigste og velkjente egenskaper er absolutt knapphet. Det vil si at det aldri vil finnes mer enn 21 millioner bitcoin. Det er subsidiehalveringen (subsidy halvening, eller bare halvening på engelsk) som er grunnen til dette. Interessant nok er selve halveringen ikke omtalt i whitepaperet. Satoshi nøyer seg med å si “once a predetermined number of coins have entered circulation.” 

I hver nye bitcoin-blokk lages det nye bitcoin. Dette omtales som blokk-subsidiet.

Blokk-subsidiet har to funksjoner:

  1. Nye coins introduseres i økonomien.
  2. Oppmuntre minere til å bruke regnekraft.

Da Satoshi lanserte bitcoin, var blokk-subsidiet på 50 bitcoin per blokk. Det betyr at hvert 10. minutt ble det skapt 50 BTC. I koden som definerer dette er det lagt inn en “sjekk”. Dette betyr at for hver gang det har blitt produsert 210 000 blokker halveres subsidiet. Den observante leser vil merke seg at det i snitt blir laget 210 240 blokker hvert fjerde år – som igjen betyr at ca. hvert fjerde år halveres antallet bitcoin som produseres. 

Dette er den lille magien som styrer hele bitcoins pengepolitikk. Dette gjør at vi alle, allerede i dag, vet hvor mange Bitcoin som noensinne vil eksistere.

En gitt mengde coins for hver nye blokk, etter et helt forutsigbart mønster. Eksponentielt avtagende produksjon, frem mot et nullpunkt i nærheten av år 2140. Kontrasten til det enormt komplekse sentralbankmaskineriet som styrer fiat-valuta kunne ikke vært mer slående.

Asymmetrisk kryptografi

Whitepaper: punkt 2

Asymmetrisk kryptografi er det litt krøkkete, norske begrepet på det engelske public key cryptography. Det muliggjør både kryptering og digitale signaturer, og er en helt essensiell komponent i bitcoin. 

La oss starte med å luke ut en veldig vanlig misforståelse: det er ingen kryptering i bitcoin.

Mange tenker at “krypto”-delen av kryptovaluta kommer av kryptering, men dette er ikke tilfellet. Snarere referer det til kryptografi, som er en større disiplin – som blant mange ting også inkluderer kryptering. For å gjøre opp for manglende kryptering, tar digitale signaturer opp en rekke avsnitt i historien om bitcoin. I whitepaperet blir det nevnt allerede i andre setning.

I en bitcoin-kontekst, så lar digitale signaturer oss bevise eierskap til en mengde bitcoin. Dette foregår på en måte som utvetydelig viser for hele verden hvem som eier hva.

Alle bitcoin-brukere har en eller flere såkalte privatnøkler. Disse privatnøklene er helt tilfeldig genererte tall, som du holder for deg selv.

Gjennom matematikk konverterer du privatnøkkelen din til en offentlig nøkkel, som du trygt kan dele med omverdenen.

Det geniale med dette er at du kan bevise matematisk at du sitter på privatnøkkelen til en offentlig nøkkel, uten å avsløre den private nøkkelen. Dette er det som kalles en digital signatur.

Om vi oversetter dette til Bitcoin universet, betyr det at coins som er sendt til en bitcoin-adresse (den offentlige nøkkelen), kun kan flyttes videre på av den som besitter den tilhørende private nøkkelen. Hver gang du skal flytte på bitcoin, må du lage en digital signatur som beviser at det er den rettmessige eieren som sender penger.

Digitale signaturer er forøvrig en meget vanlig komponent i stort sett all annen software du benytter, utover bitcoin. Hver gang du logger inn i nettbanken, åpner en nettside eller laster ned en app sendes det en haug med digitale signaturer frem og tilbake. Dette som en del av den moderne sikkerhetsarkitekturen på internett. 

Hashing

Whitepaper: punkt 3 og 4

Om du har lest eller hørt om bitcoin-mining kan det være du har stusset over ordet hashing.

I Bitcoins tekniske byggeklosser – Del 1. – snakket vi om bevis på utført arbeid – Proof of Work. Det arbeidet som utføres, er en lang rekke med hash-beregninger, eller hash-funksjoner. Dette kalles hashing.

Om du husker tilbake til matematikken på skolen, så har alle funksjoner input og output.

Vi kan for eksempel ha en funksjon som dobler tall. Med 2 i input får vi 4 som output, og med 11 som input får vi 22 som output. I en hashfunksjon kan vi ha det aller meste som input – for eksempel tall, bitcoin-transaksjoner eller tilfeldig data.

Outputen vår er alltid et fryktelig langt tall: du kan forvente 77 siffer i svaret.

Hva er dette godt for, tenker du kanskje?

Hash-funksjoner har mange bruksområder, men i bitcoins tilfelle er det særlig ett område vi bryr oss om: Det er nemlig helt umulig å gjette utfallet av en hash-funksjon uten å gjennomføre beregningen. 

Dette høres kanskje litt merkelig ut, men la oss forsøke å forklare det med å gå tilbake til doblingseksempelet vårt.

Om du ber meg gjøre reversen av funksjonen, så er det en smal sak. Sier du at outputen er 42, så vet jeg at inputen er 21. Å regne ut hva jeg må doble for å få 100 er også lett – nemlig 50.

Med hash-funksjoner er det annerledes.

Jeg kan si til deg at 76c1473fde0856128b36ee6c89f4196f51342af0929e949517ff111ad44b7843 er svaret på en hash-beregning. Om du ikke allerede vet svaret, vil det være helt umulig for deg å fortelle meg hva som er inputen.

Hash-funksjoner er såkalte énveisfunksjoner. Det vil si at det ikke går an å gjette hva du startet med, om du bare har sett svaret. 

Det er denne matematiske egenskapen bitcoin-mining hviler på.

Når minere utfører hash-beregninger, skal de i praksis forsøke å finne svaret på en hash-funksjon, slik at svaret er et lavt nok tall.

Enkelt forklart betyr dette at svaret på matteoppgaven skal være under 100. Spørsmålet blir hva du må gi som input?

Den eneste måten for minere å finne ut av dette, er å prøve fryktelig mange ganger. De samler sammen alle transaksjonene de ønsker å inkludere i en blokk, noe annen data og til sist litt tilfeldig data.

Alt dette setter de inn i en hash-funksjon.

Om svaret var lavt nok har de akkurat laget en gyldig bitcoin-blokk – men mest sannsynlig hadde de ikke korrekt svar. De må dermed endre på den tilfeldige dataen, og prøve på nytt.

Moderne bitcoin-maskiner klarer å gjøre disse operasjonene svimlende raskt. I skrivende stund er Antminer S19 Pro+ Hyd den raskeste hashing-maskinen på markedet. Den utfører 198 terra-hashes i sekundet. Det betyr at maskinen gjør 198 000 000 000 000 hash-beregninger hvert eneste sekund. Begrip det den som kan. 

Bitcoin Script

Whitepaper: ikke omtalt 

Da Satoshi designet bitcoin gjorde han med vilje systemet meget fleksibelt. I stedet for å komme med en forhåndsdefinert mengde transaksonstyper, inkluderte bitcoin et lite programmeringsspråk – Bitcoin Script.

Bitcoin Script er et programmeringsspråk som bestemmer hvem som får lov til å bevege på bitcoin.

De vanligste og enkleste eksemplene er når person A sender penger til person B. Programmet kan da for eksempel si at person B kan bruke disse pengene, om hun fremviser en gyldig digital signatur.

Bitcoin Script kan også gjøre en del andre operasjoner. Eksempler på slike operasjoner kan være: 

  • Transaksjonen er gyldig, om både person A, B og C alle viser gyldige transaksjoner
  • Transaksjonen er gyldig om person A gjetter riktig svar på en hash-funksjon.
  • Transaksjonen er gyldig kun etter et visst tidspunkt.

Disse operasjonene kan også kombineres, for eksempel gjennom å si at “enten må betingelse A og B være oppfylt, eller betingelse C må være oppfylt”. 

Om du har programmert litt før vil dette kanskje høres kjent ut – og om det er forvirrende er det ikke så fryktelig farlig.

Hovedpoenget er at bitcoin-transaksjoner inkluderer et lite programmeringsspråk, og dette programmeringsspråket lar oss flytte på penger og data gjennom kode.

Det er dette som kalles smartkontrakter, som kanskje først og fremst forbindes med alternative kryptovalutaer som Ethereum. Bitcoins smartkontrakter var først ute, og er med vilje designet veldig annerledes enn Ethereum sine. Nøyaktig hva forskjellene er og hva de betyr er et stort tema i seg selv, og utenfor rammene for denne artikkelen. 

Hva er så poenget med denne programmeringen?

Kort forklart lar den oss bygge mer komplekse systemer, enn kun enkle pengeoverføringer fra person A til B.

For eksempel kan vi lage multisignaturløsninger, som oppbevarer bitcoin på en tryggere enn ordinære oppbevaringsløsninger. Vi kan også lage såkalte andrelagsnettverk – Layer 2 på engelsk. Eksempler på dette er Lightning, og sidekjeder (sidechains, på engelsk). Dette kommer vi nærmere inn på i senere artikler i denne serien – så her er det bare å glede seg.

Kryptografen vil rette en stor takk til Torkel Rogstad for uvurderlig bistand i utformingen av denne artikkelserien. 

Relatert innhold

Knapphet bestemmer verdien på bitcoin

I denne artikkelen identifiseres det hvordan knapphet, målt som Stock-to-Flow, bestemmer den langsiktige verdien på bitcoin. Modellen anslår en bitcoinpris på 55.000 dollar etter halvering i mai 2020.

Desentralisert finans og regnbuer

I et nytt paper beskriver Dan Robinson, forsker i krypto-investeringsselskapet Paradigm, en mulig måte å gjøre desentralisert trading med støtte for giring og derivater.