Quando sentono la parola "CoinJoin", la prima cosa che viene in mente a molti Bitcoiner relativamente nuovi è probabilmente Collegamento Zero implementazioni Wasabi Wallet e Samourai Wallet. Negli ultimi anni, questi due progetti hanno reso la privacy di Bitcoin quasi mainstream, rendendola molto più semplice e accessibile.
Se sei nuovo nello spazio, però, potresti non essere consapevole del fatto che il progetto Unisciti al mercato fornisce strumenti CoinJoin agli utenti Bitcoin dal 2015.
Transazioni collaborative interrompere i presupposti della proprietà comune è stata un'idea avanzata dallo sviluppatore Bitcoin Greg Maxwell nel gennaio 2013, e successivamente formalizzata nel concetto di CoinJoin nell'agosto di quell'anno.
L'idea è rimasta in sospeso per due anni prima che venisse rilasciato qualcosa che la implementasse, e c'era una ragione per questo: un problema con l'idea generale che ha portato al fallimento dei tentativi precedenti, come Dark Wallet di Amir Taaki, è stato quello di attrarre liquidità. CoinJoin può essere uno strumento molto utile, ma se non c'è nessuno disposto a CoinJoin con te o non c'è modo di trovarlo se è disposto, non serve a nulla.
Il problema era come convincere le persone a unirsi a quel pool iniziale per aiutarlo a trasformarlo in un pool più ampio di liquidità e utenti. La soluzione di JoinMarket era piuttosto semplice ma brillante all'epoca: fornire un meccanismo di mercato in modo che i fornitori di liquidità coerenti potessero effettivamente guadagnare denaro per fornire liquidità ai pool CoinJoin.
JoinMarket funziona attorno a quello che è effettivamente un mercato basato sugli ordini, composto sia da market maker che da market taker che acquistano e vendono liquidità CoinJoin per rendere anonima la loro attività sulla catena.
I produttori possono sedersi e aspettare il tempo necessario con le offerte aperte finché non arrivano gli acquirenti che cercano di pagare per i loro servizi. Risolve il problema dell'utente di sedersi e aspettare per sempre qualcuno con cui mescolarsi. I market maker, che cercano di guadagnare profitti, sono incentivati dalle commissioni che applicano per essere semplicemente sempre online in attesa degli acquirenti; e gli acquirenti, cercando la privacy, sono incentivati a pagare queste commissioni. È un accordo vantaggioso per tutti.
Nella sua architettura, così come nel suo potenziale di aggiornamenti di coordinamento, JoinMarket offre una versione potenzialmente più decentralizzata del mixaggio delle monete rispetto al più noto ZeroLink. Ecco come.
Come viene coordinato il mixaggio: ZeroLink vs. Partecipa al mercato
L'architettura complessiva di ZeroLink, rispetto a JoinMarket, è molto diversa.
Nel caso di Wasabi e Samourai, esiste un unico server coordinatore gestito dal produttore del portafoglio codificato nel portafoglio. Tutti gli utenti partecipano al CoinJoin contattando questo server centrale e "registrandosi" per attendere fino a quando un numero sufficiente di utenti si sarà registrato per costruire il CoinJoin. Dopo che il numero richiesto di utenti è presente e registrato, il server coordinatore firma una credenziale in cieco che rappresenta il diritto di creare un output nella transazione CoinJoin e l'utente si disconnette e si riconnette tramite una nuova connessione Tor per registrare gli output della transazione.
Ciò impedisce al coordinatore di apprendere quali input corrispondono a quali output. Gli utenti pagano una commissione al coordinatore per il suo ruolo nel facilitare CoinJoin. In questo modello, non vi è alcun incentivo a fornire liquidità, ad eccezione dei guadagni in termini di privacy, e nonostante i problemi con tentativi passati come Dark Wallet, sembra funzionare bene per Wasabi e Samourai.
JoinMarket, d'altra parte, ha un registro degli ordini su cui i produttori fanno pubblicità, consentendo agli acquirenti di scegliere tra le offerte disponibili dei produttori (questo viene attualmente fatto tramite Internet Relay Chat [IRC]).
I maker si collegheranno all'orderbook con un ID univoco, quindi pubblicheranno un'offerta sull'orderbook contenente le seguenti informazioni: la commissione che il maker addebita per mescolarsi con gli acquirenti, l'importo che il maker contribuirà alle commissioni del miner e quindi il minimo e valore di denominazione massimo in cui realizzeranno output con denominazione mista. Pubblicano anche un modo in cui le persone possono connettersi direttamente a loro in privato.
Quando gli acquirenti desiderano CoinJoin, scaricano il registro degli ordini e il loro cliente seleziona i produttori con cui mescolarsi in base alle loro impostazioni. Dopo che il cliente ha selezionato un produttore, l'acquirente invierà una chiave pubblica temporanea per la crittografia e inizierà a comunicare con il produttore tramite messaggi crittografati su IRC (vale la pena notare che è possibile che più acquirenti siano connessi a un singolo produttore contemporaneamente tempo). Se tutte le parti sono d'accordo, firmano la transazione, inclusa la commissione dell'acquirente al produttore, e la inviano alla rete.
A causa del modo in cui funziona questo coordinamento, i produttori apprendono i risultati degli acquirenti nel processo di coordinamento della costruzione di CoinJoin. Per mitigare questo problema, JoinMarket dispone di una funzione "tumble", in cui il cliente dell'acquirente mescolerà più volte con produttori diversi fino a raggiungere il numero di mix impostati. Ciò garantisce che nessun singolo produttore sarà in grado di svelare l'intera storia del mix di un singolo acquirente, perché ogni produttore lungo il “percorso di caduta” apprende solo le connessioni in quella transazione.
Queste differenze hanno molte implicazioni generali in termini di architettura di progettazione per JoinMarket, come vedremo esaminando parte dello stato attuale del progetto e dei piani futuri.
Come vengono mitigati gli attacchi Sybil: ZeroLink vs. Partecipa al mercato
Gli attacchi Sybil - in questo contesto, un singolo utente che finge di essere molti utenti per minare la privacy creando una falsa "folla" in cui gli altri possono nascondersi mentre in realtà costituiscono l'intera "folla" - sono un problema fondamentale di qualsiasi protocollo di mixaggio su Bitcoin . Se l'intera folla è composta da te e dall'attaccante Sybil, e da nessun altro, l'attaccante conosce tutte le tue monete e non hai guadagnato privacy dal suo punto di vista. In fin dei conti, non esiste una soluzione fondamentale a questo problema, tutto ciò che si può fare per mitigarlo è aumentare il costo per eseguire l’attacco.
Nel caso di ZeroLink, il problema è mitigato dalle tariffe addebitate dal coordinatore. Finché il costo delle commissioni del minatore è superiore alle entrate delle commissioni che il server coordinatore riscuote in commissioni, anche il coordinatore subirebbe una perdita netta nel tentativo di attaccare Sybil ai propri utenti.
Per JoinMarket la questione è un po’ più complicata. Devi proteggere gli acquirenti, nel loro caso dai creatori Sybil che attaccano il registro degli ordini in modo che un acquirente si mescoli solo con loro e riveli l'intera cronologia del mix al produttore dannoso. Ma devi anche proteggere gli acquirenti dagli attacchi dei produttori richiedendo CoinJoins e poi abbandonando il protocollo dopo che il produttore ha rivelato i propri risultati all’acquirente.
Ciò consente all'acquirente malintenzionato di separare gli input di quel produttore nelle transazioni future dagli acquirenti con cui si mescolano. Ripetere questa operazione più volte di seguito contro lo stesso produttore consentirebbe loro di deanonimizzare gli acquirenti che si sono mescolati con loro.
Ci sono due meccanismi in questo sistema per offrire una difesa adeguata per ciascuna classe di attacco: il primo, per far fronte agli acquirenti che spiano i produttori, è una prova di equivalenza logaritmica discreta (difesa numero due in questo articolo, noto anche come PoDLE).
L'idea di base è che per una coppia di chiavi privata/pubblica per un Bitcoin UTXO, è possibile generare una seconda chiave pubblica diversa corrispondente alla chiave privata e creare una prova a conoscenza zero (ZKP) che mostri che entrambi condividono la stessa chiave privata. Dopo aver fornito la seconda chiave e la prova al produttore, l'acquirente rivela la prima chiave pubblica corrispondente all'output che desidera mescolare.
Ora, questa configurazione consente a un produttore di pubblicare la seconda chiave pubblica e ZKP a tutti gli altri produttori senza effettuare il doxxing degli output effettivi dell'acquirente: in questo modo, se un acquirente che si sta coordinando con il produttore originale tenta di riutilizzare quell'output per spiare più produttori allo stesso tempo allo stesso tempo, tutti gli altri produttori vedranno che la prima chiave pubblica dell'acquirente corrisponde alla seconda chiave pubblicata e allo ZKP. Si rifiuteranno quindi di rivelare i propri risultati all'acquirente malintenzionato. Ciò aumenta il costo degli acquirenti che spiano gli output dei produttori richiedendo che un acquirente abbia output unici per ciascun produttore che spia, invece di essere in grado di riutilizzare gli stessi output per attaccare più produttori.
Il secondo meccanismo di difesa è quello di proteggere gli acquirenti dai produttori malintenzionati che fingono di essere molti produttori diversi nell’orderbook, consentendo così al produttore malintenzionato di svelare la mescolanza di acquirenti che finiscono per mescolarsi solo con l’attaccante.
Questo meccanismo è chiamato a vincolo di fedeltà, che essenzialmente consiste semplicemente nel prendere una grande quantità di bitcoin e nel bloccarlo nel tempo. I creatori che lo fanno possono quindi firmare e pubblicare messaggi con quella chiave per dimostrare il controllo sulle monete bloccate nel tempo. I clienti degli acquirenti, se hanno configurato il proprio cliente per utilizzare i titoli di fedeltà, valuteranno quindi la selezione dei produttori da utilizzare per preferire quelli che hanno quantità più elevate di tempo di valore bloccato nei titoli di fedeltà. I titoli di fedeltà sono ponderati in base al quadrato di quante monete sono bloccate, vale a dire. se blocchi quattro bitcoin, verranno pesati come 16; cinque avranno un peso di 25; sei verranno ponderati come 36, ecc.
La logica qui è che ottieni vantaggi compositi come produttore con più monete blocchi (vieni scelto più spesso dai clienti acquirenti), quindi se alcuni produttori onesti creano legami di fedeltà molto grandi, aumentano drasticamente il costo per i produttori di Sybiling. che avrebbero dovuto replicare quell'ingente importo di fideiussione per ciascuna delle loro false identità nel registro degli ordini. Cioè, se tre produttori onesti versassero ciascuno 10 bitcoin in fedeltà, un utente malintenzionato dovrebbe spendere 30 bitcoin per avere una probabilità del 50% di essere scelto per mescolarsi, costerebbe 60 bitcoin per avere una probabilità del 66% di essere scelto, ecc.
Più i produttori onesti utilizzano i legami di fedeltà, maggiore sarà il costo dei composti di attacco Sybil per i produttori malintenzionati.
Come il meccanismo di coordinamento di JoinMarket potrebbe essere aggiornato
Nel caso di ZeroLink, tutti si coordinano attraverso il server coordinatore centralizzato: questa è una parte esplicita della progettazione del sistema e del modello di fiducia in termini di affidabilità. Se il coordinatore va giù, nessuno può CoinJoin finché non torna su.
JoinMarket funziona su un sistema di registro degli ordini per cercare di evitare questo punto centrale di fallimento, ma, come accennato in precedenza, attualmente utilizza IRC come livello di hosting e comunicazione per il registro degli ordini. IRC è un potenziale punto centrale di fallimento per JoinMarket, proprio come il server coordinatore lo è per ZeroLink. Essendo un progetto costruito attorno al coordinamento dei CoinJoins in modo decentralizzato, a lungo termine questa dipendenza da IRC dovrà essere sostituita con qualcosa di più robusto.
Una delle proposte più sviluppate è quella di implementare una sorta di schema del server di directory simile a quello utilizzato dal progetto Tor. Nella rete Tor, i client si connettono a una serie di server gestiti dai contributori Tor che inviano loro tutti i nodi sulla rete Tor attraverso i quali possono costruire percorsi Onion.
L'idea con JoinMarket sarebbe quella di avere un set simile di server che fornisca ai clienti tutti i produttori con offerte aperte. Questi server dovrebbero essere gestiti da qualcuno diverso dai produttori, perché ogni produttore avrebbe un incentivo a pubblicizzarsi solo sul proprio server di directory per raccogliere più commissioni. Dovrebbe anche essere difficile unirsi al set di server di directory, altrimenti entità dannose potrebbero crearne un gran numero e Sybil attaccare tutti gli utenti che si connettono solo a server dannosi.
I Fidelity Bond potrebbero potenzialmente risolvere il problema Sybil in questo caso, oltre a creare un disincentivo per i produttori a provare a gestire server di directory. Bloccare le monete in un legame di fedeltà per un server di directory lascerebbe loro meno monete da bloccare in un legame con il produttore, portando potenzialmente a un minor numero di clienti acquirenti che le selezionano per i mix.
C'è anche una prova di concetto e proposta da Adam Gibson per integrare c-lightning in JoinMarket per utilizzarlo come livello di messaggistica. Nel contesto dei server di directory, ciò potrebbe facilitare un metodo di monetizzazione per loro come entità separate che utilizzano Lightning Network. I server di directory potrebbero addebitare ai produttori piccole somme tramite Lightning per farsi pubblicità nella directory.
Come il protocollo di coordinamento di JoinMarket potrebbe essere aggiornato
Come discusso in precedenza, i produttori apprendono i risultati degli acquirenti durante i singoli CoinJoin, questo è il motivo per cui esiste la modalità tumbler, per consentire agli acquirenti di mescolarsi tra più produttori e mitigarlo.
Esiste, tuttavia, una soluzione migliore, almeno nel caso in cui più acquirenti stiano parlando con un singolo produttore allo stesso tempo, e possano coordinarsi parlando direttamente tra loro invece che solo attraverso il produttore (se c'è un solo acquirente parlando con un produttore, questo non aiuterà perché il produttore sa che ogni output che non è suo appartiene a chi lo prende). CoinShuffle è un protocollo per eseguire in modo efficace ciò che le credenziali accecate realizzano in ZeroLink, ovvero mantenere le cose private dal coordinatore, tranne che in modo decentralizzato per un gruppo senza un coordinatore centrale.
Immagina di avere Alice, Bob e Charlie, che vogliono tutti effettuare CoinJoin tra loro (hanno già deciso la denominazione per gli output CoinJoin) e tutti e tre generano una chiave pubblica temporanea con cui crittografare i messaggi.
Charlie dà la sua chiave pubblica a Bob, poi Bob dà ad Alice la sua chiave pubblica oltre a quella di Charlie. Quindi, abbiamo una situazione in cui Alice ha le chiavi pubbliche di Bob e Charlie, Bob ha la chiave pubblica di Charlie e Charlie ha solo la sua.
Alice prende l'indirizzo a cui vuole che venga inviato il suo output e lo crittografa con la chiave di Charlie, ma poi prende quel messaggio crittografato e lo crittografa con la chiave pubblica di Bob, annidandolo come bambole russe. Quindi lo passa a Bob, che decrittografa il suo livello solo per trovare un messaggio crittografato per Charlie che non può aprire. Bob quindi prende l'indirizzo a cui vuole che venga inviato il suo output e lo crittografa nella chiave di Charlie. Passa entrambi i messaggi a Charlie. Charlie ora decodifica entrambi i messaggi e trova gli indirizzi a cui Alice e Bob vogliono che i loro output vengano inviati, ma non sa quale indirizzo appartiene a chi (e ricorda, né Alice né Bob hanno appreso gli indirizzi l'uno dell'altro).
Charlie quindi costruisce e firma il CoinJoin, lo passa ad Alice e Bob per firmarlo e viene inviato alla rete. Tutti in questo processo sanno che il loro output è stato costruito correttamente, ma non sanno chi possiede quale degli altri due indirizzi. Questo processo può essere esteso a gruppi molto più grandi e se gli acquirenti potessero comunicare tra loro direttamente prima di avvicinarsi ai produttori, questo protocollo potrebbe essere utilizzato per proteggere la privacy degli acquirenti dai singoli produttori senza dover scambiare monete più volte con parti diverse.
Come la struttura delle transazioni di JoinMarket potrebbe essere aggiornata
La più grande somiglianza tra ZeroLink e JoinMarket è la dipendenza da output denominati simili per creare ambiguità su quali input mappano a quali output in una transazione.
Sebbene JoinMarket utilizzi importi arbitrari rispetto agli importi predefiniti in ZeroLink, nell'ambito di una singola transazione CoinJoin, tutte le denominazioni del mix devono essere le stesse.
CoinjoinXT è una proposta di Gibson per eliminare potenzialmente la necessità di fare affidamento su ciò in modo così rigoroso (questo potrebbe essere implementato anche da ZeroLink). L'idea di base è trarne vantaggio ECDSA Multiparty Computation, o MuSig ora che Taproot è attivato, e crea una catena di transazioni prefirmate utilizzando indirizzi multisig che assomigliano ai normali indirizzi a firma singola.
Quando qualcuno guarda la blockchain, spesso vengono fatti due grandi presupposti: uno, che tutti gli input in una transazione siano di proprietà di una persona (il grande presupposto che i CoinJoin si rompano); e due, che un mezzo di pagamento ha trasferito il controllo dei fondi.
Quindi, cosa accadrebbe se più parti collaborassero per bloccare tutti i loro fondi in un indirizzo multisig che non ne assomiglia e pre-firmano una lunga catena di transazioni che sembrano come se una persona spendesse lentamente denaro nel tempo, ma in realtà lo è? semplicemente staccare i soldi e restituirli ai proprietari originali in piccoli frammenti?
Cosa accadrebbe se alcuni di questi output di pagamento fossero in realtà canali Lightning privati tra due partecipanti a CoinjoinXT per assicurarsi che un osservatore non possa tracciare la catena di pagamento e mettere insieme gli importi in un momento futuro?
Ciò potrebbe aprire una porta completamente nuova in termini di flessibilità per i tipi di CoinJoin a cui le persone partecipano e per il grado di privacy che creano. Se un normale CoinJoin urla sfacciatamente alla stanza "Adesso me ne vado e scompaio!" allora CoinjoinXT potrebbe equivalere a uscire silenziosamente dalla festa inosservati.
Il futuro decentralizzato
Nel complesso, JoinMarket è stato onestamente uno strumento di nicchia nell'ecosistema nonostante sia in circolazione dal 2015, data la necessità di gestire un nodo completo per utilizzarlo. È stato solo quando ZeroLink è arrivato sul mercato sotto forma di Wasabi e Samourai che CoinJoin è diventato davvero uno strumento accessibile e più ampiamente utilizzato e compreso.
Entrambi sono strumenti molto preziosi, ma alla fine sono servizi costruiti attorno a società centralizzate (sebbene servizi trustless costruiti in modo tale che sia impossibile perdere denaro interagendo con loro) ma pur sempre servizi. Cosa succede se le aziende chiudono? Lo sviluppo continuerà ad avanzare allo stesso modo, dato che attualmente è finanziato da queste aziende?
C'è assolutamente un posto per tali strumenti in questo spazio, e ci sono anche degli aspetti positivi. Quella stessa dinamica di finanziamento che mette in dubbio la sopravvivenza dello strumento in caso di fallimento dell’azienda garantisce molte risorse a sostegno del suo sviluppo, purché l’azienda sopravviva. Ma c’è spazio anche per uno strumento decentralizzato, non dipendente da una singola azienda. I progressi potrebbero essere più lenti e i problemi più complicati da risolvere, ma in caso di successo, il risultato finale sarà molto più solido e adattabile.
Non c’è niente di sbagliato nei servizi e nelle aziende in questo ambito, ma per ogni servizio e azienda in cui è possibile costruire un’alternativa decentralizzata, quell’alternativa dovrebbe esistere come un’altra opzione. Come lo stesso Bitcoin, un giorno potresti trovarti ad averne un disperato bisogno.
Questo è un guest post di Shinobi. Le opinioni espresse sono interamente proprie e non riflettono necessariamente quelle di BTC Inc o Bitcoin Magazine.
Fonte: https://bitcoinmagazine.com/technical/joinmarket-zerolink-and-coinjoin-bitcoin-mixing
- "
- Vantaggio
- Pubblicizza
- Tutti
- Consentire
- Ambiguità
- architettura
- in giro
- AGOSTO
- Maggiore
- Po
- Bitcoin
- BitcoinUTXO
- blockchain
- Legami
- BTC
- BTC Inc
- costruire
- Acquisto
- canali
- carica
- ricarica
- Moneta
- Coinjoin
- Monete
- Uncommon
- Comunicazione
- Aziende
- azienda
- veloce
- Connessioni
- costruzione
- Creazione
- Credenziali
- Corrente
- Stato attuale
- giorno
- affare
- decentrata
- Difesa
- Design
- Costruttori
- Mercato
- disturbare
- ecosistema
- crittografia
- Evento
- Fallimento
- falso
- caratteristica
- Costi
- fedeltà
- trova
- sottile
- Nome
- Flessibilità
- modulo
- Avanti
- pieno
- Nodo completo
- finanziati
- finanziamento
- fondi
- futuro
- Dare
- buono
- Gruppo
- GUEST
- Ospite Messaggio
- qui
- nascondere
- storia
- Come
- Tutorial
- HTTPS
- idea
- Compreso
- informazioni
- Internet
- sicurezza
- IT
- join
- Le
- Tasti
- grandi
- principale
- IMPARARE
- imparato
- apprendimento
- Guidato
- fulmine
- Lightning Network
- Liquidità
- fornitori di liquidità
- Lunghi
- creatore
- Fare
- carta geografica
- Rappresentanza
- mercato
- di messaggistica
- misto
- modello
- soldi
- cambiano
- Multisig
- rete
- Rete
- nodi
- offrire
- Offerte
- online
- aprire
- Opinioni
- Opzione
- minimo
- Altro
- proprietari
- Paga le
- Pagamento
- Persone
- pool
- Piscine
- presenti
- Privacy
- un bagno
- chiave privata
- progetto
- progetti
- prova
- prova del concetto
- proposta
- protegge
- protocollo
- la percezione
- chiave pubblica
- pubblicare
- aumentare
- solleva
- Realtà
- fiducia
- Risorse
- Le vendite
- strada
- Correre
- running
- Servizi
- set
- Condividi
- Segni
- Un'espansione
- SIX
- piccole
- So
- RISOLVERE
- lo spazio
- spendere
- Spendere
- Spin
- quadrato
- inizia a
- Regione / Stato
- presentata
- sistema
- parlando
- temporaneo
- tempo
- strumenti
- Tor
- pista
- delle transazioni
- Le transazioni
- Affidati ad
- utenti
- APPREZZIAMO
- aspettare
- Portafoglio
- Che cosa è l'
- OMS
- wikipedia
- vento
- Lavora
- lavori
- valore
- anno
- anni