Kryptoskolan del 3 - Konsensus? - Proof Of Stake!
Bildkälla:Jag själv!
Vad är Proof of Stake?
I förra inlägget gick vi igenom konsensusmekanismen Proof of Work och mining, nu är det äntligen dags för oss att ta oss an Proof of Stake (PoS) som är ett annat sätt att validera/verifiera transaktioner och uppnå distribuerad konsenus. Proof Of Stake har i Ethereums värld länge diskuterats (och planerats) som ersättare till dagens PoW i den kommande Casper implementering som väldigt nyligen fick en uppdatering.
Det är fortfarande en konsensusalgoritm, och syftet är detsamma som PoW, men vägen för att nå målet skiljer och bygger istället på validerarens ekonomiska andel i nätverket.
Kryptografiska beräkningarna i PoS är mycket enklare för datorer att lösa kontra PoW: du behöver bara bevisa att du äger en viss procentandel av alla mynt som finns i en given valuta.
Till skillnad från PoW, där algoritmen belönar miners som löser matematiska problem med målet att validera/verifiera transaktioner och skapa nya block, så väljs alltså skaparen av ett nytt block i PoS på ett deterministiskt sätt, beroende på dess andel, eller rättare sagt insats (eng. stake).
Detta görs genom att blockkedjan håller reda på en uppsättning av validerare, och alla dessa som håller blockkedjans baskryptovaluta (ether, i Ethereums fall) kan bli en validerare genom att skicka en transaktionstyp som låser upp dess andel av ether i en insats (stake).
Processen att skapa och godkänna nya block görs sedan genom en konsensusalgoritm som alla nuvarande validerare kan delta i. Här turas validerarna om och röstar på nästa block, och vikten av varje validerares röst bygger på dess insats (stake).
Ingen belöning
Då energiförbrukning vid PoS är väsentligt mindre i jämförelse med PoW så är behovet av att nya mynt skapas inte lika väsentligt. Det diskuteras bland annat att alla mynten kan vara skapade från början samt att istället för skapandet av nya mynt så kan istället systemet har möjlighet för en självstyrande deflation, det vill säga att antalet mynt istället minskar.
Huruvida Ethereum kommer att anta denna form vid övergången till PoS är oklart, dock har Vitalik Buterin tidigare flörtat med tanken i en publicering som skedde den 1:a April. Datumet var medvetet valt för att väcka diskussion, vilket bekräftades senare i ett twittermeddelande.
Till skillnad från PoW där minern får belöning i form av nya mynt som skapas, så får smeden istället ta ut transaktionsavgifter. I PoS kallas minern/validatorn istället för smed (engelskans forger)
Om man vill summera PoS i två meningar så kan man säga följande:
I PoS så låser en validerare (smed) sin andel av Blockkedjans mynt i en insats (engelskans stake) i syftet att verifiera ett block av transaktioner och rösta fram nästa block. Detta sker deterministiskt där vikten av ens röst beror på hur stor ens andel är samt att belöningen fås i form av transaktionsavgifter.
Typer av PoS
Är det verkligen så enkelt? Självklart inte (Doh)! Utan självfallet finns det olika versioner av PoS. Ur ett algoritmiskt perspektiv rör det sig om två huvudtyper: kedjebaserat bevis på insats (Chain-based PoS) och BFT-stil PoS (Byzantine Fault Tolerant-style).
I kedjebaserat PoS väljer algoritmen pseudo-slumpmässigt en validerare under varje tidslucka (t.ex. varje 10-sekundersperiod) och tilldelar den valideraren rätten att skapa ett enda block och detta block måste peka på några tidigare block (normalt blocket i slutet av den tidigare längsta kedjan), och över tiden konvergeras blocken i en ständigt växande kedja.
I BFT-Stil PoS så tilldelas validerare slumpmässigt rätten att föreslå block, men att komma överens om vilket föreslaget block som är kanoniskt görs genom en multi-rond process där varje validator skickar en röst för ett visst föreslaget block under varje runda och I slutet av processen så avgörs det permanent av alla validerare som är online om huruvida ett givet block är en del av
kedjan eller ej.
Notera här att i BFT-Style POS så kan block fortfarande vara kedjade ihop; Den viktigaste skillnaden till Kedjebaserat PoS är att konsensus på ett block kan ske inuti ett block och beror inte på kedjans längd eller storlek efter det.
För mer info och väldigt intressant läsning om Byzantine Fault Tolerance klickar du här.
Skillnader
• PoW - Har ett objektivt konsensusprotokoll där en ny nod kan självständigt komma fram till samma staus som resten av nätverket baseras enbart på protokollregler.
• PoS - Är inte ett objektivt protokoll. Det är svagt subjektivt, eftersom en nod behöver en nytt tillstånd i tillägg till protokollregler och meddelanden som sprids över hela systemet för att självständigt bestämma systemets nuvarande tillstånd.
• Kostnaden att attackera ett PoW-system är högre än kostnaden för att attackera ett PoS-system. I PoW skulle en angripare behöva förvärva 50% + av beräkningskraften i nätverket, men i PoS skulle en angripare behöva förvärva 50% + av valutan inom det systemet. Huruvida vilket som är säkrast av ovan nämnda scenarion är upp för debatt.
Fördelar/Nackdelar
Fördelarna med PoS är bland annat ökad säkerhet, minskad risk för centralisering, och sist men inte minst: energiförbrukning.
• Energiförbrukning (PoS fördel)
Med PoS så minskas behovet av energi drastiskt. Det uppskattas att både Bitcoin och Ethereum bränner över 1 miljon dollar av el och maskinvarukostnader per dag som en del av deras konsensusmekanism.
Enligt en artikel från arstechnica så beräknas Bitcoinnätverket år 2020 att årligen konsumera så mycket som Danmark, det vill säga närmare 32TWh (terawatt-timme)!
• Minskad centraliseringsrisk (PoS fördel)
Eftersom stordriftsfördelar blir mycket mindre av ett problem. $10 miljoner mynt ger dig exakt 10 gånger högre avkastning än 1 miljon mynt utan några ytterligare oproportionerliga vinster.
• Ekonomiska påföljder vid attacker (PoS fördel)
Med PoS ges är de ekonomiska påföljder för de som deltagit i 51% attacker betydligt stor. Här man kan bli av med hela sin insats (stake). för att parafrasera Vlad Zamfir, "Det är som om din ASIC gård brann ner om du deltog i en 51% attack".
Vlad Zamfir, till vänster i bilden, är en researcher känd för sitt arbete med ”cryptoeconomics”, Proof of Stake och blockkedje-sharding i Ethereums ekosystem. Han är en av medlemmarna i Ethereum Foundation som Vitalik Buterin, till höger i bild, skaparen av Ethereum, leder.
Sårbarheter
Det finns en del sårbarheter med båda konsensusmekanismerna som du kan ta del av nedan.
Gemensamma sårbarheter
• DoS Attacker – En DoS-attack (Denial of Service) syftar till att störa den normala driften av nätverket genom att översvämma noderna.
• Sybil Attacks - I en Sybil-attack stör attackeren nätverket genom att skapa ett antal felaktiga noder.
Specifika sårbarheter
PoW
Selfish Mining Attack - I självisk mining kan en angripare selektivt avslöja hittade block för att slösa bort beräkningsresurserna hos ärliga miners.
PoS
Mutattack (Bribe attack)
1) Angriparen utför en transaktion som hen sedan vill återkalla (reverse).
2) Strax efter transaktionen börjar angriparen bygga en alternativ kedja baserad på blocket före den som innehåller angriparens tidigare transaktion. Angriparen skapar den alternativa kedjan i hemlighet.
3) Efter transaktionen (som angriparen vill återkalla) får ett antal nödvändiga valideringar (t.ex 6 st) och angriparens ”hemliga” kedja är längre än den validerade kedjan där transaktionen i steg 1 befinner sig så publicerar angriparen den hemliga kedjan.
Om angriparens tidigare hemliga kedja accepteras som den nya giltiga blockkedjan, blir transaktionen i steg ett återkallad. Med PoS så kostar denna typen av attack 50x mindre än motsvarande attack på PoW (referens)[ https://medium.com/@robertgreenfieldiv/vulnerability-proof-of...
Detta sammanfattar del 3 i kryptoskolan! Det finns en hel del mer läsning ni kan åta er för att dyka än mer djupt i Proof Of Stake. Länkarna hittar ni nedan.
Då artikeln återigen skulle bli allt för långrandig valde jag att skippa hyperledgers Sawtooths metod för att uppnå konsensus denna gång! I nästa inlägg kommer jag skriva om Ripples XRP.
Källor:
https://github.com/ethereum/wiki/wiki/Proof-of-Stake-FAQ
https://medium.com/@VitalikButerin/a-proof-of-stake-design-ph...
https://bitcoinmagazine.com/articles/what-proof-of-stake-is-a...
https://en.wikipedia.org/wiki/Proof-of-stake
https://blog.ethereum.org/2014/07/05/stake/
https://digiconomist.net/bitcoin-energy-consumption
CPU: Ryzen 9 5950x - NXZT Kraken Z73 (white sleeved) GPU: Gamerock 3080Ti
RAM: 128GB Trident Z Royal Gold DDR4 3600 CL16
MB: ASUS B550-A Gaming Silver/White Screen:55" LG OLED B9 (4k 120Hz @4:4:4)
Case: ASUS Rog Strix Helios White
HiFi Desktop: Sennheiser HD800S AMP: Cayin HA-1A MK2 DAC: Moon Neo 390