Blockchain

Blokkædens fødsel. Den vigtigste kæde (sort) består af den længste serie af blokke fra den først skabte blok (grøn) til den aktuelle blok. Forældreløse blokke (lilla) eksisterer uden for den vigtigste kæde.

En blockchain (blok-kæde) er en kontinuerligt voksende liste af blokke, som er forbundet med kryptografi. Hver blok indeholder typisk en kryptografisk henvisning til den foregående blok, et tidsstempel samt et antal transaktioner. Blockchains er designet til at gøre det meget vanskeligt at ændre tidligere transaktioner. Funktionelt kan en blockchain ses som en åben distribueret journal, som kan registrere transaktioner mellem to parter på en effektiv og verificerbar måde. Anvendt som distribueret journal administreres en blockchain typisk af et peer-to-peer-netværk, som overholder en protokol for validering af nye blokke. Når en transaktion først er registreret i en blok, kan ændringer kun gennemføres ved også at ændre alle efterfølgende blokke i samarbejde med hovedparten af det netværk, som driver den givne blockchain.

Blockchains har indbygget design-sikkerhed og er et eksempel på et distribueret computer-system med høj fejltolerance, idet der bygges på konsensus i kædens netværk af computere. Dette giver potentiale for registrering af hændelser, medicinske journaler og andre journaliseringsopgaver så som håndtering af identiteter, transaktioner og dokumentation.

Det første distribuerede blockchain-koncept blev formuleret af Satoshi Nakamoto i 2008[1] og implementeret det efterfølgende år som et kerneelement i den digitale valuta bitcoin, hvor det tjener som en åben journal med alle transaktioner. Herved blev bitcoin den første digitale valuta, hvor det ikke var muligt at give de samme penge ud flere gange (double spending) uden brug af en betroet mellemmand eller central server. Bitcoins design har været inspiration for andre anvendelser af blockchains.

Nøglebegreber

Adresse

Transaktioner forlader sig på, at de legitimeres/signeres med kryptografiske nøgler. Den offentlige nøgle er ofte for lang til at være praktisk håndtérbar, og derfor anvendes de fleste steder adresser, som er en afkortet del af hashværdien af den offentlige nøgle. Afkortningen skal dog være så lang, at risikoen for sammentræf er ubetydelig.[1]

I Ethereum kan en adresse se således ud: 0x922a519ac926f69856fcfc1b2b8b846cfb3f6b4e.

Blok

Bitcoins data-organisering[1]

En blok er en samling data, som normalt som minimum vil indeholde:

  • Et tidsstempel for hvornår blokken blev skabt.
  • En henvisning til den foregående blok (sammenkædning). Dette vil ofte være et sekvensnummer (også kaldet 'højde') sammen med hashværdien for den foregående blok.
  • Data i form af transaktioner.

Ofte vil en blok også indeholde en hashværdi for blokken selv, som sikrer at data ikke er forvansket.

Minedrift

Skabelse af blokke kaldes minedrift eller mining (engelsk). De enkelte servere (noder) i blockchainens netværk kan stå for minedriften.

Den node, som skaber blokken, modtager typisk en belønning. Oprettelse af transaktioner er forbundet med en afgift, som tildeles noden. I bitcoin-netværket skabes der tillige bitcoins med hver blok; antallet aftager dog og i fremtiden vil denne tildeling ophøre.

Da der ikke findes nogen central kontrolfunktion i netværket, kan flere noder uafhængigt af hinanden skabe blokke med samme sekvensnummer (højde). Hvilke af disse kommer til at overleve i kæden afgøres populært sagt af, hvilken af dem opnår størst støtte i netværket; den som hurtigst får 'børn' og 'børnebørn' vil overleve. I nogle blockchains vil sideskud - noder, som ikke overlever - indirekte kunne overleve, ved at et 'barn' peger på en 'onkel'; i denne model modtager noden, som dannede 'onklen' også en belønning.

Den enkelte blockchain har specifikke regler, som sikrer at det ikke er alt for let at fremstille blokke og dermed at blokke skabes i en takt fastsat for den enkelte blockchain:

  • Proof-of-work virker ved, at blokken indeholder et tal kaldet nonce. Dette tal justeres, indtil hashværdien af hele blokken - inkl. nonce - kommer under en given grænseværdi (populært udtrykt skal tallet indledes med et antal nuller). Efterhånden som der kommer mere beregningskraft i netværket, justeres grænseværdien nedad. Ved proof-of-work er den enkelte nodes sandsynlighed for at fremstille en block og dermed høste belønningen proportional med nodens beregningskraft. For de store blockchains har jagten på belønningen ved at fremstille blokke ført til, at der benyttes betydelige energimængder i server-farme.
  • Proof-of-stake virker ved, at noderne gør en indsats. Sandsynligheden for, at en blok overlever er i dette system proportional med indsatsen.

Møntfod

Bitcoins symbol; den har valutakoden BTC

En blockchain har som hovedregel en møntfod eller valuta, som anvendes til betalinger i kædens økosystem. De servere, som danner blokke, belønnes med afgifter af de enkelte transaktioner og eventuelt også en præmie for selve blok-skabelsen[1]. Overførsler mellem adresser sker også i kædens møntfod.

Transaktion

Transaktionen er grundenheden i den enkelte bloks data.

