»  Innsikt  »  Bitcoins tekniske byggeklosser – Del 1.

Bitcoins tekniske byggeklosser – Del 1.

Roger Valestrand
calendar 16,mai 2022

Bitcoin er et nytt og innovativt betalingsnettverk og en ny form for penge. 13 år etter at Satoshi Nakamoto forfattet «Bitcoin Whitepaper» , har oppdagelsen manøvrert seg fra et internettforum for spesielt interesserte til og i dag engasjere millioner av mennesker over hele verden.

Bitcoin ble oppdaget i et univers bestående av datakode, kryptografi og matematikk. Det er en programmert penge med noen helt særlige egenskaper, pakket inn i et komplekst system som kan forstås fra mange ulike perspektiver. 

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 «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. 

Blokker og blokkjede

Whitepaper: Punkt 3.

Av de tekniske begrepene som diskuteres i denne artikkelen er det nok «blokkjede» (blockchain på engelsk) som er mest omtalt. Man kan våge påstanden at selve begrepet nesten er tømt for innhold. Dette etter årevis med misforståelser, feiltolkninger og promovering av bruksområder som i utgangspunktet ikke gir mening. 

I ren teknisk forstand er en blokkjede en serie av tidsstemplede hendelser, organisert på en slik måte at du ikke kan endre tidligere deler uten å også endre nyere deler. Satoshi kalte faktisk dette for en tidsskjede (timechain på engelsk), og ordet «blockchain» forekommer ikke i whitepaperet.  

En blokk i blokkjeden inneholder en eller flere transaksjoner. Blokker blir produsert i gjennomsnitt hvert tiende minutt (se avsnitt om vanskelighetsjustering), av minere som har utført nok arbeid (se avsnitt om bevis på utført arbeid). Blokkene distribueres deretter ut på Bitcoin-nettverket, hvor de valideres og lagres av alle som deltar.   

Når en transaksjon først har havnet på blokkjeden kan den ikke endres, uten å også endre alle transaksjoner som kommer i senere blokker. Det er dette som gjør blokkjede til en så sikker måte å distribuere informasjon på; kombinasjonen av data som ikke kan delvis endres uten å måtte endre all dataen, og at flere uavhengige aktører alle mottar og validerer informasjonen. 

I bitcoin- og krypto-dagligtalen brukes gjerne blokkjede som en sekkebetegnelse som omfatter veldig mye – nærmest som et synonym på bitcoin og kryptovaluta. I presisjonens navn kan det være fint å ha et litt snevrere syn på hva blokkjede innebærer:

En blokkjede er en kronologisk ordning av data på en distribuert måte.

Kanskje Satoshis originale tidskjede-begrep hadde spart oss for mange kleine bøker skrevet av avdankede Harvard Business School-forelesere? 

Noder

Whitepaper: Punkt 5

Alle deltakere på bitcoin-nettverket omtales som noder.

Det finnes flere ulike former for noder: fullnoder, lettnoder og minere er noen eksempler. Hva som skiller de fra hverandre er utenfor rammene for denne artikkelen, men det er fint å være klar over at det finnes nyanser innenfor node-kategorien.

Felles for alle noder er at de lytter til nye transaksjoner og blokker på nettverket. Når de mottar en transaksjon eller blokk verifiserer de at alle aktuelle regler følges. Noen av disse reglene går under konsensusalgoritmen, som er omtalt i en egen seksjon.

Alle bitcoin-brukere har muligheten til å bli en node på nettverket. Det eneste man trenger å gjøre er å laste ned et program på PCen eller mobilen sin – og så er man i gang! Det er vanskelig å vite nøyaktig hvor mange noder det finnes på nettverket, men estimater fra bitcoin-utvikler Luke Dashjr plasserer det et sted rundt 50.000.

Om vi skal sammenligne dette med det eksisterende fiat-systemet, blir kontrastene store.

I fiat-systemet er det banker og sentralbanker som utgjør “nodene”. De er langt færre, og i motsetning til Bitcoin er det ikke hvem som helst som for lov til å bli ”en del av systemet”. Du må nemlig godkjennes av en rekke nasjonale og internasjonale myndigheter, og om du ikke oppfører deg innenfor rammene de gir deg, vil du befinne deg utenfor systemet på relativt kort tid. 

Konsensusalgoritmen

Whitepaper: Punkt 5

Det finnes en rekke regler for hva som gjør en bitcoin-transaksjon gyldig. Det er summen av disse som kalles konsensusalgoritmen (consensus på engelsk). Denne algoritmen finnes ikke skrevet ned noe sted, men kan tenkes på som summen av oppførselen til alle nodene på nettverket – eller resultatet av at alle noder håndhever reglene de er programmert til å håndheve.

