DAG applicato alla blockchain: la spiegazione e l’uso in IOTA
Altcoin

DAG applicato alla blockchain: la spiegazione e l’uso in IOTA

By Emanuele Pagliari - 30 Giu 2019

Chevron down

Il concetto di DAG è stato spesso applicato alla blockchain ed è già utilizzato da diverse criptovalute fra cui IOTA, ByteBall ed a anche IoTChain.

Blockchain vs DAG

DAG, letteralmente Grafo Aciclico Diretto, è una struttura di dati che non ha cicli diretti, ovvero scegliendo un qualsiasi vertice del grafo non è possibile tornare ad esso percorrendo gli archi del grafo. Una sequenza può passare solamente dal prima al dopo e non viceversa.

Il DAG viene spesso applicato a problemi relativi all’elaborazione dei dati, allo scheduling, alla ricerca del percorso migliore per la navigazione ed alla compressione dei dati.

In sintesi dunque, permette un differente approccio per realizzare un registro distribuito. Nella blockchain, le transazioni vengono raccolte in blocchi, i quali possono essere solamente creati in sequenza, andando quindi a formare una catena.

Nelle DAG, il concetto di blocco come insieme di transazioni non viene utilizzato, in quanto tutte le transazioni sono fra loro collegate direttamente. Un blocco quindi, sarà costituito da una singola transizione all’interno del DAG.  In questo modo dunque, è possibile eseguire transazioni anche in contemporanea, parallelamente ed in maniera assai più veloce, aumentando quindi il throughput del network.

Uno dei principali motivi per cui bitcoin è inefficiente per effettuare alte transazioni, è dovuto al Proof of Work adottato, molto esoso in termini di risorse ma necessario per la verifica delle transazioni e dunque sigillare i blocchi.

Inoltre, come detto in precedenza, i blocchi nella blockchain non possono essere creati contemporaneamente ma solamente in sequenza. Di conseguenza, tutte le transazioni che avvengono più o meno nello stesso periodo sono mantenute nello stesso blocco, anche se a volte può capitare che vi siano più transazioni di quelle inseribili nel blocco, motivo per cui è necessario attendere il blocco successivo, causando ritardi nella conferma delle transazioni.

DAG blockchain

Il sistema, dunque, diventa congestionato oltre una certa soglia di transazioni. Ovviamente è possibile aumentare le dimensioni dei blocchi, così da poter inserire più transazioni, ma così facendo si rischia di aumentare ulteriormente la dimensione della blockchain, già ad oggi prossima ai 225 GB.

Più che un problema di storage però (un HDD da 1TB costa meno di 50 euro), il vero problema di blocchi grossi alcune decine di MegaByte riguarda la propagazione sulla rete, che può comportare a veri e propri block reorg, come già accaduto su Bitcoin SV.

La DAG, quindi, sfruttando un differente concetto di blocchi ed una struttura differente del network, riesce a migliorare significativamente la scalabilità, risolvendo, almeno teoricamente, questo classico problema ormai riscontrato sia da Bitcoin che da Ethereum.

Mining e DAG

Tuttavia, vi è un altro problema che affligge Bitcoin, ovvero il mining. Nella blockchain, il meccanismo di conferma delle transazioni e dunque di creazione e firma dei blocchi, richiede l’intervento dei minatori per eseguire il Proof of Work necessario.

Un minatore è incentivato ad eseguire il PoW da un premio dei bitcoin, variabile in base al numero del blocco, e dalle commissioni di transizione che il mittente paga al momento della creazione della transizione. 

Proprio per questo motivo, complice anche la diffusione del bitcoin, negli anni si è innescata una vera e propria corsa al mining.

Si è passati dalle CPU, alle GPU, agli FPGA per arrivare sino a delle vere e proprie macchine per il mining, costituite da degli ASIC specifici per i vari algoritmi di mining. Tuttavia, tali macchine specifiche hanno costi ben maggiori delle classiche GPU e CPU che troviamo nei PC e Smartphone odierni, motivo per cui la cerchia di miner di bitcoin si è ristretta ad un numero limitato di persone ed aziende.

E’ nato un vero e proprio business in questo settore, che però minaccia la decentralizzazione delle rete, in quanto il privato ed il piccolo minatore non sono più incentivati ad eseguire il PoW.

Emerge dunque che anche il mining può rivelarsi una parziale minaccia alla decentralizzazione della rete. Crypto come Monero, infatti, sono in continua lotta contro gli ASIC o sistemi che possano mettere a rischio la decentralizzazione della rete. Va inoltre detto che il mining comporta anche un enorme dispendio di energia. Proprio per questo motivo alcune monete stanno pensando di passare al PoS, anche se vi sono numerose discussioni in merito.

Nelle reti basate sul concetto di DAG, per lo meno nelle applicazioni viste sino ad ora, non vi è la necessità di avere miner esterni per confermare le transazioni. A seconda delle implementazioni, può essere necessario eseguire comunque un PoW, così da prevenire eventuali attacchi al network o SPAM.

Nella tangle di IOTA, infatti, quando una transazione viene registrata in un nodo, quest’ultimo deve prima eseguire la verificare di altre due transazioni, che vengono scelte sfruttando il concetto di processo degli arrivi di Poisson.

