fredag 12. april 2019

Proof of Work, Proof of Stake, Proof of Proof



"Proof of Work" i praksis (foto: Åsa S. Ølnes)
Det er elles Nicolajs stødige hand som fører brikken på plass :)
Bitcoin var ein revolusjon på 9 sider. Men revolusjonen var ikkje blokkjedeteknologien i seg sjølv, men konsensusmodellen. Det store spørsmålet i distribuerte system er korleis ein skal bli einige om kva som er rett tilstand. Dette hadde forskarar og utviklarar grunna på i fleire tiår utan å komme til eit svar. Bitcoin viste seg å ha svaret i praksis, om ikkje teoretisk.

Når det sentrale leddet blir teke bort og ein står att med likeverdige nodar ("peer-to-peer", P2P) blir det eit problem kven som skal bestemma. Alle skal jo bestemma, men korleis? La oss sjå på alternativa:

1. Avstemming
Den første tanken er truleg at me må ha ei avstemming blant deltakarane (nodane) i nettverket. Det høyrest jo fornuftig ut. Men det er eit problem, eit alvorleg problem: korleis sikra at ein node berre har ei stemme? På nettet er det dessverre lett å juksa med stemmegiving, og på fagspråket blir det kalla eit Sybil-angrep. Namnet kjem av ei bok, Sybil, som handla om ei kvinne med diagnosen splitta personlegdom (schizofreni).

Det er altfor lett "å modellera" schizofreni på nettet. DOS og DDOS (Denial of Service/Distributed Denial of Service) er stjerneeksempla på Sybil-angrep. I blokkjedesamanheng ville det vera lett å mønstra ein millionhær til å stemma for ein enkelt aktør.

2. Peika ut ein ansvarleg
Ved første augnekast ser det jo ut som me er tilbake til den sentrale modellen der ein aktør er ansvarleg for godkjenning, den tiltrudde tredjeparten. Men kva om me peiker ut den ansvarlege på ein tilfeldig måte? Eit problem er at datamaskiner og tilfeldig utveljing er ein dårleg kombinasjon. Datamaskiner er deterministiske, ikkje stokastiske (tilfeldige), av natur. Det er veldig vanskeleg å simulera ekte tilfeldigheit på datamaskiner.

3. Lotteri for å velja ansvarleg
Dersom me følgjer tanken om å peika ut ein tilfeldig ansvarleg og kombinerer det med eit lotteri, er me på veg mot hovudidéen bak Nakamoto-konsensus, dvs. konsensusmodellen i Bitcoin. Men korleis få til eit 100 % tilfeldig lotteri? I Bitcoin er det Proof-of-Work (PoW) som er metoden. Den går ut på å måtta bevisa ein arbeidsinnsats, derav namnet, for å kunna delta i lotteriet. Arbeidsinnsatsen i Bitcoin er bruk av energi til å løysa eit matematisk problem. Som i eit lotteri vil sjansen til å vinna auka med innsatsen; til fleire lodd, til større sjanse. I PoW er det din del av samla ressursinnsats som tilsvarer mengda av lodd. Det er ingen snarvegar i dette lotteriet, den einaste måten du kan delta på, er å skaffa deg utstyr og setja i gang og rekna.

PoW i Bitcoin brukar mykje energi, med god grunn. Det er mengda energi som avgjer kor sikker blokkjeda er. I motsetnad til det som ofte blir fortalt, er ikkje ei blokkjede sikker i seg sjølv. Ei open blokkjede må ha ein sikkerheitsmodell; enten PoW eller ein annan modell. Kostnaden med PoW kan samanliknast med prisen på eit lodd. Dersom lodda var veldig billege, ville det vera enkelt å kjøpa opp store delar og dermed sikra store vinnarsjansar. I blokkjedesamanheng vil det vera det same som eit 51 %-angrep. Den som kontrollerer meir enn 50 % av rekneressursane i ei PoW-blokkjede, kontrollerer i praksis blokkjeda og kan gjennomføra dobbel bruk av kryptopengar ("double spending"). At dette ikkje berre er teoretisk, har me sett fleire eksempel på, seinast har det skjedd med Ethereum Classic.

