Cos'è la Proof of Work (PoW)?
Cos'è la Proof of Work (PoW)?
HomeArticoli

Cos'è la Proof of Work (PoW)?

Intermedio
Published Dec 6, 2018Updated May 11, 2021
8m


Contenuti


Introduzione

La Proof of Work (comunemente abbreviata in PoW) è un meccanismo per prevenire le doppie spese. La maggior parte delle principali criptovalute la utilizzano come algoritmo di consenso, un metodo per proteggere il registro di una criptovaluta.
La Proof of Work è stata il primo algoritmo di consenso ad emergere e, ad oggi, rimane ancora quello dominante. E' stata introdotta da Satoshi Nakamoto nella whitepaper di Bitcoin del 2008, ma la tecnologia è stata concepita molti anni prima

Il sistema HashCash  di Adam Back è un esempio precoce dell'algoritmo Proof of Work che precede l'avvento delle criptovalute. Richiedendo ai mittenti di eseguire una piccola quantità di computazione prima di inviare una email, i riceventi possono mitigare lo spam. Questa computazione costa virtualmente zero a un mittente legittimo, ma si accumula rapidamente per qualcuno che invia email in massa.


Cos'è una doppia spesa?

Una doppia spesa avviene quando gli stessi fondi vengono spesi più di una volta. Il termine viene usato quasi esclusivamente nel contesto della moneta digitale – in fondo, sarebbe piuttosto difficile spendere lo stesso denaro fisico due volte. Quando paghi un caffè al bar, dai una banconota al cassiere che probabilmente la chiude in una cassa. Non puoi entrare nel bar di fronte e pagare un altro caffè con la stessa banconota.

Nei sistemi di denaro digitale, c'è la possibilità che tu riesca a farlo. Avrai sicuramente duplicato un file informatico in passato – basta copiarlo e incollarlo. Puoi inviare un email con lo stesso file a dieci, venti, cinquanta persone. 

Dato che il denaro digitale è solo un insieme di dati, è necessario impedire alle persone di copiare e spendere le stesse unità in luoghi diversi. Altrimenti, la tua moneta collasserà in un attimo. 

Per uno sguardo più approfondito al double-spending, leggi Il Double-Spending Spiegato.


Perché la Proof of Work è necessaria?

Se hai letto la nostra guida alla tecnologia blockchain, saprai che gli utenti trasmettono transazioni al network. Queste transazioni, però, non sono considerate valide immediatamente. Questo avviene solo quando vengono aggiunte alla blockchain. 
La blockchain è un grande database che ogni utente può vedere, così da poter controllare se i fondi sono stati spesi in precedenza. Facciamo un esempio: tu e tre amici avete un blocco note. Ogni volta che uno di voi vuole fare un trasferimento di qualsiasi unità che state usando, lo scrivi – Alice paga Bob cinque unità, Bob paga Carol due unità, ecc.
Qui aggiungiamo un'altra complicazione – ogni volta che effettui una transazione, fai riferimento alla transazione da cui sono arrivati i fondi. Quindi, se Bob sta pagando Carol con due unità, la nota sul registro apparirà come segue: Bob paga Carol due unità da questa transazione precedente con Alice.

Ora abbiamo un modo per tenere traccia delle unità. Se Bob cerca di effettuare un'altra transazione usando le stesse unità che ha appena inviato a Carol, tutti lo sapranno immediatamente. Il gruppo non permetterà la registrazione della transazione nel blocco note.

Questo sistema potrebbe funzionare bene in un piccolo gruppo. Tutti si conoscono, quindi è probabile che concorderanno su quale degli amici dovrebbe aggiungere le transazioni al blocco note. E se avessimo un gruppo di 10.000 partecipanti? L'idea del blocco note non è molto scalabile, dato che nessuno ne affiderebbe la gestione a uno sconosciuto.

A questo punto entra in gioco la Proof of Work. La PoW garantisce che gli utenti non stanno spendendo denaro che non hanno il diritto di spendere. Usando una combinazione di teoria dei giochi e crittografia, un algoritmo PoW permette a chiunque di aggiornare la blockchain secondo le regole del sistema.


Come funziona la PoW?

