Cos’è lo sharding? Spiegazione di questo concetto di scalabilità di Ethereum

Cos'è lo sharding?

Mentre il dibattito sul ridimensionamento delle criptovalute continua, alcune potenziali soluzioni sono state effettivamente sviluppate da un po ‘di tempo.

Nello specifico, nel caso di Ethereum, dove un grande focus è posto sulla decentralizzazione e la sicurezza a scapito della scalabilità, l’applicazione dello sharding insieme all’implementazione del consenso Proof of Stake è visto come il meccanismo tanto necessario attraverso il quale la rete può scalare livelli pratici per le applicazioni pur mantenendo il suo decentramento e sicurezza.

Lo sharding è un argomento complesso, soprattutto se applicato a una rete peer to peer decentralizzata come Ethereum, dove lo stato globale della rete viene costantemente aggiornato.

Quindi cos’è esattamente lo sharding e come può aiutare le reti blockchain a scalare?

Background di Sharding e Distributed Computing

Lo sharding è in realtà molto più antico della tecnologia blockchain ed è stato implementato in una varietà di sistemi, dalle ottimizzazioni dei database aziendali a Database globale di Google Spanner.

  • In sostanza, lo sharding è un metodo particolare per il partizionamento orizzontale dei dati all’interno di un database.
  • Più in generale, il database è suddiviso in piccoli pezzi chiamati “frammenti”, che quando aggregati insieme formano il database originale.
  • Nelle reti blockchain distribuite, la rete è costituita da una serie di nodi collegati in un formato peer to peer, senza autorità centrale.
  • Come nel caso degli attuali sistemi blockchain, ogni nodo memorizza tutti gli stati della rete ed elabora tutte le transazioni.
  • Sebbene ciò fornisca la sicurezza di alto livello attraverso il decentramento, specialmente nei sistemi Proof of Work come Bitcoin ed Ethereum, porta a problemi di ridimensionamento legittimi.

Ethereum Sharding

Usando Ethereum come esempio, un nodo completo nella rete Ethereum memorizza l’intero stato della blockchain, inclusi i saldi degli account, l’archiviazione e il codice del contratto.

Sfortunatamente, poiché la rete aumenta di dimensioni a un ritmo esponenziale, il consenso aumenta solo in modo lineare. Questa limitazione è dovuta alla comunicazione necessaria tra i nodi necessari per raggiungere il consenso.

I nodi della rete non hanno privilegi speciali e ogni nodo della rete memorizza ed elabora ogni transazione. Di conseguenza, in una rete delle dimensioni di Ethereum, problemi come gli alti costi del gas e i tempi di conferma delle transazioni più lunghi diventano problemi evidenti quando la rete è tesa. La rete è veloce quanto i singoli nodi piuttosto che la somma delle sue parti.

Lo sharding aiuta ad alleviare questi problemi fornendo una soluzione interessante ma complessa. Il concetto prevede il raggruppamento di sottoinsiemi di nodi in frammenti che a loro volta elaborano transazioni specifiche per quel frammento. Consente al sistema di elaborare molte transazioni in parallelo, aumentando così in modo significativo il throughput.

Un modo più semplice per dirlo sarebbe immaginare la divisione degli Stati Uniti in Stati.

Sebbene ogni stato (un frammento in questo caso) faccia parte degli Stati Uniti più grandi (rete Ethereum), hanno le proprie regole, confini e sottoinsiemi di popolazioni specifici. Tuttavia, condividono una lingua e una cultura universali come parte della loro rete più ampia che compone il paese.

O ancora meglio, con le stesse parole di Vitalik Buterin:

 “Immagina che Ethereum sia stato suddiviso in migliaia di isole. Ogni isola può fare le sue cose. Ognuna delle isole ha le sue caratteristiche uniche e tutti gli appartenenti a quell’isola, ovvero gli account, possono interagire tra loro E possono liberamente dedicarsi a tutte le sue caratteristiche. Se vogliono contattare altre isole, dovranno utilizzare una sorta di protocollo. “

Come puoi vedere, il concetto di frammentazione della rete in pezzi più efficienti consente alla rete di funzionare come la somma delle sue parti, piuttosto che essere limitata dalla velocità di ogni singolo nodo.

Come funziona lo sharding nelle blockchain?

Continueremo a usare Ethereum come esempio in questo in quanto è il più noto e arduo tentativo di sharding nell’arena blockchain, poiché gli sviluppatori di Ethereum stanno implementando ciò che è noto come “sharding di stato”.

Lo stato attuale della blockchain di Ethereum è noto come “stato globale” ed è ciò che tutti possono vedere quando guardano la blockchain in un’istanza specifica.

La parte complicata nell’implementazione dello sharding in Ethereum è che suddividendo i nodi in sottoinsiemi più piccoli, questi sottoinsiemi devono essere in grado di elaborare insiemi specifici di transazioni aggiornando contemporaneamente lo stato della rete, il tutto assicurando che sia valido.

Lo sharding in Ethereum dovrebbe essere implementato in un’implementazione in due fasi, più che probabile dopo l’implementazione di Proof of Stake nella rete. La prima fase sarà il livello dati costituito dal consenso su quali dati si trovano nei frammenti. La fase due è il livello di stato. Tutto questo è molto fluido, quindi una ripartizione generale di come potrebbe funzionare è di seguito.

Ethereum scompone la rete in frammenti specifici. A ogni frammento viene assegnato un gruppo specifico di transazioni determinato raggruppando account specifici (inclusi i contratti intelligenti) in uno frammento. Ogni gruppo di transazioni ha un’intestazione e un corpo che consistono di quanto segue.

