crypto sharding achtergrond

Wat is sharding voor blockchain?

Door Derek op di, 18/09/2018 - 06:00

Sharding is een technologie om absoluut in de gaten te houden in de wereld van crypto. Het lijkt er sterk op dat dit de techniek gaat worden die ervoor zorgt dat blockchain eindelijk geschikt wordt voor massa-adoptie zonder dat dit ten koste gaat van haar belangrijkste eigenschappen, zoals decentraliteit en veiligheid. Bij Ethereum is Vitalik Buterin overtuigd van de technologie en de programmeurs zijn hard bezig om het platform voor 2020 sharding-ready te maken. Er komen steeds meer crypto-projecten die er gebruik van gaan maken en het lijkt het buzz woord voor 2018 (en 2019?) te worden in cryptoland. Wil je weten wat sharding is en wat het beter maakt dan andere oplossingen, zoals DPoS, sidechains en het Bitcoin Lightning Network? Lees dan in dit artikel onze uitleg die voor iedereen begrijpbaar is!

Lees snel:

Problemen van de huidige blockchains

Als je een fanatiek lezer van AllesOverCrypto.nl bent, zul je waarschijnlijk al bekend zijn met de huidige problemen van blockchain. Je kunt in dat geval meteen naar "Wat is sharding?" springen. Zo niet, dan is onderstaande informatie belangrijk om te weten om te begrijpen waarom sharding zo'n belangrijke uitvinding is.

Momenteel kunnen Bitcoin en Ethereum respectievelijk 7 tot 15 transacties per seconde (tp/s) aan. Voor platformen die het betaalverkeer van de gehele wereld willen overnemen is dit aantal pijnlijk laag. Een platform als Visa, dat maar een heel klein aandeel heeft van ál het betaalverkeer wereldwijd, verwerkt bijvoorbeeld al 8000 tp/s. Dit is een enorm verschil dat niet zomaar lijkt opgelost met de huidige technologie.

Het probleem van deze transactietijden is dat ze het hele netwerk 'stikken'. Dit zorgt ervoor dat transacties erg traag gaan. Het is niet prettig als jij een lekker kopje koffie hebt gedronken in een restaurant en wanneer je deze wilt afrekenen, je eerst een half uur mag wachten tot je betaling erdoor is. Een oplossing kan zijn om meer fee te betalen aan de miners zodat jouw betaling sneller erdoorheen komt. Helaas ben je niet de enige die op dit idee komt waardoor transacties ook nog eens heel hoog worden. Uiteindelijk kan de transactie zelf vele malen duurder zijn dan je bescheiden kopje koffie.

De reden waarom dit momenteel zo werkt, is omdat elke node (deelnemer aan het netwerk) élke transactie dient te controleren die op het netwerk gedaan wordt. Daarbij dient het ook in overeenstemming te komen met elke andere node van het netwerk. Hoe meer transacties er gedaan worden, hoe meer er dus gecontroleerd dient te worden. Hierdoor wordt het steeds lastiger en kost het steeds meer energie naarmate de blockchain groter wordt. Sharding werkt echter volledig anders. Met deze technologie wordt het netwerk juist steeds sneller en efficiënter naarmate het groter wordt. In theorie betekent dit dus dat het voor een oneindige schaalbaarheid kan zorgen, maar wat is sharding dan precies?

Wat is sharding?

Sharding kan heel kort samengevat worden met de woorden "divide and conquer", oftewel verdeel en heers. Sharding is een technologie waarbij het werk niet door alle nodes gedaan hoeft te worden. Het werk wordt eerlijk en willekeurig verdeeld over verschillende nodes binnen het netwerk. De belangrijkste feature van sharding is dus "horizontal scaling". Dit houdt in dat meerdere transacties tegelijk verwerkt en geverifieerd kunnen worden, naarmate  het netwerk groeit.

Heel simpel gezegd werkt dit als volgt. Stel er bestaat een netwerk uit 600 verschillende spelers/nodes en er worden drie transacties gedaan op dit netwerk. Bij een traditionele blockchain zouden alle 600 van deze 'nodes' alle drie deze transacties controleren. Bij sharding wordt dit werk verdeeld. Er kan bijvoorbeeld gezegd worden dat 200 nodes de eerste transactie controleren, terwijl 200 andere nodes transactie nummer 2 controleren en de overige 200 nodes transactie 3 oppakken. Het netwerk wordt dus verdeeld in 3 'shards' van ieder 200 nodes. Op deze manier zijn ze drie keer zo snel klaar met controleren. Elke keer als zo'n shard een overeenstemming heeft bereikt of de transactie legitiem is, wordt deze verpakt tot  een block. Vervolgens wordt via een protocol dit block toegevoegd aan de blockchain.  

Een manier om dit voor te stellen is met het beeld van een drukke supermarkt. De huidige blockchains werken nu zo dat er één kassa open is waarbij iedereen zijn of haar boodschappen kan afrekenen. Dit zorgt ervoor dat er een enorme rij ontstaat bij deze kassa en dat het wel even kan duren voordat je aan de beurt bent. Door sharding worden er meerdere kassa's geopend waardoor meer mensen tegelijk geholpen kunnen worden. Al het werk wordt in één keer verdeeld en hoe meer kassa's er open gaan, hoe sneller iedereen naar huis kan om te koken.

