Vaikka Satoshi Nakamoton valkoinen paperi viittaa siihen, että yksityisyys oli Bitcoin-protokollan suunnittelutavoitteena, blockchain-analyysi voi usein rikkoa käyttäjien yksityisyyttä. Tämä on ongelma. Bitcoinin käyttäjät eivät välttämättä halua maailman tietävän, mihin he käyttävät rahaa, mitä ansaitsevat tai kuinka paljon he omistavat, kun taas yritykset eivät halua vuotaa tapahtuman yksityiskohtia kilpailijoille – esimerkkinä.

Mutta yksityisyyden palauttamiseksi on olemassa ratkaisuja, kuten CoinJoin. Jotkut nykypäivän suosituimmista sekoitusratkaisuista käyttävät tätä temppua, mukaan lukien Wasabi Wallet (joka hyödyntää ZeroLinkiä) ja Samourai Wallet (joka hyödyntää Whirlpoolia). Molemmissa tapauksissa käyttäjät pilkkovat kolikot yhtä suuriksi sekoittaakseen ne toisiinsa. Samojen määrien käyttämistä pidetään ratkaisevana vaiheena, jotta sekoitus olisi tehokas.

Kuitenkin uusi sekoitusprotokolla kutsutaan CashFusion, Bitcoin Cash -verkoston kehityksessä haastaa tämän oletuksen. Protokollan takana olevat kehittäjät väittävät, että CashFusion tarjoaa yksityisyyttä CoinJoinsin kautta ilman vaatimusta sekoittaa vain yhtä suuria määriä. Jos totta, tämä saattaa muuttaa dramaattisesti myös sitä, miten ajattelemme yksityisyyttä Bitcoinissa.

Jos totta…

KolikkoLiity

Aloitetaan alusta. (Tai ohita tämä osa, jos tiedät mikä CoinJoin on.)

Tyypillisessä bitcoin-tapahtumassa on yksi tai useampia syötteitä (lähinnä osoitekolikot lähetetään) ja yksi tai useampi lähtö (periaatteessa osoitekolikot lähetetään). Jos tapahtumassa on useita syötteitä, se johtuu yleensä siitä, että lähettäjä käytti useita paloja kolikoitaan saadakseen vaaditun määrän. Jos tapahtumalla on useampi kuin yksi lähtö, se johtuu yleensä siitä, että maksetaan usealle henkilölle kerralla (erätapahtuma) ja / tai maksaja lähettää rahaa takaisin omaan osoitteeseensa muutoksena (koska palat eivät lisääntyneet) oikeaan määrään; tämä on usein tapaus).

Valitettavasti tyypillinen tässä kuvattu tapahtuma paljastaa paljon. Esimerkiksi on helppo päätellä, että kaikki syöttöosoitteet kuuluvat samalle henkilölle, mikä mahdollistaa osoitteiden ryhmittelyn. Tapahtuma näyttää myös mistä osoitteista mihin osoitteisiin kolikot liikkuvat, paljastaen kolikoiden jäljen lohkoketjun yli. Vinkkejä voi olla enemmän (hienovaraisia), ja kaikki vahingoittavat yksityisyyttä.

Ensinnäkin mahdollinen ratkaisu tähän ongelmaan ehdotettu Bitcoin Core -edustajan Gregory Maxwellin vuonna 2013 nimi on CoinJoin. CoinJoinin idea on yksinkertainen: Useat itsenäiset liiketoimet yhdistetään yhdeksi suureksi tapahtumaksi. Joten jos kahdella tapahtumalla on kaksi tuloa ja kaksi lähtöä, tämä yhdistetään yhdeksi tapahtumaksi, jossa on neljä tuloa ja neljä lähtöä. Tämä ainakin rikkoo oletuksen, että kaikki syöttöosoitteet kuuluvat samalle henkilölle ja voivat auttaa myös katkaisemaan kolikoiden jäljet.

Miksi yhtä suuria määriä

Yleensä oletetaan, että yllä kuvatut CoinJoinin yksityisyyden hyödyt ovat kuitenkin rajalliset. Monissa tapauksissa panoksissa lähetetyt määrät ja tuotoksissa saadut summat voidaan hämmentää yhdessä, jotta löydetään uudelleen mitkä yksittäiset liiketoimet menivät yhdistettyyn CoinJoin-tapahtumaan.

