L’espressione Proof of Work (PoW, in italiano “prova di lavoro”) è detta anche sistema proof-of-work, protocollo proof-of-work o funzione proof-of-work. In tutti i casi ci si riferisce a un sistema piuttosto complesso, ma di possibile attuazione, che serve a scoraggiare usi superficiali o dannosi della potenza di calcolo; tra questi l’invio di e-mail di spam (la PoW nacque proprio con lo scopo di tenere sotto controllo questo problema) o il lancio di attacchi “Denial of Service” (DoS, che letteralmente significa “attacco di negazione del servizio”).
Il concetto è stato poi successivamente modificato e adattato da Hal Finney, che nel 2004 sviluppò l’idea di una “prova di lavoro riutilizzabile” (“reusable Proof of Work”) utilizzando l’algoritmo di hashing SHA-256. In questo modo, la Proof of Work è diventato un protocollo che protegge le monete digitali (le cosiddette crypto o criptovalute). Dopo la sua introduzione nel 2009, Bitcoin è diventata la prima criptovaluta ad aver apertamente adottato l’idea di PoW di Finney, destinatario, tra l’altro, della prima transazione di Bitcoin.
La PoW costituisce la base anche di molte altre criptovalute. Ciò permette di avere un consenso sicuro e decentralizzato.
Quindi, riassumendo, possiamo definire la Proof of Work come un meccanismo di consenso decentralizzato gestito da una rete, nella quale gli sforzi sono concentrati nel trovare la soluzione ad un puzzle matematico arbitrario; in questo modo si bloccano i tentativi di modificare il sistema. La Proof of Work è ora ampiamente utilizzata nel mining di criptovalute, per la convalida delle transazioni e l’estrazione di nuovi token.
Indice dei contenuti
Come funziona la Proof of Work
In questa sezione ci concentreremo principalmente sulla Proof of Work di Bitcoin. I Bitcoin sono la criptovaluta più utilizzata al mondo, lanciata nel gennaio del 2009. Il suo sviluppatore resta attualmente ancora anonimo, dato che ha deciso di utilizzare lo pseudonimo di Satoshi Nakamoto.
Tutte le transazioni di Bitcoin vengono registrate in un sistema chiamato blockchain. Si tratta di una specie di “registro” online, che memorizza, in “blocchi” sequenziali, tutte le transazioni di Bitcoin effettuate. In questo modo, la stessa transazione non può essere registrata due volte. Per evitare contraffazioni, questo registro è pubblico e può essere consultato facilmente, pertanto una versione manomessa sarebbe rifiutata dagli altri utenti.
La manomissione viene rilevata dagli utenti attraverso gli hash, lunghe stringhe di numeri che servono, appunto, come “Proof of Work”. Se si inserisce un determinato insieme di dati attraverso una funzione hash (Bitcoin utilizza SHA-256), l’hash generato sarà sempre lo stesso. A causa di quello che viene definito “effetto valanga”, anche una sola piccola modifica a qualsiasi parte dei dati originali darà come risultato un hash totalmente diverso. Qualunque sia la dimensione dell’insieme di dati forniti, l’hash generato da una determinata funzione avrà la stessa lunghezza.
L’hash è una funzione unidirezionale: non può essere utilizzato per ottenere i dati originali, ma solo per verificare che i dati che hanno generato l’hash corrispondano ai dati originali.
Generare un hash qualsiasi per un insieme di transazioni Bitcoin sarebbe banale per un computer moderno, quindi per trasformare il processo in “work”, la rete Bitcoin stabilisce un certo livello di “difficoltà”. Questa impostazione viene regolata in modo che un nuovo blocco venga “minato” – aggiunto alla blockchain generando un hash valido – circa ogni 10 minuti. L’impostazione della difficoltà si ottiene stabilendo un “target” per l’hash: più basso è il target, più piccolo è l’insieme degli hash validi e più difficile è generarne uno. In pratica, questo significa che un hash inizia con una lunghissima stringa di zeri.
Poiché un dato insieme di dati può generare un solo hash, come fanno i miner ad essere sicuri di generare un hash inferiore al target? Modificano l’input aggiungendo un numero intero, chiamato nonce (“numero usato una volta”). Una volta trovato un hash valido, questo viene trasmesso alla rete e il blocco viene aggiunto alla blockchain.
Attraverso l’attività di mining, infatti, vengono creati nuovi Bitcoin. L’attività dei miner viene premiata con nuove monete create. Molto spesso, più miner si uniscono insieme per minare criptovalute e aumentare le probabilità di successo.
La Proof of Work rende estremamente difficile alterare qualsiasi aspetto della blockchain, poiché tale alterazione richiederebbe il re-mining di tutti i blocchi successivi. E bisogna sempre considerare che i macchinari e gli hardware necessari per questo scopo sono molto costosi, oltre a richiedere una potenza altissima per il proprio funzionamento.
Esempio di Proof of Work
Per fare una PoW c’è bisogno di un computer che realizzi in modo casuale funzioni di hashing fino a quando non arriva a un output con la quantità minima corretta di zeri iniziali. Possiamo allora fare un esempio di Proof of Work usando un blocco preso dal registro blockchain. Utilizzando il blocco #660000, estratto il 4 dicembre del 2020, l’hash ottenuto è quindi: 00000000000000000008eddcaf078f12c69a439dde30dbb5aac3d9d94e9c18f6. Questa transazione contiene sempre lo stesso numero di Bitcoin e lo stesso numero di transazioni. Se qualcuno tentasse di modificare l’importo di una transazione anche di 0,000001 Bitcoin, l’hash risultante sarebbe totalmente diverso e irriconoscibile.
Considerazioni sulla Proof of work
La PoW, dunque, richiede una “prova” dell’impiego di potenza di calcolo (cioè lavoro) in modo tale da ottenere consenso in modo decentralizzato e da impedire agli utenti malintenzionati di monopolizzare la rete o di fare attività illecite, inutili o superflue.
Le criptovalute hanno bisogno di una Proof of Work perché sono decentralizzate e quindi necessitano di un modo per raggiungere sia il consenso che la sicurezza. La PoW è quindi uno di questi metodi, dal momento che rende troppo dispendioso in termini di risorse cercare di monopolizzare la rete o usarla in modo improprio. Esistono anche altri meccanismi di prova che richiedono meno risorse, ma che presentano altri inconvenienti o difetti. Senza un meccanismo di prova, la rete e i dati archiviati al suo interno sarebbero vulnerabili ad attacchi o furti.
Anche Bitcoin utilizza la Proof of Work, che consiste in un algoritmo basato sulla funzione di hashing SHA-256 per validare e confermare le transazioni, oltre che per emettere nuovi Bitcoin in circolazione. Per quanto riguarda le altre crypto, il metodo di validazione utilizzato è arbitrario.