Annonse

Slik virker Bitcoin

I Bitcoinland lever digital bygdekultur. Alle passer på alle og tillit lenkes i fortida.

Publisert

Bitcoin. Ta en bit av ordet. Smak på den første biten – bit. Tallet en eller null – de to eneste tegnene i alfabetet til datamaskiner.

Neste bit? Coin. Mynt. Penge, altså. Men bitcoin er ingen klingende mynt som du kan putte i sparegrisen. Myntene er bits – enere og nuller, små elektriske lyn gjennom elektronhjerner – og over nettet.

Datamaskiner jobber lynraskt – men Bitcoin er langsomme penger. Hvorfor er de langsomme når de går over nettet?

Blokkjeden – regnskapsboka

En betaling i bitcoin blir sikrere og sikrere etter hvert som tida går. Det lønner seg å vente en time for å se at betalingen er i orden.

Hva er det som gjør betalinger med Bitcoin sikrere over tid? Det er måten betalingene – enere og nuller – lenkes fast i en kjede av bits. Den kalles blokkjeden – blockchain.

Blokkjeden er den store regnskapsboka i Bitcoinland. Her bokføres alle betalinger – overføringer i bitcoin – som noensinne er gjort.

Lønnsomt å kjede seg

Rundt hvert tiende minutt føres en ny side med betalinger inn i regnskapsboka. Sagt i bitcoinspråk: Blokkjeden får et nytt ledd – en ny blokk – med nye bits.

Blokkjeden er ikke som andre regnskapsbøker. En regnskapsbok blir ikke sikrere jo lengre tida går. Det gjør blokkjeden.  Jo flere blokker kjeden får, desto sterkere blir den.

I Bitcoinland lønner det seg altså å kjede seg en stund. Da vet du hva du får. Tid blir sikre penger. Hvorfor er det slik?

Alle vet om alle

Enkelt sagt: Systemet er laget sånn at det nye leddet arver litt innhold fra de eldre leddene.

Hvis du prøver å tuske til et gammelt ledd, så forplanter endringen seg til alle leddene etterpå. Det blir litt som det gode gamle tidsreiseparadokset: Hva skjer hvis du reiser tilbake og forstyrrer hyrdestunden til din oldemor og oldefar? Hele slekta blir endret.

Blokkjeden er altså litt som en slektstavle – med en lang grein. Hvem kan lese i slektstavla med alle regnskapene?

Svaret er: I prinsippet alle som har bitcoin. Noe av sikkerheten ligger i at alle vet om alle - som på bygda. Alle kan kontrollere at betalingene stemmer – hvis de vil.

Graverne

Noen frivillige tar også på seg en større oppgave. De er bokholdere og fører inn betalingene i nye sider i regnskapsboka – blokker i blokkjeden.

De kalles gravere – miners. Hvorfor graver de?  De graver for å få en bonuslønn for regnskapsjobben – i bitcoin. Å føre regnskapet er jo en jobb, så selvsagt må de få betaling.

Bare en graver kan innkassere denne bonuslønna. Graverne – minerne – må nemlig konkurrere om å bruke datamaskinene sine grave ut lag på lag av tall i en slags matteoppgave. Den som finner løsningen først, får belønningen.

Matteoppgaven er vanskelig, men meningsløs. Den har ingenting med regnskapet og bitcoin å gjøre.

Bokholdere på lag

Hvorfor denne merkelige ordningen? Her er vi ved den snedige og vanskelige kjernen i Bitcoin.

Enkelt forklart: Når mange gravere konkurrerer, blir det litt som et fotballag. Samhold gjør sterk – også for graverne og blokkjeden.

Matteoppgaven er så vanskelig at en datamaskin alene ikke har nok regnekraft. Graverne går sammen i lag – kalt mining pools. Da øker de vinnersjansene.

Bare en av spillerne scorer mål – finner løsningen og får belønningen. Men alle på laget deler belønningen.

(Foto: (Illustrasjon: Shutterstock/Arnfinn Christensen, forskning.no))

Regnskapet er pengene – pengene er regnskapet

Dette var grunnprinsippene i Bitcoin – på aller enkleste måte.   Et pengesystem der alle kan se og sjekke regnskapet. Bitcoin er et pengesystem uten sentralbank.

Et pengesystem der arbeidslag av gravere fører inn regnskapet som bits – enere og nuller – i en svær datafil – blokkjeden – mot betaling i bitcoin.

Tenk litt nærmere på dette. Pengene er bits. Regnskapet er også bits. Det er altså ikke sånn at pengene er en ting – klingende mynt – og regnskapet noe annet – tall krafset med pennesplitt i en regnskapsbok.

Regnskapet er pengene, og pengene er regnskapet. Blokkjeden er bitcoin, og bitcoin er blokkjeden. Alt er bits – enere og nuller i datamaskiner og på internett.

Bitcoin-bygda

Bitcoin er det første pengesystemet som bruker internett for hva det er verdt. Internett er uten sentral kontroll. Bitcoin er uten sentral kontroll.

