Noder, inom ett decentraliserat nätverk, behöver komma överens om vilken information som är korrekt och vilken ny information (i form av transaktioner) som ska tillföras till blockkedjan. Eftersom det inte finns en centraliserad aktör som avgör detta behöver noderna ha ett regelverk att följa för att komma överens. Detta regelverk är blockkedjans konsensusmekanism. Med andra ord anger det hur noderna ska uppnå konsensus.
Konsensus är överenskommelse inom en grupp människor. Ordet konsensus syftar dels på själva överenskommelsen, dels den teori och de handlingssätt som används för att uppnå denna överenskommelse / Wikipedia
Som presenteras på Wikipedia är konsensus både handlingssättet (processen) för att uppnå en överenskommelse samt den överenskommelse som uppnås. Det enda som skiljer mot konsensusmekanism på en blockkedja är därmed att det inte är en grupp människor som ska komma överens utan en grupp av noder/datorer inom ett decentraliserat nätverk. Därmed uppnås konsensus genom den kod som blockkedjan är uppbyggd av.
En liknelse – Hur kommer vi överens?
Tio personer, som inte känner varandra, går in i ett rum. Deras uppgift är att komma överens om hur högt Eiffeltornet är. De vet även att det eventuellt finns en förrädare i rummet som kommer att försöka förstöra för dem. Gruppen behöver i ett första skede bestämma en konsensusmekanism som de sedan förhåller sig till.
Konsensusexempel 1
Alla får göra egna beräkningar för att komma fram till ett svar. Den som kommer på ett svar först får detta validerat av övriga i rummet. Chansen att komma fram till rätt svar varierar mellan de olika personerna då vissa har med sig en dator medan andra bara har papper och penna. Om minst 60% anser att svaret är korrekt är det gruppens slutgiltiga svar. Om så sker får den som kom på svaret först en viss belöning.
Konsensusexempel 2
Alla tar med sig minst 1000 kronor in i rummet. Därefter sker lottning om vem som ska beräkna höjden på Eiffeltornet proportionerligt utifrån personens belopp. Den som har med sig 10 000 kronor har alltså 10 gånger så stor chans som den som bara har 1000 kronor.
Den som vinner lottningen gör uträkning varpå validering sker av slumpmässigt antal personer i rummet. Anser 75% att det är rätt kommer det vara gruppens svar och personen får en viss belöning. Skulle färre anse att svaret är rätt kommer personen att förlora 5% av sitt medtagna belopp.
Varför behövs det?
Alla decentraliserade blockkedjor behöver ha en fungerande konsensusmekanism för att blockkedjan ska bibehålla sin säkerhet och funktion. Eftersom noderna bland annat är anonyma, och kan variera i antal, behöver det finnas ett system som säkerställer att de agerar korrekt utan att behöva lita på varandra. Konsensusmekanismen ska exempelvis upprätthålla:
- Decentralisering – Ingen enskild aktör, eller ett fåtal aktörer, ska kunna bestämma över blockkedjan.
- Säkerhet utifrån funktion – Enbart korrekta transaktioner ska godkännas. Det ska exempelvis inte kunna uppstå så kallade ”double-spending”.
- Säkerhet mot attack – Blockkedjan ska stå emot exempelvis Sybil-attacker.
Exempel på konsensus
Proof of Work (PoW) och Proof of Stake (PoS) nämns ofta som de två mest använda konsensusmekanismerna. Detta eftersom Bitcoin använder PoW och Ethereum använder PoS. Det ska däremot tilläggas att PoW och PoS enbart är en del av dessa blockkedjors kompletta konsensusmekanismer. I detta fall anger PoW och PoS hur blockkedjan skyddas mot Sybil-attacker, dvs. att en användare utger sig för att vara många användare för att uppnå en egen fördel. I grunden anger alltså PoW och PoS enbart hur blockkedjan skyddas och inte hur noderna på blockkedjan uppnår konsensus. Exempel på frågor som blockkedjans konsensusmekanism besvarar är:
- Vad krävs för att agera nod?
- Vad avgör vem som får skapa nästa block?
- Hur sker verifiering av information i det nya blocket?
- Hur stor andel av noderna måste godkänna blocket?
- Vilken kedja är korrekt om det skapas nya kedjor (forkar)?
The term consensus mechanism refers to the entire stack of protocols, incentives and ideas that allow a network of nodes to agree on the state of a blockchain. /Ethereum.org
När en konsensusmekanism skapas på en blockkedja behöver därmed utvecklarna förhålla sig till blockkedjornas trilemma, det vill säga balansen mellan decentralisering, säkerhet och skalbarhet. Det finns exempelvis blockkedjor som prioriterar hastighet och skalbarhet, på bekostnad av säkerhet, medan andra prioriterar säkerhet och decentralisering, på bekostnad av skalbarhet.
Proof of Work
Proof of Work (PoW) var den första konsensusmekanismen som lanserades, eftersom Bitcoin använder denna mekanism. I korthet innebär PoW att beräkningsmöjligheten (datorkraft) avgör hur stor chans det är att få skapa nästa block. Detta beräknas i hashrate dvs. hur många uträkningar som kan ske per sekund. Egen hashrate, i förhållande till total hashrate på blockkedjan, visar därmed den procentuella chansen att få skapa blocket.
I detta fall är det alltså datorkraft, och elektricitet, som tillförs för att kunna genomföra dessa beräkningar. Aktuell nivå på hashrate på Bitcoins blockkedjan kan ses på Blockchain.com/explorer och visas nedan tillsammans med historisk kurs.
Proof of Stake
Proof of Stake (PoS) används bland annat av Ethereum. PoS innebär att kryptovaluta låses (staking) och att den som har störst belopp, inom staking, även har störst chans att få skapa nästa block. I stället för att tillföra datorkraft, som i PoW, krävs alltså kapital för att kunna agera nod inom PoS.
Inom PoS finns även en rad varianter som exempelvis DPoS (Delegated Proof of Stake), PPoS (Pure Proof of Stake) och PoI (Proof of Importance). Samtliga använder staking som huvudfaktor för att kunna agera nod men det finns även andra faktorer och regler som påverkar nodernas möjlighet att få skapa nya block och validera information.
Kommentarer