BLOCKCHAIN:
PROOF OF STAKE & PROOF OF WORK

Cosa significa “Proof of Stake” e “Proof of Work”?

Le due espressioni fanno pensare a concetti complessi

In realtà, il principio fondamentale è molto semplice.

Potremmo tradurlo così: prova che ti sei impegnato o che qualcosa per te è veramente importante e ti permetterò di compiere una determinata azione o ti darò una ricompensa.  

Se ci pensi, è un principio che ci è assolutamente familiare nel nostro quotidiano: per accedere ad una posizione lavorativa, devi affrontare un concorso o un colloquio e dimostrare di essere idoneo; per passare al livello successivo in una gara di abilità, devi provare al giudice di aver completato il livello in cui ti trovi; per fondare una società, potresti dover investire del capitale sociale a conferma del tuo impegno verso il progetto.

Spesso, insomma, si tratta di una vera e propria gara: chi arriva al traguardo per primo e nel minor tempo vince.

È ciò che accade ad esempio per i finanziamenti a sportello.

Come si applica questo principio alla blockchain?

Attraverso il processo di mining e di validazione dei singoli blocchi che diventano parte della catena attraverso gli algoritmi di consenso Proof of Stake e Proof of Work.

Vediamolo meglio insieme.

1. I miner e i meccanismi di consenso su blockchain

Lo abbiamo accennato in questo post, per effettuare un’operazione su una rete blockchain è necessario pagare una fee (tassa) affinché la transazione venga validata e aggiunta ad un blocco. 

Il compito di validare le transazioni, cioè di controllare che tutti i dati inseriti siano corretti e di portarla poi su blockchain, all’interno del blocco (ricordi il nostro esempio dei taxi?), spetta ai “miners”.

Sono loro che controllano la correttezza della transazione, la validano e, mediante meccanismi di consenso, la aggiungono a un blocco.  

Volendo riprendere la nostra analogia con i taxi, è come se, prima di darti il permesso di salire sul suo taxi, il tassista/miner fosse incentivato a verificare che l’assegno che stai trasportando sia valido, cioè che:

– l’indirizzo da cui viene emesso sia corretto (ovvero che l’assegno non sia scoperto)

– il numero dell’assegno sia valido e tu abbia i soldi per poterlo pagare

Deve anche controllare quale cifra saresti disposto a dargli per far “entrare” il tuo assegno nel suo taxi e farlo portare su blockchain.

In modo semplice, stiamo dicendo che dobbiamo dare un premio al nostro tassista/miner affinché compia una certa azione.

Ma quale miner si aggiudicherà l’onore di prendere la transazione e portarla su blockchain guadagnando il premio in palio?

Come viene scelto?

Attraverso un meccanismo per cui ogni miner deve dimostrare il suo impegno ed interesse per arrivare a vincere il premio.

Niente di dissimile dalle dinamiche che sperimentiamo ogni giorno: chi ha un certo compito, dimostra di tenerci attraverso la cura e l’impegno con cui lo svolge. 

I miner competono tra di loro per conquistare il compito di creare un blocco e devono dimostrare tutto il loro impegno nel verificare correttamente le transazioni.

 

È proprio questo meccanismo fondamentale che garantisce la completa sicurezza della blockchain.

2. Processo di mining e validazione di un blocco

Ma perché è importante che il miner dimostri il suo impegno?

In che modo questo garantisce la sicurezza di una rete blockchain?

Ecco perché il meccanismo funziona

Ci sono due variabili in gioco che garantiscono il perfetto funzionamento di questo meccanismo:

a) La scarsa probabilità che un blocco errato venga accettato dalla rete

Ogni singolo blocco aggiunto alla blockchain è controllato da un numero estremamente elevato di nodi. Diventa così pressoché impossibile che nessuno si accorga dell’inserimento di un blocco errato.

Inoltre, è sufficiente che anche uno solo degli attori coinvolti se ne accorga per allertare tutti gli altri e farlo scartare dalla rete (se, infatti, dimostrare che un blocco è stato validato è facile, lo è ancora di più dimostrare che contiene “errori” e deve essere escluso!).

b) Il costo di creazione di un blocco

 che dipende da due possibili variabili:
i costi dell’hardware utilizzato per eseguire la validazione del blocco, unito ai costi dell’energia necessaria per alimentarlo fino al termine della computazione
oppure

il valore che deve essere impegnato a garanzia del fatto che il blocco creato sia effettivamente corretto. 