Oppsummert i en setning: Bitcoin er en metode for å overføre beskjeder – les pengeoverføringer – helt åpent og desentralisert, men samtidig sikkert.

Eller – om du vil – bygdesamfunnet i digital utgave. Alle kan la huset stå åpent fordi alle vet hvem som gjør hva – og gjør det i lag. Det årnær seg ikke bare i Fredrikstad, men også i Bitcoin-bygda.

Din første bitcoin

Vi går videre med et praktisk spørsmål: Hvordan får du din første bitcoin?

Det korte svaret er – veksle norske kroner til bitcoin hos en bitcoinveksler, for eksempel bitmynt.no eller bitcoinsnorway.no. I vårt eksempel kaller vi bitcoinveksleren for Bob.

Men hvor fikk bitcoinveksleren Bob sine bitcoin fra? Eller – enda mer grunnleggende – hvem laget den aller første bitcoin?

Åpent program fra hemmelig kilde

Austraileren Craig Wright hevder å være skaperen av Bitcoin, tidligere bare kjent under psevdomymet Satoshi Nakamoto. Bildet er tatt under et intervju med BBC 2. mai 2016. (Foto: BBC News via AP)

Satoshi Nakamoto. Navnet er dekknavnet til en ukjent person – eller flere – som skapte dataprogrammet bak Bitcoin.

Mange har forsøkt å finne ut hvem Satoshi er, og ryktene har gått i årevis. Den siste kandidaten er en australier – Craig Wright – men ikke alle er overbevist.

Bitcoin ble første gang presentert av Wright – eller hvem det nå er – i en artikkel 31. oktober 2008.

Dataprogrammet som definerer bitcoin i praksis, ble lagt ut anonymt på et nettforum 3. januar 2009. Like hemmelighetsfullt som opphavet til Bitcoin har vært, like åpent er selve programmet.

Hvem som helst kan sjekke hvordan det virker og om det virker som det skal. Og gjett om datakyndige folk over hele verden har gjort det!

Skapelsesblokken

I dette programmet ligger koden for den aller første siden i regnskapsboka – den aller første blokken i blokkjeden. Den kalles skapelsesblokken – genesis block.

Skapelsesblokken er forskjellig fra alle andre blokker fordi den ikke har noen annen blokk foran seg. Ut av skapelsesblokken kom de første 50 bitcoin.

Disse 50 bitcoins kunne ikke brukes. De endte blindt, kan man si, litt forenklet. Hvorfor den endte blindt, er faktisk ekspertene uenige om. Det kan ha vært tilsiktet av Satoshi, eller det kan ha vært en feil.

Uansett – Satoshi var den første graveren. Han løste den vanskelige oppgaven, laget de neste blokkene og fikk belønning – i ferske bitcoin.

I blokk ni lå den første betalingen fra Satoshi til et annet menneske – den amerikanske dataforskeren Hal Finney.

Finney var også den første graveren utenom Satoshi selv ­– rundt blokk 70. De første bitcoin var kommet i omløp.

Penger oppstår av ingenting

Fagfolkene bak

Uten gjennomlesing av utkast og faglig hjelp hadde ikke denne artikkelen vært mulig. Fortsatt står den i spagat mellom faglig presisjon og tilgjengelighet, som all annen populærvitenskap.

At artikkelen likevel ikke revner på midten, skyldes ikke minst innsatsen til mine tre fagkonsulenter. Takk for innspill, faglig nivåheving og faktasjekk til:

Svein Ølnes
Forsker ved Vestlandsforskning. Har fulgt Bitcoin siden 2011 og fulgt utviklingen. Arbeider med prosjekter basert på bitcoin- og blockchainteknologien. Skriver blogg, blant annet om IT.

Bjørn Husby
Norsk skribent, graver – miner – og bitcoinveksler på nettstedet bitcoinsnorway.com. Skriver blogg om bitcoin. Sivilingeniør i digital signalbehandling.

Donn Morrison
Forsker ved Institutt for datateknikk og informasjonsvitenskap, NTNU. Donn ga meg den uvurderlige første innføringen i Bitcoin som ga meg tro på at jeg kunne forstå og formidle teknologien på et litt dypere nivå.

Bitcoin var altså en pengeenhet som oppstod av ingenting – av en idé klekket ut av den mystiske Satoshi.

Men kan penger bare oppstå sånn ut av ingenting? Tja, egentlig skjer det samme i et trykkeri for pengesedler.

Inn går ganske verdiløst papir og trykksverte, og ut kommer flak av tusenlapper.

Eller – i Bitcoinland: Inn går en tom skapelsesblokk, ut kommer en ny blokk med bitcoin i belønning. Og enda flere blokker. Og enda flere bitcoin i belønning …

21 millioner bitcoin – og stopp

Med andre ord: Bitcoinpressa går. Men hvor lenge? Svaret er også skrevet i dataprogrammet til Satoshi Nakamoto: Helt til graverne har gravd ut 21 millioner bitcoin.

