Bitcoin viene spesso descritto come denaro digitale, ma è un paragone discutibile. Se Alice paga 10 dollari in contanti a Bob, Bob non saprà da dove arrivano quei soldi. E se in seguito Bob li passa a Carol, lei non potrà dedurre che prima erano nelle mani di Alice.
Con Bitcoin succede il contrario, proprio per la sua natura aperta. La storia di una determinata moneta (cioè di un output di transazione non speso, o UTXO) può essere ricostruita facilmente da chiunque. È come se, ogni volta che un bitcoin viene utilizzato, si annotassero l'importo e il nome del destinatario su una fattura.
L'assenza di nomi negli indirizzi pubblici, però, impedisce di risalire con facilità all'identità degli utenti. Ciò non significa che Bitcoin sia del tutto privato. L'analisi della blockchain diventa sempre più sofisticata e collega indirizzi e identità con crescente efficacia. Oltre a queste tecniche di monitoraggio, anche un'unità dedicata specificamente a questo scopo può svelare l'identità di chi usa criptovalute. Per evitarlo, negli anni sono nate tecniche capaci di recidere il collegamento tra le transazioni.
Cos'è il coin mixing?
In termini generali, il coin mixing indica le operazioni pensate per occultare dei fondi scambiandoli con altri fondi. Nel mondo delle criptovalute, però, il termine si riferisce quasi sempre a servizi offerti da terze parti. Il fornitore riceve le monete dell'utente (insieme a una piccola commissione) e gli restituisce monete diverse, prive di qualsiasi collegamento con quelle inviate. Questi servizi sono noti anche come tumbler o mixer.
Naturalmente, la sicurezza e la privacy di servizi così centralizzati sollevano più di un dubbio. Nulla garantisce che il mixer restituisca davvero i fondi, né che le monete ricevute in cambio siano prive di uno storico di transazioni problematico. Un altro aspetto da considerare è che indirizzi IP e indirizzi Bitcoin possono essere registrati da terzi. In sostanza, l'utente affida i propri fondi a qualcun altro sperando di ricevere monete "ripulite" da ogni collegamento.
Un approccio più interessante è quello delle transazioni CoinJoin, che creano un notevole grado di negabilità plausibile. Una volta eseguita una transazione CoinJoin, cioè, non è possibile produrre alcuna prova che colleghi in modo definitivo un utente alle sue transazioni precedenti. Molte soluzioni CoinJoin rappresentano un'alternativa più decentralizzata ai mixer: l'utente non deve rinunciare alla custodia dei propri fondi, anche se nel processo può intervenire un coordinatore.
Cos'è CoinJoin?
Le transazioni CoinJoin furono presentate per la prima volta nel 2013 dallo sviluppatore Bitcoin Gregory Maxwell. Nel suo articolo spiegava brevemente come sono strutturate e come consentano un enorme guadagno in termini di privacy senza modificare il protocollo.
Nella sua essenza, CoinJoin consiste nel far confluire in un'unica transazione gli input di utenti diversi. Prima di vedere come (e perché) funziona, conviene ripassare la struttura di base di una transazione.
Le transazioni Bitcoin sono composte da input e output. Quando un utente vuole operare, usa i propri UTXO come input, definisce gli output e firma gli input. Un dettaglio importante: ogni input viene firmato in modo indipendente e l'utente può creare più output, cioè inviare fondi a indirizzi diversi.

