Hvad er Sharding, og hvordan fungerer det?
Hjem
Artikler
Hvad er Sharding, og hvordan fungerer det?

Hvad er Sharding, og hvordan fungerer det?

Let øvet
Offentliggjort Dec 4, 2023Opdateret Jan 11, 2024
9m

TL;DR

  • Sharding opdeler en blockchain i mindre dele (shards) for at løse problemet med skalerbarhed i forbindelse med Layer 1-netværk.

  • Sharding forbedrer transaktionshastigheder, minimerer behandlings- og lageromkostninger og forbedrer netværksydelsen.

  • Sharding har dog også mulige ulemper, såsom netværkssikkerhedsproblemer og kompleksiteten af transaktioner på tværs af shards.

Introduktion

Blockchain-teknologien har introduceret et hidtil uset potentiale inden for decentralisering, gennemsigtighed og sikkerhed. Men den står over for en stor udfordring: skalerbarhed. Skalerbarhed er et punkt i "blockchain-trilemmaet," som også omfatter sikkerhed og decentralisering. At opnå alle tre på samme tid er et vedvarende problem i blockchain-verdenen. Det er her, strategiske løsninger som "Sharding" kommer ind i billedet.

Hvad er sharding?

Sharding er et begreb, der er lånt fra traditionel databasestyring. Det henviser til processen med at opdele en større database i mindre, mere håndterbare dele, kaldet shards. Dets anvendelse i blockchain har til formål at forbedre skalerbarheden, samtidig med at princippet om decentralisering opretholdes. I bund og grund sker Sharding, når et blockchain-netværk opdeles i mindre dele, kendt som shards, der hver især er i stand til at behandle transaktioner og smart contracts parallelt.

Hvordan fungerer Sharding?

For at forstå, hvordan Sharding udføres i et blockchain-netværk, er det nødvendigt at forstå, hvordan blockchain-data normalt lagres og behandles. Der er forskellige måder, data kan behandles på. Vi kommer til at se på sekventiel og parallel behandling.

Typisk er hver blockchain-node ansvarlig for at håndtere al transaktionsvolumen i netværket. Denne type databehandling kaldes almindeligvis sekventiel behandling. Det betyder, at hver node skal vedligeholde og gemme alle kritiske oplysninger, såsom kontosaldi og transaktionshistorik. I bund og grund skal hver node behandle alle netværksoperationer, data og transaktioner.

Selvom en sådan model styrker blockchainens sikkerhed ved at registrere alle transaktioner på tværs af alle noder, gør den behandlingen af data dramatisk langsommere. Det er her, parallel behandling af data kommer ind i billedet, da det gør det muligt at udføre flere operationer samtidigt.

Sharding kan være en effektiv løsning på dette problem, da det opdeler eller "partitionerer" transaktionsarbejdsbyrden på tværs af blockchain-netværket. Det betyder, at ikke alle noder behøver at håndtere eller behandle hele blockchainens belastning.

I stedet adskiller Sharding arbejdsbyrden gennem horisontal partitionering. I denne proces opdeles dataene i horisontale delmængder, hvor hver shard fungerer som en uafhængig database, der kan behandle transaktioner separat fra de andre. 

Horisontal vs. vertikal partitionering

Horisontal partitionering og vertikal partitionering er to vigtige tilgange til databaseskalering. Selvom begge er designet til at håndtere store datasæt mere effektivt, fungerer de på fundamentalt forskellige måder. Sharding er en almindelig metode til at implementere horisontal partitionering.

I horisontal partitionering opdeles dataene i rækker og spredes over forskellige noder (eller databaser), som hver indeholder en delmængde af dataene. Hver række i en tabel er en unik enhed, så at adskille dem fører ikke til tab af dataintegritet. Et fremtrædende eksempel på horisontal partitionering er i distributionen af blockchain-netværk, såsom Ethereum og Bitcoin.

Ved vertikal partitionering opdeles data i kolonner i stedet for rækker. Hver partition i vertikal partitionering indeholder et undersæt af data for hver enhed, eller hele datasættet, men kun for et bestemt sæt attributter. Tag f.eks. en kundetabel med kolonner som Navn, Status, Beskrivelse og Foto. I et vertikalt partitioneringsscenarie kan "Navn" og "Status" opbevares i én tabel, og "Beskrivelse" og "Foto" i en anden.

Hvorfor foretrækkes horisontal partitioning?

Horisontal partitionering foretrækkes generelt frem for vertikal partitionering i blockchain-netværk af tre hovedårsager: skalerbarhed, decentralisering og sikkerhed.