Sono queste due caratteristiche del meccanismo, ossia la bassissima probabilità che un blocco errato venga accettato e gli elevati costi finanziari connessi alla sua creazione, che garantiscono la sicurezza della rete e spronano i miner ad impegnarsi per creare il blocco in modo corretto.

Niente imbrogli per un miner

Un miner che decide di imbrogliare inserendo un blocco errato nella rete, non solo dovrà investire risorse finanziarie e tempo per creare il blocco, ma dovrà anche sperare che il blocco venga accettato dalla rete.

La probabilità che questo secondo evento si verifichi è davvero molto bassa.

Anche se il miner riuscisse ad aggiungere un blocco errato, questo verrà poi scartato dalla rete con alta probabilità. E il miner si troverà ad aver speso il suo denaro per nulla (non dimenticare che la ricompensa è legata indissolubilmente al fatto che il blocco validato rimanga nella catena!).

Ricapitolando, un miner deve impegnarsi per creare correttamente il blocco, senza errori, se non vuole sprecare il proprio denaro.

3. I principali meccanismi di consenso su blockchain

Ora che abbiamo visto insieme come funziona il meccanismo che regola il processo di mining e di validazione dei blocchi, siamo pronti per approfondire i concetti di “Proof of Stake” e “Proof of Work”.

Nel mondo della blockchain ci sono due meccanismi di consenso che vengono utilizzati per validare le transazioni e i blocchi: Proof of Work (PoW) e Proof of Stake (PoS).

Hanno il medesimo obiettivo, ma si distinguono per la procedura che viene utilizzata per raggiungerlo.

Funzionano così.

Proof of Work (PoW)

La PoW è un algoritmo di consenso, utilizzato in blockchain come Bitcoin o Ethereum.

Richiede una potenza computazionale molto elevata, e, quindi, un grosso dispendio elettrico, per risolvere un problema matematico estremamente complesso, ma molto facile da verificare. 

I miners competono tra loro per trovare la soluzione al problema e validare il blocco, così da ottenere il premio della validazione (reward).

Una volta trovata, passano la soluzione agli altri nodi, che, prima di aggiungere il blocco, ne controllano la correttezza.

Dato che la soluzione è molto facile da verificare, il problema matematico scoraggia attacchi alla rete da parte di un singolo partecipante o di un gruppo di partecipanti.

Se la soluzione che comunico non è corretta, infatti, il blocco non verrà aggiunto alla catena dagli altri nodi, e quindi ho solo sprecato inutilmente risorse.

Vince sempre la catena blockchain più lunga

È importante sottolineare che vige il principio per cui “la catena più lunga vince”.

Cosa significa?

Poniamo che un utente si trovi di fronte a due catene di lunghezza diversa, che sono cioè uguali fino ad un certo punto, ma terminano poi con due “code” differenti.

Sarà orientato a considerare valida quella più lunga. È, infatti, evidente che in essa è stato speso più valore (in termini di energia) e quindi più persone vi si sono affidate.

Per poter attaccare questo sistema, bisognerebbe disporre di una potenza computazionale maggiore di qualsiasi altro partecipante (ovvero più del 50% della potenza computazionale totale dedicata a quella rete). In questo modo, si potrebbe provare a generare una catena più lunga (e quindi “vincente”) rispetto a quella di tutti gli altri attori onesti (o comunque con interessi in contrasto con quelli dell’attore malevolo in questione).

Proof of Work e il meccanismo del puzzle crittografico

Facciamo un esempio semplice, tratto dalla vita quotidiana, per capire meglio questo meccanismo.

Una pizzeria decide di promuoversi regalando le sue pizze.

Vuole, però, evitare che qualcuno ordini un numero di pizze spropositato rispetto al numero effettivo di commensali e stabilisce che per ricevere ogni singola pizza è prima necessario risolvere un sudoku.

È il nostro famoso problema matematico complesso, ma facile da verificare.

Dopo aver dato prova del nostro impegno e aver completato il sudoku in maniera corretta, riceviamo la nostra pizza (premio).

Se siamo da soli e ordiniamo 10 pizze, impiegheremo molto tempo a risolvere i 10 sudoku. Saremo invece piuttosto veloci poi se a dover mangiare saremo effettivamente in 10.  

Cosa sta facendo la pizzeria? Sta richiedendo una dimostrazione del lavoro effettuato in cambio delle pizze in regalo.

A proposito! Conosci il modo più veloce per ordinare una pizza?