Image
Misschien even een extra kassa openen voor deze boeddhisten?

 

Nog één voorbeeld dan om het echt goed te begrijpen. Deze komt van Vitalik Buterin himself: "Stel je voor dat Ethereum wordt opgesplitst in duizenden eilanden. Elk van deze eilanden kan zijn eigen ding doen. Elk van deze eilanden heeft zijn eigen unieke features en iedereen op dat eiland (elk account) kan met elkaar communiceren en volledig gebruikmaken van alle features van het eiland. Als ze willen communiceren met een van de andere duizend eilanden, kunnen ze gebruikmaken van een soort protocol."

Het laatste voorbeeld is net even anders dan de twee voorbeelden daarvoor en dat klopt ook. Er bestaan namelijk meerdere manieren van sharden. 

Drie manieren van sharden

Sharding kan op verschillende manieren gedaan worden. Zilliqa maakt bijvoorbeeld gebruik van een hele andere manier (de eerste twee voorbeelden) dan Ethereum van plan is (het laatste voorbeeld). De volgende drie manieren zijn het meest bekend:

  • Network sharding (Zilliqa)
  • Transaction sharding
  • State sharding (Ethereum)

Elk van deze manieren heeft zijn voor- en nadelen. De voorbeelden die we genoemd hebben geven wellicht de indruk dat sharding een zeer eenvoudige oplossing is, maar niets is minder waar. Het belangrijkste aan blockchaintechnologie is dat het veilig is en ongevoelig voor aanvallen van buitenaf. Dit wordt met de traditionele blockchain perfect geregeld en het is onwijs lastig om sharding te implementeren zonder dat dit ten koste gaat van de veiligheid. In theorie kan dit echter zeker mogelijk zijn, in de praktijk moeten er alleen nog wel wat stappen gezet worden.

Network sharding

Network sharding is de techniek waar Zilliqa vooral gebruik van maakt. Zilliqa is momenteel de enige cryptocurrency die bewijs heeft geleverd dat ze de technologie succesvol toepassen. De eerste en meest belangrijke uitdaging is namelijk het creëren van de shards. Zoals gezegd is het lastig om deze te maken zonder dat de veiligheid in gevaar komt. Hoe bepaal je welke nodes in welke shard terechtkomen zonder dat een aanval van buitenaf ervoor zorgt dat iemand de volledige controle over een shard kan krijgen? De beste manier om hiermee om te gaan is met randomness, oftewel het willekeurig selecteren van nodes voor een bepaalde shard.

Dit brengt echter een nieuwe uitdaging. Niets is volledig random/willekeurig en waar haal je de deze randomness vandaan? Bij network sharding wordt de randomness gehaald uit de blokken zelf. Elk block dat nu door de huidige blockchaintechnologie gecreëerd wordt heeft een eigen, unieke ID en dit ID zit dicht tegen volledige randomness aan. 

Image

Transaction sharding

Transaction sharding verschilt van network sharding in hoe de randomness bepaald wordt. Er wordt dus op een andere willekeurige manier bepaald welke node bij welke shard hoort.

Transaction sharding kijkt naar de meest eenvoudige manier om dit te doen. Hierbij wordt gekeken naar het laatste getal van de transactiehash, een uniek ID van de transactie. Bijvoorbeeld alle transactiehashes die eindigen op een 0 worden aan shard 0 toegewezen, alle transacties die eindigen op een 1 worden aan shard 1 toegewezen, et cetera.  Op deze manier kunnen transacties binnen dezelfde shard gecontroleerd en gevalideerd worden.

Het grootste probleem komt echter naar voren als een kwaadwillende een double spend wil creëren. Oftewel, hij wil hetzelfde geld twee keer uitgeven. Dit kan hij doen door twee transacties met hetzelfde geld te doen met verschillende hashes. De ene transactie zal bijvoorbeeld in shard 0 terechtkomen en de andere in shard 1. Beide shards zien een unieke transactie en zullen hem dus goedkeuren. 

Dit kan voorkomen worden door alle shards met elkaar te laten communiceren. Helaas zorgt dit ook weer voor extra werk, waardoor het hele doel van transaction sharding kan komen te vervallen.

Image

State sharding

State sharding is de meest veelbelovende, maar tegelijk meest lastige oplossing. Dit is de oplossing waar Ethereum mee bezig is, maar ze verwachten dit niet voor 2020 te hebben opgelost. Als je bedenkt hoe vaak een deadline met dit soort grote projecten gehaald wordt, dan kan je verwachten dat het nog minstens een jaar langer duurt.