Andre konsensusmekanismar
Proof of work (PoW) er den vanlegaste sikkerheitsmetoden, men det finst også andre.

Proof of Stake (PoS)
Energibruken blir ofte brukt mot Bitcoin og andre PoW-system, og den alternative metoden Proof of Stake blir ofte halden fram sidan den krev ikkje bruk av energi. I PoS satsar du kryptobehaldninga di mot å få lov til å lagra ei ny blokk og få godtgjersle for det arbeidet. Du set kryptovalutaen din inn på sperra konto, og får tilbakebetalt saldoen pluss godtgjersle for arbeidet viss alt går rett for seg. Dersom du derimot prøver å lura systemet, mistar du heile depositumet. Det er altså pisk og gulrot som er grunnlaget for metoden.

Problemet med PoS, og avartar som DPoS (Delegated PoS), er at sikkerheitsmodellen er internalisert i systemet i motsetnad til PoW som er eksternalisert. I PoS-system skjer alt innafor kryptosystemet og metoden er ikkje avhengig av eksterne variablar. Det har både fordelar og ulemper. Ulempene med PoS er framfor alt det som blir kalla "nothing at stake". I ei PoW-blokkjede vil det ikkje lønna seg å splitta blokkjeda (hard fork) fordi du må velja å delta i ei av greinene, du kan ikkje bruka ressursane dine på begge. I ei PoS-blokkjede kostar det ingenting å følgja begge (alle..) greinene og det kan få store følgjer. I tillegg har PoS-system ei svakheit ved at nye brukarar i systemet ikkje kan vita sikkert at dei er på den rette blokkjeda. Ein ny brukar kan bli servert ei "falsk" blokkjede og har ikkje mulegheit til å sjekka om den er rett. I ei PoW-blokkjede vil kjeda med den høgaste samanlagde vanskegraden vera den rette, og ein ny brukar kan lett sjekka dette på eiga hand.

Det er også ei stor ulempe at det er nærmast kostnadsfritt å regenerera ei PoS-blokkjede frå starten av, i sterk motsetnad til PoW. I ei PoW-blokkjede som Bitcoin er det ingen snarvegar; om du vil prøva å regenerera historia, med din eigen vri, må du tilfredsstilla den samla vanskegraden, i tillegg til at du må halda følgje med nye blokker. Det er ei nærmast umuleg oppgåve. PoS-blokkjeder kan derimot omskrivast utan kostnad sidan det ikkje er nokon vanskegrad og det berre er snakk om å stilla til disposisjon eit depositum.

PoS-blokkjeder må difor som oftast kombinerast med andre sikkerheitsmetodar.

Proof of proof (PoP)
Bitcoin har ekstremt god sikkerheit, kanskje i overkant kan ein hevda. Tenk om Bitcoins sikkerheits-overflod kunne brukast av andre blokkjeder! Det er det dei har tenkt dei som har lansert Proof of proof. Det finst andre måtar å nyttiggjera seg Bitcoins styrke, mellom anna "merge mining" der dei som "grev" i Bitcoin-samanheng samtidig utfører eit reknestykke for den andre blokkjeda/kryptovalutaen.

PoP går ut på å bruka Bitcoin-blokkjeda til å publisera øyeblikksbilete av eiga blokkjede, såkalla sjekkpunkt. På den måten vil dei hindra at eiga blokkjede blir reorganisert til eit tidspunkt før det publiserte sjekkpunktet. Det ligg utfordringar også i denne metoden, m.a. korleis handtera ei splitting av Bitcoin-kjeda, noko som har skjedd og sikkert vil skje igjen.

Blokkjeda/systemet VeriBlock har spesifisert ein metode som skal ta hand om slike situasjonar. Idéen bak VeriBlock er at i staden for at mange blokkjeder skal bruka Bitcoin uavhengig av kvarandre for publisering av sjekkpunkt, kan dei bruka VeriBlock som så publiserer stillbilete av si blokkjede til Bitcoin. VeriBlock blir altså ei proxy-blokkjede for Bitcoin.