L’abbiamo sviluppato proprio in KNOBS: è la web-app Sooneat, puoi scoprirla qui.

Non lasciamoci travolgere dalla gola. Torniamo alla nostra blockchain!

Proof of Stake (PoS)

Anche la PoS è un algoritmo di consenso. A differenza della PoW, però, richiede una potenza computazionale decisamente minore, e ha, quindi, un consumo elettrico notevolmente inferiore.

Proof of Stake e il meccanismo di staking

La validazione dei blocchi non viene, in questo caso, effettuata tramite la risoluzione di un problema matematico, ma tramite un meccanismo di  “staking”.

I partecipanti cioè entrano in gioco puntando con le proprie monete (stake) e il validatore viene scelto in maniera casuale in base al suo investimento.

La quantità di monete che vengono investite non dipende solo dal partecipante, ma anche dalla rete che impone alcuni requisiti minimi per poter puntare. Naturalmente più monete un utente è disposto ad impegnare, più aumenta la sua possibilità di essere selezionato come validatore.

Ad esempio, se io decido di impegnare 10 monete e un altro partecipante 30, lui avrà una probabilità di essere selezionato tre volte superiore alla mia.

Spieghiamo meglio questo meccanismo con un esempio concreto.

Nella città (rete) Blockchain, la validazione dei blocchi viene assegnata in maniera casuale tra gli abitanti della città in base alle case (stake) che ogni abitante possiede (e che mette a garanzia del suo operato).

Più case un abitante possiede (e mette in gioco), più la sua probabilità di essere scelto è elevata. Al contrario, meno case possiede e più bassa sarà la probabilità di essere scelto.

Prendiamo 3 abitanti che decidono di mettere in gioco le proprie case per provare a validare un blocco: Andrea con 4 case, Eleonora con 3 e Alberto con 1.

Dopo la selezione di un abitante come validatore, i restanti abitanti non perdono il possesso delle loro case (ossia dello stake messo in gioco).

Ovviamente la probabilità che venga scelto Andrea è maggiore rispetto agli altri abitanti.

Vince sempre chi non imbroglia!

Mettiamo che Andrea vinca e decida di imbrogliare per aggiungersi soldi, aggiungendo un blocco errato alla rete.

Al turno successivo viene scelto nuovamente Andrea che decide di imbrogliare ancora.

Andrea può continuare ad imbrogliare e aggiungere blocchi errati alla rete: visto il maggiore stake che mette in gioco, è alta la probabilità che venga sempre scelto lui.

Prima o poi, però, per probabilità, verrà scelta Eleonora (o anche Alberto), che mediante le prove potrà mostrare agli altri abitanti le truffe commesse da Andrea (gli imbrogli sono facilmente visibili su blockchain).

Cosa succederebbe allora?

Ad Andrea sarebbero tolte le case (il suo stake), che verrebbero invece consegnate a Eleonora. Per un abitante con poche case imbrogliare è ancora più difficile, perchè la probabilità che venga scelto è molto bassa.

In questo modo, la PoS previene eventuali attacchi alla rete:

– non conviene imbrogliare perché prima o poi si viene smascherati e si perde l’intero stake

– un partecipante con tanto stake (che quindi potrebbe imbrogliare contando sull’alta probabilità di essere sempre scelto) non ha nessun vantaggio nell’imbrogliare, ma vorrà al contrario che la rete cresca e si sviluppi in modo corretto per evitare che i suoi possedimenti perdano valore. 

4. Proof of Work vs Proof of Stake: qual è il migliore?

Non c’è una risposta a questa domanda.

Ciascuno dei due algoritmi ha pro e contro, poiché funzionano in maniera diversa.

Proof of Work: Pro e Contro

Quali sono i vantaggi della Proof of Work?

– Previene il rischio di attacchi alla rete perché distribuisce il “potere” di creare e validare blocchi all’interno della blockchain, in misura proporzionale al potere computazionale dei diversi nodi

– È un meccanismo molto diffuso nella blockchain e dunque ben rodato, che si è dimostrato in grado di gestire in modo corretto tutte le casistiche verificatesi finora

Quali sono gli svantaggi della Proof of Work?

– Necessita di hardware (in alcuni casi specifici) con un’elevata potenza computazionale e a volte molto costosi
– Comporta un grosso consumo elettrico e, di conseguenza, un elevato inquinamento ambientale

– Richiede calcoli lunghi e difficili e questo genera lentezza nella creazione dei blocchi e la possibilità di elaborare solo un numero basso di transazioni contemporaneamente

