introduzione

Un algoritmo di consenso è un meccanismo che consente agli utenti o alle macchine di coordinare le relazioni in un ambiente distribuito. Occorre garantire che tutti gli agenti del sistema possano infine concordare su un’unica fonte di verità (anche se alcuni agenti non sono d’accordo). In altre parole, il sistema deve avere una buona tolleranza agli errori (vedi anche "Spiegazione della tolleranza agli errori bizantina").

In un ambiente centralizzato, una singola entità ha il controllo sull’intero sistema. Nella maggior parte dei casi, queste entità sono spesso in grado di modificare il sistema a piacimento perché non riescono a creare un sistema di governance ben definito che consenta a molti amministratori di raggiungere un consenso.​

Ma se avviene in un ambiente decentralizzato, la storia è completamente diversa. Supponendo di utilizzare un database distribuito, come possiamo concordare quali voci aggiungere?

Questo ambiente è pieno di estranei che non si fidano l’uno dell’altro. Come superare questa sfida potrebbe essere la chiave per risolvere i problemi di sviluppo e aprire la strada alla blockchain. In questo articolo esamineremo l'importanza degli algoritmi di consenso per l'esecuzione di criptovalute e registri distribuiti.


Algoritmi di consenso e criptovalute

In un ambiente di criptovaluta, i saldi degli utenti vengono registrati nel database blockchain. È fondamentale che ogni utente (più precisamente, ogni nodo) mantenga la stessa copia del database. In caso contrario, alla fine si verificheranno problemi di conflitto di informazioni che mineranno l’intero scopo della rete di criptovaluta.

La crittografia a chiave pubblica garantisce che gli utenti non possano spendere i token di altri utenti. Ma deve esserci un’unica fonte di verità di cui i partecipanti alla rete possano fidarsi per sapere se i fondi sono stati spesi.

Il creatore di Bitcoin Satoshi Nakamoto ha proposto un sistema di prova del lavoro come modo per coordinare i partecipanti. Entreremo più in dettaglio su come funziona la Proof of Work in seguito. Ora, comprendiamo innanzitutto le caratteristiche comuni dei vari algoritmi di consenso esistenti.

Innanzitutto, abbiamo bisogno dello staking da parte degli utenti che desiderano aggiungere blocchi (noti anche come validatori). I validatori devono puntare una quota di un certo valore per impedire loro di commettere frodi. Una volta che imbrogliano, perderanno i loro diritti in gioco. Come perdere potenza di calcolo e criptovaluta e persino perdere reputazione.​

Allora perché dovrebbero rischiare le proprie risorse? Perché in questo processo esiste anche un meccanismo di ricompensa. I premi sono in genere la criptovaluta nativa del protocollo. I premi possono anche essere commissioni pagate da altri utenti, unità di criptovaluta appena generate o entrambi.

Infine, dobbiamo anche garantire la trasparenza. Dobbiamo avere la capacità di individuare gli imbrogli in modo tempestivo. In teoria, produrre i blocchi costa molto, ma verificarne l’autenticità è piuttosto economico. Attraverso questo meccanismo, gli utenti ordinari possono facilmente vincolare i validatori.


Tipo di algoritmo di consenso

Prova di lavoro (PoW)

Proof of Work (PoW) è considerato il padrino degli algoritmi di consenso blockchain. Questo meccanismo è stato utilizzato per la prima volta nello spazio Bitcoin, ma il concetto vero e proprio esiste da molto tempo. Nella prova di lavoro, i validatori (chiamati minatori) eseguono l'hashing dei dati che desiderano aggiungere fino a quando non viene prodotta una soluzione specifica.

Un hash è una stringa apparentemente casuale di lettere e numeri creata eseguendo i dati tramite una funzione hash. L'esecuzione ripetuta degli stessi dati darà sempre lo stesso output. Tuttavia, se modifichi anche un piccolo dettaglio, il valore hash risultante sarà completamente diverso.

Non è possibile dedurre quali informazioni siano state inserite nella funzione solo dall'output. Pertanto, questo metodo è efficace per dimostrare che conoscevi un determinato dato prima di un momento specifico. Puoi dire a qualcuno l'hash in anticipo e quando riveli i dati in seguito, quella persona può semplicemente eseguire la funzione e vedere che l'output è lo stesso.

Nella prova di lavoro, il protocollo specifica le condizioni che rendono valido un blocco. Ad esempio, potrebbe stabilire che solo gli hash che iniziano con 00 siano blocchi validi. L'unico modo per un minatore di creare un blocco che corrisponda a questa combinazione è forzare l'input. Regolano i parametri dei dati e testano ogni ipotesi con risultati diversi finché non ottengono il valore hash corretto.​

Per le principali blockchain, l’asticella tende ad essere piuttosto alta. Per competere con gli altri miner è necessario preparare una grande quantità di hardware di hashing speciale (circuiti integrati specifici per l’applicazione) per creare le condizioni per produrre blocchi validi.