Det vil trolig skje om hundre år eller enda litt lengre tid. Da er alle bitcoins gravd ut. Graverne blir arbeidsledige. Det kan bli en krise for regnskapsføringen, men ikke nødvendigvis.

Det er nemlig en annen mulighet til å tjene penger på regnskapsføring. De som overfører bitcoin, kan avsette et lite beløp som gebyr til graverne.

Hvis du ikke betaler nok i gebyr og det er stor pågang av overføringer, kan bokføringen i blokkjeden ta lenger tid.

Spekulantenes tid er omme

Men når alle bitcoin er gravd ut, hva skjer da hvis bitcoin taper seg i verdi? De av oss som har levd noen år, husker hvordan tusener av italienske lire bare kunne skaffe deg en øl.

Og etter første verdenskrig kostet et brød flere millioner tyske mark. Hva om du måtte ha alle bitcoin som fantes i hele verden for å kjøpe en pizza?

Tanken er ikke så sær som den høres ut. To pizzaer fra Papa John´s i Florida gikk til programmereren Lazlo Hanyecs for ti tusen bitcoin 22. mai 2009 – like etter at pengesystemet var tatt i bruk.

22. mai har siden blitt nasjonaldagen for Bitcoin – også kalt Bitcoin Pizza Day.

Ti tusen bitcoin for to pizzaer var den gangen rundt 40 dollar. Siden har bitcoin tatt seg opp i verdi. Den har riktignok flatet ut, og spekulantenes tid er trolig omme i Bitcoinland.

Likevel – nå går en bitcoin for rundt 3600 kroner. Ikke rart at det også finnes mindre enheter – millibitcoin, mikrobitcoin og en hundremilliondel av en bitcoin – passende nok kalt en Satoshi.

Lommebok uten bitcoin

Ok – så kjøper vi hundre millibitcoin – 100 mBTC – for rundt 360 kroner. Vi kontakter bitcoinveksleren Bob.

Hva sier han? Jo – skaff deg en lommebok!

Lommebøker for bitcoin er ikke som andre lommebøker. Du oppbevarer ikke bitcoin i denne lommeboka. Bitcoin finnes bare i blokkjeden.

Lommebok i lomma, på PCen eller i skyen

Lommeboka kan i enkleste form være en lapp med et passord. Den kan også være en liten elektronisk boks som er spesialisert for oppgaven – en hardware wallet.

Lommeboka kan også være et dataprogram på mobiltelefonen eller datamaskinen din. Noen beskytter programmet med passord. Da er lommeboka sikrere.

Lommeboka kan også ligge i skyen – på maskinene til et nettfirma som du stoler på.

Lommebøker kan – men må ikke – lagre hele regnskapet for Bitcoin – hele blokkjeden på rundt 65 gigabyte med data.

Med en slik feit lommebok kan du sjekke alt selv. Du trenger ikke å stole på andre. Du hjelper også til med å holde Bitcoin sikker. Du kalles da for en av nodene i Bitcoin-systemet.

Dette er en lommebok for bitcoin. Lommeboka inneholder ikke penger, men lager kodenøkler. Lommeboka kan også være et program på mobiltelefonen eller pc'en, eller du kan ha lommeboka hos et firma på nettet. Noen lommebøker lagrer hele blokkjeden. Da kalles de noder. Den som har en node, kan se og kontrollere alle overføringer som er gjort siden bitcoin ble opprettet i 2009. (Foto: Ladislav Mecir, Creative Commons Attribution-Share Alike 3.0 Unported license)

Passord borte – bitcoin tapt for alltid

Mister du lommeboka – mobilen eller passordet på mobilen eller datamaskinen – og ikke har tatt sikkerhetskopi, så er også alle dine bitcoin tapt. Ugjenkallelig.

Du kan ikke få et nytt passord eller program som henter pengene fram igjen. Passord, program og penger er alt for sammenfiltret i Bitcoin til at det er mulig. De er ett.

Hvordan kan lommeboka overføre bitcoin?

Et nivå dypere

Nå står vi ved et skille. Vi må et nivå dypere for å svare på dette spørsmålet. Skal vi åpne dekselet av metaforer og kikke på leamikken under?

Innsatsen din – i form av hjernegym – blir høyere, men det blir også gevinsten – i form av forståelse.

Nå skal vi se hva som skjer når bitcoinveksler Bob har fått dine 360 kroner inn på sin vanlige bankkonto og er klar til å overføre 100 millibitcoin – mBTC – fra sin lommebok til din lommebok.

Først forklarer vi ganske overfladisk. Så går vi dypere ned i detaljene.

Stafett av betalinger

Overføringen er rett og slett data i en melding som legges ut på bitcoin-nettverket. Alle i nettverket – alle brukere av bitcoin – kan lese denne meldingen hvis de vil.