Otetaan esimerkiksi kaksi tapahtumaa, yksi Alicesta Caroliin ja toinen Bobista Daveen. Alicella on kaksi kolikkopalaa, joiden arvo on 2,3 ja 1,4 bitcoinia, ja hän haluaa maksaa Carolille 3,2 bitcoinia. Bobilla on 3 ja 2 bitcoinin palasia, ja hän haluaa maksaa Dave 4 bitcoinille.

Yksinkertaistettuna nämä tapahtumat näyttävät tältä:

2,3 + 1,4 = 3,2 + 0,5

ja

3 + 2 = 4 + 1

(0.5 BTC- ja 1 BTC-lähdöt muuttuvat.)

Yhdistettynä CoinJoin-tapahtuma näyttäisi tältä:

3 + 2,3 + 2 + 1,4 = 4 + 3,2 + 1 + 0,5

Vaikka tapahtumat yhdistettiin, on triviaalia löytää uudelleen, mitkä panokset maksivat, mitkä tuotokset ja siten myös mitkä panokset voidaan sovittaa yhteen samalle lähettäjälle kuuluviksi. Olettaen, että maksajia on kaksi, summat voidaan hämmentää yhdessä vain yhden potentiaalisen kokoonpanon kanssa: alkuperäisten tapahtumien kanssa.

Tästä syystä suositut sekoitusratkaisut, kuten ZeroLink ja Whirlpool, rajoittuvat sekoittamiseen yhtä suurina määrinä. Riippumatta siitä, mitkä summat syötetään sekoitukseen panoksina, sekalähdöt eivät ole erotettavissa toisistaan, mikä tarkoittaa, että kuka tahansa osallistuja olisi voinut saada minkä tahansa kiinteän koon palan.

Jos kiinteiksi määriksi määritetään 1 BTC, Alice, Bob, Carol ja Dave’s CoinJoin näyttävät tältä:

3 + 2,3 + 2 + 1,4 = 1 + 1 + 1 + 1 +1 + 1 + 1 + 1 + 0,5 + 0,2

Tämä on iso parannus, koska mikä tahansa 1: n paloista voisi olla hämmentynyt yhdessä kumpaakin alkuperäisestä tapahtumasta. Ei ole selvää, mitkä yhdestä BTC: stä kuuluvat Aliceen, Bobiin, Caroliin tai Daveen tai edes mihin pariin.

Se ei silti ole täydellinen, koska tulosteita on jäljellä epätasaista. Nämä tuotokset, juuri siksi, että niillä ei ole yhtä suuria määriä, voidaan silti liittää tiettyihin tuloihin: Alice’s. Tämä tarkoittaa myös, että Alicen panokset voidaan linkittää toisiinsa. Ja jos joku yhdistää useiden sekoitusten jälkeen eriarvoiset tuotokset seuraavaan tapahtumaan, se vahingoittaa myös yksityisyyttä: se yhdistää eri palat samaan henkilöön. Jos epäyhtenäisiä lähtöjä käytetään myöhemmin yhdessä kiinteämääräisten lähtöjen kanssa, nämä vuodot voivat pilata itse alkuperäisen sekoitusprosessin.

CashFusion

CashFusion, Bitcoin Cash -kehittäjien Mark Lundebergin ja Jonald Fyookballin projekti, ryhtyi käsittelemään ”jäljelle jääneiden” tuotosten ongelmaa. Alun perin he loivat tämän lisäykseksi CashShuffle, joka on CoinShufflen toteutus Bitcoin Cashille ja sekoittaa yhtä suuria määriä. CashFusionin hieman yllättävä potentiaali voi tarkoittaa myös sitä, että siitä tulee kuitenkin oma itsenäinen sekoitusprotokollansa.

Tämän mahdollisuuden ymmärtämiseksi tarkastellaan toista tapahtumaryhmää. Oletetaan, että Alice haluaa maksaa Carolille 4 kolikkoa, ja hänellä on kaksi UTXO: ta, joiden arvo on 2 ja 3 kolikkoa. Sillä välin Bob haluaa maksaa Dave 9 -kolikoita, ja hänellä on kaksi UTXOa, joiden arvo on 7 ja 8.

Yksinkertaistettuna nämä tapahtumat näyttävät tältä:

3 + 2 = 4 + 1

ja

8 + 7 = 9 + 6

Yhdistettynä CoinJoin-tapahtuma näyttäisi tältä:

8 + 7 + 3 + 2 = 9 + 6 + 4 + 1

