Hvordan fungerer Bitcoin?

· 10 min read

Bitcoin er et konsept for digital valuta som den legendariske og gåtefulle Satoshi Nakamoto lanserte i 2009. Det bruker blokkjedeteknologi som infrastruktur og fungerer desentralisert, direkte fra person til person. Whitepaperet Nakamoto skrev for å forklare konseptet, er obligatorisk lesning for alle som vil forstå bitcoin og kryptovaluta generelt. Det forklarer ikke bare bitcoin som idé, men også hvordan et system med bysantinsk feiltoleranse kan fungere i et desentralisert miljø.

Først og fremst bør den som interesserer seg for Bitcoin, vite at den viktigste forutsetningen for at bitcoin-konseptet i det hele tatt kunne bli virkelighet, er blokkjedeteknologien – og forstå hvordan denne teknologien virker.

Hva er en blokkjede?

En blokkjede er en kjede av blokker som hver inneholder data, og som verken overvåkes eller styres av noen sentral myndighet. Disse informasjonskjedene er kryptografisk sikret og kan ikke bringes til taushet takket være den desentraliserte strukturen. I bunn og grunn bruker blokkjeden to datastrukturer: pekere og lenkede lister.

Pekere

Pekere er variabler som angir hvor en annen variabel befinner seg. Vanligvis inneholder variabler i programmering data. (I eksempelet int a = 10 har heltallsvariabelen a verdien 10.) Pekere lagrer derimot ingen verdi som data, men peker på adressen til variabelen som holder dataene.

Lenkede lister

Lenkede lister er en av de viktigste enhetene innen datastrukturer, og ser omtrent slik ut.

En rekke blokker som hver inneholder bestemte data og er koblet til neste blokk via en peker. Pekervariabelen inneholder adressen til neste node og sørger dermed for koblingen. Som vi så ved sluttnoden, inneholder den siste pekeren ingen data.

Det viktige her er at hver peker inneholder adressen til neste blokk. Men hvor er pekeren til den første blokken? Den første blokken kalles genesis-blokken, og pekeren til den ligger inne i selve systemet.

En hash-peker er en peker som inneholder hashen til den foregående blokken.

Hashing er en prosess som tar data av vilkårlig lengde og med en bestemt funksjon produserer et resultat av samme lengde, uansett hva dataene inneholder. For Bitcoin tas overføringstransaksjonen som data og kjøres gjennom SHA-256-algoritmen, som gir et resultat med fast lengde. Uansett hvor lange dataene som legges inn er, produserer SHA-256-algoritmen alltid et resultat på 256 bit.

I sin enkleste form er en blokkjede en lenket liste, som vist nedenfor.

En blokkjede er en lenket liste der hver blokk inneholder data og en hash-peker som peker på blokken foran den. Så hva er en hash-peker? Hash-pekere ligner mye på vanlige pekere, men i tillegg til adressen til forrige blokk inneholder de også hashen av dataene i den blokken. Nettopp denne lille forskjellen i oppbygningen er det som gjør blokkjedeteknologien så sikker.

La oss et øyeblikk anta at en angriper vil angripe blokk 3 og endre dataene i den. På grunn av hash-funksjonen vil den minste endringen i dataene gi et enormt utslag i resultatet. Den minste endringen av dataene i blokk 3 vil endre hashen som er lagret i blokk 2, endringen i blokk 2 vil påvirke hashen i blokk 1, og dermed måtte hele kjeden endres – noe som er umulig. Det er denne metoden som gjør blokkjeder umulige å bringe til taushet.

Hva er mining?

Mining er prosessen som trengs for å skape nye bitcoin. Bitcoin-mining fungerer etter prinsippet Proof of Work – POW. Enkelt sagt: å løse et problem skal være svært vanskelig, men når du først har løst det, skal det være svært enkelt å bevise at løsningen er riktig.