I forklaringen videre heter du Carol. Når bitcoinveksler Bob skal overføre 100 mBTC til deg, lager han en melding. Meldingen har en inn-del og en ut-del.

Inn-delen er bitcoin som Bob tidligere har fått av noen andre – vi kaller henne Alice. I ut-delen blir dette beløpet sendt videre til deg, Carol.

Overføringen er med andre ord en veksling i en lang stafett av overføringer.

Stafettpinnen er den samme. Den skifter bare eier. Ingen bitcoin flyttes. Regnskapet – overføringen – er betalingen.

Adresse og signatur

Lommeboka di lager – veldig forenklet – det som blir til en adresse og en signatur. Adressen og signaturen hører sammen på en matematisk måte.

Adressen sender du til Bob, slik at han vet hvor han skal sende pengene. Adressen legger han inn i ut-delen av overføringen sin.

Det blir som når du sender et brev og skriver adressen på utsiden av konvolutten.

Beløpet du får av Bob, kan du bruke til å betale andre. Du lager en ny overføring i stafetten. I den overføringen blir ut-delen fra Bob en inn-del hos deg.

I denne inn-delen bruker du signaturen du laget i sted.

(Foto: (Figur: Arnfinn Christensen, forskning.no))

Alle kan sjekke

Nå kan alle bitcoin-brukerne sammenligne ut-delen til Bob og inn-delen din. De kan se at adresse og signatur stemmer.

I praksis er det brukerne med hele blokkjeden – nodene – og graverne som gjør denne sjekken.

Dette var den enkleste forklaringen. Er du klar til å gå ett nivå dypere?

Jeg visste det. Du våger deg ned i de innviedes krypt – eller kanskje heller kryptering.

Tilbake til lommeboka. Den lager egentlig ikke en adresse og en signatur. Isteden lager den det digitale råstoffet til det som skal bli en adresse og en signatur – nemlig en offentlig og en privat kodenøkkel – også kalt krypteringsnøkkel.

Røverspråket

Kodenøkler brukes for å kode hemmelige meldinger. Kodenøkkelen for røverspråket er for eksempel å legge bokstaven O til konsonantene og så gjenta konsonanten.

Hvis vi koder navnet Carol i røverspråket, så blir det Cocarorolol.

Koden for røverspråket er lett å knekke. Krypteringen som brukes i Bitcoin, er mye vanskeligere.

Men hva hjelper det hvis du sender kodenøkkelen over nettet sammen med den hemmelige meldingen? Da kan jo alle både kode og dekode. Meldingen er ikke hemmelig lenger.

Offentlig og privat nøkkel

Løsningen er to kodenøkler – et par som hører sammen matematisk. Den ene nøkkelen brukes til å kode og den andre til å dekode.

Den offentlige kodenøkkelen gir mottakeren fra seg. Alle kan bruke den til å kode hemmelige meldinger til mottakeren.

Da blir meldingene uleselige for alle – også for avsenderne. Den offentlige nøkkelen virker ikke begge veier.

Bare den private nøkkelen kan dekode meldingen – gjøre den lesbar igjen. Den nøkkelen har bare mottakeren.

Du kan sammenligne nøkkelparet med en låsbar postkasse. Alle kan putte meldinger inn i postkassa med den offentlige nøkkelen

Bare mottakeren kan låse dem ut igjen – med sin private nøkkel.

Ikke enkelt, nei …

Nå har du forstått prinsippet med offentlig og privat nøkkel – slik de oftest brukes. Det er nødvendig for å skjønne grunnlaget.

Likevel – nøkkelparet brukes på en litt annen måte i Bitcoin. Den offentlige nøkkelen brukes blant annet til å lage adressen. Den private brukes til å lage signaturen.

Nå skal vi se hvordan det skjer. Vi bruker fortsatt overføringen fra Bob til deg, Carol, som utgangspunkt.

Den nyttige hashen

Vi starter med den offentlige nøkkelen. Den er ganske lang. Jo lenger den er, desto sikrere er den nemlig. Den kan fylle flere sider.

En beundrer vil sende deg et hemmelig kjærlighetsbrev, og bruker din offentlige nøkkel for å kode brevet. Nå kan ingen forstå hva som står der. Bare du kan bruke din tilhørende private nøkkel til å dekode brevet og lese det. (Foto: (Illustrasjon: Arnfinn Christensen, forskning.no))

Vi ønsker oss en adresse som er mye kortere. Den er lettere å sende. Løsningen er å lage en hash av den offentlige nøkkelen. Hva er en hash?

Stedfortreder og enveisventil

Helt enkelt sagt: Når du hasher noe – for eksempel en serie tegn, en digital nøkkel eller en melding – så lager du en stedfortreder til det som gikk inn – her den offentlige nøkkelen.

Denne stedfortrederen er mye kortere. Den har også en fast lengde uavhengig av om du putter inn hele Bibelen eller bare tallet 42.

Det er fint for den lange offentlige nøkkelen som blir en kortere adresse – men hashen har også andre viktige egenskaper.

