Hvad er en blockchain-konsensusalgoritme?
Indholdsfortegnelse
Introduktion
Konsensusalgoritmer og kryptovaluta
Typer af konsensusalgoritmer
Andre konsensusalgoritmer
Sammenfatning
Hvad er en blockchain-konsensusalgoritme?
Hjem
Artikler
Hvad er en blockchain-konsensusalgoritme?

Hvad er en blockchain-konsensusalgoritme?

Begynder
Offentliggjort Dec 13, 2018Opdateret Oct 4, 2022
7m

Introduktion

En konsensusalgoritme er en mekanisme, der giver brugere eller maskiner mulighed for at koordinere i en distribueret indstilling. Den skal sikre, at alle agenter i systemet kan blive enige om en enkelt kilde til sandhed, selvom nogle agenter fejler. Systemet skal med andre ord være fejltolerant (se også: Forklaring af byzantinsk fejltolerance).

I en centraliseret opsætning har en enkelt enhed magt over systemet. I de fleste tilfælde kan de foretage ændringer, som de vil – der er ikke noget komplekst styringssystem til at nå til enighed blandt mange administratorer. 

Men i en decentraliseret opsætning er det en helt anden historie. Lad os sige, at vi arbejder med en distribueret database – hvordan når vi til enighed om, hvilke poster der skal tilføjes?

At overvinde denne udfordring i et miljø, hvor fremmede ikke stoler på hinanden, var måske den mest afgørende udvikling, der banede vejen for blockchains. I denne artikel tager vi et kig på, hvordan konsensusalgoritmer er afgørende for funktionen af kryptovalutaer og distribuerede hovedbøger.


Konsensusalgoritmer og kryptovaluta

I kryptovalutaer registreres brugernes saldi i en database, altså en blockchain. Det er vigtigt, at alle (eller mere præcist hver node) vedligeholder en identisk kopi af databasen. Ellers ville du snart ende med modstridende oplysninger, der underminerer hele formålet med kryptovalutanetværket.

Offentlig nøgle-kryptering sikrer, at brugere ikke kan bruge hinandens mønter. Men der skal stadig være en enkelt kilde til sandhed, som netværksdeltagerne stoler på, for at kunne afgøre, om midlerne allerede er brugt.

Satoshi Nakamoto, skaberen af bitcoin, foreslog et Proof of Work-system til at koordinere deltagerne. Vi kommer ind på, hvordan PoW fungerer om lidt – først vil vi lige identificere nogle af de fælles træk ved de mange konsensusalgoritmer, der findes.

For det første kræver vi, at brugere, der ønsker at tilføje blokke (vi kalder dem validatorer), giver en stake. Staken er en slags værdi, som en validator skal fremsætte, hvilket afskrækker dem fra at handle uærligt. Hvis de snyder, mister de deres stake. Eksempler inkluderer computerkraft, kryptovaluta eller endda omdømme. 

Hvorfor skulle de ulejlige sig med at sætte deres egne ressourcer på spil? Fordi der også er en belønning tilgængelig. Den består normalt af protokollens egen kryptovaluta og består af gebyrer betalt af andre brugere, nyligt genererede kryptovalutaenheder eller begge dele.

Til sidst har vi brug for gennemsigtighed. Vi skal kunne opdage, når nogen snyder. Ideelt set bør det være dyrt for dem at producere blokke, men billigt for alle at validere dem. Dette sikrer, at validatorer holdes i skak af almindelige brugere.


Typer af konsensusalgoritmer

Proof of Work (PoW)

Proof of Work (PoW) er gudfar til blockchain-konsensusalgoritmer. Den blev først implementeret i Bitcoin, men det faktiske koncept har eksisteret i nogen tid. I Proof of Work hasher validatorer (kaldet minere) de data, de vil tilføje, indtil de producerer en bestemt løsning.

En hash er en tilsyneladende tilfældig streng af bogstaver og tal, der oprettes, når du kører data gennem en hash-funktion. Men hvis du kører de samme data gennem den igen, ender du altid med det samme output. Bare ved at ændre en enkelt detalje, vil din hash være fuldstændig anderledes.

Når du ser på outputtet, kan du umuligt sige, hvilke oplysninger der blev indlæst i funktionen. De er derfor nyttige til at bevise, at du kendte et stykke data før et bestemt tidspunkt. Du kan give nogen deres hash, og når du senere afslører dataene, kan den person køre den gennem funktionen for at sikre, at outputtet er det samme.

I Proof of Work opstiller protokollen betingelser for, hvad der gør en blok gyldig. Den kan f.eks. sige, at kun en blok, hvis hash begynder med 00, vil være gyldig. Den eneste måde for mineren at oprette en, der matcher denne kombination, er tvungne inputs. De kan justere en parameter i deres data for at producere et andet resultat for hvert gæt, indtil de får den rigtige hash. 

