Cos'è lo sharding nelle criptovalute?

Lo sharding è una tecnica per separare grandi database in parti più piccole, più veloci e più facilmente gestibili, chiamate frammenti di dati. La parola shard significa una piccola parte di un tutto.

Ogni sottoinsieme di dati è chiamato shard o nodo, e tutti gli shard insieme comprendono l'intero set di dati. Il numero di shard in un'applicazione dipende dai suoi requisiti di prestazione, come la capacità di memorizzazione o la velocità di lettura/scrittura.

L'obiettivo dello sharding è quello di distribuire i dati su più macchine e permettere che più transazioni avvengano in parallelo. In altre parole, l'obiettivo è la scalabilità orizzontale. Lo sharding può essere usato in blockchain anche le reti. Per esempio, Ethereum prevede di implementare lo sharding alla sua rete per aumentare la sua scalabilità.

In questo articolo, spiegheremo cos'è lo sharding e come funziona nelle criptovalute.

Sharding è una delle tecnologie di scalabilità più promettenti nello spazio delle criptovalute che sta guadagnando attenzione ultimamente. Sharding è un processo che mira a migliorare la scalabilità di blockchain dividendolo in unità più piccole (note come "shard") che possono essere elaborate in parallelo e quindi aggiungere alla capacità complessiva di transazione della rete. 

Perché abbiamo bisogno di Sharding?

Quando un nodo vuole partecipare a una rete di criptovalute, il client scarica l'intera storia delle transazioni. La ragione di questo è così che può convalidare le transazioni e verificare che non ci siano state doppie spese. Questo significa che per partecipare ad un blockchain devi scaricare tutti i dati.

Se volete ospitare o eseguire un nodo in Bitcoin e ricevere la ricompensa completa del blocco è necessario almeno 200GB di spazio di archiviazione, ad aprile 2018. In Ethereum questo numero è ancora più alto, ad aprile 2018 ci sono oltre 100GB di dati memorizzati su ogni nodo. Con una tipica connessione internet scaricare tutte queste informazioni richiede circa due settimane. Questo non è pratico per la maggior parte delle persone che vogliono essere coinvolte in una rete di criptovalute.

Lo sharding è stato introdotto per la prima volta nei sistemi di gestione di database per migliorare le prestazioni, l'efficienza e la scalabilità dei servizi di database dividendo i dati su più macchine. Sharding è usato nei moderni sistemi di database perché può aumentare la velocità complessiva di un'applicazione. La stessa idea viene ora applicata anche alla tecnologia blockchain.

Le reti blockchain come Ethereum stanno cercando di implementare lo sharding con l'obiettivo di aumentare la scalabilità della loro rete, che permetterebbe loro di elaborare più transazioni ad un ritmo più veloce. Il co-fondatore di Ethereum, Vitalik Buterin, ha ricercato e sviluppato il concetto di sharding per qualche tempo, e questa ricerca ha portato alla creazione di EIP 1559, una possibile implementazione dello sharding su Ethereum.

L'idea dello sharding esiste da un po', ma è stata usata per la prima volta nel mondo delle criptovalute da Zilliqa. Il modello blockchain a prova di lavoro (PoW) non è l'ideale se si vuole creare una rete che possa gestire un alto volume di transazioni. Zilliqa è stata la prima azienda a cercare di risolvere questo problema creando una delle reti blockchain più veloci sul mercato.

Zilliqa utilizza una soluzione di sharding che gli permette di aumentare la sua capacità di transazione man mano che più nodi si uniscono alla rete. Più computer vengono aggiunti alla rete, più transazioni possono essere elaborate al secondo.

Come funziona Sharding

Un blockchain è un libro mastro distribuito che consiste in dati memorizzati in blocchi; ogni blocco contiene una certa quantità di dati, e questi blocchi sono concatenati insieme per formare il libro mastro. La catena è mantenuta da nodi - partecipanti che detengono una copia dell'intero libro mastro e lo aggiornano quando vengono ricevute nuove informazioni. Ogni nodo deve convalidare i nuovi dati prima che possano essere aggiunti alla catena. Se un'azienda ha bisogno di scalare il suo sistema, ha due opzioni: comprare hardware più costoso o trovare una soluzione alternativa che utilizzi meglio l'hardware esistente.

Sharding è uno dei diversi approcci alla scalabilità del database e all'alta disponibilità. Altri approcci includono il caching della risposta, la replica master-slave e il cloud hosting.

Lo sharding distribuisce i dati su più server, come mostrato nel diagramma qui sotto. Ogni shard agisce come un database separato, e ogni server di database gestisce le operazioni di lettura e scrittura per il proprio shard. Per dividere un database in shard, ogni shard deve contenere qualche tipo di metadata che aiuti a identificare quali dati dovrebbero essere memorizzati in quale shard.

