Sådan er en blockchain opbygget - og derfor kan du stole på den!
Det er blockchain teknologi, der ligger til grund for Bitcoin og de fleste andre cryptovaluta og distribueret ledger teknologier. Blockchain løser en række grundlæggende udfordringer ved at decentralisere data - blandt andet udfordringer forbundet med handelstransaktioner, som jeg gennemgik i forrige indlæg, hvor det er kritisk, at man kan stole på indholdet af den delte database, og at en transaktion kun foretages én gang - det er noget af det, der gør blockchain til en revolutionerende teknologi.
I dette indlæg får du en forklaring på, hvordan en blockchain er bygget op og hænger sammen, så du også kan forstå, hvordan udfordringer som disse løses med teknologien.
Fokus er på selve opbygningen og sammenhængen i en blockchain, men er du allerede klar til at høre om konsensus algoritmer, og hvordan man tilføjer nye blokke til kæden, kan du i stedet læse med her.
For at forstå en blockchain-opbygning er det nødvendigt at forstå en lille smule om kryptografi. Kryptografien er nemlig helt central i at sikre kæden og forstærke den ved hver eneste ny blok i kæden.
Men bare rolig.
Vi er ikke ude i noget med en universitetsgrad i avanceret matematik eller en dyb forståelse for Merkle træer for at begribe, hvordan kryptografien udnyttes i en blockchain.
Du skal såmænd bare tænke på en “magisk maskine”.
Lad mig forklare.
Forestil dig en magisk maskine
- hvordan krypteringsalgoritmen er med til at sikre og forstærke en blockchain
For at binde blokkene sammen og samtidigt forstærke sikkerheden i den samlede kæde, så den sikrer mod svindel, benyttes en hashing algoritme. Det er en krypteringsalgoritme med specielle egenskaber.
Se maskinen for dig.
Hashing algoritmen gør maskinen magisk ved at give den følgende egenskaber:
- Den er envejs
- Dens resultatet er nemt at validere (kræver ikke meget computerkraft)
- Den leverer altid samme resultat ud fra samme input
- Og resultatet er altid lige langt (samme antal tegn)
- Men resultatet er tilfældigt hver gang, der er nyt input, og kan ikke regnes ud på forkant
Du kan kaste alt ned i den magiske maskine, og ud i den anden ende kommer en helt fast form med et helt unikt mønster. Maskinen danner så at sige et unikt, digitalt fingeraftryk af det, du kaster ned i den.
Mønsteret er 100 % tilfældigt, og det er umuligt at regne ud på forkant hvilket mønster, der kommer ud, før du har haft det igennem maskinen.
Hvis du eksempelvis kaster en bestemt bog ned i, kommer der en form ud i den anden ende. Den form, der kommer ud, er altid samme størrelse, men har et helt unikt mønster. Hvis du kaster to helt ens bøger ned i, kommer der også det præcis samme mønster ud.
Men! Er der blot den mindste forskel på bøgerne, f.eks. at det er forskellige oplag, at en side mangler i den ene bog eller blot ét enkelt ord eller bogstav er ændret, så kommer et fuldstændigt andet mønster ud.
Det vil altså sige:
Har du en ven, der påstår, at han har den præcis samme bog som dig - men du må ikke få lov at se den - så kan du få ham til at kaste den i maskinen, og hvis I står med det samme mønster i hånden, som da du kastede din bog i maskinen, kan du være sikker på, at den er god nok; han har en bog præcis magen til. Så sikker er maskinen.
Oversat til Blockchain betyder det, at hvis nogen forsøger at ændre på indholdet i en blok - uanset om de ændrer på alle transaktioner eller ét enkelt decimal i én enkelt transaktion ud af tusinde transaktioner - så kan alle i netværket se det med det samme, og blokken afvises af alle.
Maskinen kan altså sikre, at der ikke “svindles” med data, men at du altid kan stole på det, der er blevet inkluderet i en blockchain.
Ret magisk, ikke?
Maskinen har også en anden meget vigtig, magisk egenskab: Kassen, der kommer ud med mønsteret på, vil altid være præcis samme størrelse.
Uanset om du kaster en stor eller lille ting i maskinen, vil størrelsen på kassen, der kommer ud, altid være samme størrelse, men med et unikt mønster.
Hvorfor er det magisk?
Det er det, fordi det betyder, at det er relativt nemt at teste, om indholdet er helt ens.
Du kan kaste et enkelt ord i maskinen eller en kæmpe film på mange gigabyte i størrelse, men ud kommer samme form i samme størrelse - hvis ikke, er resultatet ikke korrekt. Det sparer meget computerkraft ikke at skulle behandle forskellige størrelser.
Så langt, så godt.
Hvad har den magiske maskine så med blockchain teknologi at gøre?
Nu skal du høre.
Derfor er blockchain teknologi mere sikker end din bank
Kan du huske Ulla, din bankrådgiver. Hende vender vi lige tilbage til nu. Vi skal nemlig have berørt bekymringen for decentralisering af noget så ømtåleligt som dine finanser.
For hvorfor skulle det dog være interessant at erstatte din bankrådgiver - som både er flink at tale med og, som du stoler på, passer på dine penge - med en teknologi? Endda en decentral teknologi, som alle har adgang til.
Det lyder lidt skræmmende, ikke sandt?
I Danmark stoler vi generelt på vores banker og på, at de sikrer vores penge. De investerer jo utrolige summer på it-systemer og sikkerhed, så vi kan føle os trygge.
Hvis alle igennem et decentralt netværk kan få adgang til hele den samlede transaktionsliste, banken har i dag, men i form af blockchain, så kan alle vel også forsøge at “hacke” sig ind og stjæle dine penge?
Nej, det kan de ikke.
I de snart 10 år, Bitcoin har eksisteret, er den forsøgt hacket fra første dag - uden held - til forskel fra næsten alle finansielle institutioner og andre centrale institutioner.
Sikkerheden ved, at indholdet ikke kan ændres af en enkelt deltager i netværket, er nemlig så stor, at alle kan tilgå alt indhold i hele den samlede blockchain hele tiden. For de kan ikke ændre på det, uden at alle andre vil opdage det og afvise ændringen. Det sørger den magiske maskine for.
I virkeligheden er en blockchain meget mere sikker end din bank.
Der er ingen mennesker inde over håndteringen af dine penge. Systemet er bygget op ud fra matematiske formler, der ikke kan afviges, og det er konstrueret ud fra forudsætningen, at ingen stoler på hinanden. Alle, der vil, kan deltage i netværket.
Og nu kommer vi til den del, der handler om, hvordan en blockchain er bygget op.
Alle transaktioner er delt op i blokke af transaktioner, der kædes sammen. Det er sådan, en decentral blockchain sikrer og holder styr på alle transaktioner. Hver enkelt blok indeholder altså en række af transaktioner, der låses, når en ny blok genereres, og efterfølgende kobles de sammen i en kæde.
Heraf udtrykket blockchain.
Den magiske maskine laver et hash af blokkens indhold.
Når en ny blok tilføjes kæden, kastes indholdet i den magiske maskine, og ud kommer en hashet version på 64 tegn, som er helt unik for denne blok.
I Bitcoin benyttes den hashing-algoritme, der hedder SHA-256 (Secure Hashing Algorithm på 256 bit - hvilket bliver til 64 tegn i hexadecimal format). Det betyder, at uanset hvilket indhold, man kaster i maskinen, kommer et ord på 64 tegn ud. Ja, ord er måske så meget sagt. Her er et eksempel på en SHA-256 hash: “f6a0658d4a2eb73a43eb7efe25c4d67a9961fb339e91fe3f34f4defc5ced9e2b” som er teksten “Mine your own business” hashet
Da maskinen kun kan danne det samme mønster, hvis det er det præcis samme indhold, der kastes i, kan man altså beskrive indholdet af en blok med 100-vis af transaktioner på kun få tegn. Eller man kan i hvert fald sikre, at der ikke kan ændres på transaktioner i en blok, uden at maskinen danner et helt nyt mønster.
Og her er nøglen til, at blockchainen bliver stærkere og stærkere for hver ny blok, der tilføjes.
Ud over at være med til at sikre kædens sikkerhed er hashing-algoritmen også central for det arbejde, som minere udfører. Det kan du læse om i indlægget her.
Den første blok i en blockchain hedder Genesis blokken. Det er her den første hash til hele kæden dannes, og den har block nr. 0. Herefter vil blok nr. 1 indkludere alle transaktioner i blokken samt hashværdien fra blok 0. Næste blok, nr. 2, vil inkludere alle transaktioner i blokken samt hashværdien af blok 1.
Og så fremdeles. I en endeløs kæde af blokke af transaktioner.
Det betyder også, at hvis der nu i en blockchain er genereret 500 blokke med transaktioner, og der er nogen, der ønsker at ændre ved en transaktion i blok nr. 300, så er det ikke nok bare at ændre i blok nr. 300 - alle efterfølgende blokke skal også ændres inklusive en hemmelig kode, som kræver meget computerkraft at beregne.
I praksis vil en transaktion i en blockchain være så låst som den nederste mursten i et hus.
Og det er i princippet det, der sikrer en blockchains uforanderlighed eller gør den “immutable”, som de også kalder det på engelsk.
Ønsker man at ændre på indholdet i en blok, skal man ikke blot gennemføre mining for den éne blok, man skal gennemføre for alle efterfølgende samtidigt med, at man konkurrerer mod alle andre i netværket. Med andre ord: En ret uoverkommelig opgave. Jeg beskriver i detaljer om det her.
Når ingen kan ændre på indholdet, er det også pludseligt muligt at decentralisere hele kæden - og sikre, at den ikke er centralt styret eller afhængig af en 3. part til at sende og godkende transaktioner mellem parter.
Hele opbygningen af en blockchain sikrer altså, at når først en blok er tilføjet, så er den så låst, at der ikke kan ændres et komma, uden at alle opdager det, og svindlen afvises. Så selv den dygtigste hacker, der måske kan få held til at ændre på transaktioner, får hurtigt afvist ændringer og er lige så dårligt stillet som alle andre, der forsøger at snyde med indholdet.
Beskyttelsen mod hackere og svindel er så at sige bygget ind i netværket og beskyttes gennem kryptografi.
I en bank er der - ud over det menneskelige element, hvor en uærlig person med adgang til bankens systemer vil kunne udnytte det - mulighed for, at en hacker, der får adgang til systemet, kan ændre på både transaktioner og saldi, hvis han får den rigtige adgang.
Derfor er en fælles åben blockchain sikrere end din bank.
Er du stadig med mig?
I så fald er det nu tid til at dykke endnu et lag ned i teknikken og se på, hvordan en ny blok tilføjes, og hvordan det besluttes hvilke transaktioner, den skal indeholde.
Det kan du læse om i indlægget her, hvor jeg går i dybden med emnet.