Cos’è lo sharding

Il problema principale delle blockchain è la loro scalabilità. Se si aggiungono nodi al sistema e la quantità di dati nel libro mastro cresce, cresce anche il database.

Allo stesso tempo, anche le prestazioni della blockchain diminuiscono, perché le grandi quantità di dati devono essere elaborate.

Questo costa potenza di calcolo, tempo e riduce il numero massimo di transazioni che una blockchain può effettuare al secondo.

Lo sharding promette di rivoluzionare il mondo delle criptovalute garantendo efficienza e scalabilità della blockchain.

Dividendo i dati su più server, riduce il carico di lavoro e migliora le prestazioni: così lo sharding diventa cruciale.

Rende le transazioni in criptovalute quasi istantanee e i database diventalo veloci, un risultato senza precedenti.

In questa guida vedremo cos’è lo sharding e come sta trasformando la tecnologia blockchain.

Iniziamo.

Lo sharding spiegato in termini semplici

La suddivisione della blockchain in shard può risolvere il problema della scalabilità.

Lo sharding è un approccio per migliorare le prestazioni delle blockchain.

Il termine “sharding” significa “divisione” e deriva dalla gestione e dalla programmazione dei database. Lo sharding comporta la suddivisione orizzontale dei database.

L’idea è quella di dividere database molto grandi in parti più piccole per migliorare le prestazioni. Lo sharding divide i nodi di rete in gruppi. Queste parti sono chiamate “shard“.

Il miglioramento delle prestazioni si ottiene mettendo in parallelo le transazioni e quindi aumentando il numero di transazioni che possono avvenire contemporaneamente.

Quando si effettua lo sharding e si dividono i nodi in gruppi, la blockchain viene divisa in singoli pezzi, chiamati anche “chunks“.

Poiché Ethereum utilizza anche smart contract, anche questi risentono delle basse prestazioni della blockchain. Questo fa sì che gli utenti optino per altre blockchain con prestazioni migliori.

Le blockchain sono database

Le blockchain sono anche database eseguiti in modo decentralizzato sui singoli nodi e di solito sono molto grandi.

La blockchain di Ethereum ha già una dimensione di 1143,43 gigabyte a metà gennaio 2023, e la tendenza è in rapida crescita. Questo dimostra che i database blockchain possono raggiungere dimensioni enormi, a scapito ovviamente delle prestazioni.

Per questo motivo il termine “sharding” è arrivato anche nel mondo della blockchain, soprattutto grazie alle possibilità di Ethereum.

Una possibilità di sharding consiste nel dividere il database orizzontalmente. In questo caso, i dati vengono suddivisi in righe. Le righe contengono gli shard.

Un’altra possibilità di sharding consiste nell’organizzare i nodi di rete in modo da creare una rete centrale di relay. Esistono vari modi di suddivisione, utilizzati soprattutto nelle blockchain private.

Suddivisione di blockchain con sharding

Lo sharding serve a migliorare le prestazioni delle blockchain.

In generale, quasi tutte le blockchain hanno lo stesso problema: crescono sempre più velocemente, il database diventa più grande e quindi richiede sempre più prestazioni.

Nella maggior parte dei casi, le transazioni richiedono tempi sempre più lunghi, comportano costi sempre maggiori e non sono più scalabili.

Le prestazioni della blockchain diventano quindi inferiori.

Lo sharding consiste nel dividere una blockchain di grandi dimensioni in blockchain più piccole. Dividendo la blockchain in parti più piccole, le prestazioni aumentano notevolmente, poiché le transazioni possono avvenire in parallelo in tutte le parti.

La blockchain è divisa in shard. Quando una transazione avviene in uno degli shard, la convalida avviene sui nodi responsabili dello shard, cioè della rispettiva parte della blockchain.

Dopo la divisione, una blockchain è composta da diversi shard. Tutti gli shard possono effettuare transazioni, il che comporta un aumento del numero di transazioni simultanee che una blockchain completa può effettuare.

Come funziona lo sharding

In parole povere, lo sharding è il processo di suddivisione di tabelle di database di grandi dimensioni in frammenti, in modo che le aree non essenziali del database possano essere escluse dalle operazioni quotidiane e venga utilizzata solo l’area del database vero e proprio.

Le tabelle di database di grandi dimensioni vengono suddivise in tabelle più piccole. Ciò consente un maggior numero di transazioni parallele con le singole aree di una blockchain.

I frammenti possono anche essere memorizzati in modo decentralizzato e distribuiti ai nodi. Questo è ovviamente molto più complesso della copia di un singolo database. I singoli frammenti del database vengono distribuiti al nodo decentralizzato allo stesso modo del database completo.

I frammenti devono ovviamente essere aggiornati. Se un frammento cambia, tutti gli altri devono essere aggiornati. Nella maggior parte dei casi, solo alcuni dei nodi di una blockchain sono responsabili di un particolare shard.

Gli shard suddividono una blockchain e un sottoinsieme di nodi gestisce ciascuno uno shard.

Grazie alla suddivisione in shard, le transazioni possono avvenire in parallelo in tutti gli shard. In questo modo, solo un sottoinsieme di nodi si occupa di un sottoinsieme della blockchain.

Tutti i sottoinsiemi (shard) costituiscono una blockchain comune (ad esempio Ethereum). I nodi responsabili di uno shard non possono convalidare transazioni provenienti da altri shard. I flussi rimangono nello shard e vengono successivamente uniti in una blockchain comune.

Sharding su blockchain
(Fonte: Reddit)

Perché lo sharding non è ideale per le blockchain?

Lo sharding è una tecnologia che prevede la suddivisione di database di grandi dimensioni in database più piccoli per aumentare le prestazioni complessive.

