logo academy

Bitcoin: come funziona il Double Spending?

3 febbraio, 2022

8 min

Bitcoin: come funziona il Double Spending?
Intermedio

Il double spending consiste nell’effettuare due acquisti per mezzo degli stessi fondi con il chiaro intento di ingannare il venditore di beni/fornitore di servizi. Questo è un problema che qualsiasi sistema di pagamento deve mettere in conto ed evitare nel momento in cui viene progettato. Come lo evita Bitcoin, il cui potere d’acquisto renderebbe il double spending altamente profittevole?

Double spending: un rompicapo “genetico” per le criptovalute 

Doppia spesa significa impiegare una stessa somma di denaro in più scambi economici distinti, quando in realtà a tale spesa corrisponderebbe un solo bene o servizio; è la versione illegale del 2×1 al supermarket.

Sebbene il problema nasca nel trasferimento fisico di valore, non è facile utilizzare la stessa banconota, o moneta, per comprare oggetti (o servizi) differenti: a meno che tu non sia davvero fortunato, dal distributore automatico uscirà una sola delle tue merendine preferite! 

L’acquisto online tramite valute fiat, invece, è assicurato dall’emittente del sistema di pagamento o dal Payment Service Provider (PSP), che si pone come mediatore e garante della legittimità della corrispondenza economica, così da ridurre il rischio di double spending.

La truffa è un parassita di ogni sistema economico, per cui anche il mondo delle criptovalute, come nuova frontiera del valore, necessita di “disinfestazione”. Qui, però, non vi sono terze parti monopolizzanti, infatti ogni transazione avviene “peer to peer” (p2p), direttamente tra venditore ed acquirente, tra mittente e destinatario. In questo sistema chi previene tentativi di double spending?

La soluzione è intrinseca alla blockchain di Bitcoin, e per dimostrarne la solidità analizzeremo i tipi di attacco con cui si potrebbe tentare il double spending.

double spending

3 attacchi, una difesa: la blockchain di Bitcoin

Esistono diversi modi per raggirare il sistema di Bitcoin, o di altre blockchain, per tentare di effettuare il double spending. In generale, cercando di sostituire il destinatario dei fondi con l’indirizzo di un portafoglio proprio, l’hacker tenta di riottenere le criptovalute, che ha potenzialmente speso poco prima. 

Questo meccanismo può realizzarsi in 3 modi: Race attack, 51% attack e Finney attack. La blockchain di Bitcoin, però, non si è mai mostrata fallace, proteggendosi in altrettanti modi: la sua difesa ha uno storico decennale di vittorie. Te ne raccontiamo l’epopea in 3 paragrafi.    

Race attack: una corsa di 10 minuti

Per effettuare un Race attack, un hacker invia due transazioni in rapida successione con l’obiettivo di invalidare la prima (A) attraverso la seconda (B); quest’ultima contiene informazioni sul trasferimento degli stessi fondi ad un wallet di sua proprietà. 

Immaginiamo ad esempio che voglia pagare in un negozio che accetta bitcoin inviando 0.5 BTC, e che usi un race attack per inviare quegli stessi 0.5 BTC anche a un proprio wallet.

In questa situazione, il double spending si potrebbe realizzare in un solo modo: se A non venisse registrata sulla blockchain, ma sovrascritta da B, e il negozio accettasse A, senza che quest’ultima venga confermata. È così che il cavallo B vincerebbe la “corsa” contro A.

Bitcoin, però, si protegge da tale eventualità: tutte le transazioni, per essere certificate e dunque registrate sulla blockchain, devono avere il consenso di almeno il 51% del network di nodi validatori che collaborano al mantenimento della blockchain stessa.

Abbiamo già descritto in che modo i miner preservino la sicurezza della blockchain nell’articolo sul mining. In cambio di questo contributo ricevono una ricompensa in Bitcoin per ogni blocco creato, che viene dimezzata algoritmicamente ogni 4 anni nel processo di Halving. La competizione, perciò, è altissima e più aumenta la potenza dei dispositivi impiegati dai miner, più si alza la difficoltà dei problemi crittografici da risolvere, così da mantenere stabile il ritmo di produzione dei blocchi (uno ogni 10 minuti) ed incrementare la sicurezza della blockchain.