Før vi kommer til hvordan Bitcoin tok i bruk POW som konsept, la oss prøve å forstå hvorfor kryptovalutaer i det hele tatt trenger et slikt system.

Før Bitcoin ble det laget ulike digitale valutaer, men når man bygger et desentralisert nettverk fra person til person i et digitalt miljø, er den største hindringen det logiske problemet som kalles de bysantinske generalenes problem. Fordi Nakamoto klarte å løse dette problemet i bitcoin ved hjelp av POW, kunne bitcoin komme til liv – og det går fortsatt sterkt.

De bysantinske generalenes problem

La oss fortsette med å forklare de bysantinske generalenes problem, som også brukes ofte i akademiske arbeider. De bysantinske generalene som planlegger å angripe fiendens by, har to problemer:

Generalene befinner seg svært langt fra hverandre, så det er umulig for en sentral myndighet å styre beleiringen.

Fienden har også en sterk hær, så angrepet må utføres av alle generalene på nøyaktig samme tid for at det skal lykkes.

Mens de beleirende hærene omringer byen, sender hver hær ordremeldingen fra hæren til høyre videre til hæren til venstre, og slik holdes kommunikasjonen i gang. Problemet er bare at når det kommer en ordre om at vi angriper på onsdag, kan en hær være uforberedt og sende tilbake en melding: nei, angrep på fredag. Eller soldaten som bærer meldingen kan bli tatt til fange av fienden, eller innholdet i meldingen kan bli endret. I et så usikkert miljø vil ethvert angrep mislykkes dersom man ikke oppnår full samordning.

Det samme logiske problemet gjelder for blokkjedenettverk, som utgjør infrastrukturen til kryptovalutaer som bitcoin. Dette er utrolig store nettverk – hvordan skal vi kunne stole på hver eneste person i dem? Vi vil kanskje sende noen 4 ether, men hvordan kan vi stole på at ikke en ondsinnet person gjør beløpet om til 40 ether?

Satoshi Nakamoto klarte å løse dette logiske problemet ved å innføre proof-of-work-protokollen. La oss se hvordan den fungerer:

Når den beleirende hæren vil formidle meldingen «vi angriper på mandag» til hæren til venstre for seg, må den følge disse trinnene;

Først tildeles den opprinnelige meldingen en tilfeldig verdi som genereres bare én gang, kalt «nonce». En nonce kan være hvilken som helst verdi i det heksadesimale tallsystemet.

Deretter kjøres meldingsteksten med den tildelte nonce-verdien gjennom hash-funksjonen, og man får et resultat. I dette tenkte angrepet antar vi at kommandantene har blitt enige om bare å dele de hash-resultatene der de første 5 tegnene er nuller.

Gir hash-funksjonen det ønskede resultatet, sender de meldingen videre til neste general. Stemmer ikke resultatet, må den tildelte nonce-verdien endres tilfeldig og prosessen gjentas til man får et resultat med fem nuller først. Et slikt system krever utrolig mye tid og regnekraft.

Blir soldaten som bærer meldingen tatt til fange, eller blir innholdet endret, vil hash-resultatet endre seg dramatisk på grunn av hash-funksjonens egenskaper. Når generalene gjennomgår meldingen, ser de at de fem første tegnene i hashen ikke er nuller, og trekker angrepet tilbake.

Selv om det er svært usannsynlig, kan enhver hash-funksjon gi kolliderende resultater. I teorien skal det for to ulike input A og B ikke finnes noen sannsynlighet for at H(A) = H(B), men i praktisk bruk er ingen hash-funksjon helt kollisjonssikker.

Men hva skjer i dette lite sannsynlige tilfellet, der soldaten med meldingen blir tatt, meldingen endret, og hash-resultatet likevel kommer ut slik generalene venter? Det ville selvsagt være en tidkrevende prosess, men ikke umulig. Mot dette bruker generalene sin tallmessige overlegenhet.

