Sharding zal de manier veranderen waarop de blockchain wordt gevalideerd.

Voor we kunnen uitleggen wat sharding is, moeten we eerst weten hoe de Ethereum blockchain op dit moment gevalideerd wordt. In de huidige vorm slaan alle nodes op het netwerk alle transacties op die op het netwerk plaatsvinden en verwerken deze. Dit is een behoorlijk arbeidsintensieve manier van werken, ook al voegt het extra veiligheid toe aan het ecosysteem.

Op het vlak van schaalbaarheid laat deze manier om de Ethereum blockchain te valideren echter de wensen over. Om dit probleem aan te pakken, hebben de ontwikkelaars een oplossing bedacht met een alternatieve vorm van validatie. Een kleine deelverzameling van netwerknodes zal elke transactie valideren.

Dit betekent dat de Ethereum blockchain veilig blijft en tegelijk is er toch een betere schaalbaarheid mogelijk. Er zijn ook heel wat verschillende shardingvoorstellen, hoewel het moeilijk is om er één te bedenken die alle juiste vakjes aanvinkt. Meer specifiek, sharding is ontworpen als onderdeel van het Ethereum ecosysteem om duizenden transacties elke seconde te verwerken zonder alle nodes te dwingen terabytes aan statedata op te slaan.

Het bereiken van dit doel is niet gemakkelijk. De ontwikkelaars willen er immers voor zorgen dat mensen zowel goedkope als dure hardware kunnen gebruiken om transacties te valideren als node-operatoren. Door middel van shards kan een willekeurig gekozen set nodes gebruikt worden om transacties te valideren die betrekking hebben op een specifieke walletprefix.

Het is niet moeilijk in te zien hoe dit concept veel nieuwe uitdagingen met zich meebrengt die nog moeten worden aangepakt. Cross-shard communicatie over de Ethereum blockchain is een behoorlijke uitdaging. Bovendien moet er een manier zijn om fraude op te sporen in het geval dat bepaalde nodes ongeldige verificatieverrichtingen uitvoeren. Het is zeker mogelijk dat een aanvaller het merendeel van de nodes die één shard valideert heeft overgenomen. Gelukkig introduceren de Ethereumontwikkelaars verschillende beveiligingsmodellen om dit te voorkomen.

Er zijn echter nog een aantal dingen die moeten worden uitgewerkt, waaronder de vraag of shard validators wel of niet een beloning moeten krijgen. Uiteindelijk zal sharding in Ethereum geïntroduceerd worden, al is het nog onduidelijk wanneer dit precies zal gebeuren. Het is op zijn zachtst gezegd een geheel nieuwe manier om transacties te valideren. Bovendien zal het Ethereum in staat stellen verder te gaan dan wat momenteel mogelijk is.

Wat is sharding nu specifiek?

Sharding is een methode om één logische dataset op te splitsen en op te slaan in meerdere databases. Door de gegevens over meerdere systemen te verdelen, kan een cluster van databasesystemen een grotere dataset opslaan en extra verzoeken afhandelen. Sharding is nodig als een dataset te groot is om in één database te worden opgeslagen. Bovendien kunnen door veel shardingstrategieën extra modellen worden toegevoegd. Sharding zorgt ervoor dat een databasecluster meeschaalt met zijn data- en traffictoename.

Sharding wordt ook wel horizontale partitionering genoemd. Het onderscheid tussen horizontaal en verticaal komt voort uit de traditionele tabelweergave van een database. Een database kan verticaal worden gesplitst, door verschillende tabellen en kolommen op te slaan in een aparte database of horizontaal, door rijen van dezelfde tabel op te slaan in meerdere database nodes.

Verticale partitionering is zeer domeinspecifiek. U maakt een logische splitsing binnen uw applicatiegegevens. Het wordt bijna altijd geïmplementeerd op applicatieniveau, een stuk coderouting leest en schrijft naar een aangewezen database.

Bij sharding daarentegen worden homogene gegevens in meerdere databanken verdeeld. Je kunt zien dat zo’n algoritme gemakkelijk generaliseerbaar is. Daarom kan sharding zowel op applicatie- als databaseniveau worden geïmplementeerd. In veel databases is sharding een eersteklas concept en de database weet hoe data op te slaan en op te halen binnen een clusternetwerk. Vrijwel alle moderne databases zijn van nature “sharded”. Cassandra, HBase, HDFS en MongoDB zijn populaire gedistribueerde databases. Opvallende voorbeelden van moderne databases zonder bewaking zijn Sqlite, Redis (spec in progress), Memcached en Zookeeper.

Er bestaan verschillende strategieën om gegevens in meerdere databases te distribueren. Elke strategie heeft voor- en nadelen afhankelijk van de verschillende uitgangspunten die de strategie hanteert. Het is van cruciaal belang om deze veronderstellingen en beperkingen te begrijpen. Het kan nodig zijn om in veel databases te zoeken om de gevraagde gegevens te vinden. Dit worden crosspartition operaties genoemd en ze zijn meestal inefficiënt. Hotspots zijn een ander veelvoorkomend probleem, met een ongelijkmatige verdeling van gegevens en bewerkingen. Hotspots gaan spijtig genoeg de voordelen van sharding grotendeels tegen.

Wij hopen dat we u een duidelijk overzicht hebben kunnen presenteren van het huidige Ethereum sharding concept en hoe expliciete finaliteit het sharding mechanisme ten goede komt. Voor meer info ga naar ETHResear.ch en Sharding doc om dieper in te gaan op het ontwerp van het protocol.

 

 

What's your reaction?

Leave a comment