Cos'è lo sharding - Una semplice spiegazione

- 12 minute read

Waiting in line
Paul Hopmans
Crypto Expert
Paul Hopmans

✔️ Sharding significa frammento o piccola parte di un insieme.

✔️ Sharding risale agli anni ‘90.

✔️ Sharding è stato sviluppato per rendere più veloce un database.

✔️ Lo sharding su una blockchain è pensato principalmente per essere veloce e poco costoso.

✔️ Ethereum ha trovato la propria soluzione al problema della scalabilità

Probabilmente avete sentito parlare di sharding, ma il significato è un altro. Dopo aver letto questo blog, saprete esattamente di cosa si tratta.

What is sharding?

Tabella dei contenuti

  1. Che cos’è lo sharding?
  2. Come funziona lo sharding su una blockchain?
  3. Sharding obiettivo
  4. Forme di sharding
  5. Danksharding in dettaglio
  6. Punti di forza dello sharding
  7. Punti deboli dello sharding
  8. Esempi di blockchain con sharding
  9. Sharding rispetto ad altre soluzioni
  10. Il futuro dello sharding

Che cos’è lo sharding?

Sharding è un termine nato negli anni Novanta. Può essere tradotto come shard o piccola parte di un tutto. È stato necessario risolvere ogni tipo di problema relativo ai computer e alle reti con i database. Si prevedeva addirittura che non ci sarebbe stato un futuro per i database distribuiti con hardware specializzato.

Si sbagliavano completamente, come possiamo vedere con la blockchain! Ma d’altronde, prevedere il futuro è più difficile che starsene seduti ad essere negativi.

Da allora si sono avuti enormi sviluppi nell’hardware, nel software e nelle tecniche di database.

Nel 1997, il termine "shard" è apparso anche in un gioco popolare chiamato Ultima Online. Ogni giocatore finiva nella propria parte del mondo virtuale, quindi si può parlare a ragione di shard. Il gioco esiste ancora e da allora ha stabilito 8 Guinness World Records.

Lo sharding è una tecnica di gestione dei database in cui un database in crescita viene suddiviso in partizioni o partizioni più piccole e gestibili. Una partizione così piccola è chiamata "shard".

L’idea è di memorizzare questi pezzi su computer diversi come frammenti indipendenti.

Un database è composto da righe e colonne. Lo sharding dei database comporta un partizionamento orizzontale, in cui il database più grande viene suddiviso in sezioni più piccole per velocizzare e semplificare la gestione del database.

Lo sharding viene solitamente utilizzato quando un insieme di dati diventa troppo grande per essere memorizzato in un singolo database. Quando un database diventa troppo grande, una normale interrogazione del database, per il quale è stato ovviamente creato in parte, può richiedere troppo tempo o costare troppo. Uno shard è quindi una soluzione che consente di non dover lavorare con hardware costoso e di avere tempi di risposta accettabili per le interrogazioni. Un insieme di dati logici viene quindi suddiviso in diverse piccole parti di questo database totale.

Lo sharding è quindi uno scaling orizzontale. In questa tecnica, vengono aggiunti altri dispositivi per distribuire il carico di lavoro. Lo scaling verticale aggiunge più potenza di elaborazione ai dispositivi esistenti. Quest’ultimo non è possibile all’infinito. Pertanto, quando i dispositivi non sono più in grado di gestire tutto o diventano troppo costosi, si può pensare allo sharding o allo scaling orizzontale. Ciò che prima veniva fatto da un solo dispositivo può essere distribuito a più dispositivi. In teoria, con lo sharding è possibile scalare all’infinito, perché è sufficiente aggiungere sempre più dispositivi che si dividono il lavoro.

Lo sharding significa anche che le singole unità non devono cercare nell’intero database. Si trovano in una piccola partizione responsabile di una parte specifica del database complessivo. In questo modo, sono pronte molto più velocemente quando arriva una query per il loro database o deve essere elaborata una transazione di cui è responsabile la loro partizione. Questo è molto più veloce, naturalmente, soprattutto con i database sempre più grandi per i quali le blockchain sono note.

Una buona rappresentazione visiva dello sharding è una qualsiasi coda. Supponiamo che tutti i Paesi Bassi debbano ottenere una nuova carta d’identità in una certa data. Naturalmente, non si possono avere milioni di persone in attesa davanti a uno sportello a Utrecht o giù di lì. Se si apre solo un secondo sportello, la coda è già dimezzata. Questa è la forza dello sharding. Ogni volta che si apre uno sportello in più, la coda diminuisce. Quindi lo scopo dello sharding in questo caso è chiaro: aumentare la produttività aprendo più sportelli.

Coda

Come funziona lo sharding su una blockchain?

