Proof-of-Work, spiegata semplicemente

  • 08 FEB 2018
Proof-of-Work, spiegata semplicemente
1.

Cos’è una Proof-of-Work?

Con il termine Proof-of-Work (PoW) si intende l’algoritmo di consenso alla base della rete Blockchain.

In una Blockchain, questo algoritmo viene utilizzato per confermare le transazioni e produrre i nuovi blocchi della catena. La PoW incentiva i miner a competere tra loro nell’elaborazione degli scambi, ricevendo in cambio una ricompensa.

All’interno della Blockchain, gli utenti inviano beni digitali l’uno all’altro. Un registro decentralizzato raccoglie ogni singola transazione: tuttavia, per poter essere considerate valide, queste devono essere prima approvate e organizzate in blocchi.

Tale responsabilità ricade su speciali nodi chiamati miner; l’intero processo viene invece definito mining.

Alla base di questo sistema troviamo complessi problemi matematici e la necessità di dimostrare semplicemente la soluzione.

PoW

2.

Cosa s’intende per “problemi matematici”?

Si tratta di una sorta di enigma, che richiede un’enorme potenza di calcolo per essere risolto.

Ne esistono di varie tipologie:

  • Funzione di hash, ovvero dover trovare un input partendo da un output.
  • Scomposizione in numeri primi, vale a dire rappresentare un numero come moltiplicazione di altri due numeri.
  • Guided tour puzzle protocol, che in caso di attacco DoS richiede, ad alcuni nodi ed in un certo ordine, il calcolo di una funzione di hash. In questo caso, bisogna riuscire a trovare una catena partendo da una stringa alfanumerica.

Col il termine ‘hash’ solitamente s’intende sia il problema matematico che la sua soluzione.

Quando la rete si espande i problemi pian piano di complicano, e l’algoritmo necessita di maggiore potenza di calcolo per poterli risolvere. La difficoltà dei problemi è una questione parecchio complessa e delicata.

3.

Come mai?

La velocità e l’esattezza di un sistema Blockchain dipendono dalla difficoltà dei problemi.

Ma i problemi non dovrebbero essere eccessivamente complessi, poiché in tal caso la generazione di nuovi blocchi richiederebbe troppo tempo, le transazioni non verrebbero elaborate ed il flusso della rete si bloccherebbe. Se il problema non ha un tempo di risoluzione ben definito, generare nuovi blocchi sarebbe praticamente impossibile.

Al contrario, se il problema fosse troppo semplice, la rete diverrebbe estremamente vulnerabile ad attacchi esterni.

Inoltre la soluzione deve poter essere controllata con estrema semplicità da ogni macchina, in quanto non tutti i nodi potrebbero essere capaci di appurare che i calcoli siano stati eseguiti correttamente. In tal caso questo nodi dovrebbero far affidamento su altri utenti, violando uno dei principi fondamentali della Blockchain: la trasparenza.

4.

Come viene implementato questo algoritmo nella Blockchain?

I miner risolvono il problema, danno vita ad un nuovo blocco e confermano tutte le transazioni al suo interno.

La complessità del problema dipende dal numero di utenti, dalla potenza di calcolo disponibile e dal carico della rete. La hash di ogni blocco contiene la hash del blocco precedente, incrementando la sicurezza ed impedendo ogni sorta di violazione informatica.

Blocco n

Quando un miner riesce a risolvere il problema, il nuovo blocco viene creato e le transazioni vengono piazzate al suo interno.

Problema

5.

And where PoW is usually implemented?

La Proof-of-Work sta alla base di parecchie criptovalute.

La più popolare applicazione della PoW è il Bitcoin.: è stata questa criptovaluta a gettare le basi per tale tipologia di consenso. Il problema viene definito Hashcash, e l’algoritmo cambia la propria difficoltà in maniera dinamica a seconda della potenza di calcolo disponibile nella rete. Il tempo di creazione di un blocco è di circa 10 minuti. Anche altre valute basate sul Bitcoin, come il Litecoin, utilizzano un simile sistema.