Ethereum sta progettando di utilizzare lo sharding per la sua soluzione di scaling. Attualmente, ci sono due tipi di nodi in Ethereum: nodi completi e nodi leggeri. I nodi completi memorizzano tutte le informazioni sul blockchain (fino a 1 terabyte) mentre i nodi leggeri memorizzano solo una piccola parte di quelle informazioni o solo un riassunto di ciò che sta accadendo sulla catena. Con la soluzione di sharding di Ethereum, i nodi completi saranno divisi in nodi "collation" e "attester". Così facendo, i nodi di collazione avranno molti meno validatori di quelli che i nodi completi hanno ora e saranno in grado di memorizzare molte meno informazioni di quelle che i nodi completi hanno attualmente. Questo significa che più persone saranno in grado di partecipare alla rete come validatori e manutentori.

Questo approccio offre diversi vantaggi:

Benefici e vantaggi dello sharding nel mercato delle criptovalute 

Come menzionato sopra, lo sharding mira a dividere il grande carico di lavoro in piccoli sottocarichi. Questo, a sua volta, aiuta a migliorare la scalabilità e l'efficienza di una rete. I vantaggi di questo metodo includono una maggiore produttività e una maggiore velocità di transazione. Quest'ultima è particolarmente importante per gli scambi di criptovalute che stanno cercando un modo alternativo e più efficiente per gestire le transazioni degli utenti.

  1. Costi ridotti - Lo sharding vi permette di far crescere il vostro database orizzontalmente invece che verticalmente perché ogni shard può essere ospitato su un server separato. Questo significa che potete iniziare con un hardware meno potente e meno costoso e poi aggiungere più shard man mano che il vostro sistema cresce in dimensioni o ha bisogno di più potenza di elaborazione. 
  1. Un aumento della domanda di transazioni sugli blockchain provoca la congestione e aumenta il valore delle commissioni di transazione; questo può causare problemi negli ecosistemi delle criptovalute dove i "minatori" sono ricompensati con le commissioni di transazione. Più alto è il valore della tassa, più incentivo c'è ad estrarre i blocchi. Tuttavia, se le commissioni di transazione sono troppo alte, possono essere proibitive per alcuni utenti - il che potrebbe portare a un declino nell'adozione.
  1. Interrogazioni più veloci - Gli shard possono essere distribuiti su diversi server, il che riduce il tempo necessario per ogni query perché ci sono meno dati da cercare.
  1. Maggiore scalabilità: Il throughput aumenta con l'aumento del numero di nodi che possono essere utilizzati per supportare più transazioni al secondo su una rete. L'idea dietro lo sharding è simile alla memorizzazione di dati diversi in diversi server di database o all'utilizzo di più server per compiti diversi. Questo aiuta a mantenere un database che è grande e può gestire molte transazioni al secondo.
  1. Alta disponibilità: Poiché il database è diviso in database più piccoli chiamati shard, anche se uno fallisce ci sono molti altri shard che possono aiutare a mantenere la disponibilità della rete.
  1. Diminuzione della latenza: Quando si hanno più server di database, essi possono essere collocati più vicino agli utenti e

Gli svantaggi dell'uso di Sharding 

Gli svantaggi dello sharding sono davvero nell'implementazione, non nel concetto. Implementare lo sharding è difficile e richiede hard fork poiché ci sono molte varianti di proposte di sharding. Inoltre, senza una corretta implementazione e test, può portare a rischi di centralizzazione a causa di catene rotte o distribuzione impropria delle ricompense.

Alcuni dei più grandi problemi con lo sharding riguardano gli aspetti pratici. Per esempio, se hai più shard (blocchi di dati), come fai a sapere quale ha le informazioni più aggiornate? Se uno shard ha una vecchia versione di alcuni dati e un altro ha una versione più recente, quale dovrebbe essere usato? Questo si chiama "sincronizzazione degli shard", ed è qualcosa che gli sviluppatori devono risolvere prima di implementare un nuovo sistema

  • I frammenti possono diventare non disponibili se si verificano errori di rete
  • Ci vuole tempo per rifare lo sharding quando il numero di nodi cambia nel sistema.
  • Può essere difficile localizzare le informazioni in caso di guasto

Sharding non è come una bacchetta magica che può risolvere tutti i problemi blockchain in una volta. È un concetto che richiede molto lavoro per essere implementato, e ci sono sempre dei compromessi. La sicurezza sarà sempre la preoccupazione principale per gli blockchain - se rendi più facile per qualcuno attaccare la rete, allora devi assicurarti che la tua sicurezza sia ancora abbastanza buona da respingere quegli attacchi.

È chiaro che lo sharding ha un grande potenziale in quanto potrebbe aiutare ad aumentare il numero di transazioni al secondo aumentando il numero di shard. Di conseguenza, gli utenti potrebbero godere di tempi di transazione più veloci. E quando si tratta di scambi di criptovalute e trading piattaforme - questo è ciò che conta di più.

Correlato

it_ITItalian