Skalerbarhed: Sharding giver en løsning ved at opdele data i mindre, mere håndterbare "shards". Hver shard kan fungere uafhængigt, så flere transaktioner kan behandles samtidigt, hvilket forbedrer netværkets hastighed og effektivitet. Hvorimod vertikal partitionering, hvor kolonnerne distribueres på tværs af forskellige databaser, kan gøre det mere komplekst at hente en komplet transaktion eller blokinformation, hvilket kan begrænse skalerbarheden.

Decentralisering: I tråd med blockchains grundlæggende etos understøtter horisontal partitionering decentralisering. Når noder kun skal behandle en del af de samlede data (en shard), giver det mulighed for, at flere noder kan deltage i netværket, da beregnings- og lagringsbyrden reduceres. Vertikal partitionering ville til sammenligning begrænse dette, da hver node ville have brug for adgang til alle partitioner (alle datakolonner) for at forstå og verificere de komplette blokdata.

Sikkerhed og dataintegritet: Horisontal partitionering opretholder dataintegriteten, fordi hver shard (eller partition) indeholder komplette transaktionsdata, hvilket sikrer, at hver node har en fuld, nøjagtig kopi af sin del af blockchainen. Ved vertikal partitionering opdeler man en bloks data på forskellige noder, hvilket gør det vanskeligt at sikre dataintegritet og -sikkerhed, som er et afgørende aspekt ved blockchain-netværk.

Hvad er fordelene ved Sharding?

Lad os dykke ned i de potentielle fordele, som Sharding bringer til blockchain-teknologien:

Øget transaktionshastighed: Sharding muliggør parallel behandling af transaktioner. I stedet for at behandle transaktioner én efter én på en sekventiel måde, gør Sharding det muligt at behandle transaktioner samtidigt, men på forskellige shards. Hver shard arbejder uafhængigt, hvilket øger transaktionshastigheden betydeligt. Det øger ikke kun transaktionshastigheden, men betyder også, at hele netværket kan håndtere flere brugere, hvilket fremmer masseadoption.

Et eksempel på et eksisterende blockchain-netværk, der bruger shards til at håndtere skalerbarhed, er Ziliqa. Ziliqas Sharding-mekanisme gør det muligt at opnå tusindvis af transaktioner i sekundet.

Minimerede omkostninger til behandling og lagring: Det konventionelle blockchain-design forpligter hver node til at gemme alle transaktioner, hvilket øger kravene til hardware, efterhånden som blockchainen vokser. Men med Sharding er hver node kun ansvarlig for behandling og lagring af en brøkdel af hele netværkets data – det reducerer de ressourcer, der er nødvendige for, at en node kan deltage i netværket.

På den måde kan flere deltagere deltage som validatorer, hvilket øger netværkets decentralisering uden at pådrage sig uoverkommelige omkostninger. Det afbøder problemer, hvor kun enheder med avancerede, dyre computerressourcer realistisk set kan deltage i processen, og opretholder dermed blockchain-netværkets demokratiserede karakter.

Forbedret netværksydelse: Sharding kan være med til at forbedre netværkets generelle ydeevne og kapacitet. I de traditionelle blockchains falder ydelsen paradoksalt nok, jo flere noder der deltager i netværket, på grund af behovet for øget datakommunikation og synkronisering mellem noderne.

Men Sharding ændrer dette scenarie. Da hver shard arbejder separat og samtidigt, kan systemet behandle flere transaktioner og beregninger. Når en ny node tilsluttes, kan den føjes til en shard i stedet for hele netværket, hvilket forbedrer netværkets skaleringskapacitet. Effektiviteten forbedres, hvilket fører til smidigere transaktioner og en bedre brugeroplevelse.

Husk, at fremtidige fremskridt og forbedringer i sharding-teknologien kan skabe andre fordele eller styrke de eksisterende, så blockchain-økosystemet hele tiden forbedres.

Hvad er begrænsningerne ved Sharding?

Selvom Sharding giver flere potentielle fordele, der kan hjælpe blockchain-netværk med at blive mere effektive, introducerer processen også et unikt sæt af udfordringer. Nogle af de potentielle sårbarheder, som Sharding introducerer, inkluderer: 

Overtagelsesangreb på en enkelt shard: I et Sharding-miljø er regnekraften til at overtage et enkelt shard dramatisk mindre end den kraft, der kræves for at overtage hele netværket. Det gør disse individuelle shards mere sårbare over for et "one-percent attack" eller "shard takeover" – hvor en angriber med en lille mængde ressourcer sammenlignet med hele netværket potentielt kan overtage en individuel shard.

