Il Proof-of-Work (PoW) è l’algoritmo di consenso su cui si basano molte delle reti blockchain. Questo approccio consente di risolvere il problema fondamentale dell’efficienza e della sicurezza delle transazioni all’interno di una rete decentralizzata.
È molto noto in quanto utilizzato nella rete Bitcoin. Insieme al Proof-Of-Stake, è l’algoritmo di consenso maggiormente utilizzato nel settore delle criptovalute.
In questo articolo spiego cos’è il Proof-of-Work, come funziona e quali sono i suoi vantaggi e svantaggi.
Cos’è il Proof-Of-Work
Il Proof-of-Work (PoW), che in italiano significa “Prova di Lavoro”, è un algoritmo di consenso utilizzato nelle reti blockchain per garantire la validità delle transazioni e il consenso per la registrazione di nuovi blocchi di informazioni.
Il tentativo di risolvere il problema noto come Byzantine Generals’ Problem o “Problema dei generali bizantini” è la fonte del Proof-of-Work. Questo problema riguarda come le diverse entità devono cooperare in un ambiente in cui alcune di esse potrebbero essere malevoli o inaffidabili.
Il PoW ha fornito una soluzione a questo problema introducendo una dimostrazione di lavoro computazionale che richiede un certo livello di impegno da parte del partecipante.
Il Proof-of-work viene considerato dalla massa inefficiente e costoso da un punto di vista energetico e indicato come ulteriore fonte d’inquinamento. Questo argomento è già stato tratto su Cryptoverso.
Come funziona il Proof-of-Work
Gli utenti iniziano inviando transazioni alla rete. Le transazioni vengono raccolte in un mempool, una specie di sala d’attesa in cui le transazioni sono in coda per una conferma.
I minatori selezionano un gruppo di transazioni dal mempool quando è il momento di creare un nuovo blocco. Il contenuto del blocco che stanno cercando di confermare è costituito da questo gruppo. Oltre alle transazioni, un blocco contiene un “nonce” e il “hash” del blocco precedente.
I minatori o miners iniziano a lavorare per risolvere il complicato puzzle crittografico. L’applicazione dell’algoritmo hash al contenuto del blocco e al nonce è parte di questo puzzle. La difficoltà sta nel fatto che il risultato dell’hash deve soddisfare determinate condizioni, come un certo numero di zeri iniziali.
Poiché i minatori devono cambiare il valore del nonce fino a trovare una combinazione che soddisfi le condizioni richieste, questo requisito richiede tentativi ed errori.
Risoluzione dei calcoli e premi per i miners
Il primo a presentare il nuovo blocco alla rete è il minatore che riesce a risolvere il puzzle crittografico. Questo processo richiede molta potenza informatica. È quindi possibile che più minatori risolva il puzzle quasi contemporaneamente. Tuttavia, solo uno di loro sarà in grado di confermare definitivamente il blocco.
Gli altri nodi della rete verificano la soluzione dopo che un miner ha trovato il nonce giusto e ha proposto il blocco. Se la soluzione è corretta, un nuovo blocco viene aggiunto alla blockchain. Il minatore che ottiene successo riceve nuove criptovalute e commissioni per transazioni come riconoscimento del suo lavoro. Nel caso della rete bitcoin il premio ammonta a 6,25 BTC fino al prossimo halving previsto per il 2024.
Un nuovo ciclo inizia quando si aggiunge un nuovo blocco alla blockchain. I minatori concorrono per risolvere il puzzle del prossimo blocco mentre il mempool viene aggiornato. La ripetizione continua di questo processo garantisce la sicurezza e la continuità della rete blockchain.
Dati di input
I dati di input nell’algoritmo Proof-of-Work (PoW) si riferiscono ai parametri utilizzati per calcolare l’hash e risolvere il complicato problema crittografico necessario per confermare un blocco e aggiungerlo alla blockchain.
I dati principali inseriti nel contesto PoW includono:
- Hash del precedente blocco: questo garantisce la coerenza e l’integrità della blockchain collegando il nuovo blocco alla catena esistente.
- Nonce: un numero casuale all’interno del blocco. L’obiettivo è determinare un valore di nonce che, una volta utilizzato insieme agli altri dati del blocco, produce un hash che soddisfa determinate condizioni, come avere un certo numero di zeri iniziali.
- Timestamp: indica l’ora di creazione del blocco. Questo è utile per garantire che le transazioni sulla blockchain siano ordinate in modo cronologico.
Controllo della doppia spesa
Gli algoritmi di consenso blockchain come il Proof-of-Work (PoW) cercano di risolvere uno dei problemi più importanti: il controllo della spesa doppia o double-spending.
In caso d’utilizzo della stessa quantità di criptovaluta per più transazioni, si verifica una “doppia spesa”, che è un tentativo di ingannare la rete e ottenere benefici non autorizzati.
Le transazioni vengono registrate sulla catena in modo permanente e immutabile, che è una caratteristica essenziale delle blockchain. Una volta che una transazione è stata approvata e registrata in un blocco, non è possibile modificarla. Poiché non è possibile modificare una transazione retroattivamente per renderla valida, è difficile effettuare doppie spese.
Per creare e confermare nuovi blocchi, se un utente tentasse di spendere lo stesso denaro in più transazioni, ci sarebbero due transazioni in conflitto nel mempool. I nodi della rete verificheranno quale delle due transazioni è stata aggiunta al blocco più recente e giudicheranno la transazione valida.
Nel caso in cui si verifichi un fork nella catena (cioè due blocchi validi confermati quasi contemporaneamente), i nodi della rete scelgono di seguire il ramo più lungo della catena. Questo significa che se un attaccante cercasse di effettuare una doppia spesa e creare una catena parallela, la catena principale e più lunga avrebbe la precedenza, rendendo la catena del double spending non valida.
Transazioni nel Proof-Of-Work
La transazione Coinbase (da non confondere con il noto exchange centralizzato) è la prima transazione in ogni blocco nella blockchain Bitcoin. Questa transazione è speciale perché è la fonte di nuova moneta in circolazione, oltre alle commissioni di transazione raccolte dai minatori. La transazione Coinbase crea nuovi Bitcoin e li assegna al minatore che ha confermato il blocco.
La transazione Coinbase non ha input precedentemente non spesi (UTXO) come altre transazioni. Al suo posto, ha un input speciale chiamato coinbase input che contiene l’ammontare delle nuove monete create e il messaggio di testo arbitrario detto coinbase data. Questo input speciale è ciò che permette di creare nuovi Bitcoin e ricompensare il minatore per il lavoro svolto.
Le transazioni UTXO rappresentano un modo di gestione dei fondi all’interno della rete blockchain in quanto rappresenta l’output non speso di una transazione precedente.
Quando un utente invia fondi in una transazione, questi fondi diventano input (input) per la transazione. Dall’altro lato, una volta ricevuti, diventano un nuovo UTXO, cioè un output non speso. Questi UTXO possono poi essere utilizzati come input in transazioni future. Ad esempio, se hai ricevuto 2 BTC in una transazione, questa diventa un nuovo UTXO che puoi utilizzare in transazioni successive.
Ad esempio. Se hai un UTXO da 2 BTC e vuoi inviare 1 BTC a qualcuno, la transazione consumerà l’intero UTXO da 2 BTC e creerà due nuovi UTXO: uno da 1 BTC (destinato al destinatario) e uno da 1 BTC di “cambio” che torna a te. Questo sistema contribuisce alla sicurezza e alla tracciabilità delle transazioni sulla blockchain.
Hashrate
L’hashrate è una misura della potenza computazionale complessiva utilizzata da una rete blockchain che utilizza l’algoritmo di consenso Proof-of-Work (PoW). Rappresenta la velocità con cui i minatori o i nodi della rete stanno risolvendo complessi puzzle crittografici al fine di creare nuovi blocchi e confermare le transazioni sulla blockchain.
L’hashrate è espresso in hash al secondo (H/s) o in unità di hash più grandi come kilohash al secondo (KH/s), megahash al secondo (MH/s), gigahash al secondo (GH/s), terahash al secondo (TH/s), petahash al secondo (PH/s) e così via. Ogni unità rappresenta un moltiplo di un miliardo (10^9) hash al secondo.
Un hash è il risultato di un algoritmo di hash crittografico applicato a un insieme di dati. Nella PoW, i minatori cercano di trovare un hash che soddisfi determinate condizioni, generalmente avendo un certo numero di zeri iniziali. Poiché trovare un hash che soddisfi queste condizioni richiede una notevole potenza computazionale e tentativi ed errori, l’hashrate riflette la quantità di lavoro che sta avvenendo nella rete.
Un hashrate più elevato indica una maggiore capacità di elaborazione della rete, il che rende più difficile per un attaccante manipolare la blockchain attraverso attacchi come il 51% attack, in cui un attaccante controlla la maggioranza dell’hashrate della rete. Un alto hashrate contribuisce anche alla sicurezza della rete e alla rapidità di conferma dei block con successiva aggiunta alla blockchain.
Quali blockchain usano il Proof-Of-Work
Oltre a Bitcoin, il PoW viene utilizzato su altre reti.
- Litecoin (LTC): Spesso considerato il “fratello” di Bitcoin, Litecoin è una delle prime criptovalute nate dopo Bitcoin volta ad avere tempi di conferma delle transazioni più rapidi rispetto a Bitcoin
- Bitcoin Cash (BCH): Bitcoin Cash è una fork di Bitcoin che ha aumentato la dimensione del blocco, consentendo più transazioni per blocco. Anche Bitcoin Cash utilizza il PoW per raggiungere il consenso sulla blockchain.
- Monero (XMR): Monero è una criptovaluta incentrata sulla privacy che utilizza il PoW. La sua caratteristica principale è l’uso dell’algoritmo CryptoNight, che mira a mantenere l’anonimato delle transazioni e l’irrintracciabilità delle monete. Un’altra è Zcash (ZEC).
- Dogecoin (DOGE): è una memecoin. Ha guadagnato popolarità e utilizza il PoW. Sebbene possa sembrare un’opzione più leggera rispetto ad altre criptovalute, Dogecoin ha avuto momenti di notevole attenzione da parte della comunità.
- Ethereum Proof-Of-Work (ETHW) ha mantenuto il vecchio algoritmo di consenso usato su rete Ethereum (ETH) prima del passaggio al Proof-Of-Stake.
Vuoi accedere ai contenuti speciali di Cryptoverso? Seguimi su Telegram.
Ciao Emilio, articolo molto interessante, che integra quello che stiamo imparando al tuo corso.
Grande!!