Sharding: è questa la tecnologia che farà svoltare definitivamente la blockchain? Cosa bisogna sapere

Sharding: una parola che sta salendo sempre più alla ribalta, anche grazie all’aggiornamento di Ethereum. Ma cosa significa?

Lo sharding è una forma di suddivisione del database in parti più piccole. Leggi di più!

sharding
Adobe Stock

Il processo prevede la suddivisione di un database molto grande in segmenti più piccoli e quindi più gestibili. L’idea è migliorare le prestazioni e ridurre il tempo di risposta alle query. Immergiamoci.

Sharding: che cos’è

Lo sharding non è un concetto nuovo ed è stato utilizzato nella tradizionale gestione centralizzata dei database almeno dalla fine degli anni ’90. Il termine è stato effettivamente reso popolare da Ultima Online, uno dei primi giochi di ruolo online multiplayer di massa (MMORPG). Nel gioco gli sviluppatori dividono i giocatori su diversi server (diversi “mondi” nel gioco) per far fronte al traffico.

Nel mondo degli affari, un esempio comune di sharding di un database di grandi dimensioni è la suddivisione dei clienti per area geografica. I clienti nelle stesse località geografiche vengono raggruppati e collocati su server unici.

Sharding nella blockchain

È essenzialmente lo stesso processo.

La rete blockchain è il database, ed i nodi rappresentano i singoli server di dati. Se applichiamo lo sharding alla blockchain, ciò significherebbe suddividere la rete blockchain in singoli frammenti (o shard). Ogni segmento conterrebbe un insieme unico di contratti intelligenti e saldi dei conti.

I nodi verrebbero quindi assegnati a singoli shard per verificare transazioni e operazioni, invece di essere responsabili della verifica di ogni transazione sull’intera rete.

L’idea è che, suddividendo la blockchain in segmenti più gestibili, avremo un aumento del throughput delle transazioni e quindi superare i problemi di scalabilità affrontati dalla maggior parte delle principali blockchain oggi. Vedremo questo più in dettaglio un po’ più in là.

Sharding: come funziona

Per spiegare lo sharding, utilizziamo come esempio la blockchain di Ethereum.

La blockchain di Ethereum è composta da migliaia di computer, noti anche come nodi – attualmente 4.862, secondo ethernodes.org – ciascuno dei quali presta una certa quantità di hash power alla rete. È questo hash power che al momento consente alla macchina virtuale di Ethereum (EVM) di funzionare, ovvero di eseguire contratti intelligenti ed eseguire applicazioni decentralizzate (DApp).

Al momento Ethereum funziona su una base di esecuzione sequenziale, in cui ognuno di questi nodi deve calcolare ogni singola operazione ed elaborare ogni singola transazione. Una transazione che passa attraverso questo processo di verifica può quindi richiedere molto tempo. Attualmente Ethereum si aggira intorno alle 10 transazioni al secondo (TPS).

Visa, per fare un confronto, effettua in media 24.000 TPS. L’aggiunta di computer alla rete non migliorerà necessariamente l’efficienza. Gli utenti conserveranno l’intero registro su ogni singolo computer, in modo da allungare la catena di verifica.

Con lo sharding, l’idea è di passare da un modello di esecuzione lineare – in cui ogni nodo deve calcolare ogni operazione – a un modello di esecuzione parallelo, in cui ai singoli nodi sono assegnati solo determinati calcoli. Ciò consentirà l’elaborazione di più transazioni parallele contemporaneamente.

La blockchain sarà divisa in shard separati, chiamati anche sottodomini o “bucket”. I nodi dovranno eseguire solo la parte che è stata assegnata loro per eseguire processi e convalidare le transazioni, invece di tenere traccia dell’intero libro mastro tutto il tempo.

Quale problema risolverà potenzialmente lo sharding?

Lo sharding è una potenziale soluzione ai continui problemi di scalabilità della blockchain.

Come accennato in precedenza, uno dei maggiori problemi che devono affrontare le reti blockchain è il problema della scalabilità. Più diventa popolare una rete blockchain, più utenti avviano transazioni, applicazioni decentralizzate e altri processi sulla rete.

L’aumento dell’attività di transazione pone una maggiore domanda sui nodi per verificare le transazioni, e c’è una minaccia reale che queste blockchain possano intasarsi (come visto su Ethereum durante la mania di CryptoKitties, quando il gioco da solo rappresentava l’11% delle transazioni sulla rete). Se ciò accade, le transazioni rallentano moltissimo, il che non è una situazione ideale per l’adozione di blockchain sostenibili a lungo termine.

Come spiegato sopra, se la blockchain è suddivisa in segmenti più piccoli, con team di nodi assegnati alla responsabilità dei singoli segmenti, ogni nodo non dovrà preoccuparsi dell’intero registro per eseguire ogni operazione. La validazione delle transazioni può quindi avvenire in parallelo anziché in modo lineare, aumentando la velocità dell’intera rete. Fornisce una soluzione ai problemi di scalabilità che circondano le reti blockchain e quindi le rende più sostenibili a lungo termine.

Ci sono degli svantaggi nello sharding?

Attualmente, le principali sfide dello sharding riguardano la comunicazione e la sicurezza.