Un altro importante progetto basato sulla PoW è Ethereum: poiché nel mondo delle criptovalute circa il 75% dei progetti si basano su Ethereum, è possibile affermare che la maggior parte delle applicazioni Blockchain sfruttano il modello di consenso PoW.

6.

Perché utilizzare un algoritmo di consenso PoW?

I principali vantaggi offerti da un sistema PoW sono un’ottima difesa contro gli attacchi DoS e l’impatto marginale delle quote nel mining.

Difesa contro gli attacchi DoS. La PoW impone parecchi limiti alle azioni che è possibile intraprendere sulla rete, ed un attacco efficiente richiederebbe moltissimo tempo ed una potenza di calcolo incredibile. Nonostante quindi gli attacchi DoS ad una Blockchain siano in teoria possibili, in pratica i risultati sarebbero deludenti ed i costi estremamente elevati.

Mining Non importa quanto sia alta la percentuale delle quote nel proprio portafoglio: in un sistema PoW l’unica cosa che conta è la potenza di calcolo utilizzata per risolvere i problemi matematici e generare nuovi blocchi. Chi possiede grosse quantità di denaro, quindi, non ha maggiore controllo sulla rete.

7.

Quali sono invece gli svantaggi del sistema di consenso PoW?

I principali svantaggi di un sistema PoW sono invece i costi elevati, la totale inutilità dei calcoli e il rischio di attacchi 51%.

Costi elevati. Il processo di mining richiede macchine altamente specializzate, capaci di risolvere in tempi brevi algoritmi estremamente complessi. Questi dispositivi non sono solo estremamente costosi, ma consumano anche enormi quantità di energia elettrica, incrementando ulteriormente i prezzi. Si tratta di una pericolosa minaccia alla decentralizzazione del sistema, in quanto solo una piccola fetta dell’utenza può permettersi questo genere di investimenti. Diamo ad esempio un’occhiata al seguente grafico sul Bitcoin:

Grafico

Inutilità dei calcoli. I miner consumano moltissimo tempo ed energie per generare nuovi blocchi, eseguendo calcoli fine a se stessi, non applicabili a nessun altro settore. I problemi garantiscono quindi la sicurezza della rete, ma non possono essere utilizzati in campo economico o scientifico.

8.

Per quanto riguarda invece gli attacchi 51%?

Con attacco 51%, o attacco di maggioranza, s’intende il caso in cui un singolo utente o un gruppo di individui riesca a controllare la maggior parte della potenza di mining di una rete.

Gli aggressori ottengono una tale influenza nella rete da poter controllare l’esito degli eventi che avvengono al suo interno. Potrebbero ad esempio monopolizzare la generazione di nuovi blocchi, ostacolando gli altri miner e impedendo loro di ricevere le ricompense.

Oppure potrebbero addirittura annullare le transazioni.

Supponiamo che Alice abbia inviato dei fondi a Bob utilizzando una Blockchain. Alice controlla il 51% della rete, mentre Bob ovviamente no: la transazione viene effettivamente piazzata all’interno del blocco, ma la prima non acconsente al trasferimento di denaro. In tal caso viene generata una ‘fork’ della catena.

Miner

Successivamente i miner si uniscono ad uno dei due rami appena generati. In quanto Alice possiede la maggior parte della potenza computazionale della rete, la sua catena conterrà sempre più blocchi dell’altra.

Miner

In una Blockchain, il ramo più lungo rimane, mentre quello più corto viene scartato. Quindi la transazione tra Alice e Bob è come se non fosse mai avvenuta, e quest’ultimo non riceverà mai i propri soldi.

Miner

Fortunatamente un attacco 51% non è per nulla redditizio. Servirebbe una potenza di calcolo incredibile per poter controllare l’intera Blockchain, ed una volta che la notizia raggiunge il resto degli utenti, la rete viene considerata compromessa e prontamente abbandonata. Questo porterebbe inevitabilmente ad una diminuzione del valore della criptovaluta, e di conseguenza dei fondi in possesso degli esecutori dell’attacco.