En annen måte å tenke om dette er ”enighet”. Alle aktørene i nettverket er enige om at den informasjonen som til en hver tid blir prossesert, stemmer overens med det som har blitt prossesert historisk og dermed passer sammen med de andre blokkene i kjeden. 

Om du ønsker å bruke bitcoin må du følge konsensus, hvis ikke blir du avvist av resten av nettverket.

Noen eksempler på hva som er del av konsensus:

  • Det er ikke lov å lage nye bitcoin, utenom den strengt definerte mengden Satoshi etablerte i 2009. Slik sikres det at det vil finnes maksimalt 21 millioner bitcoin.
  • For å overføre bitcoin må du lage en gyldig digital signatur (se egen seksjon om signaturer). Det er dette som gjør at kun jeg kan flytte på mine bitcoin, og kun du kan flytte på dine bitcoin.
  • Hver bitcoin-blokk må forholde seg til maksimumsstørrelsen på nettverket – 4 millioner såkalte vekt-enheter. Oversatt til mer kjente begreper betyr dette mellom 1 og 4 megabytes per blokk. Dette er for å sikre at alle nodene på nettverket klarer å henge med, og ikke bare nodene som kjører på dyre og kraftige datamaskiner.

Om du nå føler deg litt ekstra sulten på bitcoin-detaljer, kan du se på C++-koden i Bitcoin Core (den vanligste software-pakka man bruker for å kjøre en node) som definerer konsensusreglene. De finnes under src/consensus på GitHub. Uavhengig av om du forstår C++ eller ei, så er det en morsom øvelse å klikke seg rundt i selve kjernen av bitcoin.

Bevis på utført arbeid – Proof of work.

Whitepaper: Punkt 4

Bitcoin-transaksjoner som har havnet på blokkjeden kan anses for å være helt uforanderlige. Dette trygges gjennom såkalt bevis på utført arbeid – eller proof of work (PoW) på engelsk. 

Prinsippet er enkelt: bitcoinminere gjør matematiske operasjoner som er dyre å utføre, men billige å verifisere. Når en blokk legges til i blokkjeden må det inkluderes et bevis på at et vanskelig matematisk problem har blitt løst.

For å lage dette beviset kreves det ekstremt mye regnekraft – i skrivende stund 132 billiarder forsøk i gjennomsnitt. Verifiseringsjobben er derimot enkel. Der trengs det bare ett forsøk.

Dette står også i sterk kontrast til både fiat-systemet og flere andre kryptovalutaer. Her er det teoretisk mulig å angripe systemet uten bruk av voldsomme ressurser. Ressursene som vil måtte brukes for å utføre forandringer bakover i tid inne i Bitcoin blokkjeden er i skrivende stund estimert til å koste mellom 6 og 10 milliarder dollar. 

Derimot koster det minimalt for brukerne av bitcoin-nettverket å dobbeltsjekke at alle regler følges. 

Vanskelighetsjusteringen

Whitepaper: Punkt 4, siste avsnitt

Vi har altså funnet ut av at det kreves fryktelig mye tallknusing for å lage en bitcoinblokk. Nøyaktig hvor mange tall som knuses styres opp og ned av markedskrefter.

Da Satoshi lanserte bitcoin var han den eneste noden på nettverket, og det hadde vært helt urealistisk at han skulle utføre 132 billiarder operasjoner på egen hånd. Løsningen hans på dette er den såkalte vanskelighetsjusteringen. (difficulty adjustment på engelsk.)

Om vi overser noen hårete detaljer så kan justeringen oppsummeres slik: 

Hvor mye arbeid som må utføres for å lage en bitcoinblokk, justeres opp og ned i takt med hvor mange som forsøker å lage bitcoinblokker.

Når det bare var Satoshi på nettverket var vanskeligheten (hvor mye arbeid som må utføres når man miner) lav. I takt med at flere begynte å mine, steg vanskelighetsgraden. Helt konkret justeres vanskeligheten ca. hver andre uke, slik at nye bitcoin-blokker kommer i snitt hvert 10. minutt. Dette sikrer en jevn og pålitelig flyt i bitcoin-økonomien, og gjør også at produksjonen av nye bitcoin følger en forutsigbar bane.

En interessant kuriosa omkring vanskelighetsjusteringen, er at det var dette som var den manglende brikken i puslespillet om digitale, desentraliserte penger. Alle de andre tekniske elementene i bitcoin-protokollen var allerede funnet opp av andre folk – før Satoshi kom på banen. Med vanskelighetsjusteringen som en avgjørende oppdagelse, satte han det hele elegant sammen på en måte som tidligere forsøk ikke hadde fått til.

Bitcoins tekniske byggeklosser – Del 2, kan forventes innen kort tid. Kryptografen vil rette en stor takk til Torkel Rogstad for uvurderlig bistand i utformingen av denne artikkelserien.

 

Back