Sharding är inte ett unikt begrepp inom blockkedjor då denna typ av arkitektur länge används för att öka effektiviteten på stora databaser. Det är även genom att jämföra hur sharding används till detta ändamål som det blir lättare att förstå hur tekniken används inom blockkedjor.
Problemet – Överbelastning
En databas som ska hantera ett stort, och ökat antal, förfrågningar och transaktioner kommer till slut att få en långsam svarstid. Databasen blir helt enkelt överbelastad och användarvänligheten minskar.
Lösning – Sharding
En lösning är att dela upp databasen i flera mindre sammankopplade databaser. Därmed kan varje enskild databas hantera specifika förfrågningar utan att hela databasen belastas med dessa. Kravspecifikationerna på den hårdvara som används blir därmed även lägre vilket innebär att lösningen både är fördelaktig utifrån ett ekonomiskt, tekniskt och användarvänligt perspektiv.
Sharding på blockkedjan
I likhet med databasen, som beskrivs ovan, kan en blockkedja (decentraliserad databas) bli överbelastad vid för många transaktioner. Det kan exempelvis resultera i att transaktionerna tar längre tid att få igenom och att transaktionskostnaden ökar. Ett tydligt exempel på detta är Ethereum där transaktionskostnaden för en swap (växling mellan två token) inte sällan ligger på över 10 USD.
Lösning – Sharding
Målet med sharding, på en blockkedja, är att underlätta för blockkedjan att ”skala upp” och hantera flera transaktioner. Det är därmed en skalningslösning likt sidechains och layer-2 solutions även om tekniken för att uppnå denna skalningsfunktion skiljer sig åt mot de övriga lösningarna.
Grupper av noder
I detta fall delas blockkedjans noder upp till mindre grupper (shards). Noderna inom varje shard kommer därmed bara hantera och spara information som är relaterat till denna shard. Detta till skillnad mot en blockkedja som inte använder denna teknik där noderna behöver spara all transaktionshistorik.
Den information som noderna har tillgång till kan delas med, och kontrolleras av, andra noder. Det är därmed enbart själva bearbetningen av transaktionen, och var informationen sparas, som skiljer dem mot varandra. Vilka transaktioner som bearbetas beror på hur shardingtekniken används på den specifika blockkedjan. Det kan exempelvis innebära att en shard bearbetar transaktioner för utvalda blockkedjeadresser eller att den bearbetar transaktioner av en specifik typ.
När noderna har bearbetat transaktionerna skickas informationen till en huvudkedja, även kallad coordination layer. Denna kedja kontrollerar att beräkningen är korrekt, utan att behöva bearbeta all data, och publicerar informationen.
Risken – Decentralisering och attack
Den primära risken med sharding brukar anges vara minskad decentralisering och ökad risk för att oärliga aktörer tar över kedjan. Detta genom att de tar kontroll över tillräckligt många noder inom en shard.
På exempelvis Bitcoin krävs en 51% attack för att någon ska kunna ta över blockkedjan. Med andra ord att någon lyckas ta över blockkedjan till minst 51%. Men om en blockkedja är uppdelad i exempelvis 50 mindre shards kommer varje shard bara motsvara 2% av totala kedjan. Med andra ord kan oärliga aktörer lättare ta kontrollen över en shard och på detta sätt påverka hela huvudkedjan.
För att minska denna risk finns däremot flera säkerhetsfunktioner. Ett exempel är att det kan finnas en algoritm som slumpmässigt avgör vilka noder som ska tillhöra vilken shard samt när detta ska bytas. På detta sätt är en nod inte konstant knuten, och ansvarig för, en viss shard.
Ethereum och sharding
Ethereum introducerade sharding i och med att blockkedjan gick över från PoW till PoS. Varje shard publicerar färdiga transaktioner på Beacon Chain som därmed är ”huvudkedjan”.
I Ethereums roadmap framgår det däremot att utvecklarna inte tror att sharding kommer bli den primära skalningslösningen för Ethereum. Efter övergången till PoS var det många som trodde att sharding skulle utvecklas vidare men andra skalningslösningar har vuxit snabbare. Det anges exempelvis att ”layer 2 rollups have developed much faster then expected and have provided a lot of scaling already…” Dessa tekniska lösningar förväntas även få ytterligare effekt i framtiden, efter att Danksharding har implementerats. Det innebär att ”shard chains are no longer needed and have been dropped from the roadmap”. (Ethereum.org)
Danksharding är ett lite missvisande namn då det inte handlar om sharding i den form som presenteras ovan.
Neither Danksharding nor Proto-Danksharding follow the traditional "sharding" model that aimed to split the blockchain into multiple parts. Shard chains are no longer part of the roadmap. Instead, Danksharding uses distributed data sampling across blobs to scale Ethereum. (Ethereum.org)
Som nämndes i början av artikeln är målet med sharding att skala upp en blockkedja så att transaktionerna lättare och snabbare ska kunna bearbetas. Utöver sharding nås liknande resultat med exempelvis sidechains och olika layer-2 lösningar. I hur stor omfattning som sharding kommer att användas beror därmed delvis på utvecklingen av dessa andra tekniska lösningar. Det visar inte minst utvecklingen på Ethereum där den ursprungliga idén med sharding förväntas ersattas med andra alternativ.