introduzione
Un algoritmo di consenso è un meccanismo che consente agli utenti o alle macchine di coordinarsi in un ambiente distribuito. È necessario garantire che tutti gli agenti del sistema possano concordare su un’unica fonte di verità, anche se alcuni agenti falliscono. In altre parole, il sistema deve essere tollerante agli errori (vedi anche: Spiegazione della tolleranza agli errori bizantina).
In una configurazione centralizzata, una singola entità ha potere sul sistema. Nella maggior parte dei casi, possono apportare modifiche a loro piacimento: non esiste un sistema di governance complesso per raggiungere il consenso tra molti amministratori.
Ma in una configurazione decentralizzata, è tutta un’altra storia. Supponiamo che stiamo lavorando con un database distribuito: come raggiungiamo un accordo su quali voci aggiungere?
Superare questa sfida in un ambiente in cui gli estranei non si fidano l’uno dell’altro è stato forse lo sviluppo più cruciale che ha aperto la strada alle blockchain. In questo articolo, daremo un'occhiata a come gli algoritmi di consenso sono vitali per il funzionamento delle criptovalute e dei registri distribuiti.
Algoritmi di consenso e criptovaluta
Nelle criptovalute, i saldi degli utenti sono registrati in un database: la blockchain. È essenziale che tutti (o più precisamente, ogni nodo) mantengano una copia identica del database. Altrimenti, ti ritroveresti presto con informazioni contrastanti, minando l’intero scopo della rete di criptovaluta.
La crittografia a chiave pubblica garantisce che gli utenti non possano spendere le monete degli altri. Ma è ancora necessario che ci sia un’unica fonte di verità su cui i partecipanti alla rete possano fare affidamento per essere in grado di 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. Tra poco vedremo come funziona PoW: per ora identificheremo alcuni dei tratti comuni dei numerosi algoritmi di consenso esistenti.
In primo luogo, richiediamo che gli utenti che desiderano aggiungere blocchi (li chiameremo validatori) forniscano uno stake. La posta in gioco è una sorta di valore che un validatore deve proporre, che lo scoraggia dall'agire in modo disonesto. Se imbrogliano, perderanno la loro puntata. Gli esempi includono la potenza di calcolo, la criptovaluta o persino la reputazione.
Perché dovrebbero prendersi la briga di rischiare le proprie risorse? Bene, c'è anche una ricompensa disponibile. Questo di solito consiste nella criptovaluta nativa del protocollo ed è composto da commissioni pagate da altri utenti, unità di criptovaluta appena generate o entrambi.
L’ultima cosa di cui abbiamo bisogno è la trasparenza. Dobbiamo essere in grado di rilevare quando qualcuno tradisce. Idealmente, dovrebbe essere costoso per loro produrre blocchi, ma economico per chiunque validarli. Ciò garantisce che i validatori siano tenuti sotto controllo dagli utenti regolari.
Tipi di algoritmi di consenso
Prova di lavoro (PoW)
Proof of Work (PoW) è il padrino degli algoritmi di consenso blockchain. È stato implementato per la prima volta in Bitcoin, ma il concetto vero e proprio esiste da qualche tempo. Nella Proof of Work, i validatori (detti minatori) eseguono l'hashing dei dati che desiderano aggiungere finché non producono una soluzione specifica.
Un hash è una stringa apparentemente casuale di lettere e numeri creata quando si eseguono dati tramite una funzione hash. Ma, se esegui nuovamente gli stessi dati, ti ritroverai sempre con lo stesso output. Cambia anche un solo dettaglio, però, e il tuo hashish sarà completamente diverso.
Osservando l'output, non è possibile dire quali informazioni siano state inserite nella funzione. Sono quindi utili per dimostrare che conoscevi un dato prima di un certo tempo. Puoi fornire a qualcuno il suo hash e, quando successivamente riveli i dati, quella persona può eseguirli attraverso la funzione per assicurarsi che l'output sia lo stesso.
Nella Proof of Work, il protocollo stabilisce le condizioni per ciò che rende valido un blocco. Potrebbe dire, ad esempio, che solo un blocco il cui hash inizia con 00 sarà valido. L’unico modo per il minatore di crearne uno che corrisponda a quella combinazione è utilizzare input di forza bruta. Possono modificare un parametro nei loro dati per produrre un risultato diverso per ogni ipotesi finché non ottengono l'hash giusto.
Con le principali blockchain, l’asticella è incredibilmente alta. Per competere con altri minatori, avresti bisogno di un magazzino pieno di hardware di hashing speciale (ASIC) per avere la possibilità di produrre un blocco valido.
La tua posta in gioco, durante l'estrazione, è il costo di queste macchine e l'elettricità necessaria per farle funzionare. Gli ASIC sono costruiti per uno scopo, quindi non sono utilizzati in applicazioni esterne al mining di criptovalute. L'unico modo per recuperare il tuo investimento iniziale è fare mining, che produce una ricompensa significativa se aggiungi con successo un nuovo blocco alla blockchain.
È banale per la rete verificare che tu abbia effettivamente creato il blocco giusto. Anche se hai provato trilioni di combinazioni per ottenere l'hash giusto, è sufficiente che i tuoi dati vengano eseguiti tramite una funzione una volta. Se i tuoi dati producono un hash valido, verranno accettati e riceverai una ricompensa. Altrimenti la rete lo rifiuterà e avrai sprecato tempo ed elettricità inutilmente.
Prova di partecipazione (PoS)
La Proof of Stake (PoS) è stata proposta agli albori 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 ciò di cui hai bisogno è un normale PC.
Beh, non tutti. Devi ancora mettere un po' di pelle nel gioco. In PoS, non proponi una risorsa esterna (come elettricità o hardware), ma una risorsa interna: la criptovaluta. Le regole differiscono per ogni protocollo, ma generalmente esiste un importo minimo di fondi che devi detenere per poter beneficiare dello staking.
Da lì, blocchi i tuoi fondi in un portafoglio (non possono essere spostati mentre stai puntando). In genere concorderai con altri validatori su quali transazioni verranno inserite nel blocco successivo. In un certo senso si scommette sul blocco che verrà selezionato e il protocollo ne sceglierà uno.
Se il tuo blocco è selezionato, riceverai una parte delle commissioni di transazione, a seconda della tua puntata. Più fondi hai bloccato, più puoi guadagnare. Ma se tenti di imbrogliare proponendo transazioni non valide, perderai una parte (o tutta) la tua puntata. Pertanto, abbiamo un meccanismo simile al PoW: agire onestamente è più redditizio che agire disonestamente.
Generalmente, non ci sono monete appena create come parte della ricompensa per i validatori. La valuta nativa della blockchain deve quindi essere emessa in qualche altro modo. Ciò può essere fatto tramite una distribuzione iniziale (ad esempio, un ICO o IEO) o avviando il protocollo con PoW prima di passare successivamente a PoS.
Ad oggi, la Proof of Stake pura è stata realmente utilizzata solo in criptovalute più piccole. Pertanto, non è chiaro se possa fungere da valida alternativa al PoW. Anche se teoricamente sembra valido, nella pratica sarà molto diverso.
Una volta che il PoS viene implementato su una rete con un grande valore, il sistema diventa un campo di gioco per la teoria dei giochi e gli incentivi finanziari. Chiunque abbia il know-how per "hackerare" un sistema PoS probabilmente lo farebbe solo se potesse trarne vantaggio; pertanto, l'unico modo per scoprire se è fattibile è su una rete attiva.
Presto vedremo il PoS testato su larga scala: Casper sarà implementato come parte di una serie di aggiornamenti alla rete Ethereum (noti collettivamente come Ethereum 2.0).
Altri algoritmi di consenso
Proof of Work e Proof of Stake sono gli algoritmi di consenso più discussi. Ma ce n’è un’ampia varietà di altri, tutti con i propri vantaggi e svantaggi. Consulta i seguenti articoli:
Spiegazione della prova di lavoro ritardata
Spiegazione del consenso della prova noleggiata
Spiegazione della prova dell'autorità
Spiegazione della prova di ustione
Spiegazione della prova di partecipazione delegata
Spiegazione del consenso ibrido PoW/PoS
Pensieri conclusivi
I meccanismi per raggiungere il 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 per consentire agli utenti di concordare una serie di fatti condivisi.
Gli algoritmi di consenso oggi sono alla base non solo dei sistemi di moneta digitale, ma anche delle blockchain che consentono agli sviluppatori di eseguire codice su una rete distribuita. Ora rappresentano una pietra angolare della tecnologia blockchain e sono fondamentali per la sostenibilità a lungo termine delle varie reti esistenti.
Di tutti gli algoritmi di consenso, Proof of Work rimane l’offerta dominante. Un’alternativa più affidabile e più sicura deve ancora essere proposta. Detto questo, c’è un’enorme quantità di ricerca e sviluppo sui sostituti del PoW, e probabilmente ne vedremo emergere altri nei prossimi anni.