Den henger helt entydig sammen med det du putter inn. Den minste forandring gir en helt annen hash. Hashen er en unik stedfortreder.

Likevel kan du ikke gjette deg baklengs fra hash til det du puttet inn. Hashen er som en enveisventil.

Det er ikke så viktig for oss her, for den offentlige nøkkelen er jo kjent for alle. Det er forkortingen som er poenget for adressen.

Hashing brukes også i flere andre sammenhenger i bitcoin, som vi skal se.

Signatore, per favore

Så har vi kommet til signaturen. Den er hashen av innhold fra overføringen og den private nøkkelen din i det som kan kalles en ugjenkjennelig digital suppe – et slags fingeravtrykk.

Denne signaturen bruker du når du i neste omgang skal bruke utbetalingen fra Bob som inn-del i din neste overføring.

I denne inn-delen legger du også hele din egen offentlige nøkkel. Den er til nytte når alle nodene og graverne skal sjekke at du virkelig har rett til å bruke utbetalingen fra Bob som inn-del i din neste overføring.

Denne sjekken foregår nemlig i to trinn. Først sjekkes den offentlige nøkkelen i din inn-del mot adressen – hashen av din offentlige nøkkel – i Bobs ut-del. Så sjekkes din offentlige nøkkel mot din signatur.

Enkelt oppsummert: Nodene og graverne sjekker at den som gjør en overføring, har rett på utbetalingen fra det forrige leddet i stafetten.

En hash har fast lengde og fungerer som en kortere stand-in eller stedfortreder for det du putter inn. Hashene i tegningen er bare for å illustrere prinsippet. (Foto: (Illustrasjon: Arnfinn Christensen, forskning.no))

Flere inn

Den kjeden av betalinger vi har sett på nå – fra Alice til Bob til deg, Carol, er spesiell. Det er bare en innbetaling og en utbetaling, og de er like store hele tiden.

I praksis er selvfølgelig betalingene av forskjellig størrelse. Noen ganger må flere tidligere utbetalinger hentes inn for å få nok til en ny overføring.

Kanskje må for eksempel Alice hente inn to tidligere innbetalinger, hver på 10 mBTC. Først da får hun nok til å betale ut 15 mBTC til Bob og 5 mBTC til en annen bruker – Bjørg.

Noe til overs

Denne gangen var beløpet inn og beløpet ut like store – 20 mBTC. Sånn er det ikke alltid. Det kan bli noe til overs – som for Bob.

Den offentlige nøkkelen hashes og blir en kortere adresse. Den private nøkkelen – sammen med noen andre deler som forklares seinere – settes sammen til signaturen. Noder og gravere sjekker at for eksempel Bob har rett til å ta i bruk utbetalingen fra Alice. Først sjekkes offentlig nøkkel mot adresse. Så sjekkes signatur mot offentlig nøkkel.

Han har fått 15 mBTC fra Alice, men skal bare betale ut 10 mBTC til Carol. Hva skal han gjøre?

Kan ikke Bob bare skave av det han trenger til utbetalingen og spare resten til en annen anledning?

Nei, det går ikke. En tidligere utbetaling må brukes i sin helhet. Hver tidligere utbetaling har sin adresse og kan ikke splittes opp.

Sånn er systemet. Hva skal Bob da gjøre med de overskytende 5 mBTC?

Vekslepenger eller gebyr til graver

Bob velger å legge til en ekstra utbetaling i overføringen. 5 mBTC sender han tilbake til seg selv som vekslepenger.

En annen bitcoinbruker – Bjørg – gjør et annet valg. Hun har også 5 mBTC for mye i innbetalingen.

Hun velger å la 5 mBTC stå som et overskudd i utbetalingen. Disse pengene går da til graveren som bokfører betalingen i blokkjeden.

Graveren vil som takk for pengene behandle denne overføringen først. Den kommer litt raskere på plass i blokkjeden.

Hvis Bjørg for eksempel betaler for en vare, vil hun trolig få den raskere. Selgeren venter ofte på at betalingen skal komme seks ledd bakover i blokkjeden før varen sendes ut.

Inn-delen av en overføring kan bestå av flere tidligere utbetalinger. En utbetaling kan også deles opp i mindre beløp som går til flere adresser. Summen av inn-delen må minst være like stor som alle ut-delene tilsammen. Overskytende kan betaleren sende som vekslepenger tilbake til seg selv, eller la graverne få som gebyr mot raskere bokføring i en ny blokk. (Foto: (Illustrasjon: Arnfinn Christensen, forskning.no))

En overføring kan altså hente inn flere innbetalinger og sende dem ut til flere adresser.

Coinbase – graverens belønning

Blokkjeden er vår neste utfordring. Hva skjer når graverne – miners – konkurrerer om belønningen for å føre inn i neste side av regnskapsboka – neste blokk i blokkjeden?

Graverne starter med å samle sammen overføringer som ennå ikke har kommet inn i en blokk. De sirkulerer fritt og åpent på nettet i form av slike overføringer vi har sett på nettopp.

