introduzione
Un algoritmo di consenso è un meccanismo che consente agli utenti o alle macchine di coordinarsi in un ambiente distribuito. Garantisce che tutti gli agenti del sistema concordino su un'unica fonte di verità, anche se alcuni agenti falliscono. Cioè, il sistema deve essere tollerante agli errori (vedi anche: Spiegazione della tolleranza agli errori bizantina).
In un sistema centralizzato, una singola entità alimenta e controlla la rete. Nella maggior parte dei casi, l’entità può apportare le modifiche che ritiene opportune: non esiste un sistema di governance complesso che consenta a più amministratori di raggiungere il consenso.
In un sistema decentralizzato, è una storia completamente diversa. Diciamo che stiamo lavorando con un database distribuito: come possiamo concordare quali dati aggiungere?
Superare questa sfida in un ambiente in cui i partecipanti non si fidano l’uno dell’altro è stato forse lo sviluppo più cruciale che ha aperto la strada alle blockchain. In questo articolo vedremo perché gli algoritmi di consenso sono essenziali per il funzionamento delle criptovalute e dei registri distribuiti.
Algoritmi di consenso e criptovalute
Nelle criptovalute, i saldi degli utenti vengono registrati in un database: la blockchain. È essenziale che tutti (ogni nodo per la precisione) mantengano una copia identica del database. Altrimenti potrebbero emergere informazioni contrastanti, danneggiando l’intera rete.
La crittografia a chiave pubblica garantisce che gli utenti non possano spendere le valute degli altri. Tuttavia, deve esserci ancora un’unica fonte di verità su cui i partecipanti alla rete fanno affidamento per determinare se i fondi sono già stati spesi.
Satoshi Nakamoto, il creatore di Bitcoin, ha proposto il sistema Proof of Work per coordinare i partecipanti. Vedremo a breve come funziona PoW: per ora identifichiamo alcuni tratti comuni tra molti algoritmi di consenso esistenti.
Per prima cosa chiediamo agli utenti che desiderano aggiungere blocchi (li chiameremo validatori) di fornire una puntata. Lo staking è un valore che un validatore deve garantire per dissuaderlo dall'agire in modo dannoso. Se imbrogliano, perderanno la loro puntata. Ad esempio la potenza di calcolo, le criptovalute o la loro reputazione.
Perché dovrebbero rischiare le proprie risorse? Molto semplicemente perché c’è in gioco una ricompensa. Si tratta generalmente di una criptovaluta nativa del protocollo che si basa sulle commissioni pagate dagli utenti, sulle criptovalute appena create o su entrambe.
L’ultima cosa di cui abbiamo bisogno è la trasparenza. Dobbiamo essere in grado di capire quando qualcuno sta tradendo. Idealmente, dovrebbe essere costoso per loro produrre blocchi, ma economico per chiunque validarli. Ciò garantisce che i validatori siano controllati anche dagli utenti ordinari.
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 con Bitcoin, sebbene il concetto sia in circolazione da molto tempo. Nella Proof of Work, i validatori (chiamati minatori) eseguono l'hashing dei dati che desiderano aggiungere finché non producono una soluzione specifica.
Un hash è una stringa casuale di lettere e numeri creata durante l'esecuzione di una funzione hash. Ma se i dati di input sono gli stessi, i risultati di output saranno gli stessi. Tuttavia, il minimo cambiamento genererà un hash completamente diverso.
I dati in uscita non ci consentono di determinare i dati in ingresso. Si tratta quindi di una funzione molto efficace per dimostrare che si conosce un dato per un certo periodo di tempo. Puoi fornire a qualcuno il suo hash e quando riveli i dati, quella persona può eseguirli attraverso la funzione per assicurarsi che l'output sia lo stesso.
Nel Proof of Work il protocollo definisce le condizioni che rendono valido un blocco. Ciò potrebbe ad esempio dire che è valido solo un blocco il cui hash inizia con 00. L'unico modo in cui un minatore può creare un blocco valido è usare la forza bruta. Per produrre un risultato diverso finché non viene trovato quello giusto, i minatori possono modificare un parametro nei propri dati.
Per le blockchain più grandi il livello è molto, molto alto. Per competere con gli altri miner è necessario avere un magazzino pieno di ASIC, hardware appositamente progettato per aumentare le possibilità di produrre un blocco valido.
La tua partecipazione nel settore minerario corrisponde ai costi di queste macchine e dell’elettricità necessaria per farle funzionare. Gli ASIC sono progettati esclusivamente per il mining, quindi non hanno alcun utilizzo al di fuori del mining di criptovalute. L'unico modo per recuperare il tuo investimento iniziale è estrarre e guadagnare ricompense aggiungendo con successo un nuovo blocco alla blockchain.
È molto semplice per la rete verificare di aver creato il blocco corretto. Una singola esecuzione con la funzione ti consente di verificare i risultati dei tuoi numerosi test. Se i tuoi dati producono un hash valido, verranno accettati e riceverai una ricompensa. Altrimenti la rete lo invaliderà 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. Nel PoS non esistono i concetti di miner, hardware specializzato e consumo massiccio di energia. Tutto ciò di cui hai bisogno è un computer.
E qualcosina... Devi mettere una moneta nella macchinetta. Nel PoS, invece di utilizzare una risorsa esterna (macchine ed elettricità), utilizzerai una risorsa interna (una criptovaluta). Le regole differiscono a seconda del protocollo, ma generalmente dovrai detenere un importo minimo per partecipare allo staking.
Dovrai quindi bloccare i tuoi fondi in un portafoglio (non possono essere spostati quando fai staking). Generalmente concorderai con gli altri validatori quali transazioni passeranno al blocco successivo. In un certo senso si scommette su quale blocco verrà selezionato e il protocollo decide il resto.
Se il tuo blocco viene selezionato, riceverai una parte delle commissioni di transazione, proporzionale alla tua puntata. Più fondi blocchi, più possibilità hai di vincere. Ma se provi a imbrogliare offrendo operazioni non valide, perderai parte (o tutta) la tua puntata. Pertanto, abbiamo un meccanismo simile al PoW: agire onestamente è più redditizio che agire in modo disonesto.
In generale, le valute appena create non fanno parte dei premi del validatore. La valuta blockchain nativa deve quindi essere emessa in modo diverso. Questo può essere fatto attraverso una distribuzione iniziale (ad esempio: una ICO o una IEO) o attraverso l'uso di PoW all'inizio del protocollo prima della sua transizione a PoS.
Ad oggi, la Proof of Stake pura viene utilizzata solo da piccole criptovalute. Pertanto, non è chiaro se possa fungere da valida alternativa al PoW. Sebbene ciò sembri teoricamente valido, nella pratica sarà molto diverso.
Una volta implementato il PoS su una rete con una grande quantità di informazioni, il sistema diventa un terreno fertile perfetto per incentivi finanziari e teoria dei giochi. Chiunque abbia il know-how per “hackerare” un sistema PoS lo farà solo se sarà possibile trarne vantaggio – ecco perché l’unico modo per scoprire se è possibile è provare direttamente in rete.
A breve vedremo test su larga scala di PoS: Casper sarà implementato come parte di una serie di aggiornamenti alla rete Ethereum (nota anche come Ethereum 2.0).
Tipi di algoritmi di consenso
Proof of Work e Proof of Stake sono gli algoritmi di consenso più comuni. Ma ce ne sono ovviamente molti altri, con tutti i loro vantaggi e svantaggi. Consulta i seguenti articoli:
La spiegazione del Delayed Proof of Work
Il consenso Leased Proof of Stake spiegato
La Proof of Authority spiegata
Spiegazione della prova di ustione
Spiegazione della Proof of Stake delegata
Spiegazione del consenso ibrido PoW/PoS
Concludere
I meccanismi per raggiungere il consenso sono vitali per il funzionamento dei sistemi distribuiti. Molti credono che la più grande innovazione di Bitcoin sia 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 valuta digitale, ma anche delle blockchain, che consentono agli sviluppatori di eseguire codice attraverso una rete distribuita. Costituiscono una pietra angolare della tecnologia blockchain e sono essenziali per la sostenibilità a lungo termine delle varie reti esistenti.
Di tutti gli algoritmi di consenso, il Proof of Work rimane ancora il più utilizzato. In effetti, non è stata ancora proposta un’alternativa più affidabile e sicura. Detto questo, c’è un’enorme quantità di ricerca e sviluppo destinata a sostituire la PoW ed è molto probabile che vedremo emergere più consenso negli anni a venire.



