Contenuti
Un algoritmo di consenso è un meccanismo che permette a utenti o dispositivi di coordinarsi in un contesto distribuito. Deve garantire che tutti gli agenti nel sistema possano concordare su una singola fonte di verità, anche se alcuni agenti falliscono. In altre parole, il sistema deve essere
fault-tolerant (vedi anche:
La Byzantine Fault Tolerance Spiegata).
In una configurazione centralizzata, una singola entità ha potere sul sistema. In gran parte dei casi, possono apportare modifiche come vogliono – non esiste un complesso sistema di governance per raggiungere il consenso tra diversi amministratori.
In una configurazione decentralizzata, invece, è tutta un'altra storia. Supponiamo di avere un database distribuito – come facciamo a raggiungere un accordo su quali voci debbano essere aggiunte?
Superare questa sfida in un ambiente in cui sconosciuti non si fidano gli uni degli altri è stato forse lo sviluppo più cruciale per aprire la strada alle
blockchain. In questo articolo, andremo a illustrare come gli algoritmi di consenso sono vitali per il funzionamento delle criptovalute e dei registri distribuiti.
Nelle
criptovalute, i saldi degli utenti vengono registrati in un database – la
blockchain. E' fondamentale che tutti (o, più precisamente, tutti i
nodi) mantengano una copia identica del database. Altrimenti, finiresti presto con informazioni contrastanti, compromettendo totalmente lo scopo del network di criptovaluta.
La
crittografia a chiave pubblica garantisce che gli utenti non possono spendere le
monete di altri, ma deve comunque esserci una singola fonte di verità su cui i partecipanti al network si basano, per riuscire a determinare se i fondi sono già stati spesi.
Satoshi Nakamoto, il creatore di
Bitcoin, ha proposto un sistema
Proof of Work per coordinare i partecipanti. Spiegheremo come funziona la PoW tra poco – per ora, andremo a identificare alcuni dei tratti che accomunano i vari algoritmi di consenso esistenti.
Per prima cosa, chiediamo agli utenti che vogliono aggiungere
blocchi (chiamiamoli
validatori) di fornire una
stake. La stake è una qualche sorta di valore che il validatore deve mettere in gioco, con l'obiettivo di dissuaderlo dall'agire in modo disonesto. Se imbroglia, perderà la sua posta in gioco. Esempi di questa stake includono potenza computazionale, criptovaluta o persino reputazione.
Perché i validatori dovrebbero rischiare le proprie risorse? Beh, c'è anche una ricompensa in palio. Questa consiste solitamente nella criptovaluta nativa del protocollo ed è composta dalle commissioni pagate da altri utenti, unità di criptovaluta appena generate o entrambi.
L'ultimo elemento di cui abbiamo bisogno è la
trasparenza. Dobbiamo essere in grado di scoprire quando qualcuno sta imbrogliando. Idealmente, dovrebbe essere costoso produrre
blocchi ma economico per chiunque verificarli. Ciò garantisce che i validatori sono tenuti sotto controllo dagli utenti regolari.
Proof of Work (PoW)
La
Proof of Work (PoW) è il padrino degli algoritmi di consenso blockchain. E' stato implementato per la prima volta in Bitcoin, ma il concetto è in circolazione da ben prima. Nella Proof of Work, i validatori (denominati
miner) elaborano tramite
hash i dati che vogliono aggiungere fino a quando non producono una soluzione specifica.
Una
hash è una stringa apparentemente casuale di lettere e numeri generata dall'elaborazione di dati attraverso una
funzione di hash. Tuttavia, elaborando gli stessi dati nella stessa funzione, si otterrà lo stesso output. Cambiando anche un solo dettaglio, però, porterà a una hash completamente differente.
Esaminando l'output, non è possibile sapere quale informazione è stata immessa nella funzione. Quindi, sono utili per dimostrare la conoscenza di un certo dato prima di un certo momento. Puoi dare a qualcuno una hash, e quando più tardi riveli i dati, questa persona può immetterla nella funzione per verificare che l'output sia lo stesso.
Nella Proof of Work, il protocollo stabilisce le condizioni per ciò che rende un blocco valido. Potrebbe dire, per esempio, solo un blocco la cui hash inizia con 00 sarà valido. L'unico modo che il miner ha per creare un blocco che corrisponda a questa combinazione è il brute force di input. Possono modificare un parametro nei dati per produrre un esito differente ad ogni tentativo fino a quando non ottengono la hash corretta.
Nelle blockchain più grandi, l'asticella è incredibilmente alta. Per competere con gli altri miner, avresti bisogno di un magazzino pieno di hardware appositamente dedicato all'hashing (
ASIC) per avere una possibilità di produrre un blocco valido.
La tua stake, quando fai
mining, è il costo di questi dispositivi e l'elettricità necessaria per operarle. Le ASIC sono costruite per un unico scopo, quindi non hanno nessun utilizzo al di fuori del mining di
criptovalute. L'unico modo di recuperare il tuo investimento iniziale è fare mining, in cui puoi ottenere una ricompensa significativa se riesci ad aggiungere un nuovo blocco alla blockchain.
E' facilissimo per il network verificare se hai creato davvero il blocco giusto. Anche se hai provato trilioni di combinazioni per ottenere la hash corretta, a tutti gli altri basta immettere i tuoi dati in una funzione una volta sola. Se i tuoi dati producono una hash valida, saranno accettati, e tu riceverai una ricompensa. Altrimenti, il network li respingerà e avrai sprecato tempo ed elettricità per niente.
Proof of Stake (PoS)
La
Proof of Stake (PoS) è stata proposta nei primi tempi di Bitcoin come alternativa alla Proof of Work. In un sistema PoS, non esiste il concetto di miner, hardware specializzato o consumo massiccio di energia. Tutto quello che ti serve è un normale PC.
Beh, non è esattamente tutto. Devi comunque mettere la posta in gioco. Nella PoS, non metti in gioco una risorsa esterna (come elettricità o hardware), ma una interna – criptovaluta. Le regole variano per ogni protocollo, ma in genere c'è un importo minimo di fondi che devi possedere per poter partecipare allo
staking.
Da qui, bloccherai i tuoi fondi in uno
wallet (non possono essere spostati mentre fai staking). Solitamente ti coordinerai con altri validatori per decidere quali transazioni vengono inserite nel blocco successivo. In un certo senso, stai scommettendo sul blocco che verrà selezionato, e il protocollo ne sceglierà uno.
Se il tuo blocco viene selezionato, riceverai una percentuale delle commissioni di transazione, a seconda della tua stake. Più fondi hai bloccato, più puoi guadagnare. Se invece tenti di imbrogliare proponendo transazioni non valide, perderai una porzione (o la totalità) della tua stake. Quindi, abbiamo un meccanismo simile alla PoW – agire onestamente è più redditizio che agire disonestamente.
In genere, la ricompensa dei validatori non comprende monete appena create. La valuta nativa della blockchain deve quindi essere emessa in qualche altro modo. Questo può essere fatto tramite una distribuzione iniziale (ovvero,
ICO o
IEO) oppure lanciare il protocollo con la PoW prima di passare in un secondo tempo alla PoS.
Ad oggi, la Proof of Stake pura è stata implementata solo in criptovalute minori. Pertanto, non è chiaro se può essere una valida alternativa alla PoW. Anche se sembra essere solida sotto il profilo teorico, nella pratica sarà molto diverso.
Quando la PoS verrà implementata su un network con una grande quantità di valore, il sistema diventerà una combinazione di
teoria dei giochi e incentivi finanziari. E' probabile che chiunque abbia le giuste competenze per “hackerare” un sistema PoS lo farà solo se può guadagnarci – quindi, l'unico modo per scoprire se è valido è su un network attivo.
Presto vedremo la PoS testata su larga scala –
Casper verrà implementato come parte di una serie di aggiornamenti al network di Ethereum (conosciuti collettivamente come
Ethereum 2.0).
La Proof of Work e la Proof of Stake sono gli algoritmi di consenso più discussi, ma esiste un'ampia gamma di altre opzioni, ciascuna con i propri vantaggi e svantaggi. Dai un'occhiata ai seguenti articoli:
I meccanismi per raggiungere il consenso sono vitali per il funzionamento dei sistemi distribuiti. Molti credono che la più grande innovazione di Bitcoin sia stato l'uso della Proof of Work per consentire agli utenti di accordarsi su una serie di fatti condivisa.
Oggi, gli algoritmi di consenso sono alla base non solo di sistemi di moneta digitale, ma anche di blockchain che permettono agli sviluppatori di eseguire codice attraverso un network distribuito. Sono un caposaldo della tecnologia blockchain e sono fondamentali per la validità nel lungo termine dei vari network esistenti.
Tra tutti gli algoritmi di consenso, la Proof of Work rimane l'opzione dominante. Un'alternativa più affidabile e più sicura non è ancora stata proposta. Detto questo, c'è un'impressionante quantità di ricerca e sviluppo in corso per trovare sostituti alla PoW, ed è probabile che ne vedremo altri emergere negli anni a venire.