Blockchain Tecnologia

Algoritmi di consenso

Cosa sono gli algoritmi?  Genericamente, possono essere definiti un flusso di passi elementari, condizionati, per risolvere un problema ed ottenere dei risultati. Nel mondo dell’Information Technology, gli algoritmi sono delle linee di codice, definiscono una serie di istruzioni in sequenza (salvo diverse istruzioni) per ottenere dei risultati. Un pratico esempio quotidiano per scomporre un algoritmo potrebbe essere rispondere alla domanda: “come si fa una carbonara?“.

Cosa sono gli algoritmi? Un flusso di passi elementari, condizionati, per risolvere un problema ed ottenere dei risultati
  • Metti una pentola con dell’acqua sul fuoco e rompi un uovo in un piatto;
  • se l’acqua bolle aggiungi la pasta nell’acqua, altrimenti aspetta;
  • se l’uovo non è condito inserisci gli ingredienti;
  • finchè la pasta non è cotta fai cuocere il guanciale;
  • se la pasta è cotta, aggiungi gli altri ingredienti;
  • per 2 minuti fai saltare la pasta condita;
  • buon appetito;

Questo è un algoritmo relativo ad una situazione reale. Normalmente, risolvono problematiche relative a calcoli e scelte di tipo logico-matematiche che, non sono poi estremamente distanti dalle scelte che facciamo nella vita di tutti i giorni. All’interno di una rete blockchain, gli algoritmi di consenso sono utilizzati per raggiungere un accordo su un singolo valore di dati tra processi o sistemi distribuiti, sono procedure pensate per ottenere l’affidabilità in una rete che coinvolge più nodi inaffidabili.

Una delle principali caratteristiche di questi algoritmi è il presupposto intrinseco che, alcuni processi e/o sistemi non saranno disponibili e alcune comunicazioni andranno perse, questo gli conferisce la tolleranza d’errore. Per via di questa tolleranza d’errore, l’algoritmo di consenso presuppone che almeno il 51% dei nodi dovrà dare una risposta per validare correttamente un’informazione. Ad esempio, qualora l’ecosistema su cui si sta effettuando una transazione abbia 100 nodi, sarà necessario che 51 nodi rispondano per scrivere l’informazione e registrarla nella catena di blocchi.

A tal proposito, per aumentare la sicurezza, la scalabilità, l’efficenza del dispendio energetico relativo all’attività di mining, sono stati creati diversi tipi di algoritmo di consenso. Tutti gli ecosistemi blockchain o registri distribuiti analoghi che siano, ne hanno uno alla base. Vedremo di seguito i più importanti o diffusi.

Proof of Work

L’algoritmo di consenso Proof of Work (PoW), è stato il primo a riuscire a generare il consenso distribuito in una rete decentralizzata e ha risolvere il problema del double-spend. Non si tratta di un’idea nuova, ma il modo in cui il creatore di Bitcoin, Satoshi Nakamoto, ha combinato l’idea di un sistema di consenso distribuito con diversi concetti già esistenti, come le reti peer to peer e le firme crittografiche, ha reso questo algoritmo particolarmente innovativo.
Ma come funziona in pratica? I miners mettono a disposizione la potenza computazionale per convalidare le transazioni, in cambio verrà data loro una ricompensa attraverso la valuta dell’ecosistema. I minatori competono quindi tra di loro nella risoluzione di questi enigmi matematici per avere il diritto di registrare queste transazioni, ed essere quindi ricompensati.
Alla base della competizione tra i miners, ci sono dei complessi problemi matematici da risolvere attraverso la potenza computazionale. Più la rete si amplia e maggiore sarà la difficoltà del problema da risolvere, di conseguenza sarà maggiore la necessità di potenza computazionale. Purtroppo, il meccanismo appena descritto è causa di lentezza all’interno della rete.
L’algoritmo aumenta la sicurezza incrementando la difficoltà degli enigmi matematici all’implementarsi della grandezza dell’ecosistema, ma un problema più complesso richiede più tempo per essere risolto. Al momento della scrittura, sono ancora poco più di un centinaio le blockchain  (Bitcoin, Litecoin, Dogecoin, Ethereum, Bitcoin Cash, Ethereum Classic, Bitcoin SV, Monero, Zcash, Ravencoin, etc…) che fanno uso di questo algoritmo, spesso dibattuto, a causa del consumo energetico che richiederebbero i processori che danno la possibilità di svolgere l’attività di mining.
 

Proof of Stake