Il nodo deve verificare se le due transazioni non sono in conflitto ed eseguire un PoW, solo che essendo limitato solamente alle due transazioni prese in carico, non vengono eseguite verifiche inutili, massimizzando l’efficienza. In altre monete DAG based invece, come accade su ByteBall, non è nemmeno necessario eseguire del PoW aggiuntivo, grazie alla presenza di una main chain.

In sostanza dunque, all’interno di una DAG i nodi diventano i minatori di se stessi, solo che tale processo è molto più efficiente e meno esoso in termini di risorse utilizzate. Poiché i minatori esterni vengono eliminati, le spese di transazione vengono ridotte praticamente a zero.

In questo modo risulta dunque possibile effettuare micro-pagamenti, ed inoltre, visto il meccanismo di conferma, all’aumentare dei nodi partecipanti al network aumenta il numero di transazioni che possono venir confermate e dunque eseguite, aumentando a sua volta il throughput dell’intero network.

Double spending e transazioni veloci

Un ledger distribuito, però, deve anche garantire la natura trustless del sistema per essere funzionale ed è necessario in particolare che non si verifichino tentativi di double spending e che le transazioni vengano eseguite in maniera veloce.

I bassi tempi di conferma delle transazioni sono garantiti dalla natura blockless delle DAG, visto che, come detto in apertura, non occorre creare un blocco di transazioni e propagarlo sulla rete una volta verificato. Tale processo infatti, oltre a limitare il numero di transazioni, ha dei vincoli temporali, dato che, ad esempio, nella blockchain di bitcoin viene creato un blocco ogni 10 minuti. Di conseguenza, una transazione difficilmente potrà mai essere confermata in meno di 8-10 minuti, ovvero il tempo medio per blocco.

Nelle DAG, invece, essendo le transazioni propagate direttamente in rete, la conferma avviene in tempi molto rapidi, giusto una manciata di secondi. Ovviamente tale tempo dipende da quanto è popolato il network, perciò inizialmente una rete interamente su DAG potrebbe rivelarsi più lenta per mancanza di nodi. Un po’ come accaduto a IOTA nei primi mesi di vita del network.

Per quanto riguarda il double spending, ovvero il tentativo di spendere più volte lo stesso denaro, esistono differenti approcci per evitare che ciò accada. Il concetto di DAG stesso prevede che le transazioni vengano distribuite secondo un certo ordine topologico, vista la natura della struttura.

Prendendo per esempio l’implementazione adottata in IOTA, si supponga, per esempio, che qualcuno spenda due volte i propri fondi. Quando infatti si verifica un tentativo di double spending, vengono creati due rami, ma di cui solamente uno verrà poi correttamente verificato. Per fare ciò, IOTA sfrutta il concetto di peso durante la fase di conferma delle transazioni, motivo per cui uno dei due rami crescerà più in fretta dell’altro. Così facendo, il ramo più piccolo, dunque con peso minore, rimarrà isolato, vanificando il tentativo di doppia spesa.

DAG blockchain

ByteBall, invece, si appoggia ad una main chain a cui effettuare la sincronizzazione finale, che quindi va a respingere i tentativi di double spending.

E’ proprio per questo motivo che non è possibile ridurre a zero il tempo di conferma delle transazioni, in quanto occorre verificare anche la legittimità di esse.

Limiti delle DAG

Ovviamente nemmeno le DAG sono perfette, ma diversi scienziati e matematici stanno lavorando molto nello sviluppo di tali sistemi nell’ambito dei ledger distribuiti, visti i diversi pregi rispetto alla classica blockchain.

Uno dei limiti delle DAG riguarda la necessità di avere un buon numero di nodi attivi per poter funzionare correttamente e velocemente. Dunque in network poco attivi o con pochi nodi potrebbe non funzionare al meglio e comportare tempi di conferma delle transazioni maggiori delle classiche blockchain.

Proprio per questo motivo inoltre, anche repentine variazioni del numero di nodi nella rete potrebbero influire sul funzionamento della rete. Ad esempio, un calo improvviso del numero di nodi attivi provocherebbe un calo della capacità di confermare le transazioni, diminuendo drasticamente il throughput.

Inoltre, occorre implementare un giusto algoritmo di consenso e di pesaggio dei nodi, così da evitare transazioni illegittime e garantire uno scheduling corretto delle transazioni effettuate. Insomma, il DAG è una soluzione molto promettete e già funzionante, con ulteriori margini di miglioramento e sviluppo. Non mancano le incognite e dubbi delle community, ma progetti come IOTA dimostrano che tale approccio può funzionare.

Resta da verificare se effettivamente un sistema del genere può all’atto pratico scalare all’infinito come acclamato da IOTA ed altri progetti, ma a questa domanda potremo rispondere solo vedendo come si comporterà il network con decine di migliaia di nodi nel corso dei prossimi anni.

Emanuele Pagliari
Emanuele Pagliari

Ingegnere delle telecomunicazioni appassionato di tecnologia. La sua avventura nel mondo del blogging è iniziata su GizChina.it nel 2014 per poi proseguire su LFFL.org e GizBlog.it. Emanuele è nel mondo delle criptovalute come miner dal 2013 ed ad oggi segue gli aspetti tecnici legati alla blockchain, crittografia e dApp, anche per applicazioni nell'ambito dell'Internet of Things

Utilizziamo i cookie per essere sicuri che tu possa avere la migliore esperienza sul nostro sito. Se continui ad utilizzare questo sito noi assumiamo che tu ne sia felice.