Se dividi una blockchain in segmenti isolati, ogni frammento apparirà come una rete blockchain separata. Gli utenti e le applicazioni di un sottodominio non saranno in grado di comunicare con gli utenti e le applicazioni di un altro sottodominio senza l’implementazione di uno speciale meccanismo di comunicazione tra shard. Tutto ciò aggiunge un ulteriore livello di complicazione a cui gli sviluppatori devono pensare.

In una blockchain segmentata, anche la sicurezza diventa un problema, poiché è più facile per gli hacker impossessarsi di un singolo shard a causa della ridotta potenza hash richiesta per controllare i singoli segmenti. Questo fenomeno è noto anche come attacco di acquisizione di un singolo shard o attacco dell’1%. Una volta che un segmento è stato hackerato, i malintenzionati possono potenzialmente inviare transazioni non valide alla rete principale, oppure è possibile che le informazioni in quel segmento specifico vengano invalidate in modo permanente.

La risposta proposta da Ethereum a questo rischio per quanto riguarda la sicurezza è il campionamento casuale, in cui i nodi shard vengono nominati casualmente per verificare l’autenticazione del blocco.

Esistono soluzioni alternative allo sharding?

Gli sviluppatori suggeriscono due ulteriori proposte per migliorare le prestazioni e la velocità delle transazioni sulle blockchain.

Il primo è aumentare la dimensione del blocco, con l’idea di base che maggiore è la dimensione del blocco, più transazioni è possibile inserirvi in un blocco, quindi maggiore sarà il numero di transazioni elaborate al secondo. Questo è vero, ma significa anche che maggiore è la dimensione del blocco, maggiore è la potenza di calcolo necessaria per verificarlo.

Se le dimensioni dei blocchi dovessero essere aumentate in modo spropositato, solo le apparecchiature informatiche più specializzate e potenti sarebbero in grado di gestire la potenza di elaborazione richiesta necessaria per eseguire un nodo. L’aumento del costo di questo tipo di apparecchiature farebbe diventare i pool di nodi più piccoli e centralizzati, aumentando il rischio di un attacco del 51%.

Aumentare la dimensione del blocco richiederebbe anche un hard fork, che rischia di dividere la community. Se non tutti aderiscono alla nuova blockchain, esisteranno due chain separate, utilizzando due monete separate (tipo Ethereum ed Ethereum Classic). A causa di questi problemi, aumentare la dimensione del blocco è solo una soluzione a breve termine.

La seconda proposta è quella di utilizzare un’altra altcoin che possa eseguire funzioni diverse e applicazioni diverse sulla chain. Questo aumenterebbe le prestazioni perché non sovraccarichi una singola blockchain, ma aumenterà anche i rischi per la sicurezza perché tutto il potere di hashing è ora suddiviso su più blockchain. Ancora una volta, questo rende molto più facile hackerare la rete, poiché la quantità di potenza di hashing necessaria per eseguire un attacco riuscito del 51% è molto inferiore. Pertanto, non è una soluzione praticabile.

Chi usa lo sharding?

Alcune blockchain hanno già implementato un meccanismo di sharding, mentre in altre è ancora in fase di sviluppo.

Zilliqa è la prima piattaforma blockchain pubblica ad aver implementato lo sharding. È stata così in grado di raggiungere 2.828 TPS.

L’ecosistema di Near Protocol consente agli sviluppatori di creare e distribuire facilmente applicazioni decentralizzate. Si definisce anche “una blockchain sharded, adatta agli sviluppatori, e proof-of-stake” e afferma che la sua tecnologia di sharding consente ai nodi di rimanere sufficientemente piccoli da poter essere eseguiti su semplici istanze ospitate nel cloud, potenzialmente anche su dispositivi mobili in futuro.

Come Near, anche Ethereum fornisce un ecosistema blockchain per l’implementazione di DApp basate su contratti intelligenti. La Ethereum Foundation implementerà lo sharding come parte del suo aggiornamento Ethereum 2.0, previsto per fine settembre 2022.

Qual è il futuro dello sharding blockchain?

Lo sharding potrebbe essere la soluzione che risolve il trilemma della blockchain.

Nel trilemma della blockchain – come descritto da Vitalik Buterin, co-fondatore di Ethereum – puoi ottimizzare solo due delle tre caratteristiche principali di una blockchain contemporaneamente: sicurezza, decentralizzazione e scalabilità. Questo perché dovrai sempre scendere a compromessi su almeno uno di questi elementi, per avere gli altri due.

Come ha accennato Beniamin Mincu – CEO di Elrond Network, un protocollo blockchain incentrato su scalabilità e interoperabilità, in un recente articolo di Forbes – se le sfide dello sharding possono essere superate, questa tecnologia porterà scalabilità alle blockchain senza compromettere la decentralizzazione o la sicurezza. Questo, a sua volta, potrebbe portare la blockchain un passo più vicino alla famosa adozione di massa della tecnologia. Mincu sostiene:

Lo sharding è complicato, ma fornisce il tipo di miglioramento della capacità di throughput che consente alle blockchain pubbliche di competere con reti come VISA. Alcune delle sue sfide, tuttavia, includono acquisizioni di shard singolo, comunicazione tra shard e validità dei dati“.

Impostazioni privacy