Tästä CoinJoin-tapahtumasta on tietysti mahdollista yhdistää kaksi alkuperäistä tapahtumaa. Vaikka tiedätkin, että maksajia on kaksi, myös monet muut yhdistelmät ovat mahdollisia.

Esimerkiksi:

8 + 2 = 9 + 1

ja

7 + 3 = 6 + 4

Tai:

8 + 2 = 6 + 4

ja

7 + 3 = 9 + 1

Tai:

7 + 2 = 9

ja

8 + 3 = 6 + 4 + 1

Tai:

7 = 6 + 1

ja

8 + 3 + 2 = 9 + 4

Yksinkertaisuuden vuoksi tässä esimerkissä käytettiin vain pyöreitä numeroita. Tämä mahdollistaa enemmän mahdollisia kokoonpanoja, mutta ei todellakaan heijasta todellisuutta kovin usein. Kääntöpuolella tässä yksinkertaistetussa esimerkissä käytettiin vain kahta alkuperäistä tapahtumaa. Todellisuudessa CoinJoin voi koostua kymmenistä tai jopa satoista alkuperäisistä tapahtumista. Joten yksinkertaistettuna tämä yksinkertaistaminen sekä auttaa että vahingoittaa mahdollisuuksia luoda useita kokoonpanoja.

CashFusion on rakennettu teorian ympärille, joka on johdettu Kombinaattorit, että riittävän suuri CoinJoin-tapahtuma tarjoaa usein (ellei aina) useita erilaisia ​​ratkaisuja pulmalle, vaikka käytettäisiin realistisia summia. Ja että kun lisää tuloja ja lähtöjä sisältyy, siitä voidaan johtaa enemmän potentiaalisia kokoonpanoja. (Tämän pitäisi olla erityisen totta, jos summat ovat samassa pallokentässä – kuten 1 BCH -, joita CashFusion-käyttäjiä kannustetaan tekemään oman yksityisyytensä vuoksi.)

Koska pulmalle on enemmän potentiaalisia ratkaisuja, blockchain-analyytikoilla on vaikeampi selvittää, mikä ratkaisu oli alkuperäinen kokoonpano. Tämän pitäisi rikkoa kolikoiden polkua ja vaikeuttaa panosten yhdistämistä toisiinsa. Sellaisena sen pitäisi tarjota yksityisyyttä.

Tämän potentiaalin parantamiseksi CashFusion sisältää ylimääräisen temppun, joka tekee alkuperäisen kokoonpanon yhdistämisestä entistä vaikeampaa: Sen avulla käyttäjät voivat pilkkoa satunnaisesti satunnaisesti useita pienempiä lähtöjä. Joten sen sijaan, että Alice maksaisi Carolille yhden 4 kolikon tuotoksen, Alice voisi esimerkiksi lähettää 3 ja 1 kolikon Carol-tuotoksia. Bob sen sijaan, että maksaisi yhden tuoton 9 kolikkoa, voisi lähettää Dave-tuotoksille 5, 3 ja 1 kolikkoa.

Samaan aikaan käyttäjiä kannustetaan toimittamaan myös useita syötteitä, ehkä edellisistä sekoituksista. Tämä antaa heille mahdollisuuden yhdistää pienemmät palat isommaksi palaksi ilman, että se olisi ilmeistä lohkoketjussa. (Alice toimisi esimerkiksi 2 + 2 + 1-tuloina; Bob 6 + 5 + 4-tuloina.) Epätasaisten jäännöspalojen yhdistäminen suurempiin ulostuloihin oli todellakin alkuperäinen idea, ja se toimii protokollan lähteenä. nimi: CashFusion.

Mutta pysyykö taivaaseenotto?

Pettää sinut, jos luet niin pitkälle etsimällä lopullista johtopäätöstä: Tämä artikkeli ei anna lopullista vastausta kysymykseen, pitävätkö CashFusionin oletukset vai eivät, vai missä määrin. Näyttää siltä, ​​että lopullista vastausta ei ole vielä olemassa. Ehdotus on tähän mennessä käynyt läpi suhteellisen vähän vertaisarviointia, ja vaikka CashFusionin takana olevat kehittäjät uskovat ratkaisunsa tarjoavan riittävän yksityisyyden, toiset näyttävät hieman skeptisemmiltä.

