inizio
inizio

La prova del lavoro (Proof of Work (in inglese) è un meccanismo utilizzato in Bitcoin, secondo il principio del consenso di Nakamoto, in modo che il sistema di pagamento sia resistente agli attacchi Sybil. Questo tipo di attacco è caratterizzato dalla creazione di più false identità per corrompere la rete peer-to-peer.
Il consenso di Nakamoto è il principio che consente agli utenti di Bitcoin di concordare un'unica versione della blockchain per raggiungere un accordo sulla domanda: «chi possiede cosa? ». Si chiama «proof-of-work consensus» perché specifica che i nodi concordano su quale blockchain ha la maggiore quantità di lavoro accumulato. Questa prova del lavoro viene eseguita da computer chiamati «minatori», in riferimento al processo di estrazione dell'oro. Estrazione di bitcoin (Estrazione) è quindi l'azione di impegnarsi in una prova del lavoro.
Questo articolo sulla proof of work è una logica continuazione dell'articolo della scorsa settimana su come funziona in generale Bitcoin. Ti consiglio anche di leggerlo cliccando sul link qui sotto.
➤ Scopri di più su come funziona Bitcoin.
La prova del lavoro è semplicemente la ricerca di un valore che, una volta passato a una funzione matematica casuale, dia un risultato inferiore a un numero target.
Concretamente, i minatori raccolgono le transazioni in sospeso in un blocco, rispettando il limite di peso massimo, e incrementano i valori modificabili.
Il termine tecnico per questi valori modificabili è «nonces», l'abbreviazione in inglese di «numero usato una volta sola». È un numero scelto arbitrariamente che viene utilizzato una sola volta e che viene sostituito da un altro numero durante la successiva manipolazione.

Passeranno l'intestazione di questo blocco candidato in una funzione casuale e irreversibile. L'obiettivo è trovare un'impronta (risultato della funzione) più piccola dell'obiettivo. Se il loro blocco non soddisfa la condizione, possono modificare i valori modificabili (Nunces) e prova a passare nuovamente la nuova intestazione nella funzione. Avranno quindi un risultato completamente diverso rispetto al primo. Il minatore continua questo processo di modifica dei nonce e confronta il risultato ottenuto con il target fino a trovare un blocco valido.
La funzione matematica casuale (funzione hash) utilizzata per il mining di bitcoin è un doppio SHA256 (SEcure HFrassino UNalgoritmo), chiamato anche SHA256d o HASH256.

Poiché la funzione SHA256 non può essere invertita, i minatori possono provare tutte le possibilità solo una per una. È un calcolo per tentativi ed errori. Il primo miner che trova un blocco che soddisfa questa condizione ottiene il diritto di registrarlo sulla blockchain di tutti gli utenti e ottiene la relativa ricompensa monetaria. Questa remunerazione per i minori è composta da due parti distinte:
➤ Scopri di più sul premio coinbase, sui dimezzamenti e sull'emissione decrescente di valuta.
La convalida di un blocco comporta anche una conferma iniziale del pagamento per tutte le transazioni in esso incluse.
Gli utenti della rete Bitcoin, rappresentati dai loro nodi, possono quindi concordare una versione del registro degli account aggiungendo blocchi validi creati dai minatori al proprio database. Ogni nodo ricorda uno stato della blockchain e registra i nuovi blocchi creati dopo averli verificati singolarmente. La blockchain autentica è quella con La maggior quantità di lavoro accumulato. Questo principio di accordo tra tutti gli utenti è ciò che chiamiamo: «consenso di Nakamoto mediante prova di lavoro».
L'informazione secondo cui i nodi considererebbero valida la catena più lunga è un malinteso comune. Sebbene questo principio di consenso fosse valido fino al 2010, poteva essere sfruttato per distruggere Bitcoin ed è stato poi modificato. Da quella data e dall'aggiornamento 0.3.3 di Bitcoin, i nodi concordano su quale catena ha accumulato più lavoro, che potrebbe essere una catena diversa dalla catena più lunga.
L'algoritmo di consenso include la regolazione del valore target per mantenere una velocità di creazione del blocco stabile a 10 minuti. Quando i blocchi vengono trovati troppo velocemente per l'obiettivo, la difficoltà di estrazione aumenta e viceversa. Questo ampio intervallo tra i blocchi consente a tutti i nodi di sincronizzarsi correttamente con lo stesso stato della catena di blocchi.
Concretamente, ogni 2016 blocchi (circa ogni due settimane), i nodi calcoleranno un nuovo obiettivo per il proof of work al fine di aggiustare la difficoltà di mining.
Come promemoria, i minatori devono trovare un blocco che, una volta passato attraverso una funzione casuale, risulti in un numero inferiore rispetto al target. Se nell'ultimo periodo del 2016 i blocchi sono stati trovati in media più velocemente di 10 minuti ciascuno, ciò significa che c'è stato un aumento della potenza di calcolo impiegata sulla rete. I nodi aumenteranno quindi la difficoltà del mining regolando il target verso il basso per aumentare il tempo necessario per trovare un blocco valido. L'obiettivo è che questo valore si avvicini in media ai 10 minuti. Viceversa, se nell'ultimo periodo del 2016 i blocchi sono stati convalidati in media più lentamente di 10 minuti ciascuno, ciò significa che si è verificata una diminuzione della potenza di calcolo impiegata dai minatori. I nodi ridurranno quindi la difficoltà regolando il target verso l'alto.

Per calcolare il nuovo obiettivo, ogni 2016 blocchi, i nodi eseguiranno il seguente calcolo:
Nuovo obiettivo = vecchio obiettivo * (tempo totale degli ultimi blocchi del 2016 in secondi/1.209.600 secondi)
Questo numero target è quindi uno strumento di regolazione. Modificandolo, modifichiamo in termini di probabilità il tempo necessario per trovare un'impronta che soddisfi la condizione. Grazie a ciò, la produzione di blocchi su Bitcoin tende naturalmente a una frequenza stabile con intervalli di 10 minuti, indipendentemente dal numero di computer che eseguono il mining.
Questo intervallo di 10 minuti è stato scelto arbitrariamente da Satoshi Nakamoto durante la creazione di Bitcoin. Il tempo limite tra ogni blocco rappresenta un compromesso tra la sicurezza della rete e l'efficienza del sistema di pagamento. Un tempo più breve consente conferme più rapide per gli utenti, mentre un tempo più lungo consente di evitare separazioni a catena. Queste «divisioni», in inglese, causano uno spreco di potenza di calcolo sui blocchi orfani e quindi riducono la sicurezza complessiva del sistema. Un tempo obiettivo di 10 minuti è un buon compromesso tra efficienza e sicurezza. Ecco perché questo intervallo non è un «punto debole» di Bitcoin, ma una caratteristica essenziale.
Proof of work protegge la rete Bitcoin dagli attacchi Sybil. In effetti, questo meccanismo consente di impedire a un malintenzionato di assumere il controllo della rete di pagamento moltiplicando le identità. Invece di essere stabilito su un sistema di voto informatico, Bitcoin viene stabilito su un sistema di voto mediante potenza di calcolo. Poiché questo calcolo richiede un dispendio energetico, disponiamo quindi di un sistema tangibile, universale ed esterno alla rete per scegliere chi ha il diritto di registrare un blocco nel registro distribuito.
Un utente malintenzionato che vuole modificare lo stato di proprietà dei bitcoin dovrà necessariamente trasmettere la propria versione del canale. Affinché questo stato dannoso venga accettato, deve rispettare il protocollo Bitcoin e in particolare il concatenamento di blocchi tra di essi. Avrà inoltre bisogno di una quantità di lavoro accumulata superiore a quella accumulata dalla catena onesta. Ciò significa che l'aggressore deve ripetere tutto il lavoro di calcolo dopo il blocco che è stato modificato in modo fraudolento. Se non ha più potenza di calcolo di tutti gli altri minatori onesti, non sarà mai in grado di far accettare la sua versione della catena dai nodi onesti e fallirà nel suo tentativo di attacco.
Attraverso l'uso di prove di lavoro, i minori sono naturalmente incoraggiati a rimanere onesti. In effetti, un attacco richiederebbe l'utilizzo di una potenza di calcolo fenomenale e il suo mantenimento nel tempo. Ciò significa che un attacco consumerebbe molta elettricità e sarebbe quindi particolarmente costoso, senza un risultato garantito. È quindi molto più interessante utilizzare le proprie macchine per minare onestamente e ricevere i premi assegnati per aver trovato un blocco valido.
Oltre a questa opera di protezione contro gli attacchi Sybil, Proof-of-Work svolge anche un ruolo essenziale nella resistenza alla censura del sistema di pagamento. Infatti, con il Nakamoto Consensus, consente di assegnare di tanto in tanto il diritto di inserire un blocco nel registro scegliendo un minore in modo casuale, in proporzione alla potenza di calcolo impiegata. Ogni 10 minuti, questo meccanismo darà a un nuovo miner il diritto di inviare il proprio blocco, con tutte le transazioni in esso contenute. Grazie a ciò, gli utenti di Bitcoin beneficiano dell'incensurabilità quando si tratta di confermare le proprie transazioni. Se un minore censura un utente e si rifiuta di includere le sue transazioni nel suo blocco per un motivo che non rientra nelle regole del protocollo, va bene. Gli altri minori che non censurano lo stesso utente lo includeranno. Sarà confermato non appena forniranno un blocco che soddisfi la prova delle condizioni di lavoro.
Inoltre, l'utente censurato può aumentare le commissioni di transazione per incoraggiare altri minatori a includerlo in un blocco. Ciò creerà una pressione finanziaria sulla censura dei minori e naturalmente favorirà i minatori fedeli attraverso un naturale processo di mercato.
Il consenso proof-of-work di Nakamoto è il principio utilizzato per stabilire un accordo su un'unica versione del registro distribuito tra i vari nodi della rete. Si basa sul meccanismo proof-of-work, che è semplicemente un sistema per resistere agli attacchi Sybil.
La prova del lavoro è la ricerca di un valore che, se passato a una funzione casuale, dà un risultato inferiore a un obiettivo specifico. Questo lavoro di ricerca viene svolto da attori, utilizzando computer specializzati, chiamati «minori».
L'obiettivo di proof-of-work viene modificato ogni 2016 blocchi dai nodi. Questa operazione si chiama «regolazione della difficoltà». Abbassiamo il numero obiettivo per aumentare la difficoltà di mining, oppure lo aumentiamo per ridurre la difficoltà, a seconda dell'evoluzione della potenza di calcolo impiegata dai minatori nel periodo precedente.
Fai attenzione a non confondere la proof of stake (PoS) con la proof of work (PoW). Questi due meccanismi sono molto diversi. A differenza del proof of work, il processo decisionale a maggioranza relativo al proof of stake non si basa su alcun elemento tangibile esterno alla rete e ciò comporta molti problemi ai sistemi di pagamento che lo utilizzano. Questo confronto PoW/PoS sarà oggetto di un prossimo articolo dettagliato.
➤ Scopri di più sulle differenze tra Bitcoin e altre criptovalute.

