Famosi algoritmi di consenso: PoW vs PoS vs dBFT

La blockchain alla base di Bitcoin è probabilmente il database più sicuro al mondo.
Ogni transazione è immutabile, potenzialmente eterna, e impossibile da imitare o contraffarre.

Il trucco? L’algoritmo di consenso, o consensus algorithm (a volte anche detto consensus mechanism o scheme).

 - Dilbert by Scott Adams

Essenzialmente, ogni transazione deve prima di tutto essere validata dai nodi del network, prima di essere definitivamente inclusa nella blockchain.
Per farlo, gli stessi nodi devono raggiungere un consenso sulla validità della transazione, senza doversi semplicemente fidare l’uno delle informazioni dell’altro.

Blockchain diverse hanno raggiunto lo scopo in modi diversi, tutti a loro modo interessanti e più o meno sperimentali.

Curioso?

Ecco i tre più famosi algoritmi di consenso.

Proof-of-Work (PoW)

Sicuramente il più famoso. Principale esponente? Ovviamente Bitcoin.
Altre famose criptovalute che hanno adottato il PoW sono essenzialmente derivati di Bitcoin, ad esempio Bitcoin Cash, Litecoin e Vertcoin. Ethereum è un’eccezione tra le più famose, in quanto blockchain sviluppata da zero, ma allo stesso tempo PoW.

Come funziona il più utilizzato algoritmo di consenso al mondo, quindi?

Ogni transazione viene prima di tutto inclusa in uno specifico blocco di dati, il quale è poi registrato sulla blockchain grazie all’hashing svolto dai miner.

“…Eh?”

Dumb Question - Dilbert by Scott Adams

Proviamo a semplificare: i miner criptano il blocco tramite uno specifico algoritmo (nel caso di Bitcoin, lo SHA-256), cercando essenzialmente di indovinare il risultato corretto (chiamato hash), secondo dei parametri stabiliti da un altro algoritmo, cosiddetto “di difficoltà”.
Il primo miner che azzecca “vince” sia una predeterminata somma di Bitcoin creata da zero, sia i costi di tutte le transazioni incluse nel blocco.
Queste due componenti fungono da incentivo monetario per i miner, vista l’utilità del lavoro per l’intera comunità.
In particolare, la somma di Bitcoin generata assieme al blocco è paragonabile all’operazione di stampa moneta delle Banche Centrali, perchè genera inflazione (sebbene sia molto più prevedebile dei meccanismi classici, perchè governata da un algoritmo).

Questo sistema è efficace per un motivo molto semplice: calcolare un hash velocemente richiede un’importante quantità di potenza computazionale, e, di conseguenza, elettricità.

“Cioè, fammi capire: i miner sprecano tonnellate di energia, e questo è un bene?”

Ottima domanda. Ovviamente ci sono due facce per la stessa medaglia.

Il vantaggio di un algoritmo PoW è la barriera economica per attori fraudolenti.
Per poter cambiare una transazione, o spenderla due volte (“double spending”), un malintenzionato dovrebbe prima di tutto ottenere una maggioranza assoluta di potere computazionale nell’intero network.
Impossibile? Non esattamente. Più semplicemente, sarebbe così complesso e costoso da rendere misero l’eventuale risultato finale (guadagno < costo).

Per questo motivo, affermare che il network Bitcoin sprechi energia non è corretto.

Allo stesso tempo, è invece assolutamente corretto notare la quantità di elettricità richiesta, e l’insostenibilità del network sul lungo termine.

Potete leggere al riguardo quest’ottimo articolo, che vi riassumo per comodità.
Al momento della stesura dell’articolo, se Bitcoin fosse stato una nazione, allora  sarebbe risultato 48esimo nella classifica del fabbisogno energetico nazionale.
Confrontando Bitcoin con VISA, il paragone diventa ancora più cupo.

bitcoinpower

Con l’energia necessaria per validare una singola transazione Bitcoin si potrebbero gestire più di 400.000 transazioni sul circuito VISA.

Aggiungiamo anche che i miner sono spesso cinesi, la cui energia prodotta tramite carbone è tanto inquinante quanto economica, e che i macchinari richiesti sono rari e costosi, per chiudere un quadro piuttosto ambiguo.

Non c’è quindi da stupirsi che il mercato si sia mosso per trovare alternative sufficientemente sicure e ben più ecologiche.

È il momento di introdurre il nostro secondo algoritmo.

Proof-of-Stake (PoS)

Da Proof-of-Work, o “dimostrazione di lavoro”, a Proof-of-stake, “dimostrazione di interesse”, cosa cambia?

Come suggeriscono le traduzioni, l’algoritmo PoS preferisce un approccio ben diverso.
La figura del miner rimane concettualmente la stessa, ma differisce radicalmente nella pratica.

In una blockchain, chi sono i maggiori interessati nel garantire la sicurezza e l’affidabilità del network?
Ovviamente, i proprietari di criptovaluta o token: infatti, nel caso il network venisse compromesso, la relativa moneta non varrebbe più nulla.

Partendo da questo semplice presupposto, l’algoritmo PoS stabilisce che per minare blocchi è necessario possedere e bloccare più o meno grandi quantità di criptovaluta.
Esempio veloce: hai il 3% dell’intera fornitura di FakeCoin? La probabilità di validare un blocco è del 3%.

Image result for proof-of-stakeCosì facendo, il sistema sopperisce agilmente agli svantaggi dell’algoritmo PoW, perchè:

  • Il sistema non richiede una grande potenza computazionale, e di conseguenza non solo è efficiente dal punto di vista energetico, ma è anche indipendente da macchinari specializzati e centralizzati.
  • Per compromettere il network servirebbe una maggioranza del 51%, rendendo l’operazione complessa e costosa.
  • In caso di tentativo di compromissione, il malintenzionato dovrebbe comunque acquistare il 51% della fornitura di criptovaluta, il cui valore crollerebbe a zero in seguito all’attacco stesso.