Esaminando una transazione composta da quattro input (0,2 BTC ciascuno) e due output (0,7 BTC e 0,09 BTC), possiamo formulare alcune ipotesi. La prima è che si tratti di un pagamento: chi invia manda uno degli output a un'altra persona e il resto a sé stesso. Dato che utilizza quattro input, l'output più consistente va con ogni probabilità al destinatario. Se nel totale mancano 0,01 BTC, quella differenza è la commissione pagata al miner.
È altrettanto possibile che il mittente voglia costruire un UTXO grande a partire da altri più piccoli e che quindi unisca gli input minori per arrivare ai 0,7 BTC desiderati.
Un'altra ipotesi si basa sul fatto che ogni input viene firmato separatamente. La transazione potrebbe essere stata costruita in modo che gli input siano stati firmati da quattro soggetti diversi. È esattamente questo il principio che rende efficace CoinJoin.
Come funziona CoinJoin?
L'idea di fondo è che più parti si coordinano per creare una transazione comunicando i propri input e gli output desiderati. Una volta combinati tutti gli input, non è più possibile stabilire con certezza quale output appartenga a quale utente. Lo schema qui sotto illustra il processo:

In questo caso abbiamo quattro utenti che vogliono spezzare il legame tra le proprie operazioni. Si coordinano tra loro (o tramite un coordinatore) per comunicare gli input e gli output che intendono includere.
Il coordinatore raccoglie tutte le informazioni, costruisce la transazione e la fa firmare a ciascun partecipante prima di trasmetterla alla rete. Dopo che gli utenti l'hanno firmata, la transazione non può più essere modificata senza invalidarla: il rischio che il coordinatore si appropri dei fondi è così azzerato.
La transazione funziona come una scatola nera in cui le monete vengono mescolate. Per creare nuovi UTXO occorre distruggere quelli vecchi, e l'unico collegamento tra i vecchi e i nuovi è la transazione stessa; a quel punto, però, non è più possibile distinguere i partecipanti l'uno dall'altro. Al massimo si può dire che uno di loro ha aggiunto uno degli input e che potrebbe essere il nuovo proprietario dell'output risultante.
Ma nemmeno questo è una certezza. Dalla transazione qui sopra si può davvero concludere che i partecipanti sono quattro? E se fosse una sola persona a inviare fondi a quattro indirizzi propri? O se due persone facessero due acquisti distinti rimandando 0,2 BTC ciascuna al proprio indirizzo? O ancora, se quattro persone stessero inviando fondi ad altri o a sé stesse? Non esiste una risposta definitiva a queste domande.
Privacy attraverso la negabilità
Il solo fatto che esistano applicazioni CoinJoin basta a mettere in dubbio i metodi usati per analizzare le transazioni. Si può concludere che CoinJoin viene impiegato in molte operazioni, ma resta impossibile sapere a chi appartengano gli output. Con la crescente popolarità di queste applicazioni, l'assunto secondo cui tutti gli input appartengono allo stesso utente si è indebolito: un passo avanti importante per la privacy dell'intero ecosistema.
Nell'esempio precedente la transazione ha un insieme di anonimato pari a 4: il proprietario dell'output può essere uno qualsiasi dei quattro utenti coinvolti. Più grande è questo insieme, più difficile diventa collegare una transazione al suo proprietario originario. Per fortuna, grazie alle ultime implementazioni di CoinJoin, gli utenti possono unire il proprio input a quello di decine di altre persone senza bisogno di fidarsi di nessuno, ottenendo un elevato livello di negabilità. Di recente è stata portata a termine con successo una transazione con 100 partecipanti.
Considerazioni finali
Gli strumenti per mescolare le monete sono risorse importanti, alla portata di tutti gli utenti attenti alla privacy. A differenza di altri aggiornamenti dedicati alla riservatezza (come le Confidential Transactions), possono essere sfruttati senza modificare lo stato attuale del protocollo.
Per chi si fida dell'integrità e dei metodi delle terze parti, i servizi di mixing offrono una soluzione semplice. Per chi preferisce alternative verificabili e non basate sulla custodia, CoinJoin è nettamente superiore. Queste operazioni possono essere eseguite manualmente dagli utenti più esperti oppure affidate a software che eliminano la necessità di confrontarsi con meccanismi complessi. Diversi strumenti di questo tipo esistono già e la loro popolarità cresce di pari passo con la richiesta di maggiore privacy.
