Introduzione a Blockflow: l’algoritmo di sharding di Alephium

RedoKazda

Alephium

Questa è la quarta di una serie di innovazioni tecniche introdotte da Alephium. Trovate i precedenti qui (PolW), qui (sUTXO) e qui (Alphred VM). Questo articolo approfondirà i concetti di sharding e il funzionamento interno di Blockflow per spiegare come migliora le prestazioni della blockchain di Alephium.

TL; DR — Alephium è una blockchain sharded: il suo stato è diviso in gruppi e le transazioni vengono elaborate in parallelo da diverse blockchain per aumentare il throughput. Il suo algoritmo di sharding si chiama Blockflow e consente enormi miglioramenti dell’esperienza utente con transazioni cross-group in un unico passaggio. Gestisce anche la relazione tra i blocchi in tutte le catene, consentendo un numero elevato di transazioni al secondo mantenendo l’integrità del libro mastro.

traduzione in italiano dell’articolo pubblicato da alephium.org, link a fine articolo.

Introduzione a Blockflow

Partizionamento orizzontale in un contesto blockchain

Il partizionamento orizzontale è una tecnica di gestione del database che prevede la suddivisione di set di dati più grandi in parti più piccole e più gestibili. Quando si ha a che fare con database di grandi dimensioni, diventa poco pratico gestire tutti i dati in un singolo computer o in una singola tabella. Il partizionamento orizzontale consente di distribuire il database su più computer creando più tabelle e più piccole, consentendo la parallelizzazione delle attività per migliorare la velocità effettiva.

Lo stesso vale per il contesto blockchain: lo sharding aumenta il throughput parallelizzando le transazioni. Ciò comporta una maggiore complessità, perché diventa più difficile mantenere un registro sicuro e coerente. Ogni blockchain sharded affronta questi compromessi in modi diversi:

Polkadot, una piattaforma multi-chain sviluppata dalla Web3 Foundation, introduce un meccanismo di sharding noto come “parachain”. Le parachain sono singole catene che corrono in parallelo, interconnesse attraverso una catena di relè centrale chiamata “Polkadot Relay Chain”.

Zilliqa implementa lo sharding in modo diverso. Utilizza lo sharding a livello di rete per scalare la blockchain suddividendo le transazioni in blocchi più piccoli. Tuttavia, non supporta lo sharding di stato, lo stato globale della blockchain deve essere condiviso da tutti gli shard, il che ne limita la scalabilità.

Kadena esegue lo sharding introducendo “chainweb”, una struttura blockchain intrecciata che consiste in più catene interconnesse che collaborano per formare un’unica rete.

Alephium adotta un approccio unico per shard della blockchain: prevede l’utilizzo di un DAG e di un algoritmo di sharding chiamato Blockflow. Ciò è vantaggioso in quanto non si basa su una catena di coordinamento (ad esempio la catena beacon), non vi è alcuna perdita di sicurezza per le singole partizioni e consente transazioni tra gruppi in un unico passaggio (maggiori informazioni in seguito).

Come funziona Blockflow?

Blockflow, l’algoritmo di sharding di Alephium, mira a migliorare la scalabilità e l’efficienza della blockchain dividendo le transazioni della rete in catene parallele gestibili o “shard”, mantenendo al contempo un’elevata sicurezza e una comunicazione efficace tra di loro per un’elaborazione delle transazioni senza soluzione di continuità. È il regolamento per mantenere il “flusso di blocchi” e la correttezza della blockchain.

Blockflow si basa sulla combinazione unica di UTXO e PoW di Alephium e sfrutta una struttura di dati DAG bidimensionale. Offre uno sharding leggero ed efficiente che elimina completamente la necessità di transazioni cross-chain e le complessità che ne derivano.

Blockflow introduce due livelli di partizionamento:

Partizionamento orizzontale a livello di gruppo:

Gli indirizzi sono organizzati in gruppi distinti, con la mainnet che attualmente comprende quattro gruppi (0, 1, 2, 3), scalabili fino a 32 gruppi.