I sin enkleste form overfører transaktionen et antal møntenheder fra én adresse til en anden. Transaktionen må kun skrives ind i en blok, såfremt afsender-adressen råder over et tilstrækkeligt antal møntenheder til at gennemføre overførslen. Herved undgås, at de samme 'penge' kan bruges mere end én gang (double-spending).[1]

Transaktionen i sin helhed signeres overfor noden, herved sikres, at afsenderen råder over den givne adresse.

Forskellige blockchains giver mulighed for mere komplekse transaktioner; fx kan en overførsel betinges af godkendelse af yderligere adresser. Ethereum-kæden giver mulighed for, at transaktionen kan indeholde programkode (byte-code, smarte kontrakter), som efterfølgende kan udføres ved at andre tranaktioner.

Da en transaktion for en regnskabskyndig består af et antal posteringer der dels er udelelig (enten lykkes hele transaktionen eller også lykkes intet), dels går i 0 (debet- og kreditsiden er lige store), svarer blockchains transaktionsbegreb altså til en postering, ikke en (regnskabsmæssig) transaktion.

Udfordringer

Skalerbarhed

Den førende blockchain bitcoin er designet til at der i gennemsnit skal være 10 minutter mellem blokke, mens hver blok må fylde op til 1 megabyte. Det betyder i praksis, at der kan gennemføres under 10 transaktioner pr. sekund, hvilket er meget beskedent sammenligned med fx kreditkort-systemers adskillige tusinder. Mange blokke har fra 2017 været helt fyldt op, hvilket indikerer trængselsproblemer. Der har i bitcoins server-netværk været en betydelig modstand mod at hæve blok-størrelsen; formodentlig fordi begrænset plads driver transaktionsgebyrer op.

De fleste andre blockchains har tilsvarende begrænsninger på antallet af transaktioner.

Langsommelighed

Med et gennemsnitligt interval på 10 minutter mellem dannelse af blokke hos Bitcoin, er netværket tilstrækkeligt hurtigt til større betalinger. Det vil derimod ikke i praksis kunne håndtere almindelige butikstransaktioner med denne hastighed. Problemet forværres af, at transaktionen kan risikere at havne i en blok, som ender med ikke at være en del af blockchain'en; det anbefales at vente et antal blok-dannelser, hvilket yderligere forøger langsommeligheden.

Andre blockchains arbejder med betydeligt hurtigere blok-generering, men mange er dog for langsomme til at kunne håndtere dagligdagens betalinger.

51% angreb

En blockchains sikkerhed baserer sig på, at netværket samarbejder/konkurrerer om at danne nye blokke omkring den længste kæde. Et forsøg på at danne en sidekæde med andre eller udvalgte transaktioner, forudsætter, at denne kan dannes noget hurtigere end den hidtil herskende kæde.

Såfremt et flertal af netværkets noder "rotter sig sammen" om at producere en sidekæde, som overhaler hovedkæden, er det i princippet muligt. Selv med blot 51% af den samlede beregningskraft er det muligt, omend det vil tage nogen tid.

Især blockchains med et mindre netværk af servere bestående af standardiseret udstyr, er udsat for at en fjendtlig gruppe vil kunne komme ind og overhale den hidtidige kæde.

Udfordret anonymitet

En blockchains sikkerhed baserer sig på, at hele kæden - og dermed dens transaktioner - er offentligt tilgængeligt. En persons mulighed for at holde sine pengeforhold udenfor offentligheden forudsætter dermed, at anvendte adresser ikke kan knyttes til personen.

Når man genbruger en adresse eller anvender midler fra sine adresser, dannes der let et mønster, som kan afdækkes analytisk. Firmaet Chainalysis udfører sådanne analyser.[2]

Noter, kilder og henvisninger

  1. ^ a b c d e Nakamoto, Satoshi (oktober 2008). "Bitcoin: A Peer-to-Peer Electronic Cash System" (PDF). bitcoin.org. Arkiveret (PDF) fra originalen 20. marts 2014. Hentet 28. april 2014.
  2. ^ www.version2.dk: Rigspolitiets hemmelige Bitcoin-våben fik Datatilsynet til at stejle Arkiveret 9. oktober 2017 hos Wayback Machine, besøgt 2017-10-08.

Medier brugt på denne side

Bitcoin Block Data.svg
Forfatter/Opretter: Matthäus Wander, Licens: CC BY-SA 3.0
Graphic of data fields in Bitcoin block chain. Simplified depiction: some fields are missing.
  • Prev_Hash: hash value of previous block. The purpose is to chain all blocks together.
  • Tx_root: root hash value of a hash tree (w:merkle tree) over all transactions.
  • Timestamp: creation time of block, as seen by block creator. The timestamp is checked by other clients and must be within a certain window (tolerates small clock skews).
  • Nonce: any number to make sure the resulting hash value of this block is below the target hash value. The Nonce is a 32 bit number and the 2^32 number space is exhausted during mining within less than a second.
The transactions (Tx0, Tx1, ...) are appended to the block. The first transaction generates new bitcoins and contains the coinbase field which includes an extraNonce to provide a larger search space for valid block hash values.
Blockchain.svg
Forfatter/Opretter:
Original:
Theymos from Bitcoin wiki
Vektor:
, Licens: CC BY 3.0
The main chain (black) consists of the longest series of blocks from the genesis block (green) to the current block. Orphan blocks (purple) exist outside the main chain.
Bitcoin.png
Bitcoin logo