Il blocco note che abbiamo descritto sopra è la blockchain. Tuttavia, non aggiungiamo le transazioni una ad una ma le raggruppiamo in blocchi. Annunciamo le transazioni al network, dopodiché gli utenti che creano un blocco le includono in un blocco candidato. Le transazioni saranno considerate valide solo quando il loro blocco candidato diventa un blocco confermato, ovvero quando è stato aggiunto alla blockchain.
Aggiungere un blocco, però, non costa poco. La Proof of Work prevede che un miner (l'utente che crea il blocco) utilizzi parte delle proprie risorse per il privilegio. Questa risorsa è la potenza computazionale, che viene usata per generare l'hash dei dati del blocco fino a quando non viene trovata una soluzione a un enigma.
L'hashing dei dati del blocco comporta l'elaborazione di tali dati attraverso una funzione di hash per generare una hash del blocco. La hash del blocco funziona come “impronta digitale” è un'identità per i tuoi dati di input ed è unica per ogni blocco.

E' virtualmente impossibile invertire una hash del blocco per ottenere i dati di input. Conoscendo l'input, però, è semplicissimo confermare che la hash sia corretta. Devi semplicemente elaborare l'input attraverso la funzione e verificare che l'output sia lo stesso.

Nella Proof of Work, devi fornire dati la cui hash corrisponda a determinate condizioni. Tuttavia, non sai come arrivarci. La tua unica opzione è elaborare i tuoi dati attraverso una funzione di hash e controllare se soddisfano le condizioni. In caso di esito negativo, dovrai modificare leggermente i tuoi dati per ottenere una hash differente. Cambiare anche solo un carattere nei tuoi dati risulterà in un esito totalmente differente, quindi non c'è modo di prevedere quale potrebbe essere l'output.

Di conseguenza, se vuoi creare un blocco, devi tirare a indovinare. In genere si prendono informazioni su tutte le transazioni da aggiungere e altri dati importanti, per poi generare la hash di questo insieme. Dato che il tuo dataset non cambierà, però, dovrai aggiungere un'informazione che sia variabile. Altrimenti, otterresti sempre la stessa hash come output. Questo dato variabile viene chiamato nonce. E' un numero che cambierai ad ogni tentativo, per ottenere ogni volta una hash differente. Questo processo è ciò che chiamiamo mining.

Riassumendo, il mining è il processi di raccolta di dati blockchain e hashing insieme a una nonce fino a trovare una particolare hash. Se trovi una hash che soddisfa le condizioni stabilite dal protocollo, ottieni il diritto di trasmettere il nuovo blocco al network. A questo punto, gli altri partecipanti al network aggiornano le proprie blockchain per includere il nuovo blocco.

Per le criptovalute principali di oggi, le condizioni sono incredibilmente difficili da soddisfare. Più grande è l'hash rate del network, più sarà difficile trovare una hash valida. Questo meccanismo viene adottato per garantire che i blocchi non vengano trovati troppo rapidamente.
Come puoi immaginare, cercare di indovinare enormi quantità di hash può essere costoso per il tuo computer. Stai sprecando cicli computazionali ed elettricità, ma il protocollo ti ricompenserà in criptovaluta se trovi una hash valida.

Ricapitoliamo quello che abbiamo illustrato finora:

  • Fare mining è costoso.
  • Vieni ricompensato se produci un blocco valido.
  • Conoscendo un input, un utente può facilmente controllare la sua hash – gli utenti che non fanno mining possono verificare che un blocco sia valido senza spendere molta potenza computazionale.

Fin qui tutto bene. Ma cosa succede se cerchi di imbrogliare? Cosa ti impedisce di mettere un sacco di transazioni fraudolente nel blocco e produrre una hash valida?

E' qui che entra in gioco la crittografia a chiave pubblica. Non entreremo nei dettagli in questo articolo, puoi leggere Cos'è la Crittografia a Chiave Pubblica? per una spiegazione esaustiva di questo argomento. In breve, usiamo alcuni trucchetti crittografici che permettono ad ogni utente di verificare se qualcuno ha il diritto di spostare i fondi che sta cercando di spendere.
Quando crei una transazione, la firmi. Chiunque sul network può confrontare la tua firma con la tua chiave pubblica e verificare che corrispondano. Inoltre, chiunque può controllare se puoi effettivamente spendere i tuoi fondi e se la somma dei tuoi input è superiore alla somma dei tuoi output (ovvero, se non stai spendendo più di quanto possiedi).

Qualsiasi blocco che include una transazione non valida verrà respinto automaticamente dal network. E' costoso anche solo tentare di imbrogliare. Sprecherai le tue risorse senza ottenere alcuna ricompensa.

E' proprio qui che sta la bellezza della Proof of Work: rende costoso imbrogliare, ma redditizio agire onestamente. Qualsiasi miner razionale cercherà un ROI, quindi possiamo prevedere che agiranno nel modo che garantisce profitti.



Vuoi iniziare con le criptovalute? Compra Bitcoin su Binance!



Proof of Work vs. Proof of Stake

Esistono diversi algoritmi di consenso, ma uno dei più attesi è la Proof of Stake (PoS). Il concetto risale al 2011, ed è stato implementato in alcuni protocolli più piccoli, ma deve ancora vedere l'adozione in una delle grandi blockchain.
Nei sistemi Proof of Stake, i miner vengono sostituiti da validatori. Non si svolge il mining e non ci sono gare per indovinare le hash. Invece, gli utenti vengono selezionati casualmente – se vengono scelti, devono proporre (o “forgiare”) un blocco. Se il blocco è valido, riceveranno una ricompensa composta dalle commissioni sulle transazioni del blocco.
Tuttavia, non tutti gli utenti possono essere selezionati – il protocollo li sceglie in base a una serie di fattori. Per poter partecipare, gli utenti devono bloccare una stake, una posta in gioco, ovvero una quantità predeterminata della valuta nativa di quella blockchain. La stake funge da cauzione: proprio come gli imputati sono costretti a versare una grande somma di denaro per disincentivare la fuga dal processo, i validatori bloccano una stake per disincentivare gli imbrogli. Se agiscono in modo disonesto, la loro stake (o una porzione di quest'ultima) viene sottratta.
La Proof of Stake presenta alcuni vantaggi rispetto alla Proof of Work. Il più notevole è la minore impronta ecologica – dato che nella PoS non sono necessarie mining farm ad alta potenza, l'elettricità consumata è solo una frazione di quella consumata nella PoW. 

Detto questo, però, il suo track record non è nemmeno lontanamente vicino a quello della PoW. Anche se potrebbe essere percepito come uno spreco, il mining è l'unico algoritmo di consenso che si è dimostrato valido su vasta scala. In poco più di un decennio, ha protetto trilioni di dollari in transazioni. Per affermare con certezza se la PoS può competere la sua sicurezza, lo staking deve essere testato correttamente in contesti reali. 


In chiusura

La Proof of Work è stata la soluzione originale al problema della doppia spesa e ha dato prova di essere affidabile e sicura. Bitcoin ha dimostrato che non abbiamo bisogno di entità centralizzate per prevenire che gli stessi fondi vengano spesi due volte. Grazie al sapiente uso di crittografia, funzioni di hash e teoria dei giochi, i partecipanti in un contesto decentralizzato possono concordare sullo stato di un database finanziario.