Graverne kan samle sammen opp mot 4000 overføringer i hver blokk, avhengig av størrelsen på hver overføring og hvor ivrig graveren er.

Den første meldingen – overføringen – i hver blokk er spesiell. Den overfører belønningen til graverens adresse, og kalles myntbase-overføringen – Coinbase Transaction.

Blokkhodet og treet

Alle overføringene ligger åpent i blokken som graveren har satt sammen. I tillegg lager graveren et ekstra element til blokken. Det kalles et blokkhode – Block Header.

I dette blokkhodet er det flere deler. En viktig del lages ved en serie med hashinger av de enkelte overføringene. De organiseres i det som kalles et Merkle-tre. Hvorfor et tre?

Hver enkelt overføring hashes først. De er som bladene på treet. Så slås to og to slike hasher sammen og hashes på nytt. Dette blir som kvistene på treet.

Denne sammenslåingen og gjentatte hashingen går oppover mot større og større greiner, helt til vi kommer til det som kalles for treets rot – rothashen, Root Hash.

Blokkhash

Rothashen kombineres med forskjellige andre data og blir til blokkhodet – Block Header.

Så hashes blokkhodet. Denne hashen over alle hasher kalles blokkhash.

Dermed har graveren satt sammen en ny blokk og kan føye den til blokkjeden og innkassere sin belønning, ikke sant?

Nei – vent, hvor ble det av den supervanskelige oppgaven som skulle løses?

Den vanskelige oppgaven

(Foto: (Illustrasjon: Arnfinn Christensen, forskning.no))

Svaret finnes i blokkhashen. Oppgaven er: Finn en blokkhash under en viss tallverdi – kalt målet – target!

For en merkelig oppgave! Den høres da ikke så vanskelig ut? Jo, den er faktisk så vanskelig at det nå er nesten umulig for en enkelt graver å mønstre nok datakraft til å løse oppgaven.

Det er jo også poenget med oppgaven: Når mange må samarbeide, blir det vanskeligere å fuske.

Hvorfor er den så vanskelig? Svaret henger sammen med hvordan en hash fungerer.

Ørliten endring – helt annen hash

Som nevnt – det er nok med en ørliten endring i det som går inn i hashen, så blir selve hashen fullstendig forandret.

Et eksempel: Et utropstegn legges til, og hele hashen ser annerledes ut.

Hello World  – gir hashen – a830d7beb04eb7549ce990fb7dc962e499a27230

Hello World! – gir hashen – 8476ee4631b9b30ac2754b0ee0c47e161d3f724c

Det er altså ingen systematikk i hva som går inn og hva som kommer ut. Og blokkhodet endres hele tida.

Spesialiserte datamaskiner deltar i kappløpet om å løse oppgavene, vinne nye bitcoin og legge nye blokker til blokkjeden. Dette er en såkalt mining farm, en spesialisert serverpark på Island. (Foto: Marco Krohn, Creative Commons Attribution-Share Alike 4.0 International license.)

Blokkhodet inneholder nemlig blant annet en tidsteller og et merkelig tall – kalt nonce. Navnet kommer av et engelsk uttrykk – for the nonce – som betyr omtrent: for denne gang.

Både nonce og tidstelleren forandrer seg hele tida, som to telleverk som snurrer og går. En liten endring i nonce og tidstelleren, og blokkhashen blir helt annerledes. Ethvert nytt forsøk lager en ny blokkhash.

Prøving og feiling

Hvis kravet er at blokkhashen skal være under en viss tallverdi, er det altså bare en måte å finne en blokkhash som oppfyller kravet på – prøve og feile.

Denne prøvinga og feilinga krever at datamaskinen tygger seg gjennom enorme mengder prøvinger og feilinger. Blokkhodet må hashes på nytt og på nytt, helt til blokkhodet er lavt nok.

Seks på en time

Det er ganske enkelt å endre hvor vanskelig oppgaven er. Jo lavere du setter tallgrensen, desto færre tall er det som oppfyller kravet, og desto lengre tid tar det å finne et nonce som gir denne blokkhashen – blokkhodet.

Vanskelighetsgraden justeres slik at det i gjennomsnitt tar rundt ti minutter å finne løsningen. Det betyr at rundt seks nye blokker føyes til blokkjeden hver time.

Hver graver sin nonce

Hva om en graver bestemmer seg for å snoke på en annen? Straks en ny blokk er lagt til, tar denne graveren og kopierer blokken. Så skifter han ut adressen i Coinbase med sin egen adresse – og innkasserer belønningen.

Dette er faktisk ikke mulig. Husk at hvis du endrer adressen i Coinbase – altså den første overføringen i blokken med belønningen til graveren – så endrer du hele Merkle-treet av hasher som skal inn i rothashen.

Dermed må du også ha et annet nonce-tall for at blokkhodet – blockhashen – skal oppfylle kravet i målet – target.