Bij state sharding hoeft een bepaalde shard alleen een deel van de staat van de blockchain in stand te houden. Als er bijvoorbeeld een netwerk bestaat waar alleen Bob en Alice aan deelnemen, dan hoeft Bob alleen de balans van Alice bij te houden en Alice alleen de balans van Bob. Ze hoeven niet alle transacties bij te houden die gedaan worden. Als Bob bijvoorbeeld 15 euro op zijn balans heeft en 10 euro uitgeeft, dan ziet Alice dat de 'staat' van Bob zijn balans 5 euro is. Als Bob hierna weer 10 euro probeert uit te geven dan zal Alice dit dus niet goedkeuren.

Het grootste probleem met deze methode is dat shards veel met elkaar dienen te communiceren en het is niet zeker of al dit werk er niet voor zorgt dat het netwerk alsnog traag zal verlopen. Bovendien is er het probleem dat een shard offline kan gaan. Als de shard van Alice bijvoorbeeld opeens stopt met bestaan, wie weet dan nog hoeveel er op Bob zijn balans stond? Ook voor state sharding staan dus nog genoeg uitdagingen te wachten waar hopelijk een oplossing voor komt.

Sharding vergeleken met andere oplossingen

Wat maakt de oplossing van sharding anders dan bestaande oplossingen als sidechains, DPoS en het Lightning Network?

Sidechains en het Lightning Network

Als je nog niet bekend bent met sidechains en het Lightning Network raad ik je aan eerst onze artikelen hierover te lezen. Het grootste verschil tussen sharding en deze oplossingen is dat sidechains en het Lightning Network nog steeds geen echte oplossingen zijn voor massa-adoptie. Als we kijken naar massa-adoptie, dan is het erg fijn dat sidechains en state channels (zoals bij het Lightning Network) het leeuwendeel van het werk van de blockchain afhalen. Het probleem is echter dat deze kanalen ook weer moeten communiceren met de main chain. Voor nu is dit een goede oplossing, omdat er nog niet genoeg gebruikers om voor problemen te zorgen. Als je echter bedenkt dat er nu al 8000 transacties per seconde door Visa worden gedaan, dan zal een enorm deel via sidechains moeten gaan lopen. Er zal dus een ongelooflijke hoeveelheid sidechains of state channels gemaakt moeten worden om dit aan te kunnen. Deze dienen ook weer te kunnen communiceren met de main chain en de kans is groot dat ook dan de 7 tot 15 tp/s niet genoeg zijn. Hier hebben we het dan nog niet eens gehad over the Internet of Things, waar 8000 tp/s het absolute minimum is.

Bij sharding maakt het niet uit dat het netwerk groter wordt. Integendeel, het zorgt er juist voor dat alles steeds weer sneller verloopt. Wat dat betreft zit er veel meer potentie in deze oplossing dan in sidechains en het Lightning Network. Bovendien laat onderstaand plaatje zien dat het Bitcoin Lightning Network de decentraliteit van Bitcoin aantast, waar dit bij sharding niet het geval is.

Image

 

Delegated proof of Stake

Delegated Proof of Stake is een oplossing die EOS en Loom Network gebruiken. Het zorgt ervoor dat 'aandeelhouders' gemakkelijk beslissingen kunnen nemen over de toekomst van de blockchain. Je kan het zien als een soort democratie of republiek. Het grootste probleem met deze oplossing is dat het ten koste gaat van het decentrale karakter. Net als in Nederlandse politiek, zullen een aantal aandeelhouders dus de macht in handen hebben om te bepalen waar het platform naartoe gaat. Ook kunnen 'delegates' samen gaan werken en zo meer macht krijgen, wat bijvoorbeeld weer terug te zien is in de Amerikaanse politiek. Bovendien is het bij DPoS gemakkelijker om een 51%-aanval te organiseren, omdat er minder mensen zijn die het netwerk in stand houden.

Sharding kan er in potentie voor zorgen dat zelfs een 99%-aanval geen effect zal hebben. Het belangrijkste verschil is echter dat het netwerk volledig decentraal blijft. Rijken worden niet rijker en ook vriendjespolitiek zal geen effect hebben op de toekomst van het netwerk. Dit is toch wel de belangrijkste eigenschap van de gehele crypto-economie.

Conclusie

Sharding is de meest veelbelovende technologie die momenteel naar voren wordt gebracht om het probleem van schaalbaarheid op te lossen in de cryptowereld. Helaas is het ook de meest lastige technologie. Dit is dan ook de reden dat bijvoorbeeld Zilliqa een populaire cryptocurrency is. Het team laat zien over veel talent te beschikken dat ze al dichtbij een volledige oplossing zijn voor network sharding.

Ook wonderkind Vitalik Buterin is tot de conclusie gekomen dat de enige echte oplossing om Ethereum te schalen, sharding is. Hij kiest ervoor om meteen voor state sharding te gaan, omdat dit hoogstwaarschijnlijk de enige oplossing is die er op de lange termijn voor kan gaan zorgen dat massa-adoptie echt wereldwijd mogelijk is met blockchain. Wij zijn er daarom van overtuigd dat sharding de technologie is om in de gaten te houden in de cryptowereld en dat cryptocurrency's die gebruikmaken van sharding een grotere kans van slagen hebben dan de coins met andere oplossingen.

 

Reacties

Er zijn nog geen reacties.

Log in of Registreer om een reactie te plaatsen!