Il protocollo Proof of Work o Prova di Lavoro è il protocollo di consenso più noto e più antico che consiste nella realizzazione, da parte dei componenti di una rete, di un lavoro computazionalmente costoso per accedere alle risorse di detta rete  

Il protocollo Prova di Lavoro , ci aiuta a evitare determinati comportamenti indesiderati su una rete. Il suo nome deriva dall'inglese Proof of Work (PoW). Questo protocollo funziona secondo il seguente concetto: si richiede un lavoro al client, che verrà poi verificato dalla rete. Normalmente il lavoro richiesto consiste nell'esecuzione di complesse operazioni di calcolo.

Queste operazioni vengono poi verificate dalla rete. Una volta approvate, al client viene concesso l'accesso per utilizzare le sue risorse. In questo modo si cerca d' impedire ai client dannosi di consumare tutte le risorse in modo incontrollato. Una situazione che può finire per negare il servizio fornito al resto dei client della rete.

Un esempio molto semplice da capire è il famoso captcha che si mette quando si vuole effettuare una registrazione su un sito web. Il web pone questa sfida che il visitatore deve risolvere. Se lo risolvi, avrai accesso al servizio. In questo modo s'impedisce ad un utente malintenzionato di creare milioni di record e quindi di comprimere la pagina Web. Tuttavia, la sfida in una comunicazione tra computer non può essere così complessa; deve essere risolvibile, anche se con relativa complessità.

La caratteristica principale di questa strategia è la sua asimmetria. Il lavoro del client è moderatamente difficile da eseguire, ma la verifica della rete è semplice, ciò significa che la Proof of Work richiede molto tempo per essere prodotta ed è computazionalmente costosa. Ma verificarlo è semplice, poiché il test progetta modelli che ne facilitano la verifica.

Proprio questa caratteristica ha attirato l'attenzione di Satoshi Nakamoto quando si trattò di progettare il Bitcoin; ecco perché ha implementato il sistema HashCash (un sistema PoW) nella sua rinomata criptovaluta.

Algoritmi PoW - Un po 'di storia

Nel 1992, la penetrazione di Internet era abbastanza importante. Con il suo arrivo inizia a diffondersi l'uso della posta elettronica. Questa situazione favorevole ha però portato con sé nuovi problemi. I sistemi di posta elettronica subirono ripetutamente attacchi di carne in scatola. Questi attacchi generalmente disabilitavano i server e lasciavano molte persone senza servizi. Era necessario trovare una soluzione a questo problema.

Nel XNUMX, gli accademici Cynthia Dwork e Moni Naor hanno riconosciuto il problema e hanno cercato di risolverlo, dando origine al saggio "Determinazione del prezzo tramite elaborazione o lotta allo spam", in cui hanno presentato modi per impedire agli spammer di inviare valanghe di messaggi.

L'idea presentata era quella d'includere un costo computazionale per poter utilizzare i servizi di posta elettronica; per questo, Dwork e Naor hanno progettato una serie di test che richiedevano lavoro computazionale. Fra questi: calcolo di alcune radici quadrate o uso intenso di funzioni hash. Una volta completato questo lavoro, l'utente doveva aggiungere l'informazione all'e-mail da verificare. Se fosse stata corretto, il messaggio sarebbe stato inviato, in caso contrario, il messaggio sarebbe stato rifiutato. Questo semplice sistema dissuadeva gli spammer dal continuare i loro attacchi; ma ci vorrà ancora del tempo prima che il sistema possa essere completamente implementato.

La creazione di HashCash

Più tardi, nel 1997, venne alla luce il protocollo HashCash creato dal cryptonarchist Adam Back. Come nel saggio precedente, il termine "Prova di lavoro" (Proof of Work) non è mai stato utilizzato nell'annuncio HashCash. Ma Back ha usato un termine molto importante nella tecnologia blockchain, quello di "Protezione di Doppia Spesa", che David Chaum aveva già anticipato nei suoi lavori precedenti.