Den lengste grenen overlever

En sjelden gang kan to gravere finne hvert sitt nonce-tall samtidig. Da vil kjeden av blokker dele seg i to forgreninger.

Enda sjeldnere vil noen forsøke å lage en falsk gren for å lure til seg bitcoin fra overføringer. Hva skjer når blokkjeden deler seg?

Sannsynligheten for at disse to grenene skal få neste ledd samtidig, er forsvinnende liten. Jo flere nye ledd som legges til grenene, desto mer sannsynlig er det at en av dem får et forsprang.

Den grenen som får forsprang, vil ha nyere overføringer i seg. Stadig flere gravere vil trekkes mot denne grenen for å unngå å havne i bakleksa med gamle overføringer som alt er bekreftet. Dermed overlever den lengste grenen.

En mot mange taper i datakraft

Men hva om en graver hadde enorm datakraft til sin rådighet? Alt nå har gravere tatt i bruk store mengder spesialiserte maskiner for å knuse tall og finne passende blokkhash raskt nok.

En ondsinnet graver med mer datakraft enn alle de andre graverne til sammen kunne lage en gren med falske utbetalinger til seg selv og få den grenen til å vokse raskest.

I praksis er dette tilnærmet umulig. Mange konkurrerer om å øke datakraften sin, og en mot mange betyr i dette tilfellet at flertallet – og rettferdigheten – seirer.

Teoretisk sett kunne flere skurker slått seg sammen og vunnet i datakraft, men et samfunn der flertallet er samarbeidende skurker bryter uansett sammen – også Bitcoinland.

Umulig å jukse med gamle ledd

(Foto: (Illustrasjon: Arnfinn Christensen, forskning.no))

Enda vanskeligere ville det være for en uærlig graver å gå tilbake og endre tidligere ledd i blokkjeden.

Da måtte denne graveren ikke bare finne ny nonce for dette leddet. Endringen ville også forplante seg til etterfølgende ledd.

Blokkhashen lages jo også blant annet av blokkhashen fra foregående ledd.

Du måtte altså ikke bare finne brukbar blokkhash like raskt som alle andre gravere til sammen. Du måtte faktisk være enda raskere og ta dem igjen.

Dobbeltbetalinger oppdages

Flertallet seirer også hvis en av brukerne skulle prøve å bruke den samme innbetalingen i to utbetalinger.

Hva ville skje hvis bitcoinveksler Bob ikke hadde rent mel i posen, men brukte utbetalingen fra Alice som innbetaling i en overføring to ganger – en gang til deg – Carol – og en annen gang til en annen kunde – Charlie?

Et samlet korps av gravere ville raskt se dobbeltbetalingen. Bare en av dem ville finne veien til blokkjeden – forhåpentligvis den overføringen som var til deg.

Mørke penger fram i lyset

Hva så med Bitcoin som det mørke pengenettet? Hvitvaskingen av narkopenger? Skjulte transaksjoner?

Som vi har sett: Bitcoin er åpent. Alle kan se alle overføringer. Slik sett er Bitcoin en dårlig løsning for den som vil gjemme vekk pengeoverføringene sine.

På den andre siden: Overføringene er bare identifisert med en ID – en hashet offentlig nøkkel. Ingen vet hvem denne offentlige nøkkelen og den tilhørende signaturen tilhører.

I praksis er det likevel mulig for etterforskere å spore opp personen bak signaturen ved hjelp av spor fra datamaskinen din på internett.

Hver datamaskin, nettbrett eller mobil har sitt tilkoblingspunkt – en internettprotokoll-adresse eller ip-adresse.

Med tilstrekkelig ressurser er det mulig å spore opp ip-adressen som overføringen ble sendt fra.

Nettstedet Silk Road brukte bitcoin for blant annet å selge narkotika på det såkalte mørke nettet, der brukerne vanskelig kan spores. Den 2. oktober 2013 ble nettstedet stengt og lederen Ross Ulbricht arrestert av FBI, som la ut denne plakaten på nettstedet. (Foto: (Bilde: FBI, Wikimedia Commons))

Og har du først avslørt den kriminelle, ligger bevismaterialet som perler på en snor – i blokkjeden.

Ett nivå dypere

Vi har kommet langt i å forstå Bitcoin nå. Likevel – det er fortsatt mulig å gå mange nivåer dypere.

Ett sted må også vi stoppe. Selve krypteringen og metodene for å hashe krever års studier i matematikk.

Likevel – det er faktisk enda et nivå i denne innføringen. Mine faglige rådgivere har advart meg om at dette nivået er uforståelig for de fleste, og at det bør sløyfes.

Derfor leser du videre på eget ansvar.

Vi skal nå se i detalj på hvordan en overføring ser ut. Igjen tar vi utgangspunkt i overføringen fra Bob til deg, Carol.

Overføringen inneholder flere deler enn vi tidligere har beskrevet. Figuren er litt forenklet. Det er angitt hvilke deler som er tatt med.