Itse asiassa CashFusionin lähestymistapa näyttää harhaanjohtavalta, koska aikaisemmat epätasa-arvoiset sekoitusjärjestelmät, kuten Blockchainin SharedCoin, olivat rikki vuosia sitten. Mutta ratkaiseva ero, Lundeberg ja Fyookball uskovat nyt, on se, että CashFusion-tapahtuma sisältäisi enemmän panoksia ja tuotoksia kuin SharedCoin-tapahtuma. Samanlainen kuin muut ei-intuitiiviset matemaattiset erikoisuudet, kuten syntymäpäiväongelma, potentiaalisten kokoonpanojen määrä kasvaa eksponentiaalisesti jokaiselle lisätylle syötteelle ja tuotokselle, mikä ratkaisee ongelman, jonka SharedCoinilla oli – vaikka Lundeberg myöntää, että paremman matematiikan todistukset ovat tarpeen tämän vahvistamiseksi oikein.

CashFusion-kuvaus sisältää itse sen, mitä Lundeberg itsestään pitää “lautasliinamatematiikana”, josta myös hieman edistyneempi versio oli julkaistu hänestä Redditissä. Nämä arviot viittaavat siihen, että vaikka vain 10 osallistujaa, joista kukin tarjoaa 10 tuloa, jotka yhdistetään yhteen lähtöön (yhteensä 100 tuloa ja 10 lähtöä varten), mahdollisten kokoonpanojen määrä olisi keskimäärin 100 kvintiljoonaa. (Se on yksi, jolla on kaksikymmentä nollaa, eli 10 ^ 20.) Jopa kaikkien näiden mahdollisuuksien laskeminen vie melko vähän aikaa – alkuperäisten tapahtumien oikea palauttaminen ei koskaan onnistu..

Tämän artikkelin kirjoittamisen ajankohtana on meneillään enemmän tutkimuksia; Fyookball julkaisi äskettäin oman analyysinsä tämä blogiviesti. Toistaiseksi Lundeberg, Fyookball ja muut ovat ainakin riittävän vakuuttuneita CashFusion-protokollasta, jotta he haluavat ottaa sen käyttöön. CashFusion-ohjelmiston alfa-asiakas on testattavissa; täydellinen julkaisu odotetaan kuukausien kuluessa.

Mutta muut eivät ole niin vakuuttuneita. Ehdotuksen kritiikki on, että vaikka 10 ^ 20-numero (karkeasti) pysyisikin voimassa, kaikki CashFusion CoinJoin -tuotteet eivät ole yhtä todennäköisesti peräisin jokaisesta syötteestä. Toisin sanoen, vaikka jotkut osallistujat voivat saada merkittävää yksityisyyttä, toiset voivat saada paljon vähemmän yksityisyyttä samasta sekoituksesta. Ja jokaiselle yksittäiselle käyttäjälle on vaikea sanoa, saavatko he paljon yksityisyyttä vai eivät. (Tämä kritiikki ja muut kritiikat löytyvät tämä viimeinen bitcoin-dev-sähköpostiketju.)

Sitä vastoin saman määrän sekoittaminen tarjoaa samanlaisen yksityisyyden kaikille osallistujille ja johtaa maksimaaliseen määrään mahdollisia kokoonpanoja. Tavallaan saman määrän sekoitukset johtavat “täydelliseen” CashFusion CoinJoiniin ja ovat siksi ehdottomasti parempia – jos epätasainen muutosongelma jätetään huomiotta.

Silti, vaikka CashFusion ei koskaan korvaisi täysin yhtä suurta määrää sekoittamista, se saattaa vain auttaa ratkaisemaan eriarvoisen muutoksen ongelman, kuten alun perin oli tarkoitus…

Kirjoittajan huomautus: CashFusion-ehdotuksessa on vähän enemmän, kuten miten CoinJoin-tapahtuma rakennetaan. Yksityisyyden suhteen on myös useita hienovaraisempia riskejä ja kompromisseja, kuten miten käyttäjät käsittelevät kolikoitaan ennen sekoitusta ja sen jälkeen. Yksinkertaisuuden ja luettavuuden vuoksi tässä artikkelissa keskitytään vain CashFusionin keskeiseen ja epäilemättä mielenkiintoisimpaan ideaan: epätasainen sekoitus.

Kiitos Mark Lundebergille tiedoista ja palautteesta.

Tämän artikkelin toinen osa kattaa toisen epäyhtenäisen sekoitustekniikan, jota kutsutaan Selkäreppu.