Con HashCash, Back voleva frenare gli invii di spam di massa. L'idea era di imporre un costo non monetario per l'invio di ogni mail. Un costo che sarebbe associato al calcolo dei problemi utilizzando il computer. Il principio è semplice: si calcolava il problema, si allegava alle informazioni della mail e si inviava. Il server riceveva la posta, verificava le informazioni e la accettava o rifiutata nel caso in cui il test fosse stato superato.

Ma il costo computazionale aveva anche un costo reale. Il costo dell'elettricità causato dal calcolo intensivo era di un centesimo di dollaro per ogni posta inviata. Chi invierà poche email al giorno non noterebbe nulla, ma uno spammer sì. L'invio di milioni di mail aumenterebbe notevolmente la bolletta dell'elettricità di quella persona; pertanto, gli spammer sono scoraggiati dall'impegnarsi nella loro attività dannosa.

La coniazione del termine Proof of Work

Finalmente, era il XNUMX, quando Markus Jakobsson e Ari Juelshanno scritto un documento intitolato "Proof of Work and Bread Pudding Protocols"; e così è stato coniato il termine "Prova di Lavoro". Jakobsson e Juels lo descrivono così:

Si tratta di un protocollo in cui un voucher dimostra a un verificatore di aver impiegato un certo livello di sforzo computazionale in un intervallo di tempo specifico. Sebbene non sia definito come tale o formalmente affrontato, il proof-of-work è stato proposto come meccanismo per vari obiettivi di sicurezza, tra cui la misurazione dell'accesso al server, la creazione di capsule temporali digitali e la protezione dall'invio di posta indesiderata e altri attacchi Denial of Service.

Markus Jakobsson e Ari Juels
Proof of Work and Bread Pudding Protocols (1999) - Pagina 2

Inoltre, questo lavoro approfondisce la capacità di Proof of Work di aggiungere livelli di sicurezza. Che servono a garantire servizi critici dove la sicurezza è molto importante.

La Proof of Work arriva a Bitcoin

Satoshi Nakamoto ha pubblicato il documento tecnico di Bitcoin il 31 ottobre 2008. In esso, Nakamoto era chiaro sul fatto che la Proof of Work fosse un elemento chiave del protocollo Bitcoin. Nel riepilogo del white paper di Bitcoin Possiamo leggere quanto segue:

Proponiamo una soluzione al problema della doppia spesa utilizzando una rete peer-to-peer. La rete scala i tempi delle transazioni raggruppandole in una catena di Proof of Work basata su hash, formando un record che non può essere modificato senza ripetere la prova di lavoro.
Satoshi Nakamoto

Bitcoin: un sistema di contanti elettronico peer-to-peer (2008) - Abstract

In questo modo, Nakamoto ha utilizzato il lavoro di Adam Back, poiché Bitcoin utilizza il protocollo HashCash. Con questo, ha finito per rivoluzionare il mondo, presentando una tecnologia completamente innovativa, la blockchain. Questa tecnologia gli ha permesso di creare la sua famosa criptovaluta e che e ha rivoluzionato i nostri tempi.

Utilizzando il protocollo Proof of Work, ogni nuovo blocco creato deve risolvere un rompicapo matematico che può essere risolto solo per tentativi ed errori. Questi enigmi vengono risolti dai miner attraverso milioni di tentativi. La risoluzione dell'enigma comporterà la creazione del blocco, la conferma delle transazioni coinvolte in quel blocco e la generazione di nuovi bitcoin che il miner riceverà come ricompensa insieme alle commissioni implicite in ciascuna delle transazioni.

Il problema matematico consiste nel trovare i parametri che danno un certo risultato. La particolarità di questo risultato è che si tratta di un hash, di cui è impossibile conoscerne i parametri inizialii, i quali possono essere generati solo attraverso tentativi ed errori.

Come funziona il protocollo PoW?