La Proof of Stake (PoS) è stata creata come alternativa alla Proof of Work, per
Schede video con GPU adatte al mining con algoritmo Proof of Work
risolverne i problemi inerenti. La Proof of Stake è pensata per sostituire il mining  con lo staking di una percentuale di valuta dell’ecosistema. Cosa si intende per staking? Si intende una quota di interesse congelata all’interno del sistema, dove se si possiede il 5% della valuta totale, si avrà il 5% di possibilità di avere il prossimo blocco da minare e quindi di ricevere una ricompensa. Rispetto alla sua prima versione, sono state sviluppate diverse varianti con metodi di selezione del forger (il nodo che compilerà il successivo blocco), che avrà il diritto di scrivere il successivo blocco. In questo algoritmo la ricompensa non viene distribuita dalla creazione di nuova moneta, ma si tratta di una ridistribuzione delle commissioni. Questa logica, è stata introdotta per ridurre il consumo energetico imposto dalla difficoltà crescente del mining in Proof of Work, oltre che per impedire economie di scala. La Proof of Stake risolve anche un problema di economia di scala. In che modo? Come descritto precedentemente, nella Proof of Work, i miners competono per il blocco, chi ha una maggiore potenza computazionale, risolvendo per primo un problema matematico, vince il diritto di scrivere il blocco per quindi essere ricompensato. Qualora ci fossero 10 miners privati contro una mining pool con l’attrezzatura equivalente a quella dei 10 miners, i singoli avrebbero sempre meno diritto di scrivere il blocco per la loro maggiore potenza computazionale localizzata. Lo staking è inoltre un incentivo economico per aumentare la sicurezza del network, il forger che tenta di convalidare una transazione fraudolenta, perde il diritto di partecipare allo staking in futuro e quindi anche il diritto a ricevere delle ricompense.
L’elezione di un testimone nella DPoS, incentiva il corretto comportamento da parte dei testimoni e la redistribuzione delle ricompense proporzionalmente a quanto versato al testimone.
Per poter aggirare la sicurezza di questo algoritmo, sarebbe necessario ottenere più del 51% della valuta dell’ecosistema in circolazione che si intende compromettere. I grandi vantaggi di questo algoritmo sono il basso dispendio energetico e la sicurezza. Ad oggi in uso negli ecosistemi di BSC, Cardano, Algorand, Tezos, Celo e molte altre. É prevista prossimamente la transizione di Ethereum dal PoW al PoS.

Delegated Proof of Stake

La Delegated Proof of Stake (DPoS) è una versione più democratica ed efficiente della PoS. I partecipanti al network, attraverso la loro quota congelata come nella Proof of Stake, delegano il proprio lavoro ai cosiddetti testimoni, che hanno il compito di raggiungere il consenso con gli altri nodi durante la generazione e la validazione di nuovi blocchi. Il potere di voto, così come la distribuzione delle ricompense successive alla scrittura dei blocchi, sono proporzionali alle coin possedute in staking nell’ecosistema. Il DPoS, è un sistema di reputazione sulla proporzione della partecipazione dei testimoni delegati dagli utenti, più è il totale congelato dagli utenti deleganti e maggiore sarà la possibilità di voto del testimone; questo crea il vantaggio di una maggiore onestà dei delegati, che per ricoprire questo ruolo dovranno essere rieletti. Nonostante questo algoritmo permetta una maggiore scalabilità, lo svantaggio è  una maggior centralizzazione.

Proof of Authority

Nei network basati su Proof of Authority (PoA), la validazione delle transazioni è effettuata da accounts che sono stati precedentemente approvati. Il processo di validazione delle transazioni è automatico, avviene attraverso dei software che vengono eseguiti sui nodi, un software che permette loro di inserire i blocchi nella catena. Per far parte della rete di nodi decentralizzati, sarebbe necessario soddisfare alcune condizioni.

  • il nodo non può essere eletto troppo facilmente, vengono selezionati arbitrariamente con affidabilità certificata;
  • l’identità del nodo deve essere verificata formalmente;
  • devono esserci procedure di uniformità nella valutazione dell’autorità del nodo;

Queste condizioni, rendono la Proof of Authority una struttura molto scalabile, ma allo stesso momento molto centralizzata in quanto prevede un numero limitato di nodi validatori. Si tratta certamente di un ottimo algoritmo per aziende che vogliano avvalersi dei vantaggi della blockchain, senza dover necessariamente utilizzare un network pubblico e quindi mantenere una maggiore privacy. É ritenuta una buona soluzione per le blockchain dedicate alla logistica, come ad esempio per il tracciamento dei prodotti della grande distribuzione. Non richiede una valuta nativa da usare come gas in quanto non è previsto il mining.

Altri algoritmi

Oltre gli algoritmi appena citati, ve ne sono molti altri:

  • Proof of Space and Time
  • Proof of Capacity
  • Proof of Importance
  • Proof of Burn
  • Byzantine Fault Tollerance
  • Proof of Existence
  • Proof of Time
  • Delegated Bizatine Fault Tollerance
  • Proof of Believability
  • Stellar Consensus
  • Ouroboros
  • RAFT
  • Proof of Activity
  • Proof of Stake Velocity
  • Proof of Elapsed Time
  • Proof of Reputation
  • Proof of Weight
  • Proof of Retrievability
  • Cerberus Consensus;
  • Directed Acyclic Graphs
  • Tangle
  • Hashgraph
  • Holochain
  • Block-lattice
  • SPECTRE
  • ByteBall

Alcuni di questi fanno parte di tentativi di rendere maggiormente scalabile il Proof of Work, che nonostante il problema del dispendio energetico elevato e della lentezza, rimane uno dei migliori algoritmi di consenso esistenti. Molti altri, dopo la loro creazione sono stati superati da algoritmi più performanti e sicuri, quindi sono rimasti in uso a alcune reti di nicchia o quasi in disuso (come ad esempio il Proof of Stake Velocity di ReddCoin), altri fanno parte di servizi più piccoli, poco conosciuti oppure in fase di sviluppo che approfondiremo qualora dovessero rivelarsi quella tecnologia dirompente che ancora non siamo riusciti a capire chiaramente.

Avatar photo
Daniele Contino è un sistemista reti e servizi informatici con esperienza ventennale nell'assistenza tecnica informatica. Ha lavorato sia in ambiti corporate multinazionali che come imprenditore, ricoprendo ruoli che spaziano dall'informatica, all'amministrazione, alla vendita e al commerciale. È autore, webmaster e fondatore di Superchio.it nato dalla passione per la lettura, soprattutto di saggi, e la scrittura, ma anche per la condivisione delle proprie passioni con gli altri. Missione principale del magazine è infatti quella di condividere le proprie conoscenze e tentare di divulgare le proprie competenze.