Durante il processo di mining, la puntata include il costo di acquisto della macchina e l'elettricità necessaria per far funzionare la macchina. I circuiti integrati specifici dell'applicazione (ASIC) sono costruiti appositamente per il mining di criptovaluta e sono inutili per altre applicazioni. L'unico modo per recuperare il tuo investimento iniziale è attraverso il mining e, se aggiungi con successo nuovi blocchi alla blockchain, puoi ottenere notevoli ricompense.

La rete può facilmente verificare l'autenticità dei blocchi che crei. Potrebbe essere necessario provare trilioni di combinazioni per ottenere il valore hash corretto, ma la convalida dei dati richiede solo un singolo calcolo della funzione hash. Se i tuoi dati producono un hash valido, la rete lo accetterà e sarai ricompensato per questo. Altrimenti, la rete rifiuterà il valore e tutto il tuo tempo e la tua energia saranno sprecati.


Prova di partecipazione (PoS)

Agli albori di Bitcoin, la Proof of Stake (PoS) era vista come un’alternativa alla Proof of Work. In un sistema proof-of-stake non esiste il concetto di miner, hardware specializzato o consumo massiccio di energia. Tutto ciò di cui hai bisogno è un normale computer.

Tuttavia, non è sempre così. Hai bisogno anche di un po' di capitale. In un meccanismo di prova della posta in gioco, mentre non è necessario consumare risorse esterne (come elettricità o hardware), devono essere fornite risorse interne, vale a dire la criptovaluta. Le regole di ciascun protocollo sono diverse, ma generalmente esiste un importo minimo di investimento che devi soddisfare per poter partecipare allo staking.

Una volta fatto ciò, i fondi nel tuo portafoglio verranno bloccati (i fondi non possono essere spostati durante lo staking). In generale, è necessario concordare con gli altri validatori quali transazioni andranno nel blocco successivo. In un certo senso, ciò equivale a scommettere su quale blocco verrà selezionato e il protocollo sceglierà solo uno dei blocchi.

Se il tuo blocco è selezionato dal protocollo, riceverai commissioni di transazione proporzionali all'importo della puntata. Più fondi blocchi, maggiore sarà il tuo rendimento. Se tenti di imbrogliare e proponi una transazione non valida, perderai parte (o tutta) la tua puntata. Pertanto, adottiamo un meccanismo simile alla prova di partecipazione, in cui l’onestà e l’affidabilità possono ottenere più vantaggi rispetto all’imbroglio.

In generale, i premi del validatore non verranno emessi sotto forma di token appena coniati. Pertanto, la valuta nativa della blockchain deve essere emessa in qualche altro modo. Ciò potrebbe avvenire attraverso un'offerta iniziale (ad esempio ICO o IEO) o avviando il protocollo con Proof-of-Work e quindi passando alla Proof-of-Stake.

Finora, la pura Proof-of-Stake è stata utilizzata solo in criptovalute più piccole. Pertanto, non è chiaro se possa fungere da valida alternativa alla prova di lavoro. Anche se in teoria funziona, in pratica non è niente del genere.​

Una volta implementata la prova di posta su una rete con un grande valore, l’intero sistema diventa un’arena piena di teoria dei giochi e incentivi economici. Finché c'è un profitto, quegli hacker esperti "hackereranno" il sistema proof-of-stake. Pertanto, l’unico modo per determinare se è fattibile è applicarlo a una rete online.

Presto, la Proof of Stake sarà testata su larga scala e la rete Ethereum sta per implementare una serie di aggiornamenti (noti collettivamente come Ethereum 2.0), inclusa l'implementazione di Casper.


Altri algoritmi di consenso

Proof of work e proof of stake sono attualmente gli algoritmi di consenso più discussi. Ma ci sono molti altri algoritmi oltre a questo, e ognuno ha i suoi pro e contro. Si prega di leggere i seguenti articoli per i dettagli:

  • "Spiegazione dettagliata della prova del carico di lavoro ritardato"

  • "Spiegazione dettagliata del consenso sulla prova dell'interesse del leasing"

  • "Spiegazione dettagliata della prova autorevole"

  • "Spiegazione dettagliata del certificato di distruzione"

  • "Spiegazione dettagliata della prova patrimoniale delegata"

  • "Spiegazione dettagliata del consenso sulla prova di lavoro ibrida/prova di palo"


Riassumere

I meccanismi per raggiungere il consenso sono fondamentali per il funzionamento dei sistemi distribuiti. Molte persone credono che la più grande innovazione di Bitcoin sia l'uso della prova di lavoro, un meccanismo attraverso il quale gli utenti possono spesso concordare su una serie di fatti condivisi.

Oggi, gli algoritmi di consenso sono diventati il ​​fondamento dei sistemi di valuta digitale e delle blockchain, consentendo agli sviluppatori di eseguire codice su reti distribuite. Gli algoritmi di consenso occupano una posizione fondamentale nella tecnologia blockchain e svolgono un ruolo vitale nella sostenibilità a lungo termine delle varie reti esistenti.

Tra tutti gli algoritmi di consenso domina la prova del lavoro. Nessuno ha ancora proposto una soluzione alternativa più affidabile e sicura. Detto questo, i professionisti stanno ancora sviluppando una serie di prodotti per sostituire la prova di lavoro e possiamo aspettarci di vedere emergere più soluzioni alternative nei prossimi anni.