Introduktion
Skalbarhet är ett mått på ett systems förmåga att växa för att tillgodose ökad efterfrågan. Inom datoranvändning kan du öka maskinens prestanda genom att uppgradera hårdvaran, så att det går snabbare att utföra vissa uppgifter. När vi talar om skalbarhet för blockkedjor menar vi att öka deras kapacitet att hantera fler transaktioner.
Protokoll som Bitcoin har många styrkor, men skalbarhet är inte en av dessa. Om Bitcoin kördes i en centralt ägd databas skulle det vara relativt enkelt för en administratör att öka hastigheten och genomströmningen. Men ett av Bitcoins värden (censurmotstånd) kräver att många deltagare synkroniserar en kopia av blockkedjan.
Blockkedjans dilemma med skalbarhet
Att köra en Bitcoin-nod är relativt billigt och även simpla enheter kan göra detta. Men eftersom tusentals noder måste hålla sig uppdaterade med varandra finns det vissa begränsningar med deras kapacitet.
Gränser sätts på antalet transaktioner som kan bearbetas på kedjan, för att inte tillåta databasen att växa till till överväldigade storlekar. Skulle den bli för stor för snabbt kommer noderna inte att kunna hålla jämna steg. Om block blir för stora kan de dessutom inte snabbt vidarebefordras runt i nätverket.
Som ett resultat av detta befinner vi oss i en sorts flaskhals. En blockkedja kan ses som tåg som avgår under bestämda intervaller. Det finns endast begränsade platser i varje vagn och för att få en biljett måste resenärerna buda för att garanteras en plats. Om alla försöker komma på tåget samtidigt blir priset högt. Om ett nätverk på samma sätt är fullt med väntande transaktioner krävs det att användarna betalar högre avgifter för att få deras transaktion inkluderad i rätt tid.
En lösning skulle kunna vara att göra vagnarna större. Detta skulle innebära fler platser, högre genomströmning och billigare biljettpriser. Men det finns ingen garanti för att platserna inte tar slut så som de en gång gjorde. Vagnarna kan inte breddas obegränsat, precis som block eller blocks gasgränser inte kan skalas oändligt. Det senare gör det dyrare för noderna att stanna kvar i nätverket, eftersom de kommer att behöva dyrare hårdvara för att förbli synkroniserade.
Ethereum-skaparen Vitalik Buterin myntade uttrycket skalbarhetstrilemmat för att beskriva den utmaning som blockkedjor står inför. Han teoretiserar att protokoll måste göra avvägningar mellan skalbarhet, säkerhet och decentralisering. Dessa är i strid med varandra – genom att fokusera för mycket på två av egenskaperna kommer den tredje att bli dålig.
Av denna anledning ser många skalbarhet som något som ska uppnås utanför kedjan, medan säkerhet och decentralisering bör maximeras på själva blockkedjan.
Vad är skalningslösningar utanför kedjan?
Skalning utanför kedjan avser tillvägagångssätt som gör det möjligt att genomföra transaktioner utan att göra blockkedjan för stor. Protokoll som ansluts till kedjan tillåter användarna att skicka och ta emot tillgångar utan att transaktionerna visas på huvudkedjan. Vi kommer att gå in på två av de mest anmärkningsvärda framstegen på denna front: sidokedjor och betalningskanaler.
En introduktion till sidokedjor
Vad är en sidokedja?
En sidokedja är en separat blockkedja. Den är dock inte en fristående plattform, eftersom den är knuten till huvudkedjan på något sätt. Huvudkedjan och sidokedjan är driftskompatibla, vilket innebär att tillgångar kan flöda fritt från den ena till den andra.
Det finns ett antal sätt att se till att tillgångar kan föras över. I vissa fall flyttas tillgångarna från huvudkedjan genom att deponeras på en särskild adress. De skickas inte riktigt över – istället är de låsta i adressen och ett matchande belopp utfärdas på sidokedjan. Ett enklare (om än centraliserat) alternativ är att skicka tillgångarna till en förvaltare som byter insättningen mot tillgångar på sidokedjan.
Hur fungerar en sidokedja?
Antag att vår vän Alice har fem bitcoin. Hon vill byta ut dem mot fem motsvarande enheter på en Bitcoin-sidokedja – låt oss kalla dem för sidecoin. Sidokedjan i fråga använder en tvåvägskoppling, vilket innebär att användare kan överföra sina tillgångar från huvudkedjan till sidokedjan och vice versa.
Kom ihåg att sidokedjan är en separat blockkedja. Så den kommer att ha olika block, noder och valideringsmekanismer. För att få sina sidecoin måste Alice skicka fem bitcoin till en annan adress. Den kan ägas av någon som sedan krediterar hennes sidokedjeadress med fem sidecoin när de får bitcoin. Alternativt kan den ha någon form av förtroendeminimerad installation där sidecoin automatiskt krediteras efter att programvaran upptäcker en betalning.
Alice har nu konverterat sina coin till sidecoin, men hon kan alltid vända processen för att återta sina bitcoin. Nu när hon har gått in på sidokedjan är hon fri att handla på denna separata blockkedja. Hon kan skicka sidocoin eller ta emot dem från andra, precis som hon skulle göra på huvudkedjan.
Hon kan till exempel betala Bob en sidecoin för en Binance-tröja. När hon vill återvända till Bitcoin kan hon skicka sina återstående fyra sidecoin till en speciell adress. Efter att transaktionen har bekräftats skulle fyra bitcoin låsas upp och levereras till en adress som hon kontrollerar på huvudkedjan.
Varför används sidokedjor?
Du kanske undrar vad poängen med detta är? Varför använder Alice inte bara Bitcoin-blockkedjan?
Svaret är att sidokedjan kan göra saker som Bitcoin inte kan. Blockkedjor är noggrant konstruerade system för avvägningar. Även om Bitcoin är den säkraste och decentraliserade kryptovalutan är den inte bäst när det gäller genomströmning. Även om Bitcoin-transaktioner är snabbare än konventionella metoder är de fortfarande relativt långsamma jämfört med andra blockkedjesystem. Block utvinns var tionde minut och avgifterna kan växa betydligt när nätverket är överbelastat.
Visserligen finns det förmodligen inget behov av denna säkerhetsnivå för små, dagliga betalningar. Om Alice betalar för en kopp kaffe kommer hon inte stå och vänta på att transaktionen ska bekräftas. Hon skulle stanna upp kön och hennes dryck skulle bli kall när den överlämnades.
Sidokedjor är inte bundna av samma regler. Faktum är att de inte ens behöver använda bevis på arbete för att fungera. Du kan använda vilken konsensusmekanism som helst, lita på en enda validerare eller justera valfritt antal parametrar. Du kan lägga till uppgraderingar som inte finns i huvudkedjan, producera större block och få igenom snabba avräkningar.
Intressant nog kan sidokedjor till och med ha kritiska buggar utan att påverka den underliggande kedjan. Detta gör att de kan användas som plattformar för experiment och för att introducera funktioner som annars skulle kräva konsensus från majoriteten av nätverket.
Förutsatt att användarna är nöjda med avvägningarna kan sidokedjor bli ett integrerat steg mot effektiv skalning. Det finns inget krav på huvudkedjans noder för att lagra varje transaktion från sidokedjan. Alice kunde komma in på sidokedjan med en enda Bitcoin-transaktion, utföra hundratals sidecoin-transaktioner och sedan lämna sidokedjan. När det gäller Bitcoin-blockkedjan har hon bara utfört två transaktioner – en för att komma in och en för att avsluta.
Ethereums Plasma är likartad, men har några stora skillnader. Läs mer om detta: Vad är Ethereum Plasma?
En introduktion till betalningskanaler
Vad är en betalningskanal?
Betalningskanaler tjänar samma syfte som sidokedjor på skalbarhetssidan, men de är i grunden väldigt olika. Liksom sidokedjor tar de bort transaktioner från huvudkedjan för att förhindra att blockkedjan blir för tung. Till skillnad från sidokedjor behöver de dock inte en separat blockkedja för att fungera.
En betalningskanal använder ett smart kontrakt för att göra det möjligt för användarna att handla utan att publicera sina transaktioner på blockkedjan. Den gör detta genom att använda ett mjukvarustyrt avtal mellan två deltagare.
Hur fungerar en betalningskanal?
I modeller som det populära Lightning-nätverket skulle två parter först sätta in coin på en adress som de gemensamt äger. Detta är en multisignaturadress som kräver två signaturer för att tillgångar ska kunna spenderas. Så om Alice och Bob skapar en sådan adress kan tillgångar bara flyttas genom ett samtycke mellan de båda.
Låt oss säga att de sätter in 10 BTC till en adress som nu har 20 BTC. Det skulle vara enkelt för dem att hålla en balansräkning som börjar med att säga att Alice och Bob båda har 10 BTC vardera. Om Alice vill ge Bob ett coin kan de uppdatera balansräkningen så att Alice har 9 BTC och Bob har 11 BTC. De skulle inte behöva publicera detta på blockkedjan eftersom de fortsätter att uppdatera dessa balanser.
Låt oss dock säga att Alice efter ett tag har 5 BTC och Bob har 15 BTC. De kan då skapa en transaktion som skickar dessa balanser till adresserna som ägs av parterna, underteckna den och skicka den.
Alice och Bob kunde ha registrerat tio, hundra eller tusen transaktioner i balansräkningen. Men när det gäller blockkedjan har de bara utfört två kedjeoperationer: en för den första finansieringstransaktionen och en för att omfördela balansen när de är klara. Bortsett från dessa två är alla andra transaktioner gratis och nästan omedelbara, eftersom de sker utanför kedjan. Det finns ingen mineravgift som ska betalas och inga blockbekräftelser att vänta på.
Naturligtvis kräver exemplet som diskuterats ovan att båda parter samarbetar, vilket inte är en idealisk situation för främlingar. Dock kan speciella mekanismer användas för att straffa alla försök att fuska, så att parterna kan interagera med varandra säkert och utan förtroende.
Betalningsrouting
Uppenbarligen är betalningskanaler lämpliga för två parter som förutser en hög transaktionsvolym. Men det blir bättre än så. Ett nätverk av dessa kanaler kan elimineras, vilket innebär att Alice kan betala en person som hon inte är direkt ansluten till. Om Bob har en kanal öppen med Carol, kan Alice betala henne förutsatt att det finns tillräckligt med kapacitet. Hon kommer att skicka tillgångarna till Bobs sida av kanalen, som i sin tur skickar dem vidare till Carols. Om Carol är ansluten till en annan deltagare, till exempel Dan, kan samma sak göras där.
Ett sådant nätverk utvecklas till en distribuerad topologi där alla ansluter till flera individer. Det kommer ofta att finnas flera rutter till en destination och användarna kommer att kunna välja den mest effektiva.
Sammanfattningsvis
Vi har diskuterat två skalbarhetsmetoder som gör det möjligt att göra transaktioner utan att belasta den underliggande blockkedjan. Både sidokedjo- och betalningskanalsteknologierna har ännu inte mognat, men de utnyttjas alltmer av användare som vill kringgå bristerna i baslagertransaktioner.
När fler och fler användare efter hand ansluter sig till nätverket är det viktigt att decentraliseringen upprätthålls. Detta kan endast uppnås genom att upprätthålla gränser för blockkedjans tillväxt, så att nya noder enkelt kan gå med. Förespråkare av skalbarhetslösningar utanför kedjan tror att huvudkedjan efter hand endast kommer att användas för att reglera transaktioner av högt värde, eller för att koppla in och ut från sidokedjor samt för att öppna och stänga kanaler.