La Proof of Work funziona in modo abbastanza semplice. In effetti, il processo che viene svolto può essere suddiviso nelle seguenti fasi principali:

  1. Fase 1: il client o nodo stabilisce una connessione alla rete. A questo punto, la rete ti assegna un'attività costosa in termini di calcolo. Questo compito deve essere risolto per ricevere un incentivo finanziario.
  2. Fase 2: inizia la risoluzione del rompicapo; ciò comporta l'uso di molta potenza di calcolo per risolvere il puzzle consegnato. Questo processo è quello che viene chiamato mining.
  3. Fase 3: una volta risolta l'attività di calcolo, il client la condivide con la rete per la verifica. A questo punto, viene rapidamente verificato che l'attività soddisfi i requisiti richiesti; in questo modo si accede alle risorse di rete. In caso contrario, l'accesso e la soluzione presentata del problema vengono rifiutati. È a questo punto che vengono effettuati i controlli di protezione dalla doppia spesa, una protezione che impedisce che si presentarsi più di una volta, un'attività già assegnata e verificata dalla rete.
  4. Fase 4: Con la conferma che l'attività è stata completata, il client accede alle risorse di rete. Grazie a questo, ricevi un profitto per il lavoro di calcolo svolto.

Sono queste quattro fasi che consentono e modellano il funzionamento della Proof of Work. La facilità di questo modello ne consente il trasferimento su diversi software per sfruttarne le potenzialità, ma è nelle blockchain che ne osserviamo una maggiore utilità, fornendo livelli di sicurezza eccezionali nonostante la bassa complessità del protocollo e, allo stesso tempo, consentendo a milioni di persone di partecipare contemporaneamente alla rete.

Quanto sai, Cryptonuta?

L'adozione del Proof of Work tra le criptovalute risponde all'elevato livello di sicurezza che offre?

Certo!

Al di là del fatto che Satoshi Nakamoto ha utilizzato PoW in Bitcoin, l'uso di questo protocollo nella stragrande maggioranza delle criptovalute risponde piuttosto all'alto livello di sicurezza che offre. Gli algoritmi Proof of Work sono stati ben testati, hanno meno bug e vulnerabilità sconosciute e man mano che una rete cresce, la sua sicurezza viene consolidata. Questi sono i veri motivi per cui PoW è considerato uno dei protocolli di consenso del mondo crittografico.

Funzionalità del protocollo PoW

  1. È un protocollo molto sicuro. La Proof of Work garantisce alti livelli di sicurezza, se la rete è composta da migliaia di miner. In effetti, più minatori, più sicura è la rete. Questo lo rende ideale per l'uso nella costruzione di enormi reti distribuite.
  2. È semplice e molto facile da implementare algoritmicamente. Uno dei principali vantaggi di PoW è che è molto facile da implementare. Questa facilità si traduce in una facile manutenzione del software che ne fa uso. Inoltre consente a gli audit in un modo molto più semplice per mantenere la sicurezza della rete.
  3. È facilmente adattabile alle esigenze hardware, essendo in grado di elaborare la resistenza a determinate apparecchiature (ASIC, GPU, FPGA, CPU). Un altro vantaggio del protocollo è la sua adattabilità alla tecnologia. Può essere reso più facile o più difficile, al fine di adattarlo ai progressi tecnologici, consentendo all'evoluzione dell'hardware di non lasciarsi alle spalle la difficoltà del mining, che finisce accentrando il potere di mining in chi possiede un hardware più nuovo e potente.
  4. Ha un'ottima resistenza agli Attacchi Denial of Services. La ragione principale per la creazione di protocolli PoW era: evitare il rifiuto dei servizi. Un compito che assolvono perfettamente e che ha notevolmente migliorato gli attuali schemi di protocollo.
  5. Il sistema consuma una grande quantità d'energia elettrica. Il lavoro ad alta intensità di calcolo di PoW richiede grandi quantità d'energia elettrica. Le stime prevedono un consumo di 24 Terawatt d'energia all'anno e continuerà a crescere poiché è necessaria più potenza per svolgere questo lavoro intenso.