Tuttavia, uno dei requisiti fondamentali delle blockchain è che siano decentralizzate, ovvero che ogni nodo memorizzi una versione completa del rispettivo database della blockchain. In generale, questo è l’unico modo per garantire che il sistema non possa essere manipolato perché il database è identico ovunque.

Lo svantaggio di un unico database decentralizzato è che tutte le transazioni nei database blockchain vengono eseguite più lentamente perché devono prima essere implementate nell’enorme database blockchain.

Con lo sharding, invece, si verifica una divisione dei database di grandi dimensioni. Questo è contrario al principio di base della distribuzione decentralizzata, ma fornisce prestazioni notevolmente superiori.

Lo sharding può portare a problemi di sicurezza con i database decentralizzati, in questo caso le blockchain. La sicurezza dei dati e la resistenza alla contraffazione sono sfide che devono essere risolte quando si effettua lo sharding di una blockchain.

Nei database tradizionali, un organo amministrativo centrale si occupa di questi problemi. Con le blockchain non è così. Lo sharding nella tecnologia distributed ledger non conosce uffici centrali, ma deve lavorare con un sottoinsieme dei nodi di convalida di una blockchain.

Quindi c’è un numero minore di nodi in uso che possono garantire la coerenza di una blockchain. Questo abbassa la soglia di abuso della blockchain attaccando i singoli frammenti.

Staking e sharding in cooperazione efficace

Lo staking e la selezione casuale dei validatori (nodi della blockchain) aumentano notevolmente la sicurezza all’interno degli shard. Gli aggressori non sono in grado di colpire i singoli nodi perché non sanno di quale shard sono responsabili e i nodi cambiano continuamente.

Nello staking, i validatori garantiscono l’autenticità delle transazioni convalidate depositando fondi sotto forma di monete.

Il deposito di capitale, chiamato anche “stake”, può essere incamerato se viene scoperta una frode. In Ethereum, lo staking è stato introdotto con il passaggio da PoW (Proof of Work) a PoS (Proof of Stake), nell’ambito della transizione a Ethereum 2.0.

Vantaggi dello sharding

Lo sharding risolve il problema della scalabilità delle blockchain dividendo i database. Questa frammentazione aumenta significativamente il numero di transazioni al secondo (TPS) su una blockchain.

Le prestazioni migliorano e allo stesso tempo il prezzo delle transazioni diminuisce, poiché la blockchain può elaborare un numero maggiore di transazioni.

Gli smart contract beneficiano di una maggiore velocità e più partecipanti possono utilizzare la blockchain.

I problemi dello sharding

I singoli shard vedono la loro parte della blockchain come la propria blockchain e le altre parti come sistemi esterni. Pertanto, la comunicazione tra nodi di shard diversi è un problema che deve essere risolto. La sicurezza gioca un ruolo importante in questo caso.

I vantaggi dello sharding si perdono se c’è un overhead dovuto alla comunicazione complessa tra i diversi shard. La comunicazione e il funzionamento sicuro dello sharding sono quindi la sfida più grande.

Le alternative allo sharding

Per migliorare le prestazioni delle blockchain, esistono sempre più opzioni. Esistono anche approcci per ospitare più transazioni nei singoli blocchi.

Dal momento che le prestazioni di una blockchain sono influenzate principalmente dalla generazione di nuovi blocchi, le prestazioni possono migliorare se è possibile ospitare più transazioni in un blocco.

Esempi significativi sono Bitcoin Cash e Bitcoin Lightning Network.

Lo sharding moderno: l’esempio di Elrond

Elrond è una piattaforma di livello 1 per smart contract e ottimizzata per il funzionamento con lo sharding. (PoS), entrambi offrono prestazioni elevate.

Con l’”Adaptive State Sharding” è possibile creare reti dinamiche in cui i singoli componenti possono essere suddivisi in modo flessibile e possono anche essere gestiti in modo più sicuro.

L’Adaptive State Sharding di Elrond consente una crescita lineare della blockchain. In questo caso, lo sharding non viene implementato successivamente nella blockchain, ma la blockchain è già ottimizzata per lo sharding.

Anche in questo caso, uno shard rappresenta un gruppo di nodi che si occupa di una parte della blockchain e convalida le transazioni in quest’area. Grazie alle sue capacità di crescita lineare, Elrond consente di effettuare da 10.000 a 15.000 transazioni al secondo.

Lo sharding su Elrond
(Fonte: LeewayHertz)

Conclusioni

Lo sharding è uno degli approcci più importanti per le blockchain più conosciute per migliorare le prestazioni e ridurre i costi.

Soprattutto quando si utilizzano i contratti intelligenti, l’elaborazione rapida delle transazioni svolge un ruolo importante.

Tuttavia, l’uso dello sharding rende la gestione e l’uso delle blockchain più complessa e, in alcuni casi, più insicura, a meno che il sistema non sia implementato in modo ottimale.

FAQ

Cosa significa sharding?

In termini semplici, lo sharding è la divisione della blockchain in più frammenti per aumentare la scalabilità.

Che problemi risolve lo sharding?

Il vantaggio dello sharding è quello di aumentare la scalabilità della blockchain, consentendo più transazioni contemporaneamente.

Cos’è lo sharding in Ethereum?

Lo sharding dovrebbe seguire il passaggio a Proof of Stake su Ethereum, aumentando la velocità della blockchain.

Perché lo sharding non è un bene per la blockchain?

Lo sharding non è l’ideale per la blockchain perché può portare a problemi di sicurezza in quanto coinvolge meno nodi.

Autore
Content Manager

Giornalista ed appassionata di criptovalute, sono nel settore dal 2018. Credo nelle potenzialità della tecnologia blockchain e delle crypto ma mi tengo a distanza dalle meme coin. Mi definisco un essere estremamente razionale.

Ti potrebbe interessare