Transaktioner på tværs af shards: Transaktioner, der sker på tværs af forskellige shards (cross-shard), udgør en unik udfordring. Transaktioner på tværs af shards er komplekse og kan potentielt føre til dobbeltforbrug, hvis de ikke styres omhyggeligt. Hvis en shard ikke nøjagtigt sporer tilstanden af den anden shard under en transaktion, kan brugere udnytte dette til at "double spend".

Problemer med datatilgængelighed: Sharding gør det til en kompliceret opgave at vedligeholde hele netværkstilstanden. Hvis visse shards ikke er tilgængelige, når det er nødvendigt (fordi de noder, der vedligeholder disse shards, er offline), kan det føre til problemer med datatilgængelighed og forstyrre hele netværket.

Netværkssikkerhed: Sharding kræver implementering af en robust protokol, der afbalancerer belastningen mellem shards. Hvis det ikke gøres korrekt, kan det føre til ujævn fordeling af data eller ubalance i ressourcerne, hvilket kan resultere i ustabilitet i netværket.

Node-synkronisering: Node-synkronisering kan forårsage netværksforsinkelser på grund af den tid, det tager at dele og opdatere information på tværs af forskellige noder. Hvis en node med langsommere processorkapacitet eller netværksforbindelse sakker bagud, kan det desuden forsinke hele synkroniseringsprocessen og reducere blockchain-netværkets samlede ydeevne.

Er Sharding implementeret på Ethereum?

Ethereum har planer om at implementere Sharding som en del af deres Ethereum 2.0-opgradering. Ethereum 2.0, også kendt som Eth2 eller Serenity, er en opgradering af Ethereum-blockchainen, der har til formål at forbedre netværkets hastighed, effektivitet og skalerbarhed, så det kan behandle flere transaktioner og lette overbelastning.

Lige nu implementeres opgraderingen i faser, hvor den sidste fase (fase 2) omfatter den fulde implementering af sharding. Ethereum-udviklerne håber, at disse forbedringer vil løse nogle af de nuværende udfordringer med skalerbarhed og transaktionsomkostninger, som netværket står over for.

Det er dog vigtigt at bemærke, at implementeringen af sharding kommer med sit eget sæt af udfordringer, især når det gælder om at opretholde sikkerheden og decentraliseringen af netværket. Derfor lægger Ethereum-udviklerne mange tanker og omfattende tests i denne overgang for at sikre, at opgraderingen bliver en succes, når den er fuldt implementeret.

Sammenfatning

Samlet set repræsenterer sharding et bemærkelsesværdigt fremskridt i retning af at løse blockchain-trilemmaet. Selvom det introducerer nye kompleksiteter og mulige ulemper, er dets potentiale for at øge skalerbarheden uden at gå på kompromis med decentraliseringen enormt lovende for fremtiden for blockchain-netværk.

Det er ikke underligt, at forskellige blockchains undersøger Sharding som en potentiel løsning. Ethereum integrerer Sharding som en del af Ethereum 2.0-opgraderingen for at løse problemer med skalerbarhed. Denne implementering forventes at finde sted gennem The Cancun upgrade, som er en vigtig del af den overordnede forbedringsplan. Ikke desto mindre vil succes, som med enhver anden teknologi i udvikling, afhænge af løbende forskning, udvikling og grundig afprøvning af Sharding-implementeringer.

Yderligere læsning

Ansvarsfraskrivelse: Dette indhold præsenteres for dig, "som det er", udelukkende til generel information og uddannelsesmæssige formål, uden nogen form for repræsentation eller garanti. Det skal ikke opfattes som finansiel, juridisk eller anden professionel rådgivning, og det er heller ikke hensigten at anbefale køb af et bestemt produkt eller en bestemt tjeneste. Du bør søge din egen rådgivning hos relevante professionelle rådgivere. Hvis artiklen er skrevet af en tredjepart, skal du være opmærksom på, at de synspunkter, der kommer til udtryk, tilhører den pågældende tredjepart og ikke nødvendigvis afspejler Binance Academy. Læs vores fulde ansvarsfraskrivelse her for yderligere oplysninger. Priserne på digitale aktiver kan være ustabile. Værdien af din investering kan falde eller stige, og det er ikke sikkert, at du får det investerede beløb tilbage. Du er eneansvarlig for dine investeringsbeslutninger, og Binance Academy er ikke ansvarlig for eventuelle tab, du måtte pådrage dig. Dette materiale skal ikke opfattes som finansiel, juridisk eller anden professionel rådgivning. For yderligere oplysninger kan du læse vores vilkår for anvendelse og risikoadvarsel.