Proof of Stake: Pro e Contro

Quali sono i vantaggi della Proof of Stake?

Non richiede l’uso di hardware specifici
– Ha un basso consumo elettrico e, quindi, ridotto inquinamento ambientale

– Opera in una rete più equilibrata, perché tutti coloro che ne sono parte hanno la possibilità di vincere e validare un blocco

Quali sono gli svantaggi della Proof of Stake?

– Chi è ricco diventa più ricco (the rich get richer)
– La gestione del meccanismo è complicata, ma non regolamentata sotto tutti i punti di vista

– È un meccanismo di consenso ancora poco diffuso e testato nella blockchain

Sui pro e i contro dei due meccanismi di validazione esistono diverse scuole di pensiero ed una discreta letteratura.
Ecco qualche link ad articoli interessanti che trattano il tema nello specifico: 
 

https://www.bitdegree.org/tutorials/proof-of-work-vs-proof-of-stake/#Why_is_Proof_of_Stake_better_than_Proof_of_Work

–  https://paybis.com/blog/pow-vs-pos/

– https://www.bitdegree.org/crypto/tutorials/proof-of-work-vs-proof-of-stake

5. Miners? Vince chi crea la catena più lunga

Per chiudere questo articolo, approfondiamo un principio di fondamentale importanza in ambito blockchain.

Abbiamo detto che ad ogni miner viene richiesto un impegno in risorse economiche per partecipare all’asta e aggiudicarsi la possibilità di minare un blocco guadagnando le reward e le fee in palio. 

Qualunque sia il protocollo di consenso utilizzato, chi vuole candidarsi al ruolo di miner deve di fatto fare un investimento per poter avere gli strumenti necessari e partecipare alla gara, così da potersi eventualmente aggiudicare la possibilità di minare un blocco e ottenere una ricompensa.

Ciò significa che ogni partecipante mette del valore all’interno della catena di blocchi, investe tempo e risorse per ogni blocco che viene minato.

Più la catena si allunga, transazione dopo transazione, e più valore viene indirettamente attribuito alla catena stessa perché significa che vengono impegnate risorse per generare valore e accrescere la fila di blocchi. 

Due miners, due campioni di puzzle crittografici...cosa succede?

Ma cosa succede quando due miner trovano due soluzioni diverse e valide entrambe, nello stesso momento?

Sembra un’eventualità rara, ma in realtà capita continuamente.

Il fatto è che i miner che partecipano alla gara sono sparsi in tutto il mondo, ma i server non sono allineati al millisecondo: esiste sempre un tempo di latenza ed è impossibile stabilire a priori l’ordine temporale corretto di una serie di messaggi.

In definitiva, non sempre è facile capire chi per primo abbia risposto con un blocco valido. 

E quindi cosa avviene? Come è possibile risolvere questo problema?

Proviamo ad immaginare insieme la situazione.

Caliamoci nei panni di un miner, ad esempio in una rete che utilizza un meccanismo di consenso PoW.

Grazie al nostro computer ed alla sua fantastica potenza computazionale, partecipiamo alla gara per aggiudicarci fee ed eventuale reward e cerchiamo di risolvere per primi il puzzle crittografico, per ottenere la possibilità di minare un blocco.

Per prima cosa, verifichiamo che tutte le informazioni contenute nel blocco siano corrette: quindi, per esempio, che se un address sta trasferendo del valore verso un nuovo indirizzo abbia le disponibilità per trasferire il valore dichiarato, che il numero del nonce sia corretto…
Insomma, effettuiamo tutta una serie di verifiche per accertarci che non stiamo lavorando inutilmente e magari minando transazioni non valide.

E se…la catena ha una biforcazione?

Prima di iniziare il nostro lavoro, però, ci accorgiamo che l’ultimo pezzo della catena a cui dobbiamo aggiungere il nostro blocco non finisce con un blocco singolo ma ha una biforcazione: da una parte partono 2 blocchi e dall’altra 1 blocco solo. 

Com’è potuto succedere?

Semplice! Due miner hanno risolto un puzzle crittografico con 2 soluzioni entrambe valide e si sono così aggiudicati entrambi il diritto di minare un blocco, quasi in contemporanea. Entrambi hanno legato il loro blocco all’ultimo blocco disponibile della catena e hanno così generato una biforcazione.

Blockchain must go on.

La blockchain ha poi continuato nel suo meccanismo. Gli utenti hanno effettuato nuove transazioni, i miner hanno partecipato alla gara e un nuovo miner si è aggiudicato il diritto di minare la transazione successiva.