Vanskelig å samholde figur og forklaring under? Følg denne lenken for å åpne figuren i nytt vindu!

En overføring - trinn for trinn

1. Hver overføring inneholder en ID. Denne lages ved å hashe resten av innholdet i meldingen. Den blir altså en unik ID for denne spesielle overføringen.

2. Versjonsnummeret til Bitcoin-protokollen som brukes. (Ikke på figuren)

3. Hvor mange inn-deler overføringen består av, med andre ord hvor mange ut-deler av andre transaksjoner som er i inn-delen. (Ikke på figuren. Den har bare en inn-del.)

4. Hvor mange ut-deler overføringen består av, med andre ord hvor mange forskjellige adresser det skal utbetales til. (Ikke på figuren. Den har bare en adresse.)

5. Lock-time. Dette er et tall som kan brukes for å angi en tidsforsinkelse før transaksjonene skal bokføres. Normalt settes den til 0, altså uten tidsforsinkelse. (Ikke på figuren)

6. Hvor mye data overføringen inneholder, målt i bytes. En byte er åtte bits, enere eller nuller. (Ikke på figuren)

Betaling inn

7. Her spesifiseres hver inn-del i overføringen med følgende data:

  • ID for tilsvarende utbetaling fra tidligere overføring, se 1.
  • Hvilken utbetaling fra forrige overføring som skal brukes, nummerert fra 0 og oppover. (Ikke på figuren. Her er det bare en utbetaling i hver overføring.)
  • Signaturen til Bob. Signaturen består av den private nøkkelen til Bob, slått sammen med hash av en forenklet versjon av innholdet i meldingen til Bob.  
  • Den offentlige nøkkelen til Bob.

Betaling ut

8. Her spesifiseres hver utbetaling. Er det flere utbetalinger, gjentas punktene under for hver mottaker, hver adresse:

  • Pengesum til deg, Carol – i millibitcoin, mBTC.
  • Et lite dataprogram, et skript.

Skriptet inneholder for det første din bitcoinadresse, den hashede offentlige nøkkelen du sendte til Bob for at han skulle ha en adresse å sende bitcoin til.

Skriptet gir også instruksjoner om hvordan alle bitcoinbrukere kan sjekke at du faktisk er den som har rett på betalingen fra Bob.

Denne sjekken gjøres først når du tar i bruk utbetalingen fra Bob som «inn» i din neste utbetaling.

Som regel gjøres sjekken slik det er beskrevet tidligere. Skriptet kan også inneholde andre og strengere krav som må oppfylles for at du skal kunne bruke utbetalingen.

Alle kan sjekke deg

Dette er en vanlig framgangsmåte: Først sammenlignes adressen i Bobs utbetaling med din offentlige nøkkel i din innbetaling. Adressen er jo laget ved å hashe din offentlige nøkkel, så her er det enkelt å finne ut om de er like.

Så sjekkes signaturen din med din offentlige nøkkel for å se at du faktisk er den som har utstedt den offentlige nøkkelen.

Kjede av overføringer

Som du ser av punkt 3 og 4 – hver overføring er et ledd i kjeden av utbetalinger og innbetalinger. Utbetalingen i ett ledd blir innbetaling i neste ledd.

Det du kanskje også ser tydeligere nå, er at det egentlig ikke finnes noen faste bitcoin – bitmynter – som skifter eier, og som så regnskapsføres.

Sagt med andre ord: Det er ikke sånn som i gamle dager at en pengeseddel – med et bestemt serienummer påtrykt – skiftet eier, og denne betalingen ble ført i en regnskapsbok.

Bitcoin er regnskapet og regnskapet er bitcoin. Og regnskapet er blokkjeden.

Lenker for videre studium

Michael Nielsen: How the Bitcoin protocol actually works. Detaljert gjennomgang, med alternativ pedagogisk framgangsmåte for å bygge opp forståelsen.

Chris Pacia: Bitcoin Mining Explained Like You’re Five. Blogg i flere deler som særlig forklarer hvordan blokkjeden bygges opp, men også hvordan privat og offentlig nøkkel og hash fungerer.

Yevgeniy Brikman: Bitcoin by analogy. Fargerik og mindre teknisk forklaring der bitcoin sammenlignes med Rai-steiner, en særegen valuta brukt på Yap-øyene i Stillehavet.

Bitcoin Wiki. Spesiell wiki skrevet av bitcoin-brukere. Mange forklaringer, også teknisk veldig detaljerte for de som vil grave enda dypere.

Bitcoin Developer Reference. Working Paper, 17. desember 2015. Teknisk referanse. Veldig bra og oversiktlig i en artikkel, ifølge en av mine fagkonsulenter.

Bitcoin: A Peer-to-Peer Electronic Cash System. Satoshi Nakamotos originale artikkel.

Bitcoin-overføringer og nye blokker i sanntid. Viser at ryktet om bitcoins død er noe overdrevet.

Powered by Labrador CMS