Coinjoin
Coinjoin
Difficoltà: avanzato
Argomento: tecnologia
DEFINIZIONE
CoinJoin è una tecnica per rendere le transazioni più anonime e rendere più difficili le operazioni di chain analysis.
Una transazione CoinJoin mette insieme un grande numero di mittenti e destinatari in un'unica transazione con molti importi identici, in modo che un osservatore non possa determinare facilmente chi stia trasferendo un importo a chi.
CoinJoin è un protocollo trustless per mescolare UTXO di più proprietari, al fine di rendere difficile per le parti esterne utilizzare la cronologia delle transazioni della blockchain per determinare chi possiede quale moneta. Si tratta di creare in modo collaborativo una singola transazione che spende uno o più UTXO di ogni partecipante in nuovi indirizzi per ogni partecipante, rendendo più difficile tracciare la storia delle transazioni di ogni uscita.
CoinJoin nasce da una proposta del 2013 di Gregory Maxwell, e diverse implementazioni indipendenti hanno fornito supporto per varie forme di CoinJoin.
Le transazioni Bitcoin sono costituite da input e output. Quando fai una transazione, prendi i tuoi UTXO come input, specifichi gli output e poi firmi gli input. Un CoinJoin serve a "rompere" l'associazione tra le transazioni e lo fa attraverso una transazione con più partecipanti che vengono coordinati tra loro da un terzo (attraverso il software wallet).
Attraverso una operazione trustless vengono mischiati UTXO da più proprietari al fine di rendere difficile per le parti esterne l'utilizzo della cronologia delle transazioni della blockchain determinare chi possiede quale moneta.
Si dichiarano gli input e gli output che si desidera includere e vengono trasformati in una transazione unica che viene firmata da ogni partecipante prima di essere trasmessa alla rete.
In forma molto semplice: Alice, Bob e Carol forniscono ciascuno un UTXO da 1,1 BTC e generano un nuovo indirizzo dove vogliono ricevere i loro output. Alice crea una transazione che spende quei 3,3 BTC in 3 uscite da 1 BTC (e 0,3 BTC come commissione), una a ciascuno dei 3 indirizzi generati dai partecipanti. Alice, Bob e Carol dovranno tutti firmare la transazione, poiché solo loro possono firmare per i propri input. Una volta che tutte le firme sono state aggiunte alla transazione, chiunque può trasmetterla e il CoinJoin è completa. In nessun momento i partecipanti hanno accesso alle monete degli altri.
CoinJoin è distinto dai Mixing Service in quanto gli operatori CoinJoin non prendono mai la custodia di alcun fondo. Gli utenti mantengono il controllo del loro bitcoin in ogni momento.
Una volta che i partecipanti hanno firmato, la transazione non può essere modificata senza diventare non valida e questo serve a evitare il rischio che chi coordina scappi con i fondi.
Immagina la transazione come un salvadanaio dove metti le coin che poi vengono mescolate, in modo che l'unico legame tra le vecchie e le nuove UTXO sia la transazione stessa. Alla fine ciò che si vede è che un partecipante ha fornito uno degli input ed è forse il nuovo proprietario di un output risultante.
Per costruire una transazione CoinJoin, gli utenti collaborano con gli input nella transazione e ricevono le stesse quantità di bitcoin degli output, il tutto in quantità uniformi. Ad esempio, se 5 utenti immettono importi di 1, 2, 3, 4 e 5 BTC, ci saranno cinque input per un totale di 15 BTC e ci saranno 15 output, ciascuno del valore di 1 BTC e diventa impossibile associare i destinatari degli importi da 1 BTC al mittente.
Sebbene sia possibile che un CoinJoin assomigli a un pagamento batch, può essere abbastanza facile da identificare onchain e alcuni exchange si sono rifiutati di accettare monete con una storia recente di CoinJoin e per questo motivo può essere più efficace coinswap per ottenere questo scopo.
Sebbene il processo sembri chiaro in teoria, in pratica unire le transazioni è difficile per diversi motivi. Affinché i partecipanti al join rimangano anonimi, dovrebbero connettersi attraverso una rete Tor, devono conoscere un po' di codice e devono fidarsi l'uno dell'altro.
Per superare questi ostacoli, gli sviluppatori di soluzioni CoinJoin hanno iniziato presto a creare strumenti che rendessero il processo automatico per la maggior parte degli utenti. I primi tentativi di creare uno strumento CoinJoin sono stati incorporati nei wallet. I primi esempi sono stati Dark Wallet, JoinMarket e SharedCoins. Queste piattaforme miravano a fornire un ulteriore livello di mascheramento dei dati per gli utenti che effettuavano transazioni in Bitcoin.
Il 24 aprile 2024 il Dipartimento di Giustizia degli Stati Uniti ha comunicato l’arresto dei due fondatori di Samourai Wallet, che forniva il servizio Whirlpool di CoinJoin, accusati di aver operato senza le necessarie licenze da Money Services Business e di aver favorito il riciclaggio di oltre 100 milioni di dollari provenienti da attività criminali.
Dopo pochi giorni, anche la società ZkSNACKs, che ha sviluppato Wasabi Wallet, ha attivato una serie di azioni:
- dal 1° giugno 2024 ha interrotto il servizio di CoinJoin coordinator che gestiva sul wallet Wasabi Wallet.
- La gestione del codice di Wasabi Wallet, già disponibile in open source, è stata trasferita a un'utenza separata da ZkSNACKs, consentendo a Wasabi Wallet di essere mantenuto come progetto completamente autonomo, indipendente da qualsiasi organizzazione e aperto a molteplici contributori e sostenitori diversi.
- l'impostazione del coordinator è aperta e può essere impostata in modo molto semplice dall'utente, e si è creata una comunità di coordinator e decentralizzando un aspetto critico del suo funzionamento
- Link utili:
- Coinjoin sul sito Bitcoin Optech, Operations Technology, Group (in inglese)
- spiegazione su Wasabi Wallet che implementa coinjoin
- La pagina CoinJoin su bitcoin wiki (in inglese)
- Un esempio di transazione coinjoin sulla mainnet
- Un esempio di transazione coinjoin sulla testnet
- La guida su Joinmarket di Turtlecute
- Riacquisire privacy su Bitcoin attraverso coinjoin sul canale youtube Final Step Bitcoin
- Vedi anche
- Chain Analysis
- Coinswap
- Common Input Ownership Heuristic Euristica della proprietà comune degli input
- Exchange
- PayJoin
- UTXO (Unspent transaction output) Output non spesi delle transazioni
aggiornato il 2021-12-02