Hva er en konsensusalgoritme for blokkjede?
Innholdsfortegnelse
Innledning
Konsensusalgoritmer og kryptovaluta
Typer konsensusalgoritmer
Andre konsensusalgoritmer
Avsluttende tanker
Hva er en konsensusalgoritme for blokkjede?
Hjem
Artikler
Hva er en konsensusalgoritme for blokkjede?

Hva er en konsensusalgoritme for blokkjede?

Nybegynner
Publisert Dec 13, 2018Oppdatert Oct 4, 2022
7m

Innledning

En konsensusalgoritme er en mekanisme som gjør det mulig for brukere eller maskiner å koordinere i en distribuert setting. Den må sikre at alle agentene i systemet kan bli enige om én enkelt sannhetskilde, også dersom noen av agentene skulle mislykkes. Systemet må med andre ord være feiltolerant (se også: Bysantinsk feiltoleranse forklart).

I et sentralisert oppsett har én enkelt enhet makt over systemet. I de fleste tilfeller kan de gjøre endringer når de vil – det finnes ikke noe komplekst styringssystem for å oppnå konsensus blant mange administratorer. 

Men i et desentralisert oppsett fungerer det helt annerledes. Tenk deg at vi jobber med en distribuert database – hvordan blir vi enige om hvilke oppføringer som skal legges til?

Det at denne utfordringen ble overvunnet i et miljø der fremmede ikke stoler på hverandre, var kanskje den mest avgjørende utviklingen som banet veien for blokkjeder. I denne artikkelen skal vi se på hvordan konsensusalgoritmer er helt avgjørende for at kryptovalutaer og distribuerte hovedbøker skal fungere.


Konsensusalgoritmer og kryptovaluta

I kryptovaluta registreres brukernes saldo i en database – blokkjeden. Det er viktig at alle (eller mer nøyaktig: hver node) har en identisk kopi av databasen. Ellers ender man fort opp med motstridende informasjon, noe som ville undergravd hele formålet med kryptovalutanettverket.

Kryptokrafi med offentlig nøkkel sikrer at brukerne ikke kan bruke hverandres mynter. Men det må fortsatt finnes én enkelt kilde til sannhet som nettverksdeltakerne stoler på, for å kunne fastslå om pengene allerede er brukt.

Satoshi Nakamoto, skaperen av Bitcoin, foreslo et Proof of Work-system for koordinering av deltakerne. Vi kommer snart inn på hvordan PoW fungerer – foreløpig skal vi identifisere noen av de vanlige egenskapene til de mange konsensusalgoritmene som eksisterer.

For det første krever vi at brukere som vil legge til blokker, (vi kaller dem validatorer) tilbyr staking. Staking er en slags verdi som en validator må legge frem, som gir aktøren gode grunner til ikke å opptre uærlig. Hvis aktøren jukser, mister vedkommende sin staking. Eksempler på staking kan være datakraft, kryptovaluta eller til og med omdømme. 

Hvorfor har de lyst til å risikere sine egne ressurser i det hele tatt? Det er fordi det er mulig å få en belønning. Denne består vanligvis av protokollens integrerte kryptovaluta og av gebyrer som andre brukere betaler, av nygenererte kryptovalutaenheter eller av begge deler.

Og til slutt trenger vi åpenhet. Vi må kunne oppdage det når noen jukser. Ideelt sett bør det være dyrt for dem å produsere blokker, men billig for hvem som helst å validere dem. Dette sikrer at validatorene holdes i sjakk av vanlige brukere.


Typer konsensusalgoritmer

Proof of Work (PoW)

Proof of Work (PoW) er gudfaren til konsensusalgoritmer for blokkjeder. Den ble først implementert i Bitcoin, men selve konseptet har eksistert en stund. I Proof of Work utfører validatorer (referert til som minere) hashing av dataene de vil legge til, frem til de har produsert en spesifikk løsning.

En hash er en tilsynelatende tilfeldig streng/rekke med bokstaver og tall som opprettes når du kjører data gjennom en hash-funksjon. Men hvis du kjører de samme dataene gjennom den på nytt, ender du alltid opp med samme utdata. Hvis du bare endrer én liten detalj, blir hashen helt annerledes.

Når du ser på utdataene, er det umulig å si hvilken informasjon som ble lagt inn i funksjonen. De er derfor nyttige for å bevise at du kjente til bestemte data før et bestemt tidspunkt. Du kan gi noen hashen, og når du senere avslører dataene, kan vedkommende kjøre den gjennom funksjonen for å sikre at utdataene er de samme.

I Proof of Work angir protokollen vilkår for hva som gjør en blokk gyldig. Den kan for eksempel si at bare en blokk med hash som begynner med 00, er gyldig. Den eneste måten mineren kan lage en blokk som samsvarer med den kombinasjonen, er å prøve seg tilfeldig frem med inndata. De kan justere en parameter i dataene sine for å produsere et annet resultat for hver gjetning helt til de får riktig hash. 

