Bitcoins blockkedja, och även Ethereums m.fl., brukar kallas för lager 1 medan sådant som är byggt ovanpå detta, som t.ex. Lightning Network, kallas lager 2. Konsensusalgoritmen i lager 1 gör att alla deltagare har ett sätt att komma överens om vilka transaktioner som är de korrekta, även om någon t.ex. skulle göra samtidiga transaktioner som motsäger varandra. Denna grund behövs för att lager 2-lösningarna ska fungera överhuvudtaget.
I praktiken finns dock även ett sorts metalager, vad vi skulle kunna kalla för lager 0 eller social konsensus. För även om mjukvaran som folk frivilligt kör (t.ex. Bitcoin Core) har en mekanism för att säkerställa konsensus, alltså att man är överens om vilken som är den korrekta versionen av blockkedjan, så gäller det ju också att alla kör samma mjukvara. Eller mer specifikt, att alla kör mjukvara med likadana regler. Det här kan låta som en liten sak (man laddar väl bara ner Bitcoin Core från bitcoincore.org?) men det har flera gånger uppstått situationer när alla inte överens om vilken som är den korrekta mjukvaran och vilka regler som ska följas.
Inom Ethereum är ett känt sådant här tillfälle när The DAO hackades och hackern lade beslag på enorma mängder ether. Vissa tyckte att programkoden som definierar Ethereum "är lag" och att dessa ether nu tillhör hackern medan andra tyckte att man bör införa ett specialfall i reglerna, som gör att hacket "rullas tillbaka" (som när Stålmannen spolade tillbaka tiden för att rädda Lois Lane). Vinnarna i den här striden blev faktiskt, lite oväntat i min mening, de som ville införa ett specialfall, spola tillbaka tiden och låtsas som att hacket aldrig hänt. Båda varianterna fortsätter att fungera än idag och den variant som följer originalreglerna går under namnet Ethereum Classic. Konsensus är dock att det riktiga Ethereum är det där reglerna ändrades, vilket man ser genom att det är den blockkedjan som benämns just Ethereum hos alla börser, plånböcker, butiker etc.
Så hur fastställdes denna konsensus? Jo, det var i lager 0, det sociala lagret. Det var en ganska liten grupp människor som kom överens om vilken väg man skulle gå och andra följde efter genom att använda den nya mjukvara som togs fram och innehöll de nya undantagsreglerna. Vissa skulle nog t.o.m. hävda att det inte ens var en grupp personer utan att det var Vitalik Buterin som betraktades som en ledare här, och som folk följde. Den här händelsen går alltså kraftigt emot idén om att systemet ska vara decentraliserat och styras av förutbestämda regler istället för människor.
Lärdomen man får ta med sig från detta är att decentralisering är komplicerat. Det räcker inte att ha ett tekniskt protokoll som möjliggör decentralisering utan det behövs också en kultur och en struktur bland de människor som använder tekniken som i praktiken gör att central styrning undviks.
I bitcoinkretsar påpekas ofta vilket snilledrag det var av Satoshi att tidigt lämna projektet. På det viset fanns inte längre någon uppenbar ledare som andra kunde följa och det har i praktiken gjort att bitcoin är mer decentraliserat än t.ex. Ethereum. I början av bitcoins historia såg det dock annorlunda ut. Hösten 2010 utnyttjades en bugg som gjorde det möjligt att skapa bitcoin ur tomma intet och ett block med 184 miljarder bitcoin skapades. På den tiden räckte det med att Gavin Andresen och Satoshi själv fixade buggen och uppmanade folk på bitcoinforumet på bitcoin.org att köra denna, nya, alternativa version. I det här fallet fanns dock inga egentliga meningsskiljaktigheter om vilket som var den rätta blockkedjan, även om denna under en tid inte var den längsta. Att det aldrig skulle finnas mer än 21 miljoner bitcoin var alla överens om.
An unknown attacker had discovered the bug and used it to generate a ridiculously high number of bitcoins. Had they set their sights on a more modest total, it is possible their exploit might have lain undiscovered for longer than the 90 minutes it took for the scheme to be spotted
Vid ett senare tillfälle, i mars 2013, uppstod en annan problematik när den senaste versionen av Bitcoin Core hade gått över till en ny typ av databas. En väldigt specifik begränsning i den tidigare databasen gjorde att ett block som den nya versionen av Bitcoin Core glatt accepterade, nekades av de tidigare versionerna. Vi fick alltså två versioner av blockkedjan och den nya versionens kedja växte snabbare. Under några timmar togs beslutet av en mindre grupp personer, framförallt utvecklare, att man skulle försöka gå tillbaka till den gamla versionens kedja. Alternativet hade varit att låta de som använde en gammal version bli utestängda från nätverket, d.v.s. att de skulle tvingas att uppgradera.
För att åstadkomma detta krävdes att de största miningpoolerna bytte tillbaka till den äldre versionen och det var också just detta som hände. Efter ett tag växte den gamla versionens kedja snabbare och efter totalt 6 timmar hade den kedjan gått om den nya, vilket alltså medförde att båda versionerna igen var överens om vilken som var den längsta, korrekta kedjan.
However, the incident opens up serious questions about the nature of the Bitcoin protocol, and puts into the spotlight some uncomfortable facts about Bitcoin’s notion of “decentralization”.
Bitcoin Magazine
Med andra ord så var det konsensus bland en liten grupp utvecklare och miningpooler som bestämde bitcoins öde. Och det var ett beslut som krävde ett aktivt ingrepp i den vanliga konsensusprocessen som, om ingen hade ingripit, istället hade lett till att den nya versionen setts som den korrekta versionen av bitcoin.
Med åren har det sannolikt blivit svårare för en så liten grupp personer att få igenom den här typen av beslut och bitcoin är alltså mer decentraliserat i praktiken. Under det som kallas the blocksize war åren 2015-2017 togs alternativa versioner av bitcoin fram och stora konflikter fanns angående hur bitcoins regler skulle se ut. Det var ytterst nära att en grupp större miners, företag m.fl. fick igenom sin vilja om en större blockstorlek men man vek sig till slut när en gräsrotsrörelse av användare världen över vägrade ansluta sig till den här idén. Läs mer om denna fascinerande tid i The Blocksize War.
Poängen med dessa exempel är att visa att även om man på teknisk nivå har en mycket väldefinierad process för hur konsensus uppnås så finns alltid ett lager i botten där människor måste komma överens om vilken mjukvara som ska användas. Det är förstås på denna nivå möjligt att fortsätta även om man inte kommer överens genom att flera parallella versioner uppstår, vilket också hände med t.ex. skapandet av Bitcoin Cash. Det är dock inte speciellt önskvärt att sådana delningar blir något vanligt förekommande eftersom det kan skapa stor förvirring bland användare, i synnerhet om de två versionerna har ungefär lika stort stöd.
Kommentarer