Uno shard è quindi responsabile di una parte dell’intero database. Una blockchain consiste in un database gestito da molti computer. Si tratta di un database distribuito. Se tutti i nodi, i validatori o i minatori devono tenere traccia dell’intero database, questo può comportare un notevole carico di lavoro, soprattutto nel caso di database di grandi dimensioni come quello di Ethereum con i suoi popolari contratti intelligenti. Suddividendo il database in partizioni o parti, i diversi nodi devono tenere d’occhio solo una parte del database e sono quindi molto più veloci. Lo sforzo di comunicazione dei nodi tra loro è quindi notevolmente ridotto.

Uno dei problemi della blockchain è la scalabilità. All’inizio di una blockchain, il database non è molto grande, ma con ogni nuovo blocco aggiunto, il database diventa più grande. Nel tempo, i backup del database possono causare problemi. Soprattutto reti popolari come Bitcoin ed Ethereum hanno problemi di scalabilità. Velocità di elaborazione di soli 20 al secondo non sono più realistiche quando una rete è utilizzata da così tante persone. Non si può costringere le persone ad aspettare all’infinito che la loro transazione venga convalidata. Inoltre, i minatori o i nodi spesso cercano di sfruttare la congestione della rete facendo pagare il più possibile per la convalida.

Un modo per risolvere questo problema è il processo di sharding. Questo processo consente di ottenere un numero enorme di transazioni su una blockchain al secondo, se eseguito correttamente. Si parla di numeri superiori a 100.000 al secondo.

Una volta conosciuta la disposizione dei frammenti, questi devono fare ciò che normalmente accade alle I nodi dovrebbero fare: controllare una transazione all’interno del loro ambito. Un esempio potrebbe essere quello di controllare tutte le transazioni con un valore di tipo Hash iniziando con un 1. Successivamente, tutti i membri di questo shard devono unirsi in base ad un Protocollo di consenso di questo shard e poi raccogliere le transazioni approvate in un nuovo blocco da formare. Queste diventano quindi parte della blockchain. Poiché il database per shard rimane relativamente piccolo, questi tipi di reti blockchain sono molto più veloci delle blockchain tradizionali come Bitcoin.

Uno dei problemi della blockchain è il trilemma proposto da Vitalik Buterin di Ethereum. Una blockchain deve essere decentralizzata, sicura e scalabile. Lo sharding dovrebbe dare un importante contributo a quest’ultimo aspetto, dividendo un database in piccole parti che sono molto più facili ed economiche da elaborare e molto più veloci. In teoria, un database suddiviso è scalabile all’infinito.

Se si desidera partizionare un database, esistono diversi modi per farlo. Ad esempio, si può suddividere per alfabeto, per numeri, per hash o altro. L’idea è che uno shard sia responsabile solo di quella particolare parte del database.

Sharding obiettivo

  • Aumentare la scalabilità
  • Riduzione dei costi di transazione
  • Suddivisione del carico di lavoro in partizioni più piccole
  • Aumento del tempo di risposta delle query attraverso il database
  • Aumentare la potenza di calcolo di una rete aggiungendo altri computer.
  • Uso di macchine più economiche per la convalida o l’interrogazione

Forme di sharding

  1. Partizione dei dati. Si tratta semplicemente di una classificazione per alfabeto, ad esempio.
  2. Hash sharding. Il database viene partizionato sulla base di un hash.
  3. Divisione per intervalli. Si tratta di una suddivisione basata su un intervallo, ad esempio tutto ciò che inizia con una lettera da a a f.
  4. Divisione della rete. La rete è divisa in gruppi di consenso che verificano collettivamente una parte di tutti i blocchi in modo casuale.
  5. Sharding delle transazioni. In questo caso, una certa parte del carico di lavoro viene assegnata a uno shard in base a un ID di transazione, ad esempio tutte le transazioni che iniziano con 1 sono nello shard 1. Un rischio plausibile in questo caso è la doppia spesa, quindi è improbabile che si diffonda rapidamente.
  6. Sharding di stato. In questo caso, un nodo ha una visione parziale di un componente dell’intero sistema. La convalida e l’approvazione di una transazione possono richiedere più tabelle e quindi shard. Ethereum ci sta lavorando da tempo ed era anche nella sua roadmap, ma ha deciso di continuare con i rollup di livello 2 per scalare Ethereum e renderlo più economico. In questo modo, inoltre, il consenso su Ethereum è più semplice e non richiede database shardati.
  7. Danksharding. Questo è il percorso attuale di Ethereum e dovrebbe consentire un throughput di oltre 100.000 transazioni al secondo al prezzo più basso possibile.

Danksharding in dettaglio

Poiché Ethereum è una rete così importante, approfondiremo la sua strategia.

Danksharding intende rendere Ethereum una blockchain realmente scalabile. Tuttavia, questo richiede ancora dei passaggi intermedi.

Uno di questi passaggi intermedi è Proto-Danksharding . Il nome deriva da due ricercatori chiamati Protolambda e Dankrad Feist. Lo scopo di questa proposta di Ethereum è quello di aggiungere dati più economici ai blocchi della blockchain.

I rollup ora devono inviare i loro dati a tutti i nodi della rete Ethereum, e quei dati rimangono lì per sempre.

