Wat is sharden? Dit Ethereum-schaalconcept uitgelegd
Terwijl het schaaldebat in cryptocurrencies voortduurt, zijn sommige potentiële oplossingen al geruime tijd in ontwikkeling.
Met name in het geval van Ethereum, waar een grote nadruk wordt gelegd op decentralisatie en beveiliging ten koste van schaalbaarheid, wordt de toepassing van sharding in combinatie met het implementeren van Proof of Stake-consensus gezien als het broodnodige mechanisme waarmee het netwerk kan schalen naar praktische niveaus voor toepassingen met behoud van de decentralisatie en veiligheid.
Sharding is een complex onderwerp, vooral wanneer het wordt toegepast op een gedecentraliseerd, peer-to-peer netwerk zoals Ethereum, waar de wereldwijde status van het netwerk voortdurend wordt bijgewerkt.
Dus wat is sharding precies en hoe kan het blockchain-netwerken helpen opschalen?
Sharding en gedistribueerde computerachtergrond
Inhoud
1 Sharding en gedistribueerde computerachtergrond
2 Ethereum-sharding
3 Hoe werkt sharding in blockchains?
3.1 Koptekst
3.2 Lichaam
4 Sharding Vooruit
5. Conclusie
Sharding is eigenlijk veel ouder dan blockchain-technologie en is geïmplementeerd in verschillende systemen, van optimalisaties van bedrijfsdatabases tot de wereldwijde Spanner-database van Google.
In wezen is sharding een bepaalde methode voor het horizontaal partitioneren van gegevens binnen een database.
Meer in het algemeen wordt de database opgedeeld in kleine stukjes die "scherven" worden genoemd en die, wanneer ze worden samengevoegd, de oorspronkelijke database vormen.
In gedistribueerde blockchain-netwerken bestaat het netwerk uit een reeks knooppunten die zijn verbonden in een peer-to-peer-indeling, zonder centrale autoriteit.
Zoals het geval is met de huidige blockchain-systemen, slaat elk knooppunt alle statussen van het netwerk op en verwerkt het alle transacties.
Hoewel dit de beveiliging op hoog niveau biedt door middel van decentralisatie, vooral in Proof of Work-systemen zoals Bitcoin en Ethereum, leidt het tot legitieme schaalproblemen.
Ethereum Sharding
Met Ethereum als voorbeeld, slaat een volledig knooppunt in het Ethereum-netwerk de volledige status van de blockchain op, inclusief rekeningsaldi, opslag en contractcode.
Helaas, aangezien het netwerk in een exponentieel tempo in omvang toeneemt, neemt de consensus alleen maar lineair toe. Deze beperking is te wijten aan de communicatie die nodig is tussen de knooppunten die nodig zijn om consensus te bereiken.
Nodes in het netwerk hebben geen speciale privileges en elke node in het netwerk slaat elke transactie op en verwerkt deze. Als gevolg hiervan worden in een netwerk ter grootte van Ethereum's problemen zoals hoge gaskosten en langere transactiebevestigingstijden merkbare problemen wanneer het netwerk onder spanning staat. Het netwerk is slechts zo snel als de afzonderlijke knooppunten in plaats van de som der delen.
Sharding helpt deze problemen te verlichten door een interessante, maar complexe oplossing te bieden. Het concept omvat het groeperen van subsets van knooppunten in shards die op hun beurt transacties verwerken die specifiek zijn voor die shard. Hierdoor kan het systeem veel transacties parallel verwerken, waardoor de doorvoer aanzienlijk wordt verhoogd.
Een eenvoudigere manier om het uit te drukken zou zijn om je de verdeling van de Verenigde Staten in staten voor te stellen.
Hoewel elke staat (in dit geval een scherf) deel uitmaakt van de grotere Verenigde Staten (Ethereum-netwerk), hebben ze hun eigen specifieke regels, grenzen en subsets van populaties. Ze delen echter wel een universele taal en cultuur als onderdeel van hun grotere netwerk dat het land vormt.
Of nog beter, in Vitalik Buterins eigen woorden:
“Stel je voor dat Ethereum is opgesplitst in duizenden eilanden. Elk eiland kan zijn eigen ding doen. Elk van de eilanden heeft zijn eigen unieke kenmerken en iedereen die op dat eiland behoort, d.w.z. de accounts, kan met elkaar communiceren EN ze kunnen vrijelijk genieten van al zijn functies. Als ze contact willen opnemen met andere eilanden, zullen ze een soort protocol moeten gebruiken.”
Zoals u kunt zien, stelt het concept van het opsplitsen van het netwerk in efficiëntere stukken het netwerk in staat te functioneren als de som van zijn delen, in plaats van te worden beperkt door de snelheid van elk afzonderlijk knooppunt.
Hoe werkt sharding in blockchains?
We zullen Ethereum hierin als voorbeeld blijven gebruiken, omdat het de meest bekende en moeilijkste sharding-pogingen zijn in de blockchain-arena, aangezien de Ethereum-ontwikkelaars implementeren wat bekend staat als "state sharding".
De huidige staat van de Ethereum-blockchain staat bekend als de "global state" en is wat iedereen kan zien als ze naar de blockchain kijken bij een specifieke instantie.
Het lastige bij het implementeren van sharding in Ethereum is dat door de knooppunten in kleinere subsets te sharden, deze subsets in staat moeten zijn om specifieke sets transacties te verwerken en tegelijkertijd de status van het netwerk bij te werken, terwijl ze ervoor zorgen dat het geldig is.
Sharding in Ethereum wordt verondersteld te worden geïmplementeerd in een uitrol in twee fasen, meer dan waarschijnlijk nadat Proof of Stake in het netwerk is geïmplementeerd. Fase één is de gegevenslaag die bestaat uit de consensus over welke gegevens zich in de scherven bevinden. Fase twee is de staatslaag. Dit is allemaal erg vloeiend, dus hieronder staat een algemeen overzicht van hoe het kan werken.
Ethereum splitst het netwerk op in specifieke scherven. Elke shard krijgt een specifieke groep transacties toegewezen die wordt bepaald door specifieke accounts (inclusief slimme contracten) in een shard te groeperen. Elke transactiegroep heeft een koptekst en een hoofdtekst die uit het volgende bestaat.
koptekst
De shard-ID van de transactiegroep
Toewijzing van validators door middel van willekeurige steekproeven (verifieer de transacties in de shard)
State Root (status van de merkle-wortel van de scherf voor en na toegevoegde transacties)
Lichaam
Alle transacties die tot de transactiegroep behoren en deel uitmaken van de specifieke shard.
Transacties zijn specifiek voor elke shard en vinden plaats tussen accounts die eigen zijn aan die shard.
Wanneer transacties worden geverifieerd, verandert de status van het netwerk en worden rekeningsaldi, opslag, enz. bijgewerkt. Om ervoor te zorgen dat de transactiegroep als geldig wordt geverifieerd, moet de pre-state root van de transactiegroep overeenkomen met de Shard-root in de globale status. Als ze overeenkomen, wordt de transactiegroep gevalideerd en wordt de globale status bijgewerkt via de specifieke shard-ID-statusroot.
In plaats van alleen een statuswortel te bevatten, bevat elk blok van de Ethereum-blockchain nu zowel een statuswortel als de transactiegroepwortel. De transactiegroeproot is de merkle-root van alle transactiegroepen van de specifieke shards voor dat transactieblok.
Kortom, er is een merkle-root van alle verschillende shards die de bijgewerkte en geverifieerde transactiegroepen bevatten. Deze root wordt samen met de bijgewerkte statusroot in de blockchain opgeslagen.
Het gebruik van merkle tree-concepten in deze structuur is van vitaal belang om de geldigheid van de blockchain te waarborgen. Als u begrijpt hoe een merkle-boom en in het bijzonder een merkle-wortel werkt, kunt u deze concepten veel gemakkelijker begrijpen.
Lezen: Wat is een Merkle Tree?
Consensus binnen een scherf wordt bereikt via een Proof of Stake-consensus van willekeurig geselecteerde knooppunten die worden toegepast op een scherf voor een specifieke consensusronde.
Dit geeft niet alleen finaliteit aan de consensus, die nodig is binnen de shards, maar biedt ook een specifieke verdediging tegen een aanval waar een Proof of Work-blockchain in dit geval vatbaar voor zou zijn.
De hashkracht die nodig is om een specifieke shard in een PoW-sharded netwerk te overrompelen, wordt drastisch verminderd en de mogelijkheid voor een kwaadwillende actor om een shard over te nemen door middel van rekenkracht is haalbaar.
Hierdoor kan de slechte actor andere shards aanvallen via het communicatieprotocol, dat een van de meer gecompliceerde en belangrijke kenmerken van sharding-architectuur is. Willekeurige steekproefselectie van de validators binnen een shard slaagt erin om dit type aanval te onderdrukken, omdat een slechte actor niet weet in welke shard ze worden geplaatst voordat ze er daadwerkelijk in worden geplaatst.
Verder zal willekeurige steekproeven worden gebruikt om de validators te selecteren die daadwerkelijk valideren uit die willekeurige valideringsset.
Het communicatieprotocol is essentieel voor het correct functioneren van de sharding-architectuur in het systeem. Je kunt het communicatieprotocol zien als de universele taal die consistent is tussen de staten als onderdeel van de grotere Verenigde Staten.
Het ontwerpen van dit protocol is echter een grote uitdaging en moet zo worden uitgevoerd dat het alleen wordt gebruikt wanneer dat nodig is. Het wordt noodzakelijk wanneer een specifiek knooppunt informatie nodig heeft die niet in zijn eigen shard is opgeslagen en de shard met de vereiste informatie moet vinden. Deze communicatie staat bekend als cross-shard-communicatie.
De cross-shard-communicatie wordt bereikt door het concept van transactiebonnen toe te passen. Het ontvangstbewijs voor een transactie wordt opgeslagen in een merkle-wortel die gemakkelijk kan worden geverifieerd, maar die geen deel uitmaakt van de staatswortel.
De scherf die een transactie van een andere scherf ontvangt, controleert de merkle-root om er zeker van te zijn dat de bon niet is uitgegeven. In wezen worden de bonnen opgeslagen in een gedeeld geheugen dat door andere shards kan worden geverifieerd, maar niet kan worden gewijzigd. Door een gedistribueerde opslag van bonnen kunnen shards daarom met elkaar communiceren.
Sharding gaat vooruit
Sharding in Ethereum zal naar verwachting worden geïmplementeerd na de Casper PoS-upgrade. Onlangs zijn er enkele ontwikkelingen geweest met betrekking tot Ethereum 2.0, waarbij zowel Casper als sharding worden geïmplementeerd.
Sharding is ook geïmplementeerd in een paar andere platforms, met name Zilliqa. Zilliqa implementeert op dit moment echter geen state-sharding en richt zich in plaats daarvan op het bieden van een blockchain met hoge doorvoer door gebruik te maken van transactie- en computationele sharding.
Lees onze gids voor Zilliqa
Conclusie
Sharding biedt op dit moment een aantal veelbelovende oplossingen voor de olifant in de kamer van blockchain-platforms, schaalbaarheid.
Hoewel het bliksemnetwerk van Bitcoin zich in de testfase bevindt en tot nu toe veelbelovende vooruitgang heeft geboekt, brengt de oplossing van Ethereum enkele unieke uitdagingen met zich mee, aangezien het is gekoppeld aan een wereldcomputer die Turing compleet is.
Sharding werkt alleen rechtstreeks op protocolniveau, dus voor de eindgebruiker of dapp-ontwikkelaar is het misschien niet noodzakelijk relevant om over te leren.
Hoe dan ook, de poging van Ethereum om state sharding te maken voor een enorm, gedecentraliseerd netwerk is een indrukwekkende onderneming en zal een enorme prestatie zijn als het met succes wordt geïmplementeerd.
Met name in het geval van Ethereum, waar een grote nadruk wordt gelegd op decentralisatie en beveiliging ten koste van schaalbaarheid, wordt de toepassing van sharding in combinatie met het implementeren van Proof of Stake-consensus gezien als het broodnodige mechanisme waarmee het netwerk kan schalen naar praktische niveaus voor toepassingen met behoud van de decentralisatie en veiligheid.
Sharding is een complex onderwerp, vooral wanneer het wordt toegepast op een gedecentraliseerd, peer-to-peer netwerk zoals Ethereum, waar de wereldwijde status van het netwerk voortdurend wordt bijgewerkt.
Dus wat is sharding precies en hoe kan het blockchain-netwerken helpen opschalen?
Sharding en gedistribueerde computerachtergrond
Inhoud
1 Sharding en gedistribueerde computerachtergrond
2 Ethereum-sharding
3 Hoe werkt sharding in blockchains?
3.1 Koptekst
3.2 Lichaam
4 Sharding Vooruit
5. Conclusie
Sharding is eigenlijk veel ouder dan blockchain-technologie en is geïmplementeerd in verschillende systemen, van optimalisaties van bedrijfsdatabases tot de wereldwijde Spanner-database van Google.
In wezen is sharding een bepaalde methode voor het horizontaal partitioneren van gegevens binnen een database.
Meer in het algemeen wordt de database opgedeeld in kleine stukjes die "scherven" worden genoemd en die, wanneer ze worden samengevoegd, de oorspronkelijke database vormen.
In gedistribueerde blockchain-netwerken bestaat het netwerk uit een reeks knooppunten die zijn verbonden in een peer-to-peer-indeling, zonder centrale autoriteit.
Zoals het geval is met de huidige blockchain-systemen, slaat elk knooppunt alle statussen van het netwerk op en verwerkt het alle transacties.
Hoewel dit de beveiliging op hoog niveau biedt door middel van decentralisatie, vooral in Proof of Work-systemen zoals Bitcoin en Ethereum, leidt het tot legitieme schaalproblemen.
Ethereum Sharding
Met Ethereum als voorbeeld, slaat een volledig knooppunt in het Ethereum-netwerk de volledige status van de blockchain op, inclusief rekeningsaldi, opslag en contractcode.
Helaas, aangezien het netwerk in een exponentieel tempo in omvang toeneemt, neemt de consensus alleen maar lineair toe. Deze beperking is te wijten aan de communicatie die nodig is tussen de knooppunten die nodig zijn om consensus te bereiken.
Nodes in het netwerk hebben geen speciale privileges en elke node in het netwerk slaat elke transactie op en verwerkt deze. Als gevolg hiervan worden in een netwerk ter grootte van Ethereum's problemen zoals hoge gaskosten en langere transactiebevestigingstijden merkbare problemen wanneer het netwerk onder spanning staat. Het netwerk is slechts zo snel als de afzonderlijke knooppunten in plaats van de som der delen.
Sharding helpt deze problemen te verlichten door een interessante, maar complexe oplossing te bieden. Het concept omvat het groeperen van subsets van knooppunten in shards die op hun beurt transacties verwerken die specifiek zijn voor die shard. Hierdoor kan het systeem veel transacties parallel verwerken, waardoor de doorvoer aanzienlijk wordt verhoogd.
Een eenvoudigere manier om het uit te drukken zou zijn om je de verdeling van de Verenigde Staten in staten voor te stellen.
Hoewel elke staat (in dit geval een scherf) deel uitmaakt van de grotere Verenigde Staten (Ethereum-netwerk), hebben ze hun eigen specifieke regels, grenzen en subsets van populaties. Ze delen echter wel een universele taal en cultuur als onderdeel van hun grotere netwerk dat het land vormt.
Of nog beter, in Vitalik Buterins eigen woorden:
“Stel je voor dat Ethereum is opgesplitst in duizenden eilanden. Elk eiland kan zijn eigen ding doen. Elk van de eilanden heeft zijn eigen unieke kenmerken en iedereen die op dat eiland behoort, d.w.z. de accounts, kan met elkaar communiceren EN ze kunnen vrijelijk genieten van al zijn functies. Als ze contact willen opnemen met andere eilanden, zullen ze een soort protocol moeten gebruiken.”
Zoals u kunt zien, stelt het concept van het opsplitsen van het netwerk in efficiëntere stukken het netwerk in staat te functioneren als de som van zijn delen, in plaats van te worden beperkt door de snelheid van elk afzonderlijk knooppunt.
Hoe werkt sharding in blockchains?
We zullen Ethereum hierin als voorbeeld blijven gebruiken, omdat het de meest bekende en moeilijkste sharding-pogingen zijn in de blockchain-arena, aangezien de Ethereum-ontwikkelaars implementeren wat bekend staat als "state sharding".
De huidige staat van de Ethereum-blockchain staat bekend als de "global state" en is wat iedereen kan zien als ze naar de blockchain kijken bij een specifieke instantie.
Het lastige bij het implementeren van sharding in Ethereum is dat door de knooppunten in kleinere subsets te sharden, deze subsets in staat moeten zijn om specifieke sets transacties te verwerken en tegelijkertijd de status van het netwerk bij te werken, terwijl ze ervoor zorgen dat het geldig is.
Sharding in Ethereum wordt verondersteld te worden geïmplementeerd in een uitrol in twee fasen, meer dan waarschijnlijk nadat Proof of Stake in het netwerk is geïmplementeerd. Fase één is de gegevenslaag die bestaat uit de consensus over welke gegevens zich in de scherven bevinden. Fase twee is de staatslaag. Dit is allemaal erg vloeiend, dus hieronder staat een algemeen overzicht van hoe het kan werken.
Ethereum splitst het netwerk op in specifieke scherven. Elke shard krijgt een specifieke groep transacties toegewezen die wordt bepaald door specifieke accounts (inclusief slimme contracten) in een shard te groeperen. Elke transactiegroep heeft een koptekst en een hoofdtekst die uit het volgende bestaat.
koptekst
De shard-ID van de transactiegroep
Toewijzing van validators door middel van willekeurige steekproeven (verifieer de transacties in de shard)
State Root (status van de merkle-wortel van de scherf voor en na toegevoegde transacties)
Lichaam
Alle transacties die tot de transactiegroep behoren en deel uitmaken van de specifieke shard.
Transacties zijn specifiek voor elke shard en vinden plaats tussen accounts die eigen zijn aan die shard.
Wanneer transacties worden geverifieerd, verandert de status van het netwerk en worden rekeningsaldi, opslag, enz. bijgewerkt. Om ervoor te zorgen dat de transactiegroep als geldig wordt geverifieerd, moet de pre-state root van de transactiegroep overeenkomen met de Shard-root in de globale status. Als ze overeenkomen, wordt de transactiegroep gevalideerd en wordt de globale status bijgewerkt via de specifieke shard-ID-statusroot.
In plaats van alleen een statuswortel te bevatten, bevat elk blok van de Ethereum-blockchain nu zowel een statuswortel als de transactiegroepwortel. De transactiegroeproot is de merkle-root van alle transactiegroepen van de specifieke shards voor dat transactieblok.
Kortom, er is een merkle-root van alle verschillende shards die de bijgewerkte en geverifieerde transactiegroepen bevatten. Deze root wordt samen met de bijgewerkte statusroot in de blockchain opgeslagen.
Het gebruik van merkle tree-concepten in deze structuur is van vitaal belang om de geldigheid van de blockchain te waarborgen. Als u begrijpt hoe een merkle-boom en in het bijzonder een merkle-wortel werkt, kunt u deze concepten veel gemakkelijker begrijpen.
Lezen: Wat is een Merkle Tree?
Consensus binnen een scherf wordt bereikt via een Proof of Stake-consensus van willekeurig geselecteerde knooppunten die worden toegepast op een scherf voor een specifieke consensusronde.
Dit geeft niet alleen finaliteit aan de consensus, die nodig is binnen de shards, maar biedt ook een specifieke verdediging tegen een aanval waar een Proof of Work-blockchain in dit geval vatbaar voor zou zijn.
De hashkracht die nodig is om een specifieke shard in een PoW-sharded netwerk te overrompelen, wordt drastisch verminderd en de mogelijkheid voor een kwaadwillende actor om een shard over te nemen door middel van rekenkracht is haalbaar.
Hierdoor kan de slechte actor andere shards aanvallen via het communicatieprotocol, dat een van de meer gecompliceerde en belangrijke kenmerken van sharding-architectuur is. Willekeurige steekproefselectie van de validators binnen een shard slaagt erin om dit type aanval te onderdrukken, omdat een slechte actor niet weet in welke shard ze worden geplaatst voordat ze er daadwerkelijk in worden geplaatst.
Verder zal willekeurige steekproeven worden gebruikt om de validators te selecteren die daadwerkelijk valideren uit die willekeurige valideringsset.
Het communicatieprotocol is essentieel voor het correct functioneren van de sharding-architectuur in het systeem. Je kunt het communicatieprotocol zien als de universele taal die consistent is tussen de staten als onderdeel van de grotere Verenigde Staten.
Het ontwerpen van dit protocol is echter een grote uitdaging en moet zo worden uitgevoerd dat het alleen wordt gebruikt wanneer dat nodig is. Het wordt noodzakelijk wanneer een specifiek knooppunt informatie nodig heeft die niet in zijn eigen shard is opgeslagen en de shard met de vereiste informatie moet vinden. Deze communicatie staat bekend als cross-shard-communicatie.
De cross-shard-communicatie wordt bereikt door het concept van transactiebonnen toe te passen. Het ontvangstbewijs voor een transactie wordt opgeslagen in een merkle-wortel die gemakkelijk kan worden geverifieerd, maar die geen deel uitmaakt van de staatswortel.
De scherf die een transactie van een andere scherf ontvangt, controleert de merkle-root om er zeker van te zijn dat de bon niet is uitgegeven. In wezen worden de bonnen opgeslagen in een gedeeld geheugen dat door andere shards kan worden geverifieerd, maar niet kan worden gewijzigd. Door een gedistribueerde opslag van bonnen kunnen shards daarom met elkaar communiceren.
Sharding gaat vooruit
Sharding in Ethereum zal naar verwachting worden geïmplementeerd na de Casper PoS-upgrade. Onlangs zijn er enkele ontwikkelingen geweest met betrekking tot Ethereum 2.0, waarbij zowel Casper als sharding worden geïmplementeerd.
Sharding is ook geïmplementeerd in een paar andere platforms, met name Zilliqa. Zilliqa implementeert op dit moment echter geen state-sharding en richt zich in plaats daarvan op het bieden van een blockchain met hoge doorvoer door gebruik te maken van transactie- en computationele sharding.
Lees onze gids voor Zilliqa
Conclusie
Sharding biedt op dit moment een aantal veelbelovende oplossingen voor de olifant in de kamer van blockchain-platforms, schaalbaarheid.
Hoewel het bliksemnetwerk van Bitcoin zich in de testfase bevindt en tot nu toe veelbelovende vooruitgang heeft geboekt, brengt de oplossing van Ethereum enkele unieke uitdagingen met zich mee, aangezien het is gekoppeld aan een wereldcomputer die Turing compleet is.
Sharding werkt alleen rechtstreeks op protocolniveau, dus voor de eindgebruiker of dapp-ontwikkelaar is het misschien niet noodzakelijk relevant om over te leren.
Hoe dan ook, de poging van Ethereum om state sharding te maken voor een enorm, gedecentraliseerd netwerk is een indrukwekkende onderneming en zal een enorme prestatie zijn als het met succes wordt geïmplementeerd.