Cos’è e come funziona il Double-Spending

Marco Cavicchioli
4 min readJul 4, 2018

--

Immaginate se poteste duplicare una banconota prima di spenderla, così da poterla spendere anche una seconda volta, e magari una terza, una quarta, e così via…

Sarebbe un reato e si chiamerebbe falsificazione di denaro, ma mentre non è possibile semplicemente creare una copia di una banconota fisica identica all’originale, quando si tratta di denaro digitale diventa molto più semplice creare delle copie identiche.

Se avete mai provato a duplicare un file sapete di cosa stiamo parlando: è davvero molto facile.

In informatica infatti tutto è informazione, e le informazioni sono costituite da bit. Queste informazioni sono facilmente replicabili, perchè crearne una copia identica all’originale è molto semplice.

Pertanto duplicare denaro digitale potrebbe essere molto più semplice rispetto a duplicare una banconota fisica. Per questo motivo è stata inventata la blockchain: all’interno della blockchain di Bitcoin non si possono duplicare i dati. Quindi un BTC non può essere copiato (e quindi non può essere falsificato).

Ma anche se i BTC non si possono duplicare, bisogna anche impedire che vengano spesi due (o più) volte. L’effetto sarebbe lo stesso: se potessi spendere più volte lo stesso token è come se ne creassi delle copie.

Il cosiddetto double-spending (doppia spesa) non è altro che il problema che potrebbe verificarsi nel momento in cui qualcuno fosse in grado di spendere più volte lo stesso token.

Visto che le criptovalute non sono normate, a risolvere questo problema ci deve pensare il codice informatico. Ovvero è il codice che deve impedire il fenomeno del double-spending.

Ad esempio il protocollo di Bitcoin è stato creato in modo che sia impossibile spendere due volte lo stesso token senza violarlo. In altre parole se si rispetta il protocollo non si può spendere due volte lo stesso token, mentre se non lo si rispetta non si può utilizzare Bitcoin.

In particolare il protocollo Bitcoin prevede che per evitare la doppia spesa dei token ogni volta che vengono inviati si verifichi che questi non siano già stati inviati in passato. Così è impossibile che possano essere inviati due volte. E per evitare che i dati passati possano essere alterati bisognerebbe poter modificare a ritroso tutti i blocchi della blockchain dall’ultimo fino a quello in cui i dati del precedente invio sono memorizzati. Un’azione di questo tipo richiede una tale potenza di calcolo che nessuno è realisticamente in grado di farlo. Ma su questo argomento torneremo in futuro quando parleremo più specificatamente del ruolo della Proof-of-Work (PoW) nel rendere inattaccabile la blockchain.

Questo in realtà dovrebbe valere anche per qualsiasi altra criptovaluta, tuttavia a volte possono esserci dei bachi che possono consentire di violare il protocollo e spendere due volte lo stesso token.

Su Bitcoin l’unico modo possibile sarebbe quello di falsificare la blockchain ad esempio con un attacco 51% (cosa mai successa), e così dovrebbe essere per tutte le criptovalute. Tuttavia alcune valute minori non sufficientemente testate potrebbero contenere qualche baco che consente il double-spending. A tal proposito sarebbe importante che sia il protocollo che i software che vengono prodotti per creare, gestire ed utilizzare le criptovalute siano open source, in modo che chiunque possa controllarne il codice e verificare che non contengano bachi.

A dire il vero il fenomeno del double-spending è rarissimo, e si riscontra in genere solo o su valute davvero minori, insicure, non ben testate ed analizzate, oppure in caso di attacchi 51%. Inoltre qualora si verifichi a seguito di un attacco 51%, visto che questo genere di attacchi solitamente ha durata limitata, l’eventuale double-spending viene facilmente alla luce nel momento in cui l’attacco cessa, e la blockchain torna ad essere corretta. Ad oggi non risultano ad esempio tentativi di double-spending andati a buon fine negli ultimi anni sulle criptovalute principali.

CREDITI

Articolo scritto in Italiano da Marco Cavicchioli e tradotto in inglese da Stefania Stimolo per NovaMining.

--

--