L’algoritmo PoS è, a ragione, considerato quasi sempre preferibile al PoW proprio per questi motivi.
Inoltre, è disponibile anche in modalità diverse, ad esempio la Delegated Proof-of-Stake, dove i proprietari di criptovaluta possono votare dei rappresentanti, i quali validano il network, propongono modifiche al sistema, e condividono le ricompense del mining con i loro elettori.
Praticamente una democrazia digitale.

Ma nonostante tutto, non è esente da difetti nemmeno l’algoritmo PoS.

Prima di tutto, al momento le blockchain PoS non sono ancora in grado di raggiungere le migliaia di transazioni al secondo necessarie per un network di pagamenti. Più comunemente, si attestano sulle centinaia al secondo.

Alcuni hanno anche fatto notare come PoW e PoS condividano un difetto/caratteristica: la procedura in caso di mancato consenso sulla validità di un blocco.
In caso due blocchi siano considerati validi nello stesso momento, la blockchain si biforca, registrandoli entrambi.

 

Image result for blockchain letter of credit

Uno o più blocchi dopo, il network ristabilisce il consenso su uno dei rami, il quale prima o poi si dividerà (in inglese “fork”) di nuovo, per poi ritrovare il consenso, e così via.

Per quanto questi eventi siano considerati una funzionalità della blockchain, in alcuni casi non sono desiderabili.

Immagina di comprare una casa e registrare l’acquisto tramite blockchain: vorresti davvero che l’atto venga validato in una versione alternativa, per poi non risultare più ufficialmente valido? Ovviamente no.

Per sopperire al problema, alcune blockchain usano l’algoritmo dBFT.
Perchè?

delegated Byzantine Fault Tolerance (dBFT)

L’algoritmo di consenso dBFT è stato portato alla ribalta dalla blockchain NEO (precedentemente chiamata “Antshares”), promettendo sostanziali miglioramenti e un solido meccanismo di validazione.

Image result for delegated Byzantine Fault Tolerance

La complessità del nome deriva dal “problema dei generali bizantini”:

[…] un problema informatico su come raggiungere consenso in situazioni in cui è possibile la presenza di errori. Il problema consiste nel trovare un accordo, comunicando solo tramite messaggi, tra componenti diversi nel caso in cui siano presenti informazioni discordanti.

Applicando la stessa analogia al mondo blockchain, l’obiettivo dell’algoritmo dBFT è di creare un consenso non soltanto univoco, ma anche affidabile e a prova di malintenzionati.

Ecco come:

  1. La base utenti è divisa in utilizzatori e nodi professionali, anche detti bookkeeping nodes. I primi vogliono semplicemente sfruttare le capacità del network, i secondi invece puntano al guadagno economico derivante dalla validazione della blockchain.
  2. Similmente all’algoritmo dPoS visto in precedenza, gli utilizzatori votano per eleggere dei delegati tra i nodi professionali disponibili, assegnandogli l’onere di validare il network.
  3. Ad ogni verifica, un delegato viene scelto pseudo-randomicamente per comunicare la sua versione della blockchain al resto del network.
  4. A questo punto, se il 66% dei rimanenti delegati approva la comunicazione, allora la blockchain raggiunge il consenso sulla verifica del blocco, e lo aggiunge. In caso contrario, viene eletto un nuovo delegato, il quale propone una nuova versione da votare.

Inizia sempre più ad assomigliare a un governo digitale, vero?

Tramite questa serie di voti, il consenso finale è sempre univoco.
Oltretutto, non essendo necessario nessun calcolo, il network è veloce e scalabile, permettendo di effettuare decine di migliaia di transazioni al secondo.

In questo modo, la blockchain riesce ad essere decentralizzata (più o meno, a seconda del numero di nodi professionali presenti) e, allo stesso tempo, abbastanza performante da competere con sistemi centralizzati più tradizionali.

Conclusione

Il tasso di innovazione nel settore blockchain continua a crescere esponenzialmente, e con esso anche le soluzioni volte a migliorare questi nuovi sistemi decentralizzati.

Tra i cambiamenti più interessanti ci sono sicuramente quelli agli algoritmi di consenso, che permettono validazioni più sicure e veloci, con compromessi più o meno accettabili.

Il più famoso algoritmo, denominato Proof-of-Work, è ancora considerato il più affidabile, pur mostrando enormi problemi di sostenibilità sul lungo termine a causa dell’energia richiesta per la validazione dei blocchi.

Ovviamente altri sviluppatori non sono rimasti a guardare, e nuovi algoritmi hanno portato maggiore efficienza e velocità.
Tra questi, si sono distinti il Proof-of-Stake, il delegated Proof-of-Stake, e infine il delegated Byzantine Fault Tolerance, il quale rinuncia a una completa decentralizzazione in favore di velocità, scalabilità e consenso univoco.

Tutto questo dimostra quanto non esista ancora uno standard tra gli algoritmi di consenso, in grado di garantire performance comparabili ai circuiti tradizionali e sicurezza simile al network Bitcoin.

Al ritmo di innovazione attuale, siamo sicuri che sia solo questione di tempo.

Che il 2018 sia l’anno giusto?

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out /  Change )

Google+ photo

You are commenting using your Google+ account. Log Out /  Change )

Twitter picture

You are commenting using your Twitter account. Log Out /  Change )

Facebook photo

You are commenting using your Facebook account. Log Out /  Change )

Connecting to %s