Intestazione

  • L’ID shard del gruppo di transazioni
  • Assegnazione di validatori tramite campionamento casuale (verifica le transazioni nello shard)
  • State Root (stato della radice merkle dello shard prima e dopo l’aggiunta delle transazioni)

Corpo

  • Tutte le transazioni che appartengono al gruppo di transazioni che fanno parte del frammento specifico.

Le transazioni sono specifiche per ogni frammento e si verificano tra account nativi di quel frammento.

Quando le transazioni vengono verificate, lo stato della rete cambia e i saldi dei conti, l’archiviazione, ecc. Vengono aggiornati. Affinché il gruppo di transazioni possa verificare come valido, la radice dello stato precedente del gruppo di transazioni deve corrispondere alla radice dello shard nello stato globale. Se corrispondono, il gruppo di transazioni viene convalidato e lo stato globale viene aggiornato tramite la specifica radice dello stato dell’ID di partizione.

Invece di contenere solo una radice di stato, ogni blocco della blockchain di Ethereum ora contiene sia una radice di stato che la radice del gruppo di transazioni. La radice del gruppo di transazioni è la radice merkle di tutti i gruppi di transazioni dagli shard specifici per quel blocco di transazioni.

Fondamentalmente, esiste una radice merkle di tutti i diversi frammenti che contengono i gruppi di transazioni aggiornati e verificati. Questa radice è archiviata nella blockchain insieme alla radice dello stato aggiornata.

L’impiego di concetti di albero di merkle in questa struttura è vitale per garantire la validità della blockchain. Capire come funzionano un albero di merkle e in particolare una radice di merkle può aiutarti a cogliere questi concetti molto più facilmente.

Cos'è un albero di Merkle

Leggi: Cos’è un albero di Merkle ?

Il consenso all’interno di un frammento viene raggiunto tramite un consenso Proof of Stake di nodi selezionati casualmente che vengono applicati a un frammento per un round di consenso specifico.

Ciò non solo fornisce la finalità al consenso, che è necessario all’interno dei frammenti, ma fornisce anche una difesa particolare contro un attacco a cui una blockchain Proof of Work sarebbe suscettibile in questo caso.

La potenza hash richiesta per superare uno specifico frammento in una rete con partizione PoW è drasticamente ridotta e la capacità di un attore malintenzionato di prendere il controllo di un frammento attraverso la potenza di calcolo è fattibile.

Attraverso questo, il cattivo attore potrebbe attaccare altri frammenti attraverso il protocollo di comunicazione che è una delle caratteristiche più complicate e importanti dell’architettura di sharding. La selezione del campionamento casuale dei validatori all’interno di un frammento riesce a soffocare questo tipo di attacco poiché un cattivo attore non saprà in quale frammento vengono inseriti prima di essere effettivamente inseriti in esso.

Inoltre, verrà utilizzato il campionamento casuale per selezionare i validatori che stanno effettivamente convalidando da quel set di convalida casuale.

Il protocollo di comunicazione è vitale per il corretto funzionamento dell’architettura di sharding nel sistema. Puoi pensare al protocollo di comunicazione come al linguaggio universale coerente tra gli stati come parte degli Stati Uniti più grandi.

Tuttavia, la progettazione di questo protocollo è molto impegnativa e deve essere eseguita in modo che venga utilizzata solo quando necessario. Diventa necessario quando un nodo specifico richiede informazioni che non sono archiviate nel proprio frammento e deve trovare il frammento con le informazioni richieste. Questa comunicazione è nota come comunicazione cross-shard.

La comunicazione cross-shard si ottiene applicando il concetto di ricevute di transazione. La ricevuta di una transazione è archiviata in una radice merkle che può essere facilmente verificata ma che non fa parte della radice dello stato.

Lo shard che riceve una transazione da un altro shard controlla la radice di merkle per assicurarsi che la ricevuta non sia stata spesa. In sostanza, le ricevute vengono archiviate in una memoria condivisa che può essere verificata da altri frammenti, ma non alterata. Pertanto, attraverso una memorizzazione distribuita delle ricevute, i frammenti sono in grado di comunicare tra loro.

Sharding in movimento

Lo sharding in Ethereum dovrebbe essere implementato dopo l’aggiornamento Casper PoS. Di recente, lì ci sono stati alcuni sviluppi per quanto riguarda Ethereum 2.0 che implicano l’implementazione sia di Casper che di sharding.

Lo sharding è stato implementato anche in alcune altre piattaforme, in particolare Zilliqa. Tuttavia, Zilliqa non implementa lo sharding di stato in questo momento e si concentra invece sulla fornitura di una blockchain ad alto throughput utilizzando la transazione e lo sharding computazionale.

ZilliqaLeggi la nostra guida a Zilliqa

Conclusione

Sharding serve per offrire alcune soluzioni promettenti all’elefante nella stanza delle piattaforme blockchain in questo momento, la scalabilità.

Mentre la rete fulminea di Bitcoin è in fase di test e finora ha mostrato progressi molto promettenti, la soluzione di Ethereum porta con sé alcune sfide uniche poiché è considerato un computer mondiale che è Turing completo.

Lo sharding funzionerà direttamente solo a livello di protocollo, quindi per l’utente finale o lo sviluppatore dapp potrebbe non essere necessariamente pertinente da conoscere.

Indipendentemente da ciò, il tentativo di Ethereum di sharding di stato per una vasta rete decentralizzata è uno sforzo impressionante e sarà un’enorme impresa di realizzazione se implementato con successo.

Mike Owergreen Administrator
Sorry! The Author has not filled his profile.
follow me
Like this post? Please share to your friends:
map