Questo complesso sistema di validazione come evita che un certo numero di bitcoin venga speso due volte? Al venditore, prima di fornire un bene/servizio, basterebbe attendere che le informazioni di A vengano confermate dai nodi. 

51% attack vs Hash Rate

Discorso simile per il 51% attack: per spendere due volte un Bitcoin, o una sua frazione, sarebbe necessario “riscrivereogni blocco creato dopo la transazione che si sta tentando di manomettere. Infatti, ogni blocco è legato  al precedente e  al successivo tramite la funzione di Hash, così che per modificare anche solo una transazione al suo interno bisognerebbe alterare le informazioni di tutti i blocchi successivi, con un effetto a catena. I blocchi sono come bambini che, in fila, tengono per mano i loro amici: è difficile spezzare l’ordine senza che si litighi! 

L’unico modo per attuare questo cambiamento sarebbe effettuare un 51% attack, che, come il nome suggerisce, richiederebbe il controllo di almeno la metà “più uno” della potenza di calcolo del network (Hash Rate). Solo in questo modo, gli attaccanti potrebbero manipolare un blocco per duplicarne le transazioni. Si tratta tuttavia di un’impresa impossibile, oltre che assolutamente non profittevole per costi di hardware ed energia da impiegare. Nessuno ci è mai riuscito, ma direi proprio di non provarci a casa.

Finney attack vs PoW

Cosa accade se un miner, o nodo validatore, tenta un double spending attack? 

In un Finney attack, un miner pre-registra in un blocco lo spostamento di un certo quantitativo di monete A da un suo portafoglio ad un altro, sempre di suo possesso, in attesa di accaparrarsi la validazione di un blocco per la blockchain di Bitcoin 

Un miner si guadagna la possibilità di verificare un blocco tramite l’algoritmo di consenso “Proof-of-work”. Quindi, per mettere in atto un Finney attack, nel momento in cui il miner riceve dall’algoritmo la precedenza sugli altri nodi, non trasmette il blocco pre-minato, ma invia le stesse criptovalute A ad un venditore, in attesa che gli venga corrisposto un certo bene o servizio.

Quando riceve quanto richiesto, e prima che tale transazione venga confermata, il miner trasmette il blocco pre-minato, in modo da soppiantare il primo trasferimento (verso il venditore) con il secondo (verso un indirizzo proprio).

Perché ciò è improbabile, se non impossibile, nella blockchain di Bitcoin? 

Un miner, soprattutto se piccolo, raramente viene scelto dal PoW, per il basso Hash Rate che può fornire. 

Inoltre, anche se venisse scelto proprio quel miner, nel tempo che il venditore impiega ad accettare la transazione, è probabile che venga trovato più rapidamente un blocco valido, che quindi rendererebbe quello contenente la transazione fraudolenta invalido.

Dunque, al venditore, come per il race attack, basterebbe attendere la conferma dal network di aver ricevuto le criptovalute, prima di svincolare il bene/servizio, in modo da registrare immutabilmente tale transazione in un blocco. 

In più il miner perderebbe, così facendo, la ricompensa del blocco su cui aveva priorità, in quanto non è stato in grado di trasmetterlo “in tempo” (nei 10 minuti): al momento, e fino al prossimo Halving, essa ammonta ai 6,5 BTC, una somma non indifferente.

I miei Bitcoin sono al sicuro? 

Bitcoin riduce il problema del double spending ad una minaccia ipotetica, a patto che i venditori sfruttati per tale tentativo fraudolento accettino solo transazioni sicure (ovvero confermate dalla blockchain). 

Quindi, in breve: , i tuoi bitcoin sono al sicuro dalla doppia spesa. Il protocollo del Digital gold infatti è stato dotato di diversi meccanismi protettivi in fase di progettazione. Tra questi contiamo: 

  • il rateo fisso di emissione di monete (1 blocco ogni 10 minuti)
  • l’algoritmo di consenso Proof-of-work (PoW)
  • un meccanismo di ricompensa che incentiva i miner ad incrementare la loro potenza di calcolo, mantenendo al tempo stesso la difficoltà del loro lavoro abbastanza alta da rendere sicuro l’intero network.

Correlati