Introduzione

Un algoritmo di consenso è un meccanismo mediante il quale utenti e programmi possono coordinare le proprie azioni in una rete distribuita. Garantisce che tutti i partecipanti alla rete raggiungano un accordo sullo stato attuale dei dati, anche se alcuni nodi falliscono. In altre parole, il consenso aiuta a mantenere la resilienza del sistema (per saperne di più, consulta Spiegazione delle missioni dei generali bizantini).

In una struttura centralizzata, un’entità ha potere sull’intero sistema. Nella maggior parte dei casi, questi organismi hanno il diritto di apportare le modifiche che ritengono opportune: non esiste un sistema di governance complesso per raggiungere il consenso tra più amministratori.

In un ambiente decentralizzato, il meccanismo di funzionamento è completamente diverso. Ad esempio, se parliamo di un database distribuito, come possiamo ottenere il consenso di tutti i partecipanti alla rete riguardo a quali dati possono essere aggiunti alla rete?

Raggiungere il consenso in un ambiente in cui le parti non possono fidarsi l’una dell’altra è stato uno degli sviluppi più importanti del settore, che ha aperto la strada all’emergere delle blockchain. In questo articolo esamineremo l'importanza degli algoritmi di consenso per il corretto funzionamento delle criptovalute e dei registri distribuiti.


Algoritmi di consenso e criptovaluta

Nelle reti di criptovaluta, i saldi degli utenti vengono registrati in un database: la blockchain. Ogni utente (nodo) deve possedere una copia identica del database. Altrimenti, le informazioni varieranno, il che violerà i principi di affidabilità e apertura dell’intera rete di criptovaluta.

La crittografia a chiave pubblica garantisce che soggetti non autorizzati non possano accedere alle tue monete. Tuttavia, gli utenti necessitano anche di un modo affidabile per verificare se i fondi sono stati spesi o meno.

Satoshi Nakamoto, il creatore di Bitcoin, ha proposto il sistema Proof of Work per coordinare gli utenti della rete. Successivamente, esamineremo come funziona PoW, ma prima identificheremo le caratteristiche comuni della maggior parte degli algoritmi di consenso esistenti.

Il primo è l'obbligo per gli utenti che desiderano aggiungere blocchi (li chiameremo validatori) di fornire in cambio una sorta di stake. Una quota o quota è un determinato valore che un validatore deve proporre come garanzia di un lavoro onesto: se i validatori tentano di ingannare il sistema, perderanno la loro quota. La quota può essere potenza di calcolo, criptovaluta o reputazione. 

Potresti porre una domanda logica: perché dovrebbero rischiare le proprie risorse? Il fatto è che qui esiste uno speciale sistema di ricompensa per il lavoro. In genere, i premi vengono emessi sotto forma di token di protocollo nativo e i fondi per essi vengono prelevati dalle tariffe degli utenti e dalla criptovaluta appena creata, o talvolta da entrambi.

Un'altra caratteristica importante è la trasparenza per identificare le attività fraudolente. La produzione di blocchi dovrebbe essere costosa e il controllo del lavoro svolto dovrebbe essere economico e accessibile agli utenti comuni. Pertanto, chiunque può controllare e monitorare il lavoro dei validatori.


Tipi di algoritmi di consenso

Prova di lavoro (PoW)

Proof of Work (PoW) è diventato il capostipite di tutti gli altri algoritmi di consenso sulla blockchain. È stato implementato per la prima volta in Bitcoin, ma il concetto stesso è apparso molto prima. Nella Proof of Work, i validatori (chiamati minatori) eseguono l'hashing dei dati che desiderano aggiungere finché non ottengono una soluzione adeguata a un puzzle crittografico.

Un hash è un insieme casuale di lettere e numeri creato quando i dati vengono elaborati tramite una funzione hash. Se esegui nuovamente l'hashing degli stessi dati, otterrai lo stesso risultato, ma se cambi anche un solo valore, l'hash diventerà completamente diverso.

Osservando l'output, non sarai in grado di dire quali informazioni sono state passate attraverso la funzione. Per questo motivo, gli hash sono ottimi per dimostrare qualcosa che sapevi prima di un certo tempo. Puoi fornire a qualcuno un tale hash e quindi fornire le informazioni iniziali in modo che la persona possa eseguirlo attraverso la funzione e vedere se l'output corrisponde.

Nel Proof of Work il protocollo stabilisce le condizioni per la conferma (convalida) di un blocco. Ad esempio, puoi impostare che solo il blocco il cui hash inizia con 00 sarà valido. L'unico modo per un minatore di creare un blocco valido è semplicemente ripetere i dati di input. I validatori configurano il programma per produrre un risultato diverso ogni volta che viene sottoposto ad hashing finché non viene generato l'hash corretto. 

Nelle grandi blockchain è estremamente difficile trovare un hash adatto: avrai bisogno di un intero magazzino di attrezzature speciali per eseguire l'hashing di una grande quantità di dati (con unità di tipo ASIC) per essere competitivi e riuscire a creare un blocco valido.

