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?“.

- 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
Proof of Stake
La Proof of Stake (PoS) è stata creata come alternativa alla Proof of Work, per

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.