Questo nuovo miner aveva scelto quale delle due biforcazioni seguire per minare il suo blocco in maniera casuale.

Torniamo a noi.

Quando ci accingiamo a risolvere il puzzle crittografico, ci troviamo di fronte a questa situazione: una biforcazione che presenta una coda di 2 blocchi da un lato e una coda di 1 blocco dall’altro. 

A quale coda cercheremo di legare il nostro blocco? Quella da 2 o da 1?

Intuitivamente, ci verrebbe da legare il nostro blocco alla coda più lunga, quella da 2 blocchi. Facciamolo! Ci leghiamo alla catena più lunga trasformandola in una coda da 3 blocchi.

Il miner subito dopo di noi vedrà una catena con una biforcazione da 1 blocco da una parte e 3 blocchi dall’altra.

Senza alcuna esitazione, legherà il blocco che deve minare alla coda da 3. Ormai non si tratta più di una biforcazione, ma del normale prolungamento della catena principale.

Ecco, questo è esattamente ciò che succede durante una normale attività di blockchain. 

I binari di una catena blockchain: come si creano valore e consenso

Arriva ora un nuovo miner e si trova di fronte alla situazione precedente.

Anzi, andiamo un po’ oltre nella linea temporale e immaginiamo che questo nuovo miner arrivi nel momento in cui da un lato della biforcazione ci sono 10 blocchi e dall’altra parte un blocco solo.

Avrebbe senso per lui provare ad agganciare il suo blocco alla coda da un blocco solo?

Nulla lo vieta, ma non avrebbe alcun senso.

In caso di successo, infatti, vorrebbe dire aver buttato via il premio guadagnato e il tempo e le risorse impiegate per aggiudicarsi la possibilità di minare un blocco. Si starebbe collegando ad un binario morto e le ricompense ottenute varrebbero solo in quella biforcazione ormai in disuso, mentre nella catena principale, quella più lunga, il blocco (e quindi anche le ricompense) non ci sarebbero, come se non fossero mai esistite.

Il binario che sta procedendo spedito è quello da 10 blocchi.

È questa la catena dove gli attori che partecipano al protocollo di consenso stanno investendo e creando valore.

Ecco i concetti chiave: valore, consenso distribuito e decentralizzazione

Portiamo il nostro esempio all’estremo per chiarire ancora meglio il concetto.

Situazione limite: all’improvviso, tutte le copie di questa blockchain spariscono!
Tutti i nodi si inceppano per qualche assurdo motivo e della nostra blockchain restano disponibili solo 4 registri.

Tre di questi rappresentano la blockchain alla situazione della prima biforcazione, 1 blocco da una parte e 1 blocco dall’altra, mentre una sola copia riporta la situazione con la biforcazione da 10 blocchi da un lato ed 1 blocco dall’altro.

Immediatamente si pone un problema: qual è la versione corretta?

Vince la maggioranza (le 3 copie uguali con biforcazione 1:1) o la catena più lunga (l’unica copia con biforcazione 10:1)?

La risposta corretta è che vince la catena più lunga.

Perché è lì che gli utenti hanno continuato a creare valore, investendo e in modo dimostrabile. Non pochi utenti, tra l’altro, ma proprio la maggioranza (o meglio, la maggioranza della potenza computazionale), altrimenti, dal punto di vista statistico, la catena più lunga sarebbe stata l’altra. 

Il concetto che sta alla base di questo ragionamento è quindi il valore.

La catena più lunga è anche la catena con più valore e, in quanto tale, è quella corretta, o – per meglio dire – la più corretta rispetto alla catena più corta.

È quella in cui la maggior parte degli utenti hanno creduto, ovvero quella su cui si è creato consenso distribuito grazie al meccanismo decentralizzato che sta alla base della blockchain.

Vuoi scoprire di più sulla tecnologia blockchain
e su come puo' far crescere il tuo business?

|   Chi siamo

KNOBS è una società di sviluppo software specializzata in tecnologia blockchain. Dal 2014.

|   KNOBS srl

Bastioni di Porta Volta, 9
20121 Milano (MI) – Italia
info@knobs.it
knobs@legalmail.it
P. IVA 08560240965
SDI X2PH38J

|   Orari di apertura

Dal lunedì al venerdì 9.00 – 18.00

|   Seguici

|   Newsletter

Iscriviti alla newsletter e ricevi subito il PDF
Blockchain in parole semplici