Partizionamento orizzontale a livello di transazione:

Le transazioni sono partizionate in blockchain specifiche, definite dal gruppo di origine e di destinazione della transazione. Se ci sono gruppi G sulla rete, ci sono catene G*G. Di conseguenza, la mainnet ha attualmente 16 catene e può scalare fino a 1024.

Indipendentemente dal fatto che l’utente effettui transazioni tra indirizzi dello stesso gruppo o tra gruppi, le transazioni vengono gestite senza soluzione di continuità in un unico passaggio da blockchain dedicate, che condividono caratteristiche identiche e sono protette dall’innovativo meccanismo Proof of Less Work (PoLW) di Alephium.

Questo approccio contrasta con i metodi di partizionamento orizzontale tradizionali nelle catene basate su account, in cui le transazioni cross-chain sono necessarie e comportano un significativo degrado dell’esperienza dell’utente e un aumento delle complessità e delle considerazioni sulla sicurezza.

Un grafo aciclico diretto è una struttura di dati in grado di rappresentare concettualmente una serie di attività e le loro interrelazioni. Composto da nodi interconnessi da bordi diretti, garantisce il trattamento ordinato delle sequenze di transazioni, previene la doppia spesa delle monete e salvaguarda contro i rifiuti della rete. È come un controllo di sicurezza per mantenere transazioni eque e sicure o un albero genealogico delle transazioni.

0*siyItdIigUYNaR23

Approfondire le dipendenze

La complessità qui è capire come questi blocchi sono collegati ai blocchi precedenti per mantenere un insieme coerente di dipendenze, garantendo la correttezza della blockchain. Per questo, un po’ di contesto:

Gli shard di altre blockchain sharded sono chiamati gruppi su Alephium. Questi gruppi sono una divisione logica dello stato della blockchain e di tutti gli indirizzi creati su di essa. I gruppi tengono traccia dello stato di tutte le catene a loro collegate, compresi gli asset, gli stati dei contratti e la logica dei contratti. Questo è il primo livello di partizionamento orizzontale.

Ogni blockchain è responsabile dell’elaborazione delle transazioni da un gruppo all’altro. Usiamo la notazione (“da”,”a”). Anche se questo sembra difficile da capire, è necessario visualizzare che ogni catena ha origine da un gruppo e che in ogni gruppo c’è una catena che si collega agli altri gruppi oltre a quella interna a quel gruppo. Questo è il secondo livello di partizionamento orizzontale.

Quindi, a partire da oggi, si ottiene (ogni (x,x) è una catena):

Il gruppo 0 è: (0,0) — (0,1) — (0,2) — (0,3)
Il gruppo 1 è: (1,1) — (1,0) — (1,2) — (1,3)
Il gruppo 2 è (2,2) — (2,0) — (2,1) — (2,3)
Il gruppo 3 è (3,3) — (3,0) — (3,1) — (3,2)

1*qYyRsB JqEQUopXfQdEMLw

Ogni catena tra parentesi gestisce un diverso flusso di transazioni unidirezionali: (0,1) elabora tutte le transazioni dal gruppo 0 al gruppo 1 e (1,0) gestisce le transazioni nella direzione opposta dal gruppo 1 al gruppo 0.

(0,0) gestisce il flusso delle transazioni interne del gruppo 0, (1,1) gestisce le transazioni interne del gruppo 1, ecc… Queste sono le catene infragruppo.

Quindi ogni catena è una catena intergruppo(0,1) o intragruppo(1,1). Questo è importante perché quando i blocchi vengono estratti, sono collegati tramite dipendenze a ogni catena all’interno dello stesso gruppo e a una catena (la catena intragruppo) l’uno dall’altro gruppo.

Per fare un esempio per un blocco minato sulla catena (1,0), ci sono 7 dipendenze:

Quattro dipendenze l’una dall’altra si concatenano all’interno del gruppo, quindi (1,0) — (1,1) — (1,2) — (1,3).
Tre dipendenze l’una dall’altra (le catene infragruppo): (0,0) — (2,2) — (3,3).

Queste dipendenze vengono inserite nell’intestazione del nuovo blocco, incorporandole naturalmente nella struttura del blocco. E questo accade per ognuno dei nuovi blocchi minati sulle 16 catene: grazie alla matrice DAG, sono tutti collegati tra loro, mantenendo l’integrità del ledger e aumentando il throughput.

Transazioni tra gruppi in un solo passaggio

Questo permette di fare qualcosa di unico: il trasferimento di asset tra gruppi in un unico passaggio! Si noti che non è necessario trasferire asset tra le catene grazie all’esclusiva struttura di partizionamento orizzontale bidimensionale di Alephium.

Un esempio:

Bob ha un indirizzo nel gruppo 0. Vuole mandare $ALPH ad Alice, che ha il suo indirizzo nel gruppo 3. Crea la transazione sul superbo portafoglio desktop, inserisce l’indirizzo di Alice e preme “invia”. Che succede?

1*fH7nXaCnvuu32mOehqmW Q

Questa transazione è inclusa in un blocco sulla catena(0,3), che è la catena che collega i gruppi 0 e 3 in questa direzione. In questo modo viene attivata una modifica del saldo dell’indirizzo di Bob e viene aggiornato lo stato del gruppo 0.

Un nuovo blocco in una qualsiasi delle 4 catene del Gruppo 3 controllerà le dipendenze con tutti gli altri gruppi e osserverà che è stato eseguito il commit di un nuovo blocco nel Gruppo 0, trasferendo le risorse dal Gruppo 0 al Gruppo 3. Lo stato locale del Gruppo 3 verrà aggiornato per riflettere il fatto che l’indirizzo di Alice nel Gruppo 3 ha ricevuto risorse dal Gruppo 0, che sono ora disponibili per l’utilizzo.

Questo è essenzialmente il modo in cui viene eseguita la transazione in un unico passaggio tra gruppi: quando un nuovo blocco sul gruppo di destinazione verifica le dipendenze da tutti gli altri gruppi e garantisce che non vi siano doppie spese, raccoglie le informazioni sul trasferimento delle risorse e aggiorna lo stato del gruppo di destinazione.

Ciò consente di effettuare una transazione in un unico passaggio, invece di verifiche multiple nelle catene di origine e di destinazione, come in molte altre blockchain.

In conclusione…

Essendo una blockchain sharded, Alephium può aumentare il suo throughput aggiungendo più shard. Attualmente, si attesta su 400 transazioni al secondo (e può raggiungere i 10.000 TPS con 1024 catene). E Blockflow è la tecnologia di base di Alephium che consente una blockchain così scalabile. Per inciso, BlockFlow è stato il primo nome di Alephium!

Sfruttando le regole di consenso all’interno della struttura basata sul DAG, BlockFlow garantisce la correttezza e la sicurezza delle transazioni in tutti i gruppi. Questo lo distingue dai tradizionali algoritmi di partizionamento orizzontale in quanto offre un’esperienza di sviluppo e utente più efficiente e migliore grazie alle transazioni tra gruppi in un unico passaggio.

Se hai domande su questo argomento, visita il Discord di Alephium, Telegram o contattaci su Twitter!

Questo articolo ha solo lo scopo di educare i lettori sulla blockchain di Alephium, e sul suo ecosistema, e non deve essere preso come un consiglio di investimento o una consulenza finanziaria. Fai sempre le tue ricerche prima di investire in qualsiasi protocollo e/o progetto.

Lascia un commento

Alephium.it è una comunità italiana dedicata alla tecnologia blockchain di Alephium. Formata da appassionati che amano e credono in questo fantastico progetto.

Il sito web ufficiale di Alephium lo trovi su Alephium.org

Comunità

Blog

Eventi

Roadmap