Bitcoin zdaj je ni zares anonimen. Čeprav Bitcoin naslovi niso nujno povezani z resničnimi identitetami, so lahko. Spremljanje nešifriranega peer-to-peer omrežja, analiza javnega veriženja blokov in politika »Spoznaj svoje stranke« (KYC) ali uredba o preprečevanju pranja denarja (AML) lahko razkrijeta veliko o tem, kdo uporablja Bitcoin in za kaj.
Z vidika zasebnosti to ni super. Uporabniki Bitcoinov morda ne bodo želeli, da svet ve, kje trošijo svoj denar, kaj zaslužijo ali koliko imajo v lasti, medtem ko podjetja morda ne bodo želela razkrivati podrobnosti transakcij konkurentom – če naštejemo nekaj primerov.
Poleg tega je bitcoinov, ki jih je mogoče izslediti, morda so “umazani” in so morda vredni manj kot drugi bitcoin, v nasprotju z zamenljivostjo. To bi lahko celo izpodbijalo vrednost Bitcoina kot denar.
Obstajajo pa potencialne rešitve za povečanje zasebnosti in izboljšanje zamenljivosti.
Rešitev, ki obstaja že nekaj časa, je CoinJoin.
Ozadje
V svoji osnovi protokol Bitcoin sestavljajo transakcije. Vse te transakcije so v blockchainu popolnoma javne, kar pomeni, da lahko vsak vidi, kateri naslovi so na katere naslove poslali bitcoin. Če so nekateri od teh naslovov povezani z identitetami iz resničnega sveta, lahko razkrije, kdo je s kom posloval – ali za kaj. To je v nasprotju z zasebnostjo in zlasti z zamenljivostjo.
Poleg tega vsaka posamezna transakcija porabi enega ali več “vhodov”, ki se nanašajo na naslove, s katerih so poslani bitcoin. (Ti vložki se porabijo za »izhode«, pri čemer se nanašajo na naslove, na katere so poslani bitcoin.) To predstavlja nov izziv za zasebnost in zamenljivost, saj bi vsi vhodni naslovi običajno pripadali istemu uporabniku: pošiljatelju transakcije. Če je celo enega od vseh grozdnih vhodnih naslovov mogoče povezati z resnično identiteto, so vsi.
CoinJoin – predlagano leta 2013 avtor Bitcoin jedro in Blockstream razvijalec Gregory Maxwell – je zasnovan za reševanje obeh težav. Zameti sled bitcoinov in razbije domnevo, da vsi vhodni naslovi pripadajo istemu uporabniku.
Ideja
Koncept CoinJoin je dokaj enostaven.
V bistvu CoinJoin več uporabnikom omogoča združitev vseh vhodov in izhodov iz več transakcij v eno samo veliko transakcijo. Ta posamezna transakcija porabi bitcoine z različnih naslovov na različne naslove – in ker noben od naslovov pošiljateljev ne plača posebej nobenega od naslovov prejemnikov; med nobenim ni povezave.
(To lahko primerjamo s skupino ljudi, ki zberejo denar in odidejo po nakupih. Čeprav bi se lahko vsi prepričali, da nihče ne zapravi več, kot bi moral, kupci sami ne bi porabili natančno računov, ki so jih prvotno dali v skupno denarnico. .)
V Bitcoinu je to mogoče doseči popolnoma varno. Vsi vnosi zahtevajo ustrezen podpis lastnika, medtem ko vsebine transakcije po dodanem podpisu ni mogoče spremeniti. Kot taki udeleženci transakcije CoinJoin preprosto sporočijo, katere vhode in izhode želijo vključiti v transakcijo, in agregat podpišejo le, če so ti vhodi in izhodi pravilno vključeni. Ko se vsi udeleženci podpišejo (in šele ko se podpišejo), se transakcija predvaja.
Ključna značilnost CoinJoin: ko je transakcija predvajana in vključena v verigo blokov, ni mogoče vedeti, kateri bitcoini so kam šli; niti prejemniki transakcije ne bodo vedeli, s katerih naslovov so prejeli plačilo.
Poleg tega CoinJoin izboljša zasebnost tudi tistih, ki je sploh ne uporabljajo. Ker kombinacija vhodov ne pomeni več nujno, da vsi vhodni naslovi pripadajo istemu uporabniku, je združevanje v skupine na splošno postalo manj zmogljivo analitično orodje.
V praksi
CoinJoin ne zahteva sprememb protokola Bitcoin in že obstaja več njegovih izvedb. Glavna razlika med nekaterimi različicami je, kako je ustvarjena transakcija CoinJoin.
Transakcijo CoinJoin najlažje ustvarite prek namenskega strežnika. Kdor želi uporabiti CoinJoin, se preprosto poveže s strežnikom in navede, katere vhode in izhode mora vključevati transakcija. Nato strežnik ustvari veliko skupno transakcijo in jo pošlje nazaj, da jo podpišejo vsi udeleženci. DarkWallet – denarnica Bitcoin, ki se osredotoča na zasebnost, in se zdi, da je zataknjena v svoji alfa fazi – uporablja strežniški model, tako kot priljubljeni Blockchain spletna denarnica, čeprav je bila njena učinkovitost že dosežena zaslišan v preteklosti.
Glavna težava strežniškega modela je ta, da ima kdorkoli nadzor nad strežnikom običajno dostop do podatkov, ki jih posredujejo posamezni udeleženci. Ta strežnik kot tak predstavlja eno samo točko neuspeha z vidika zasebnosti in zamenljivosti. Obstajajo potencialne rešitve za kriptografsko prikrivanje podatkov o transakcijah celo s strežnika, vendar je to za zdaj še vedno teoretično.
Obstajajo tudi decentralizirane rešitve CoinJoin, ki sestavljajo transakcije CoinJoin med enakovrednimi ali vsaj brez posebnega osrednjega posrednika. V tej smeri je bilo že več poskusov, med drugim Coinmux, Coinjumble, CoinJoiner in nekdanjega razvijalca DarkWallet Amirja Taakija Orodje CoinJoin. Toda nobeno od teh ni široko uporabljeno in zato ni zelo koristno – “združevanje” je smiselno le, če se komu pridruži.
Novejši pristop k strategiji CoinJoin, ki se želi spoprijeti s to težavo, je Pridružite se Marketu: trg za transakcije CoinJoin. Uporabniki lahko v zameno za majhno plačilo ponudijo mesto v transakciji CoinJoin – ali pa sami kupijo dostop do transakcije CoinJoin. Ustvarjalci JoinMarket verjeti da naj spodbuda za mešanje kovancev v zameno za provizije ustvari dovolj likvidnosti, da bo trg uspešen – hkrati pa mora njegova konkurenčna narava ohraniti nizke provizije. Dejansko je JoinMarket razmeroma dobro uporabljen v primerjavi z drugimi možnostmi in knjiga naročil (v času pisanja) ponuja na tisoče bitcoinov za mešanje.
Nazadnje še ena denarnica, ki se osredotoča na zasebnost, Denarnica Samourai, trenutno vključuje vrsto imitacije CoinJoin, zasnovano tako, da zavrže tistega, ki analizira podatke blockchaina. S to možnostjo se transakcije prikažejo kot transakcije CoinJoin, medtem ko v resnici vsi vhodi in izhodi pripadajo istemu uporabniku. (Samourai Wallet načrtuje, da bo pozneje v tem letu razširil možnosti mešanja vgradnih in navzkrižnih denarnic, ki bodo morda uporabljale tudi funkcije CoinJoin.)
Slabe strani in kompromisi
Čeprav je CoinJoin lahko koristen – ni popoln.
Najpomembneje je, da medtem ko CoinJoin odlično meša vhode in izhode, to ne zadostuje, če so zneski razkriti. Če en vhod pošlje 4,9 bitcoinov, drugi vhod pošlje 2,7 bitcoinov, tretji vhod pa 0,8 bitcoinov, medtem ko en izhod prejme 4,9 bitcoinov, en prejme 2,7 bitcoinov, tretji pa 0,8 bitcoinov, potem je vhode enostavno povezati z izhodi.
Potencialna rešitev tega problema so seveda Zaupne transakcije. Ker zaupne transakcije prikrivajo poslane zneske (ne pa tudi vložkov in izhodov), sta CoinJoin in zaupne transakcije potencialno močna kombinacija.
Drugo tveganje je tveganje za Napadi Sybil. Na videz več udeležencev v transakciji CoinJoin je res lahko ena in ista entiteta, ki spremlja določenega udeleženca.
(Če devet od desetih vhodov in izhodov pripada enemu agentu NSA, ki si bitcoine pošilja sam, bi vedel, kateri preostali izhod je bitcoinom poslal kateremu preostalemu izhodu.)
Za problem napadov Sybil ni enostavne rešitve, toda ko bolj pristni uporabniki pomešajo svoje kovance, je bistveno težje uspešno izvesti.
Kar nas pripelje do naslednje točke: CoinJoin je še vedno težava. Skoraj nobena denarnica nima vgrajene in tiste, ki jih ne uporabljajo, se ne uporabljajo veliko (in se zanašajo na osrednji strežnik.) JoinMarket je verjetno najuspešnejša izvedba doslej, vendar še vedno zahteva posebno programsko opremo in dodatne stroške (čeprav majhne).
Toda zanimiv razvoj na obzorju bi lahko spodbudil te spodbude: Schnorr podpisi. Schnorr-jevi podpisi, ki jih omogoči ločena priča, lahko omogočajo združevanje vseh podpisov v transakciji CoinJoin v en sam podpis. Posledica te učinkovitosti bi morale biti nižje provizije za transakcije na vložek in morda spodbuditi uporabo najbolj zasebne in do prijaznosti rešitve.
Hvala Gregoryju Maxwellu za dodane povratne informacije.