På store blokkjeder er lista lagt utrolig høyt. For å konkurrere med andre minere trenger du et lager fullt av spesiell maskinvare (ASIC) til hashing for i det hele tatt å ha en mulighet til å produsere en gyldig blokk.

"Stakingen" ved mining er kostnadene for disse maskinene og strømforbruket for å drive dem. ASIC-er er bygget for ett formål, så de har ingen bruksområder utenom mining av kryptovaluta. Den eneste måten du kan tjene inn den opprinnelige investeringen din på, er gjennom mining, noe som gir en stor belønning hvis du lykkes med å legge til en ny blokk på blokkjeden.

Det er en enkel sak for nettverket å bekrefte at du faktisk har opprettet den riktige blokken. Selv om du har prøvd billioner av kombinasjoner for å få riktig hash, trenger de bare å kjøre dataene dine gjennom en funksjon én gang. Hvis dataene dine produserer en gyldig hash, blir den akseptert, og du får en belønning. Ellers avviser nettverket den, og du har kastet bort tid og strøm for ingenting.


Proof of Stake (PoS)

Proof of Stake (PoS) ble foreslått i begynnelsen av Bitcoin som et alternativ til Proof of Work. I et PoS-system finnes ikke konseptet med minere, spesialisert maskinvare eller enormt strømforbruk. Det eneste du trenger, er en vanlig PC.

Eller, ikke helt da. Du må fortsatt gjøre en innsats. I PoS benytter du ikke en ekstern ressurs (som strøm eller maskinvare), men en intern – kryptovaluta. Reglene er forskjellige for hver protokoll, men generelt må du ha et minimumsbeløp for å være kvalifisert for staking.

Derfra låser du pengene dine i en lommebok (de kan ikke flyttes mens du foretar staking). Du blir vanligvis enig med andre validatorer om hvilke transaksjoner som skal være med i neste blokk. På en måte satser du på hvilken blokk som kommer til å bli valgt, og protokollen velger en blokk.

Hvis blokken din blir valgt, får du en andel av transaksjonsgebyrene, avhengig av stakingen din. Jo mer penger du har låst av, jo mer kan du tjene. Men hvis du prøver å jukse ved å foreslå ugyldige transaksjoner, mister du deler av (eller hele) stakingen. Derfor får vi en lignende mekanisme som PoW – det er mer lønnsomt å være ærlig enn uærlig.

Vanligvis er ikke nylagde mynter en del av belønningen til validatorer. Blokkjedens integrerte valuta må dermed utstedes på en annen måte. Dette kan gjøres enten via en førstedistribusjon (dvs. en ICO eller IEO) eller ved å få protokollen til å starte med PoW før den senere går over til PoS.

Hittil har ren Proof of Stake egentlig bare blitt benyttet for mindre kryptovalutaer. Derfor er det uklart om den kan bli et velfungerende alternativ til PoW. Selv om det virker bra i teorien, kommer det til å være veldig annerledes i praksis. 

Når PoS rulles ut på et nettverk med en stor verdi, blir systemet en arena for spillteori og økonomiske insentiver. Alle som vet hvordan de "hacker" et PoS-system, vil sannsynligvis bare gjøre det hvis de kan tjene på det – derfor er den eneste måten å finne ut om det er gjennomførbart, på et live-nettverk.

Vi får snart se PoS testet i stor skala – Casper blir implementert som en del av en serie av oppgraderinger i Ethereum-nettverket (samlet kjent som Ethereum 2.0).


Andre konsensusalgoritmer

Proof of Work og Proof of Stake er konsensusalgoritmene det snakkes mest om. Men det finnes mange andre også, der alle har sine fordeler og ulemper. Sjekk ut følgende artikler:


Avsluttende tanker

Mekanismer for å oppnå konsensus er avgjørende for at distribuerte systemer skal fungere. Mange mener at den største innovasjonen i Bitcoin var bruken av Proof of Work, som gjorde det mulig for brukerne å bli enige om et delt sett med fakta.

Konsensusalgoritmer i dag støtter ikke bare digitale pengesystemer, men også blokkjeder som lar utviklerne kjøre kode på et distribuert nettverk. De er nå helt grunnleggende i blokkjedeteknologien og er avgjørende for at de forskjellige nettverkene som finnes, skal være levedyktige på lang sikt.

Blant alle konsensusalgoritmene er Proof of Work fortsatt den dominerende. Det har ennå ikke blitt foreslått et alternativ som er mer pålitelig og sikrere. Men når det er sagt, foregår det en enorm mengde forskning og utvikling på erstatninger til PoW, og vi får sannsynligvis se flere av dem dukke opp i løpet av de neste årene.