Nel settore minerario, la posta in gioco è il costo di tali attrezzature e l’elettricità spesa per il lavoro. L'hardware di tipo ASIC (circuito integrato specifico per l'applicazione) è progettato per una singola attività, quindi non può essere utilizzato per altro oltre al mining di criptovaluta. L'unico modo per recuperare l'investimento iniziale è attraverso il mining e le ricompense per l'aggiunta riuscita di un blocco.

Per la rete è sufficiente assicurarsi di aver effettivamente creato il blocco corretto. Anche se i tuoi ASIC eseguono trilioni di combinazioni per ottenere l'hash corretto, per verificarne la correttezza è sufficiente passare i dati attraverso la funzione una volta. Se i tuoi dati producono un hash valido, il blocco verrà accettato come valido dalla rete e riceverai una ricompensa. Altrimenti la rete rifiuta la tua richiesta di aggiungere un blocco e puoi dire di aver perso tempo ed elettricità.


Prova di partecipazione (PoS)

La Proof of Stake (PoS) è apparsa agli albori di Bitcoin come alternativa alla Proof of Work. Il sistema PoS non richiede la partecipazione dei minatori, l'uso di attrezzature speciali o il consumo massiccio di elettricità: sarà sufficiente un normale personal computer.

Inoltre, dovrai dare il tuo contributo. Il PoS non utilizza una risorsa esterna (elettricità o apparecchiature), ma una risorsa interna: la criptovaluta. I requisiti possono variare tra i protocolli, ma generalmente esiste un importo minimo di fondi che garantisce al proprietario il diritto di puntare.

Durante il periodo di staking i fondi sono bloccati nel portafoglio (non possono essere spostati durante lo staking). Nella maggior parte dei casi, sei d'accordo con altri validatori riguardo a quali transazioni andranno al blocco successivo. In un certo senso, i validatori piazzano una scommessa sul blocco che vogliono aggiungere alla blockchain, ma il diritto di scegliere il blocco rimane del protocollo.

I validatori il cui blocco è selezionato riceveranno una parte delle commissioni di transazione a seconda dell'entità della loro puntata. Più fondi nel portafoglio saranno bloccati, maggiore sarà la ricompensa. Tuttavia, tentando di ingannare il sistema e di aggiungere transazioni non valide, gli aggressori rischiano di perdere parte (o tutta) la loro quota. Pertanto, la PoS funziona in modo simile alla PoW: agire onestamente è più redditizio che cercare di imbrogliare il sistema.

Questo meccanismo non prevede ricompense per i validatori sotto forma di monete di nuova creazione. Con questo algoritmo, la valuta nativa della blockchain deve essere emessa in un altro modo, ad esempio tramite un’offerta iniziale (ICO o IEO), oppure lanciando il protocollo su PoW e poi passando a PoS.

Ad oggi, la Proof of Stake nella sua forma pura è stata implementata solo in poche criptovalute con una rete relativamente piccola, per questo motivo è ancora difficile dire con certezza se possa diventare una valida alternativa alla PoW. Anche se teoricamente questo algoritmo sembra valido, in pratica tutto avviene in modo leggermente diverso. 

Una volta implementato il PoS all’interno di una rete con una grande quantità di fondi, nel sistema entrano in gioco le teorie dei giochi e vari incentivi finanziari. Se qualcuno vuole "hackerare" un sistema PoS, lo farà solo con la garanzia di un profitto, quindi possiamo solo scoprire quanto è probabile che ciò accada sulla rete.

Molto presto verranno effettuati test su larga scala del PoS: nell'ambito dell'aggiornamento della rete Ethereum (noto anche come Ethereum 2.0) verrà implementato il protocollo Casper.


Altri algoritmi di consenso

Proof of Work e Proof of Stake sono gli algoritmi di consenso più discussi, ma ce ne sono molti altri che presentano vantaggi e svantaggi. Ti consigliamo di familiarizzare con loro in modo più dettagliato nei seguenti articoli:

  • Spiegazione della prova di lavoro differita

  • Come funziona la prova di partecipazione in leasing

  • Spiegazione della prova dell'autorità

  • Spiegazione delle prove di combustione

  • Chiarimenti sulla prova delegata della partecipazione

  • Algoritmo di consenso ibrido


Riprendere

I meccanismi di consenso sono vitali per il funzionamento dei sistemi distribuiti. Molti credono che la più grande innovazione di Bitcoin sia stata l'uso della Proof of Work, che consente agli utenti di concordare una serie di fatti comuni.

Gli algoritmi di consenso oggi supportano non solo i sistemi di moneta digitale, ma anche le blockchain, consentendo agli sviluppatori di eseguire codice su una rete distribuita. Ora rappresentano la pietra angolare della tecnologia blockchain e sono fondamentali per la sostenibilità a lungo termine delle varie reti esistenti.

Tra tutti gli algoritmi di consenso, il Proof of Work rimane ancora dominante, per il semplice motivo che non è stata ancora proposta un’alternativa più affidabile e più sicura. Tuttavia, c’è un’enorme quantità di ricerca e sviluppo per sostituire PoW, e probabilmente ne vedremo solo di più.