Proof of Work o Proof of Work, è il protocollo di consenso più noto e più antico che consiste nelle parti di una rete che svolgono con successo un lavoro computazionalmente costoso per accedere alle risorse di detta rete.
Eil protocollo Prova di lavoro, serve per evitare determinati comportamenti indesiderati in una rete e il suo nome deriva dall'inglese Proof of Work (PoW).
Questo protocollo funziona secondo il concetto di richiedere un lavoro al cliente, che viene poi verificato dalla rete. Normalmente il lavoro richiesto consiste nell'eseguire complesse operazioni di calcolo.
Queste operazioni vengono poi verificate dalla rete. Una volta approvati, al cliente viene concesso l'accesso per utilizzare le sue risorse. Con questo, cerca 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 viene messo quando ci si vuole registrare su un sito web. Il web pone questa sfida che il visitatore deve risolvere. Se lo fai, avrai accesso al servizio. In questo modo, si impedisce a un utente malintenzionato di creare milioni di record e di comprimere la pagina web. Tuttavia, la sfida nella comunicazione tra computer non può essere così complessa. Deve essere risolvibile, anche se con una 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 durante la progettazione di Bitcoin. Ecco perché il sistema è stato implementato. 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 1993, accademici Cynthia Dwork y Moni NaorHanno riconosciuto il problema e hanno cercato di risolverlo. Così è nato il saggio "Prezzi in base all'elaborazione o alla lotta allo spam". In cui hanno presentato modi per impedire agli spammer di inviare messaggi di massa.
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 ha dissuaso gli spammer dal continuare a portare a termine i loro attacchi.
Tuttavia, ci vorrà ancora del tempo prima che il sistema possa essere pienamente 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 anche il costo computazionale aveva un costo reale. Il costo dell'elettricità causato dal calcolo intensivo era di un centesimo di dollaro per ogni posta inviata. Chiunque invii poche email al giorno non si accorgerebbe di nulla, ma uno spammer sì. L'invio di milioni di posta aumenterebbe notevolmente la bolletta elettrica di quella persona. In questo modo, gli spammer vengono scoraggiati dall'eseguire la loro attività dannosa.
La nascita del termine Proof of Work
Finalmente, era il 1999, quando Markus Jakobsson y Ari Juels ha scritto un documento intitolato "Protocolli Proof of Work e Bread Pudding"; 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à delle prove di lavoro 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 NakamotoBitcoin: un sistema di pagamento elettronico peer-to-peer (2008) – Riassunto
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 si è evoluta fino ad oggi.
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 quel risultato è che si tratta di un hash, quindi è impossibile ottenere i parametri iniziali dall'hash, possono essere generati solo per 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:
- 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.
- 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.
- 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.
- 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 consente di trasferirlo su diversi software per sfruttarne le potenzialità. Ma è nelle blockchain dove 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.
Funzionalità del protocollo PoW
- È 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.
- È 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.
- È 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.
- 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.
- 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.
Inoltre, puoi rivedere più caratteristiche di questo protocollo e rivedere le somiglianze e le differenze rispetto al protocollo Proof of Stake nel Confronto PoW PoS che troverai in questo articolo completo.