Problemet kan løses ved at tre generaler sender meldinger mot venstre samtidig, i stedet for at én enkelt general etter tur sender meldingen fra høyre til venstre. Dersom generalene lager én kumulativ melding av sine egne meldinger, kjører den gjennom hash-funksjonen, tildeler resultatet en nonce-verdi og deretter kjører det gjennom hash-funksjonen på nytt, må denne gangen de første seks tegnene i resultatet være nuller.

På dette stadiet blir det et alvorlig tidssluk å finne nonce-verdien til meldingen og endre innholdet i den.

Oppgaven til generalene som mottar meldingen, er derimot enkel; de trenger bare å legge nonce-verdien de har fått, til hash-resultatet og sammenligne resultatene. Dette trinnet er en svært rask og enkel operasjon. Denne ideen er selve virkemåten til proof-of-work-prinsippet.

Å finne nonce-verdien som gir riktig hash, krever enorm regnekraft og tid

Men å gå gjennom resultatene og avgjøre om det ligger vond vilje bak, tar svært kort tid.

Slik gjennomfører minere proof-of-work-protokollen i Bitcoin-mining. De bruker regnekraften sin til å løse den kryptografiske oppgaven foran seg og skape den neste blokken. I Bitcoin-blokkjeden lages det en blokk hvert 10. minutt.

Hvordan skjer overføringer i Bitcoin-nettverket?

La oss si at John vil sende noen bitcoin til Dave. Hvordan skjer denne overføringen? Bitcoin-overføringer fungerer helt annerledes enn overføringer av fiatpenger. Om John ville gi Dave 10 USD, ville han fysisk ta seddelen opp av lommeboken, gi den til Dave, og overføringen var fullført. Med bitcoin er det annerledes – det er ikke noe vi eier fysisk. Det vi har, er beviset på at vi eier bitcoin.

Det er to ting vi bør vite og være oppmerksomme på;

Minerne bekrefter og sikrer overføringstransaksjonene med dataene de legger i blokken de lager. De tar også et gebyr for denne tjenesten.

Med fiatvalutaer kjenner vi ikke til og følger ikke historien til seddelen vi har i hånden. Det finnes ingen praktisk måte å gjøre det på. I bitcoin blir derimot hver eneste overføring registrert i nettverket.

I lys av dette, la oss se på bitcoin-overføringen mellom John og Dave. Denne overføringen har to deler; input og output.

For at John skal kunne gjennomføre overføringen, må han ha bitcoin fra tidligere overføringer. Som nevnt registreres alle overføringer i bitcoin-nettverket.

John må samle bitcoinene fra overføringene han tidligere mottok, kalt TR(0), TR(1) og TR(2), lage en ny overføring med navnet TR(INPUT) og sende den til Dave. Her blir TR(INPUT) inputdataene for den nye overføringen.

Slik ser en bitcoin-overføring grovt sett ut fra inputsiden.

Outputdataene vil ganske enkelt inneholde mengden bitcoin Dave skal ha etter den nye overføringen, samt vekslepengene som blir igjen og sendes tilbake til John som TR(INPUT)-verdien i hans neste overføring.

Ser vi bort fra vekslepengene, inneholder prosessen ett enkelt outputresultat, men overføringer med flere outputresultater er også mulig. Denne fremstillingen viser enkelt hvordan en overføring skjer i bitcoin-nettverket. For at alt skal lykkes, må imidlertid visse betingelser være oppfylt.

Betingelser overføringer må oppfylle:

TR(INPUT) > TR(OUTPUT). Inputoverføringen må alltid være større enn outputoverføringen. I hver overføring betales differansen mellom input og output (output + vekslepenger) til minerne som gebyr. Altså: Mining-gebyr = TR(INPUT) - (TR(OUTPUT) + VEKSLEPENGER)

På inputsiden må TR(0)+TR(1)+TR(2)=TR(INPUT) gjelde. Med andre ord må John ha nok bitcoin til å sende til Dave. Har han ikke nok bitcoin til å gjennomføre transaksjonen, blir overføringen avvist av minerne.

