In questo articolo vedremo come funzionano i diversi tipi di consenso nella Blockchain di alcune delle più famose criptovalute.
Il consenso distribuito
Le criptovalute sono nate per permettere alle persone di scambiare liberamente la moneta in modo sicuro e decentralizzato. Tuttavia, far funzionare autonomamente un sistema finanziario richiede che gli interessi di diversi attori siano allineati. In particolare, tutte le persone coinvolte nel network devono essere d’accordo su tre punti cardine, per generare un consenso distribuito. Devono essere d’accordo sulla storia delle transazioni, sulle regole intrinseche del protocollo e infine sul fatto che la moneta abbia valore.
Ottenere tutti e tre i tipi di consenso in modo decentralizzato è molto difficile, tanto che prima di Bitcoin veniva ritenuto impossibile a causa di quello che in computer science viene chiamato il problema dei Generali Bizantini.
In questo esempio, un gruppo di Generali Bizantini deve mettersi d’accordo sul piano di battaglia per la conquista di un territorio, comunicando solamente attraverso dei messaggeri. Il risultato finale dipenderà dalle scelte di ogni singolo generale, che conoscendo i piani degli altri generali, adatterà la propria strategia di conseguenza. Il problema è che alcuni generali potrebbero mal-interpretare il messaggio ricevuto o peggio ancora potrebbero decidere di tradire gli altri commandanti per aumentare i propri benefici personali. Quando la posta in gioco è troppo alta, l’incentivo a tradire il gruppo cresce, rendendo praticamente impossibile raggiungere un consenso univoco sul piano di battaglia.
Allo stesso modo, quando parliamo di sistemi distribuiti informatici, raggiungere il consenso tra i vari partecipanti del network (nodi) è molto difficile. Ognuno potrebbe decidere di deviare la propria strategia per avere maggiori benefici a discapito degli altri. A maggior ragione in un sistema finanziario in cui il rischio cresce proporzionalmente al valore del network e in cui la posta in gioco riguarda i risparmi delle persone.
Inoltre, alcuni nodi del network potrebbero essere malfunzionanti o avere problemi nella sincronizzazione. Senza contare che nel mondo digitale i dati vengono copiati e trasferiti a costo zero (problema della doppia-spesa), rendendo quasi impossibile il trasferimento di valore senza un ente centrale.
Per fare in modo che gli interessi convergano sullo stesso piano e per evitare la doppia-spesa, sono necessari due elementi che rappresentano la spina dorsale delle criptovalute:
- Blockchain: è la catena di blocchi dove vengono registrate tutte le transazioni del network man mano che avvengono. In modo specifico, la Blockchain utilizza la funzione di hash, le firme digitali e la struttura dati chiamata Merkle-tree, per assicurare crittograficamente lo scambio di informazioni.
- Algoritmo di consenso: è il set di regole che permette la finalizzazione delle transazioni e il funzionamento del sistema. L’algoritmo di consenso ha lo scopo di mantenere il network utilizzabile, sicuro e decentralizzato.
La Blockchain e l’algoritmo di consenso definiscono dunque il protocollo del network in cui i partecipanti possono decidere le loro azioni tra un set di regole prestabilite che condividono, assicurando la corretta esecuzione delle transazioni in presenza di alcuni possibili fallimenti del network.
Quando questi due elementi lavorano in sinergia, sono in grado di fornire una piattaforma sulla quale entità diverse che non si fidano tra loro, possono lavorare e condividere informazioni in modo sicuro e decentralizzato. Ma soprattutto, possono trasferire valore.
In parole semplici, lo scopo principale della Blockchain, non è altro che quello di aggiungere nuovi blocchi di transazioni nella Blockchain esistente. Tutto ciò in modo tale che, grazie alle diverse regole utilizzate dall’algoritmo di consenso, siano tutti d’accordo sull’output e sullo stato della catena.
La catena viene replicata su tutti i nodi e resa immutabile, in più, essendo distribuita in diversi punti, diventa resistente ad attacchi informatici e politici.
Se queste premesse vengono rispettate e le transazioni sono assicurate crittograficamente, sorge un consenso sulle regole del protocollo, che permette di ottenere il consenso sulla storia delle transazioni e pone le basi per dare un valore monetario alle unità generate dall’algoritmo.
Il protocollo, infatti, grazie alla teoria dei giochi, incentiva i partecipanti a comportarsi onestamente attraverso la distribuzione del signoraggio derivante dalla creazione di nuova moneta. Il signoraggio è necessario per coprire i costi di un consenso molto costoso e per permettere al network di funzionare. In questo modo, il comportamento onesto è solo una delle possibili strategie, ma è la più remunerativa in termini monetari, per cui i nodi saranno incentivati a seguire il protocollo.
Tuttavia, siccome la Blockchain è una struttura dati che richiede notevoli spazi di archiviazione, è necessario che l’insieme di queste regole mantenga un equilibrio all’interno di quello che viene definito “Blockchain Trilemma“.
Il trilemma suggerisce che, a causa della natura dei dati, è possibile scelgliere solamente due dei tre elementi tra sicurezza, decentralizzazione e scalablità.
- Sicurezza: è la capacità del sistema di resistere a qualunque tipo di manomissione.
- Decentralizzazione: riguarda il livello della distribuzione dei nodi e delle risorse.
- Scalabilità: determina la capacità del sistema di sostenere un elevato numero di transazioni e dipende dalla possibilità di essere adottato dalla massa.
Ad esempio la blockchain di Bitcoin, sin dalla sua nascita, si è concentrata principalmente sugli aspetti della decentralizzazione e sicurezza, cercando di risolvere il problema della scalabilità attraverso layer secondari.
Altre Blockchain invece, hanno cercato di risolvere il problema attraverso delle modifiche del protocollo open-source di Bitcoin, cambiando alcune componenti della sua struttura.
Tra le caratteristiche principali e i trade-off da scegliere per avere una Blockchain funzionante, troviamo per esempio:
- Il numero di monete in circolazione.
- L’intervallo di tempo tra un blocco e l’altro.
- La dimensione dei blocchi.
- Il tipo di algoritmo crittografico.
- Il tipo di algoritmo di consenso.
Per informazioni più dettagliate su come funziona la Blockchain di Bitcoin guarda questo articolo!
I diversi algoritmi di consenso
Con il passare del tempo gli sviluppatori hanno ideato diversi algoritmi di consenso, la quale hanno portato alla creazione di diversi tipi di Blockchain. Possiamo suddividerle in due macro categorie principali: permission-less e permission-ed. Nel primo caso, la tecnologia è aperta a chiunque e non esiste un ente centrale che possa decidere le regole del protocollo e le trasazioni da effettuare. Nel secondo caso invece, i nodi validatori sono entità conosciute di cui ci si deve fidare per la convalida delle transazioni.
Dato che uno degli obbiettivi delle criptovalue e di avere un mondo finanziario libero da entità centrali, considereremo solo il primo tipo, mentre considereremo il secondo tipo solo come un database distribuito differente.
In particolare, analizzeremo i tre tipi principali di algoritmi di consenso, ovvero la proof of work (Pow), la proof of stake (PoS) e la delegated proof of stake (DPoS).
Proof-of-work
L’idea della proof of work fu ideata nel 1992 da Dwork and Naor come sistema per evitare lo spam nelle email. Inizialmente, l’obbiettivo era quello di rendere difficile per gli spammers inviare migliaia di email in una volta sola, con un sistema che richiedeva di svolgere un puzzle matematico per ogni email inviata.
In questo modo, inviare una mail richiedeva qualche secondo per risolvere il puzzle computazionale, mentre inviarne migliaia richiedeva molto più lavoro e dunque diventava un’operazione sconveniente.
L’innovazione della Blockchain di Bitcoin fu quella di utilizzare diversi strumenti crittografici, tra cui la funzione di hash, le firme digitali e la proof of work, unendoli in modo tale da ottenere un database che mantenesse la cronologia delle transazioni in modo decentralizzato.
Infatti, nel caso di Bitcoin, la proof of work serve ad evitare che i nodi riescano a moltiplicare il proprio potere e le proprie ricompense (nuovi bitcoin minati) all’interno della rete, creando molteplici nodi.
Questo perché le ricompense vengono distribuite casualmente in proporzione al contributo di alcune risorse che sono difficili da monopolizzare, o comunque risorse che devono sottostare alle leggi della termodinamica. La potenza computazionale e l’energia necessaria a far girare le macchine. In altri termini, la prova di lavoro rende difficile creare nuove identità che siano autorizzate a ricevere le ricompense dei nuovi bitcoin.
La potenza computazionale viene espressa attraverso il numero di hash che un computer riesce a calcolare in un certo intervallo di tempo (H/s).
Senza scendere troppo nel dettaglio, le transazioni vengono raggruppate in un blocco legato ai blocchi precedenti ed a un nuovo numero univoco chiamato nonce. Dopodiché viene eseguita la funzione di hash fino a che l’output ottenuto contiene all’inizio della stringa un determinato numero di zero, ovvero il target. L’unico modo per trovare la soluzione a questo problema e quello della brute force, ovvero per tentativi. Per cui le macchine eseguono costantemente dei calcoli in competizione tra loro, fino a che un miner fortunato raggiunge il target.
Il primo a trovare la soluzione del blocco, dimostrando la soluzione e dunque la prova di lavoro, ha diritto ad aggiungere il blocco alla catena e alla ricompensa. Appena viene aggiunto un blocco, i miner ricominciano subito la ricerca di un nuovo blocco di transazioni da convalidare ed aggiungere alla catena. Così facendo, più macchine verranno dedicate al mining dei bitcoin e più la Blockchain diventerà sicura e resiliente. La maggioranza della potenza computazionale determinerà la catena più lunga, quella valida.
Il protocollo stabilisce che vengano estratti dei nuovi bitcoin ogni dieci minuti, secondo una distribuzione di Poisson. In pratica, ogni 2016 blocchi, l’algoritmo si adatta in base alla potenza computale aggregata (hashrate), utilizzata dal network. La difficoltà del target si aggiusta periodicamente, in modo tale da mantenere l’intervallo di emissione dei nuovi bitcoin costante in media ogni 10 minuti. I rewards per questi blocchi vengono dimezzati ogni 4 anni in un processo chiamato halving, formando una serie geometrica con inflazione decrescente.
La Blockchain, strutturata in questo modo, permette di stimare statisticamente quanti calcoli una macchina deve compiere per ottenere una ricompensa, e il profitto dell’operazione.
Chiunque può contribuire al sistema con la propria potenza computazionale. Tuttavia, col tempo questa attività è diventata sempre di più un’attività imprenditoriale, la quale richiede ingenti investimenti per avere maggiori possibilità di risolvere questi puzzle e quindi di avere un ritorno economico. A tal proposito, alcune aziende si sono specializzate nella produzione di chip appositi (ASIC) che hanno come unica funzione quella di calcolare gli hash.
Il processo di estrazione di nuova moneta può essere paragonato all’estrazione dell’oro, infatti, in entrambi i casi, gli imprenditori incorrono in costi di produzione per una moneta sempre più diffiile da estrarre.
Nel caso specifico dei miners di Bitcoin, essi dovranno investire in hardware e spendere corrente elettrica, giocando secondo le regole del protocollo per essere remunerati. Infatti, i miners dovranno essere sicuri che le transazioni che vengono convalidate siano allineate alle regole del consenso, altrimenti l’energia utilizzata per convalidare e minare bitcoin verrà persa.
In altre parole, la proof of work è necessaria per avere una prova di un consumo di elettricità. Più i miner dedicheranno energia per la risoluzione dei blocchi e la convalida delle transazioni, e più sarà difficile eseguire un attacco alla catena.
L’ammontare di consumo elettrico della Blockchain di Bitcoin ha raggiunto livelli straordinari, tanto che può essere paragonato all’intero consumo di un piccolo stato.
Per questo motivo, col tempo, sono stati creati nuovi meccanismi di consenso, che potessero essere in grado di limitare il dispendio energetico mantenendo un discreto livello di sicurezza e decentralizzazione. Per esempio, Ethereum, la seconda criptovaluta per capitalizzazione, sta implementando da qualche anno il passaggio da una Proof of work ad una proof of stake.
Proof-of-stake
La proof of stake venne ideata nel 2011 come alternativa meno dispendiosa della proof of work. L’obbiettivo di base è lo stesso: raggiungere un consenso distribuito sullo stato della catena.
La differenza tra i due meccanismi di consenso è che, mentre nella PoW i miners utilizzano l’energia per convalidare le transazioni, nella PoS i blocchi vengono convalidati in proporzione allo stake detenuto dai nodi.
I nodi, chiamati validatori, sono coloro che vincolano un certo ammontare di monete per essere eletti per convalidare le transazioni ed aggiungere nuovi blocchi. In modo simile alla Pow, i nodi validatori vengono ricompensati con il signoraggio della nuova moneta e con le commissioni sulle transazioni.
La probabilità di essere scelti per convalidare il blocco è prorzionale alla percentuale delle monete totali messe in staking. Se i nodi seguono il protocollo, verranno ricompensati, altrimenti verranno penalizzati perdendo il capitale vincolato.
Quindi, nel caso della PoS, gli incentivi sono prettamente monetari e interni al sistema, il che rende questo meccanismo di conenso più vulnerabile ad attacchi informatici o a problemi di centralizzazione. Infatti, non è chiaro come il protocollo possa distribuire equamente le monete nella fase iniziale. Inoltre, i nodi con grossi capitali depositati, nel lungo periodo, avranno sempre maggiori chance di convalidare nuovi blocchi, conquistando sempre di più la totalità del network.
Questo potrebbe portare ad una notevole concentrazione della ricchezza, senza contare che potrebbero svilupparsi nuovi tipi di attacchi non ancora studiati.
Tuttavia, la proof of stake ha alcuni vantaggi rispetto alla proof of work. Ad esempio, costruire e mantenere un nodo per convalidare transazioni, non richiederebbe un investimento iniziale in hardware il che lo renderebbe più accessibile alla massa. Inoltre, come abbiamo visto, il consumo energetico è estremamente ridotto.
Per quanto riguarda le prestazioni, nella PoS il consenso sulla produzione di blocchi converge più rapidamente, rendendo questo meccanismo più performante in termini di transazioni on-chain al secondo (TPS).
Per questi motivi, la fondazione di Etherum sta studiando molto attentamente la proof of stake, che permetterebbe all’intero network di scalare ad un numero di utenti molto più grande. Infatti, in questo momento, la proof of work che attualmente è usata su Ethereum, tende a rendere questa criptovaluta lenta, pesante e costosa in termini di validazione dei suoi smart contracts.
In futuro, la fondazione ha in progetto l’integrazione di sistemi come Casper, Plasma e Raiden Network, la quale permetterebbero un netto miglioramento delle attuali performace.
Nonostante ciò, la proof of stake è in fase sperimentale e potrebbe non funzionare per molteplici motivi, il che ha rallentato il passaggio di Ethereum al nuovo meccanismo.
Delegated proof-of-stake
Questo algoritmo di consenso è stato ideato da Dan Larimer nel 2014. Di base, è una variazione della proof of stake, nella quale i nodi validatori sono eletti tramite un processo democratico.
In altre parole, gli utenti selezionano i block producers tramite una votazione, delegando il lavoro di convalida ad una terza parte di cui si fidano. In pratica, possono votare dei delegati che mantengono il network sicuro al posto loro, vincolando le proprie monete.
Il potere di voto è proporzionale al numero di monete detenute da ogni individuo, e determinerà la ricompensa che viene distribuita tra elettori e delegati per la convalida di nuovi blocchi.
In questo modo, si crea un sistema di voto che dipende direttamente dalla reputazione dei block producer. Se questi si comportano in modo scorretto, vengono espulsi e sostituiti con nuovi delegati, che saranno scelti nuovamente tramite votazione.
Solitamente, come accade nella Blockchain di EOS, il numero di delegati è prestabilito, il che rende questo tipo di consenso più efficiente della PoW e PoS, in termini di performance. Viene stimato che la Blockchain di EOS sia in grado di processare circa 100000 TPS, rispetto alle attuali 7 TPS di bitcoin.
Tuttavia, affinchè questo sistema funzioni, è necessario che la democrazia rappresentativa si sviluppi in modo organico, prima che alcuni attori siano in grado di prendere il controllo del network.
Inoltre, questo numero limitato di blocchi potrebbe portare ad una notevole centralizzazione del sistema, limitando la libertà degli individui nello scambio di valore. Infatti, la linea di confine tra questo meccanismo di consenso e una Blockchain permissioned, è molto sottile.
PoW, PoS, DPos: conclusioni
Attualmente, possiamo dire che esiste una sola Blockchain che abbia dimostrato di avere un tipo di consenso valido: la proof of work di Bitcoin.
Sebbene molti ritengono questo meccanismo inefficiente e dispendioso, fino ad oggi ha garantito alti livelli di sicurezza nello scambio di bitcoin, permettendogli di avere un valore.
Questo significa che il processo di mining di Bitcoin non spreca energia, piuttosto questa energia viene utilizzata per sostenere la sicurezza del network, uno dei pilastri fondamentali di ogni blockchain. Senza la sicurezza, il valore monetario è pari a zero.
Un altro punto da considerare è il fatto che la blockchain di bitcoin si è sviluppata con delle premesse nella teoria dei giochi completamente differenti. Infatti, bitcoin è riuscito a costruire un livello di sicurezza accettabile prima che fosse conveniente attaccarlo. Questo perché inizialmente, nessuno riteneva che fosse importante attaccare Bitcoin.
Per fare in modo che funzioni, la blockchain necessita di una struttura e di una base economica che sia grande abbastanza da resistere agli attacchi, prima che sia attaccata.
Tutte le altre Blockchain non hanno avuto questo vantaggio iniziale, il che rende più difficile il processo di costruzione del consenso distribuito. Tuttavia, i diversi meccasismi di consenso sono ancora in fase sperimentale, e ciò non significa che in futuro possano presentare sofisticate soluzioni per rispondere a tutte e tre le necessità richieste dal trilemma della Blockchain.
Gli attori principali del consenso sono:
- Sviluppatori software
- Minatori
- Exchanges
- Wallet
- Commercianti
Per approfondire
Articolo scritto da Manuel Cuberli