Il danksharding introduce blocchi di dati (blob) che possono essere collegati a blocchi che non possono essere recuperati dalla macchina virtuale di Ethereum e che vengono automaticamente cancellati dopo un certo tempo.

Un rollup è composto da due parti: i dati e il controllo dell’esaminatore. Il revisore deve verificare se il rollup è corretto. Pertanto, quest’ultimo non deve rimanere per sempre sull’EVM.

Completo Danksharding in realtà non è affatto uno sharding. Le vere catene di shard non sono più sulla tabella di marcia di Ethereum perché il thanksharding è una soluzione così buona e semplice.

Danksharding è l’implementazione completa dello scaling dei rollup iniziato con Proto-Danksharding. Con Danksharding, su Ethereum ci sarà molto spazio per i rollup su cui scaricare i dati compressi delle transazioni. Ciò consentirà a Ethereum di supportare centinaia di rollup individuali e di raggiungere milioni di transazioni al secondo.

Normalmente direi: "Parlare non costa nulla!".

Ma sì, quando Vitalik lo dice, sono un po’ più moderato nelle mie affermazioni. La sua rete e il suo successo parlano da soli. Se avranno successo, potrebbe diventare la blockchain più veloce nel mondo delle criptovalute. È diverso dal pagare 50 dollari per una transazione e poi aspettare due ore per averla!

Lo faranno aggiungendo non solo 1 blob, come nella parte proto, ma 64 blob a un blocco. Prima che ve ne rendiate conto, avrete un film horror ! Beh, inquietante. Più che altro, divertente.

Il ringraziamento completo si farà attendere ancora per qualche anno, ma dopo un vero e proprio Cerimonia di convocazione La magia di Ethereum ha un’altra parte sotto forma di proto-tanksharding, che ricorda un po’ la stregoneria, anche se questa parte non può essere chiamata shard.

Punti di forza dello sharding

  1. Se uno shard si guasta, tutti gli altri shard continuano a funzionare. Se avete tutto su un server e questo si guasta, l’intera rete non è più accessibile! Questo è raro con la blockchain, a causa del suo database distribuito.
  2. Lo sharding porta a database più piccoli.
  3. Lo sharding rende una rete blockchain più economica.
  4. L’amministrazione di un database è facilitata dallo sharding.
  5. La divisione del lavoro può facilitare processi complessi.
  6. Rende una blockchain più veloce.
  7. È possibile utilizzare hardware più economico.

Punti deboli dello sharding

  1. L’implementazione dello sharding può essere un’operazione molto complessa e lunga.
  2. Se viene introdotto lo sharding, i dati del database possono andare persi o il database può essere danneggiato.
  3. I dati si trovano nei posti più disparati, quindi a volte è difficile vedere il legno per gli alberi.
  4. Il sovraccarico può comunque verificarsi se un particolare splitter riceve molto più lavoro degli altri.
  5. La sicurezza della blockchain o di uno shard può essere compromessa.
  6. Se si vuole eliminare lo sharding, può essere un compito enorme rendere il database nuovamente corretto.
  7. Sono necessari più hardware e più software.
  8. Se gli shard sono interdipendenti, un singolo shard danneggiato può causare il collasso dell’intero database.

Esempi di blockchain con sharding

  • Zilliqa
  • Ontology
  • Polkadot
  • Near
  • Elrond
  • QuarkChain

Sharding rispetto ad altre soluzioni

Lo scopo dello sharding è quello di aumentare la scalabilità. Ciò avviene creando isole che monitorano solo una piccola parte della blockchain. Con questi shard, di solito non è necessario comunicare con altri shard.

Confrontando queste soluzioni con altre come i roll-up, le sidechain o la Lightning Network di Bitcoin, si nota che, pur consentendo una maggiore scalabilità della rete, questa deve comunque comunicare con la blockchain principale e può quindi sovraccaricarsi.

Il vantaggio dello sharding è che si può scalare all’infinito. Se si inizia a lavorare con shard che elaborano, ad esempio, tutte le transazioni che iniziano con 1, è possibile creare un’altra suddivisione composta dalle prime due cifre e così via, rendendo gli shard sempre più piccoli rispetto all’intero database.

Il futuro dello sharding

Lo sharding è un modo promettente e conveniente per aumentare significativamente la scalabilità di una blockchain. Anche la riduzione dei costi è una parte importante di questa strategia.

Tuttavia, essendo così difficile da implementare, questo può anche inibire la crescita dello sharding come applicazione.

Se si analizzano gli svantaggi dello sharding e li si confronta con la soluzione di Ethereum, si possono avere dubbi sull’efficacia dello sharding.

Tuttavia, considerando che anche i supereroi di Ethereum impiegheranno anni per mettere insieme qualcosa di simile, forse c’è qualcosa da dire sullo sharding.

È innegabile, tuttavia, che una blockchain che utilizza lo sharding sia molto più economica e veloce della blockchain tradizionale. E questa è una notizia incredibilmente positiva per gli utenti comuni.