Nå må Dave bevise at han er eieren av bitcoinene som er sendt til ham. John har kryptert bitcoin-overføringen med Daves offentlige nøkkel. Dave kan bare åpne denne krypteringen med sin private nøkkel.

Samtidig må John bevise at han har nok bitcoin til å sende til Dave. Det gjør han ved å signere overføringen han vil gjennomføre, med sin egen private nøkkel. Hvem som helst kan åpne den med Johns offentlige nøkkel og verifisere at han faktisk har den nødvendige mengden bitcoin. Dette beviset kalles signaturdata.

Inputdataene (inkludert signaturdataene) og outputdataene legges sammen og kjøres gjennom hash-algoritmen SHA-256. Resultatet av denne algoritmen kalles overføringen.

Én ting må man huske: for at en bitcoin-overføring skal skje, må mineren som minet blokken, fysisk legge overføringen inn i blokken. Mineren som minet blokken, kan motta gebyr for alle overføringene han la inn i den. Etter hvert som overføringsvolumene øker over tid, må overføringene vente på at en ny blokk dukker opp, fordi blokkene blir helt fulle. De som ikke vil vente, betaler høyere mining-gebyr, slik at overføringen deres skiller seg ut og blir mer attraktiv for minerne.

Dette ga opphav til replace-by-fee-prinsippet. Det fungerer rett og slett slik: Selv om John sendte 5 BTC til Dave, kommer transaksjonen aldri med i en blokk og blir liggende som ventende fordi mining-gebyret ble holdt lavt. Det finnes ingen måte å angre eller kansellere transaksjonen på, siden brukt bitcoin ikke kan hentes tilbake. Men hvis John gjør en overføring til samme adresse for samme BTC-beløp og setter mining-gebyret høyere, regnes den gamle overføringen som ugyldig, og den nye venter på å bli behandlet.

Fremtiden til Bitcoin og kryptovaluta generelt er full av utallige muligheter. Blokkjedeanvendelser kjenner ingen grenser, og prosjektene på feltet blir mer vellykkede og tryggere dag for dag.

På reisen fra varepenger via bruken av edle metaller som gull og sølv til papirpenger og nominelle valutaer, er ideen om penger i et virtuelt miljø ikke særlig ny – men den ble først mulig å gjennomføre i nyere historie.

Ifølge noen er han en gruppe i CIA, ifølge andre et romvesen, og kanskje er han virkelig en cyberpunk ved navn Satoshi Nakamoto. Uansett hvem det er, lot han oss selv bestemme hva vi skal gjøre videre med ideene hans og gjennomføringen av dem, som fullstendig endrer hvordan vi ser på verdiene våre og hvordan vi oppbevarer dem. Han banet vei for ideer som er mer avanserte enn hans egne, og overbeviste verden om å innta et helt annet perspektiv.

Satoshi hadde ikke glemt å gjemme en melding i genesis-blokken – startblokken – som han minet og skrev inn som hardkodet tekst. Han noterte datoen 3. januar 2009 og la ved en overskrift fra den britiske avisen Times den dagen om bankene som var ansvarlige for den verdensomspennende økonomiske krisen: «Statsråden er på nippet til en ny redningspakke for bankene». Med disse ordene gjør han trolig narr av sentralbankvesenet. Hvorfor Satoshi opprettet denne adressen i startblokken, som det ikke kan brukes midler fra, er ukjent. Så langt er det sendt 16 BTC anonymt til denne adressen, og derfor vil den totale forsyningen på 21 millioner bitcoin i realiteten aldri bli nådd.

Bitcoin brukte bare 9 år på å nå nivåer som skremmer verdens sentralbanker, og det har fortsatt en lang vei å gå.

Bitcoin Hvordan fungerer Bitcoin Satoshi Satoshi Nakamoto Nakamoto kryptovalutaer blokkjede Hva er blokkjede Mining Hva er mining Bitcoin-nettverket