Med store blockchains er standarden sat utroligt højt. For at konkurrere med andre minere skal du have et lager fuld af særligt hashing-hardware (ASIC'er) for at have en chance for at producere en gyldig blok.

Din stake, når du miner, er omkostningerne ved disse maskiner og den elektricitet, der kræves for at køre dem. ASIC'er er bygget til ét formål, så de er ubrugelige i applikationer uden for mining af kryptovaluta. Din eneste måde til at genvinde din oprindelige investering er ved at mine, hvilket giver en betydelig belønning, hvis det lykkes dig at føje en ny blok til blockchainen.

Det er trivielt for netværket at kontrollere, at du faktisk har oprettet den rigtige blok. Selvom du har prøvet billioner af kombinationer for at få den rigtige hash, skal de bare køre dine data gennem en funktion én gang. Hvis dine data producerer en gyldig hash, accepteres den, og du får en belønning. I modsat fald vil netværket afvise den, og du har spildt tid og elektricitet uden at få noget ud af det.


Proof of Stake (PoS)

Proof of Stake (PoS) blev foreslået i de tidlige dage af Bitcoin som et alternativ til Proof of Work. I et PoS-system findes der ikke noget koncept om minere, specialiseret hardware eller massivt energiforbrug. Alt hvad du behøver er en almindelig pc.

Det er måske ikke helt rigtigt. Du skal stadig sætte noget på højkant. I PoS fremsætter du ikke en ekstern ressource (såsom elektricitet eller hardware), men en intern ressource, nemlig kryptovaluta. Reglerne er forskellige fra protokol til protokol, men der er generelt et minimumsbeløb, du skal have for at være berettiget til at stake.

Derfra låser du dine midler i en tegnebog (de kan ikke flyttes, mens du staker). Du vil typisk aftale med andre validatorer, hvilke transaktioner der går ind i den næste blok. På en måde satser du på den blok, der vælges, og protokollen vælger en.

Hvis din blok er valgt, modtager du en del af transaktionsgebyrerne afhængigt af din stake. Jo flere midler du har låst op, jo mere står du til at vinde. Men hvis du forsøger at snyde ved at foreslå ugyldige transaktioner, mister du en del af (eller hele) din stake. Derfor har vi en lignende mekanisme som ved PoW – at handle ærligt er mere rentabelt end at handle uærligt.

Generelt er der ikke frisklavede mønter som en del af belønningen for validatorer. Blockchainens oprindelige valuta skal således udstedes på en anden måde. Dette kan gøres enten via en indledende distribution (dvs. en ICO eller IEO) eller ved at få protokollen til at starte med PoW, før den senere overgår til PoS.

Til dato er ren Proof of Stake kun blevet implementeret i mindre kryptovalutaer. Det er derfor uklart, om den kan tjene som et levedygtigt alternativ til PoW. Selv om det ser teoretisk fornuftigt ud, vil det være meget anderledes i praksis. 

Når PoS er udrullet på et netværk med en stor mængde værdi, bliver systemet et spillefelt for spilteori og økonomiske incitamenter. Enhver med knowhow til at "hacke" et PoS-system ville sandsynligvis kun gøre det, hvis de kunne drage fordel af det – derfor er den eneste måde til at finde ud af, om det er muligt, via et live-netværk.

Vi vil snart se PoS blive testet i stor skala. Casper vil blive implementeret som en del af en række opgraderinger til Ethereum-netværket (samlet kendt som Ethereum 2.0).


Andre konsensusalgoritmer

Proof of Work og Proof of Stake er de mest omtalte konsensusalgoritmer. Men der er en lang række andre, alle med deres egne fordele og ulemper. Se følgende artikler:


Sammenfatning

Mekanismer til opnåelse af konsensus er afgørende for, at distribuerede systemer fungerer. Mange mener, at den største innovation i Bitcoin var brugen af Proof of Work for at gøre det muligt for brugerne at blive enige om et fælles sæt fakta.

Konsensusalgoritmer understøtter i dag ikke kun digitale pengesystemer, men også blockchains, der giver udviklere mulighed for at køre kode på tværs af et distribueret netværk. De er nu en hjørnesten i blockchain-teknologi og er afgørende for den langsigtede levedygtighed af de forskellige eksisterende netværk.

Af alle konsensusalgoritmerne forbliver Proof of Work det dominerende tilbud. Der er endnu ikke blevet foreslået et alternativ, der er mere pålideligt og mere sikkert. Når det er sagt, findes der en enorm mængde forskning og udvikling vedrørende erstatninger af PoW, og vi vil sandsynligvis se flere dukke op i de kommende år.