Hvordan fungerer blokkjeder og har det noe å si?
En blokkjede er en datastruktur hvor blokker med data kobles til hverandre i en kjede ved hjelp av kryptografi, slik at du vet at rekkefølgen og innholdet i blokkene ikke har blitt manipulert.
I kryptoverdier og andre web3-teknologier lagres og oppdateres dessuten blokkjeden på en desentralisert og åpen måte. Jeg har en kopi av blokkjeden, du har en kopi, og vi er enige om en felles måte å skape nye blokker på slik at vi kan være enige om hvordan kjeden skal utvides uten å ha noen sentral autoritet å henvise til.
Slike blokkjeder løser problemet med å danne konsensus på en distribuert og tillitsløs måte. Det vil si: Du trenger ikke stole på intensjonene til de andre nodene som vedlikeholder blokkjeden. Det du har tillit til er den felles måten dere jobber sammen på som sikrer at du som regel kan stole på resultatet dere kommer fram til.
Dataene i blokkene kan være hva som helst. I Bitcoin kan du tenke på dem som transaksjoner i et regnskapssystem. I Ethereum består blokkene også av applikasjoner og smarte kontrakter som blant annet brukes til DAO-er (organisasjoner), NFT-er (eierskapsbevis) og DeFi (desentralisert finansvirksomhet).
De fleste blokkjedeprosjekter er dessuten bygget opp rundt et token, altså en kupong av et eller annet slag som anses å ha verdi og som kontrolleres av noen. Bitcoins er ikke penger. Det kan en dag bli penger, tror tilhengerne. Men det alle kan være enige om er at det er en kupong. På samme måte kontrolleres DAO-er gjennom kuponger. NFT-er er ikke-utbyttbare kuponger, og så videre.
Når vi snakker om blokkjeder i dag, snakker vi altså som regel om åpne, distribuerte blokkjeder bygget opp rundt kuponger. Samtaidig hindrer ingenting meg i å lage min egen private blokkjede som bare jeg og de jeg stoler på kan skrive til. Ikke ta for gitt at ordet blokkjede alltid henviser til en bitcoin-lignende løsning.
Det ligger uansett ingenting mer magisk bak blokkjeden enn at det er en måte å lagre data på som oppfyller bestemte krav til verifiserbarhet. Dataene kan være hva som helst. Blokkjede er bare strukturen du bruker når du ønsker å kunne bevise at ingen av dataene har blitt slettet eller endret etter at de ble opprettet. Ved å gjøre dette på en distribuert måte, kan du bevise dette uten å ty til en sentral autoritet.
Til tross for at dette også ofte omtales som “krypto”, er selve kryptografien i blokkjedeprosjekter relativt enkel. Hvis det er god kryptografi du ønsker, ender du ikke opp med den typen løsninger du gjerne finner i blokkjedeprosjekter.
Teorien
Teorien bak dagens blokkjeder ble utviklet gjennom 1980- og 1990-årene, blant annet for å kunne tidsstemple digitale dokumenter. I How to Time-Stamp a Digital Document fra 1990 beskriver Stuart Haber og W. Scott Stornetta problemet slik: Det finnes et digitalt dokument, og vi ønsker å vite med sikkerhet når dette dokumentet ble opprettet, og at det ikke har blitt endret på etterpå. En naiv løsning på problemet, sier de, ville være at man sender inn en kopi av dokumentet til en sentral autoritet som holder orden på alle dokumentene. Hvis vi er usikre på når dokumentet ble laget, spør vi denne autoriteten. Men dette gjør det lettere for uvedkommende å få tak i dokumentet, og skalerer dårlig hvis det er snakk om store datamengder.
Løsningen de foreslo var at man i stedet for å sende inn dokumentet, kunne sende inn en hash av dokumentet, som så ble lagt til i en kjede hvor hvert element har en hash av det foregående. Ved riktig bruk av kryptografi er det praktisk umulig å forfalske en slik kjede. Vi vet at node B ble lagt til etter node A og før node B. Dermed har vi et tidsstempel, og hashen gir oss en måte å verifisere at dataene er uendret.
En ikke-teknisk måte å forstå dette på er at du låser et dokument inn i en liten safe. Så låser du denne safen og et nytt dokument inn i en ny og større safe. Så låser du denne safen og et nytt dokument inn i en enda større safe, og så videre. Nå “vet” du at dokument nummer 2 ble låst inn etter dokument nummer 1. Tenk deg så at hver safe automatisk får fargen sin fra innholdet i dokumentet og fargen på safen den inneholder. Hvis den ytterste safen ble rød da vi låste den, og den fortsatt er rød i dag, vet du at ingen har åpnet alle safene og vært inne og byttet ut noen av dokumentene.
Haber og Stornetta så for seg at dette blant annet kunne brukes til patenter, hvor tidspunktet noe ble sendt inn på er viktig, og til å lagre forretningskritiske dokumenter for et selskap på en slik måte at myndighetene i tilfelle mistanke om lovbrudd kunne verifisere at dokumentene de undersøker ikke har blitt manipulert.
Senere har Merkle trees blitt innført i løsningen. Dette er en trestruktur av hasher som til sammen utgjør en av blokkene i blokkjeden. Så kan man koble disse blokkene sammen i en kjede, i stedet for å måtte koble hvert enkelt dokument.
Ideen er altså flere tiår gammel. Det nyskapende i Bitcoin var å gjøre dette helt desentralisert, slik at det ikke finnes noen autoritet som kan si hvem som får legge til nye noder. I Bitcoin konkurrerer noder om å få lov til å legge til nye blokker, som inneholder transaksjonene som ønskes lagt på kjeden. De vinner konkurransen gjennom å “løse” et matematiske problem, dvs gjette svært mange ganger til de gjetter riktig og belønnes med nye bitcoins og med avgifter fra transaksjonene de legger på blokken. Hvis det oppstår uenighet om hvilken blokk som er den neste i kjeden, er systemet designet slik at det likevel skal klare å danne en konsensus om hvilken som er den riktige.
Dette kalles et Proof-of-Work-system, som bygger på en idé fra 1992 for å bekjempe spam av Cynthia Dwork og Moni Naor. Hvorfor må man gjøre det så vanskelig? Kunne man ikke bare sagt at flertallet bestemmer? Hvis flertallet er enige om hva den neste blokken skal være, så er det de som vinner? Fordi da kan nettverket lett kuppes av en ondsinnet aktør. Hvis det finnes 1000 ekte Bitcoin-noder, kunne man kuppe nettverket ved å opprette 1001 ondsinnete Bitcoin-noder. Proof-of-Work løser dette ved å gjøre det dyrt å angripe nettverket.
Bieffekten av Proof-of-Work er at det krever enorm bruk av datamaskinkraft. Dette medfører både et gigantisk strømforbruk og et forbruk av hardware. Bitcoin bruker energi på nivå med et mellomstort land og produserer også elektronisk avfall på nivå med et mellomstort land. Alle maskinene som står og utfører utregninger blir jo ødelagt etterhvert.
To alternativer til Proof-of-Work er Proof-of-Space-and-Time og Proof-of-Stake. David Rosenthal skriver i en artikkel at begge har vist seg svært vanskelige å implementere. I Proof-of-Stake stiller nodene sine egne verdier som sikkerhet, og disse verdiene kan bli ødelagt hvis resten av nettverkenet kommer fram til at en node har jukset. Dette er en mye mer kompleks modell enn Proof-of-Work, skriver han. Ikke minst bruken av smarte kontrakter i Ethereum åpner for en rekke angrep det er vanskelig å beskytte seg mot. Ethereum har prøvd i årevis å gå over til Proof-of-Stake, men lanseringstidspunktet blir stadig skyvd fremover. Per i dag (2021) skal løsningen være klar i 2022. Kanskje.
Rosenthal mener at Proof-of-Stake vil forsterke sentraliseringstendensen i kryptoverdier og føre til at de som har vært tidlig ute og skaffet seg store mengder med verdien, enda raskere vil tilegne seg seg mer av den enn i dag. Han definerer kryptoverdier som “a mechanism for transferring wealth from later adopters, called suckers, to early adopters, called geniuses”, og Proof-of-Stake øker tempoet denne velstandsoverføringen foregår i. Under Proof-of-Work kan i prinsippet hvem som helst produsere nye bitcoins på like vilkår. Under Proof-of-Stake favoriseres de som har mye fra før. Det er også vanskeligere å gjenopprette konsensus etter et større angrep, mener han.
Yan Maani påpeker det samme: Proof-of-Stake er nødt til å bli mindre sikkert enn Proof-of-Work, fordi man gir avkall på den påkrevde og ugjenkallelige sløsingen med energi du finner i PoW. Du har blant annet ikke lenger noen god måte å avgjøre hvilken av to konkurrerende blokkjeder som er den riktige. Du kan ikke velge den lengste, fordi det ikke lenger er noen kostnad knyttet til det å lage en lang blokkjede. Det er bare å slenge på så mange blokker du vil. Å danne konsensus rundt én utgave av blokkjeden blir dermed i større grad en sosial prosess og mer sårbar for konflikter mellom ulike grupper i Ethereum-miljøet.
Det kan hende det vil fungere, men det vil bli mindre sikkert enn Proof-of-Work. Kanskje er det også derfor lanseringspunktet stadig skyves på. I starten av 2022 skulle det skje i juli 2022. I april 2022 ble denne datoen forskjøvet, slik alle andre tidligere datoer har blitt det siden prosjektet ble starte.
Stephen Diehl beskriver dette som et Zeno-paradoks: Jo lenger tid som går, jo flere prosjekter som bygger på Ethereum, jo mer står på spill hvis migreringen skulle feile, mens oppsiden forholder seg uendret. Det er dermed økonomisk irrasjonelt å gjenomføre den.
Proof-of-Work ødelegger verden, men det er en relativt enkel algoritme med en liten angrepsflate. Proof-of-Stake er mer komplekst og har en mye større angrepsflate. Det er uklart om eller når den kan brukes i praksis i stor skala.
Proof-of-Space-and-Time skiller seg fra Proof-of-Work ved at det ikke er regnekraft man kaster bort, men lagringsplass. Gjennom å bruker en fysisk ressurs unngår man den store angrepsflaten i Proof-of-Stake. Ulempen er at man igjen kaster bort noe verdifullt, i dette tilfelle harddisker. Kryptoverdien Chia, som bygger på Proof-of-Space-and-Time, har forårsaket en global mangel på SSD-disker og forbruker harddisker på nivå med 20% av produksjonsmengden i 2018, skriver Rosenthal. Han mener også at kostnadene ved å delta i dette, og dermed ødelegge harddiskene sine i høyt tempo, er så stor at de bare kan lønne seg hvis man har et svært optimistisk syn på Chias framtidige verdistigning. I tillegg er også denne løsningen mer kompleks enn Proof-of-Work, og dermed vanskeligere å beskytte mot angrep.
(Se også IMFs oversikt over konsensusmekanismer, som går gjennom et par alternativer.)
Den ene algoritmen vi vet fungerer i praksis, er dermed også den ene algoritmen vi vet gjør størst skade på verden.
Disse utfordringene ved blokkjedeløsninger oppstår fordi man forsøker å løse dem uten å ha en sentral autoritet. Paradokset, mener Rosenthal, er at man jo i praksis ender opp med sentrale autoriteter likevel. Også i Bitcoin er det noen få store aktører som dominerer. 10% av bitcoin-utvinnere kontrollerer 90% av utvinningskapasiteten, 0.1% kontrollerer 50%, i følge en analyse av Igor Makarov & Antoinette Schoar. Sentraliseringen øker når prisen faller, og Rosenthal påpeker at dette gjør at også en kryptoverdi av bitcoins størrelse er sårbart for et angrep fra ondsinnete noder. Dessuten er det noen få store tjenester all handel formidles via. Hvis man uansett ender opp med en sentralisert løsning, kanskje man like gjerne skulle gitt opp å gjøre dem helt distribuerte? Så ville man sluppet å ødelegge verden samtidig.
Og er det egentlig bare en styrke at blokkjeden er uforanderlig? Hos tradisjonelle finansinstitusjoner har man et visst slingringsmonn. Alle som har klaget på en kredittkorttransaksjon vet at det ikke er vanskelig å få den refundert. Slik er det også med andre pengeoverføringer. Hvis en bankansatt gjør en feil i en transaksjon med en annen bank, finnes det velbrukte rutiner for å rette opp i feilen. Hvis en pengeutpresser skulle være så dum at de oppga en bankkonto beløpet skulle betales til, tviler jeg på at det er vanskelig å få den stengt og pengene betalt tilbake. Det skal uansett mye til for å miste bankkontoen din. Det gjør ikke så mye om du glemmer kontonummeret og mister kodebrikken din. Kontakt banken, snakk med en person, det ordner seg.
Med en distribuert blokkjede er slik fleksibilitet umulig, påpeker Rosenthal. Den som har privatnøkkelen har verdiene. Når verdiene er overført, er de overført, samme om det var med hensikt og av fri vilje eller ikke. Ingen måte å levere tilbake stjålne verdier på eller tvinge mottakeren av en feilaktig overføring til å betale den tilbake. Ikke i teorien, iallfall. I praksis er nettverkene ofte så sentraliserte at det i blant er mulig å overbevise de største aktørene om at det er i deres interesse å tillate slikt velment “juks”. Men i teorien er det umulig. Hvis du vil ha fleksibilitet og trygghet i en database, bygger du den ikke med blokkjede.
Er blokkjeder da den riktige datastrukturen for finansielle tjenester eller for kontrakter?
Bruce Schneier sier det slik at blokkjederentusiastene har en for snever forståelse av hva tillit er. De tror de har løst problemet med tillit i finanssystemet på en radikalt ny måte, gjennom å skape et distribuert system hvor du kan stole på resultatet, uavhengig av aktørenes intensjoner. Men du kan ikke stole på at noen ikke vil utnytte en bug i den smarte kontrakten din. Du kan ikke stole på at du har kontroll over verdiene dine hvis noen bryter seg inn og stjeler privatnøkkelen din. Mye av den tilliten som faktisk finnes i blokkjedemiljøet er dessuten av den tradisjonelle, sentraliserte typen: Systemene fungerer fordi folk velger å stole på noen sentrale aktører, som for eksempel markedsplassene som formidler transaksjoner. Tilliten til blokkjedesystemer fungerer dermed omtrent som tilliten til andre komplekse systemer.
Hva er da poenget med å implementere dem på denne måten, ut over all hypen og investorkapitalen som utløses ved å gjøre det? Formulert slik, besvarer spørsmålet seg selv.
Har det noe å si hvordan blokkjeder fungerer?
Blokkjeder er spennende på en sånn måte som får teknologer til å sikle og tenke “hm dette må jeg jo kunne bruke til noe gøy!” Mye av entusiasmen og retorikken rundt blokkjeder kan best forstås som resultatet av at teknologer har opppdaget en spennende løsning som de nå jakter på et problem de kan løse med. Er tradisjonelle valutaer et problem vi trenger å løse? Ikke egentlig, så fremt du ikke er en liberalist som tror at seddelpressedrevet inflasjon er den største trusselen mot en fungerende økonomi. Men Bitcoin er spennende, så da later vi som om vi tror at det løser et viktig problem.
Var det et problem at jeg inntil nylig ikke kunne eie en referanse til et bestemt bilde i et bestemt register på en måte som kan verifiseres kryptografisk uten henvisning til en sentral autoritet? Nei. Men NFT er spennende, så da later vi som om dette er begynnelsen på en ny tidsalder innen kunsthandelen.
Den andre halvdelen av entusiasmen rundt blokkjeder kommer fra folk som har vært heldige med tidspunktet de kjøpte Bitcoin og NFT-er på og bidrar til å skape en gullrushstemning. Grådighet og frykten for å gå glipp av en god investering driver en pengestrøm som dermed skaper enda mer og grådighet og enda mer frykt helt til det .. ikke gjør det lenger.
Med andre ord, det som gjør blokkjeder viktige i dag har lite å gjøre med det som gjør dem teknologisk spennende. Det har derfor lite å si om du forstår hva en blokkkjede er for noe. Nøkkelen for å forstå blokkjedemanien ligger ikke i teknologiens verden men i psykologiens.