Selvom Satoshi Nakamoto’s hvidt papir antyder, at privatlivets fred var et designmål for Bitcoin-protokollen, blockchain-analyse kan ofte bryde brugernes privatliv. Dette er et problem. Bitcoin-brugere vil muligvis ikke nødvendigvis have verden til at vide, hvor de bruger deres penge, hvad de tjener, eller hvor meget de ejer, mens virksomheder måske ikke ønsker at lække transaktionsoplysninger til konkurrenterne – for at nævne nogle eksempler.

Men der er løsninger til at genvinde privatlivets fred, som CoinJoin. Nogle af de mest populære blandeløsninger, der er tilgængelige i dag, bruger dette trick, herunder Wasabi Wallet (som udnytter ZeroLink) og Samourai Wallet (som udnytter Whirlpool). I begge tilfælde hugger brugerne deres mønter i lige store beløb for at blande dem med hinanden. Brug af lige store mængder betragtes som et afgørende trin for, at blandingen kan være effektiv.

Imidlertid kaldes en ny blandingsprotokol CashFusion, under udvikling for Bitcoin Cash-netværket udfordrer denne antagelse. Udviklerne bag protokollen hævder, at CashFusion tilbyder privatliv via CoinJoins uden krav om kun at blande lige store beløb. Hvis det er sandt, kan dette også ændre drastisk, hvordan vi tænker på privatlivets fred i Bitcoin.

Hvis det er sandt …

CoinTilmeld dig

Lad os starte i starten. (Eller spring denne del over, hvis du ved, hvad CoinJoin er.)

En typisk bitcoin-transaktion har en eller flere input (dybest set adressemønterne sendes fra) og en eller flere output (dybest set adressemønterne sendes til). Hvis en transaktion har mere end et input, skyldes det normalt, at afsenderen brugte flere stykker af sine mønter (UTXO’er) for at nå det krævede beløb. Hvis en transaktion har mere end en output, er det normalt fordi flere personer betales på én gang (en batch-transaktion), og / eller betaleren sender penge tilbage til en af ​​sine egne adresser som ændring (fordi bidderne ikke tilføjede til det nøjagtige rigtige beløb; dette er ofte tilfældet).

Desværre afslører en typisk transaktion som beskrevet her meget. For eksempel er det let at konkludere, at alle inputadresser tilhører den samme person, hvilket giver mulighed for adresseklyngning. Transaktionen viser også fra hvilke adresser, til hvilke adresser mønter bevæger sig og afslører et spor af mønter over blockchain. Der kan være flere (subtile) tip, og alle er dårlige for privatlivets fred.

En potentiel løsning på dette problem først foreslog af Bitcoin Core-bidragyder Gregory Maxwell i 2013 kaldes CoinJoin. Ideen bag CoinJoin er enkel: Flere uafhængige transaktioner flettes til en stor transaktion. Så hvis to transaktioner har to indgange og to udgange hver, kombineres dette til en enkelt transaktion, der har fire indgange og fire udgange. Dette bryder i det mindste antagelsen om, at alle inputadresser tilhører den samme person og også kan hjælpe med at bryde sporet af mønter.

Hvorfor lige store beløb

Det antages normalt, at fortrolighedsgevinsterne for CoinJoin som beskrevet ovenfor dog er begrænsede. I mange tilfælde kan de beløb, der sendes i input og beløb modtaget i output, blive forvirret sammen for at genopdage, hvilke individuelle transaktioner der gik ind i den kombinerede CoinJoin-transaktion..

Lad os f.eks. Tage to transaktioner, en fra Alice til Carol og en fra Bob til Dave. Alice har to stykker mønter til en værdi af 2,3 og 1,4 bitcoin, og hun vil betale Carol 3,2 bitcoin. Bob har klumper på 3 og 2 bitcoin og vil betale Dave 4 bitcoin.

Forenklet ser disse transaktioner sådan ud:

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

og

3 + 2 = 4 + 1

(0,5 BTC- og 1 BTC-udgangene ændres.)

Fusioneret sammen ville CoinJoin-transaktionen se sådan ud:

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

Selvom transaktionerne blev flettet, er det trivielt at genopdage hvilke input, der betalte hvilke output, og derfor også hvilke input, der kan matches sammen som tilhørende den samme afsender. Forudsat at du ved, at der er to betalere, kan beløbene forvirres sammen med kun en potentiel konfiguration: de oprindelige transaktioner.

Af denne grund er populære blandingsløsninger som ZeroLink og Whirlpool begrænset til at blande lige store mængder. Uanset hvilke beløb der sættes i en blanding som input, kan de blandede output ikke skelnes fra hinanden, hvilket betyder at enhver deltager kunne have modtaget en hvilken som helst fast møntmængde.

Hvis de faste beløb er sat til 1 BTC, ser Alice, Bob, Carol og Daves CoinJoin sådan ud:

3 + 2.3 + 2 + 1.4 = 1 + 1 + 1 + 1 +1 + 1 + 1 + 1 + 0.5 + 0.2

Dette er en stor forbedring, da nogen af ​​klumperne på 1 kunne blive forvirret sammen i en af ​​de to originale transaktioner. Det er ikke klart, hvilke af de 1 BTC’er, der hører til Alice, Bob, Carol eller Dave eller endda til hvilket par.

Det er dog stadig ikke perfekt, fordi der er ulige output tilbage. Disse output, nøjagtigt fordi de ikke har lige store beløb, kan stadig knyttes til specifikke input: Alice’s. Dette betyder også, at Alice’s input kan knyttes til hinanden. Og hvis nogen efter flere blandinger kombinerer de ulige output i en næste transaktion, skader det også privatlivets fred: det forbinder de forskellige klumper til den samme person. Desuden, hvis de ulige output senere anvendes i kombination med output med fast beløb, kan disse lækager ødelægge selve den indledende blandingsproces.

CashFusion

CashFusion, et projekt af Bitcoin Cash-udviklerne Mark Lundeberg og Jonald Fyookball, satte sig for at håndtere problemet med “leftover” -output. De oprettede oprindeligt dette som en tilføjelse til CashShuffle, som er en implementering af CoinShuffle til Bitcoin Cash og blander lige store beløb. Det noget overraskende potentiale i CashFusion kan dog også betyde, at det bliver sin egen uafhængige blandingsprotokol.

For at forstå dette potentiale skal vi se på et andet sæt transaktioner. Lad os sige, at Alice vil betale Carol 4 mønter, og hun har to UTXO’er til en værdi af 2 og 3 mønter. I mellemtiden ønsker Bob at betale Dave 9 mønter, og han har to UTXO’er til en værdi af 7 og 8 mønter.

Forenklet ser disse transaktioner sådan ud:

3 + 2 = 4 + 1

og

8 + 7 = 9 + 6

Fusioneret sammen ville CoinJoin-transaktionen se sådan ud:

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

Nu, fra denne CoinJoin-transaktion, er det selvfølgelig muligt at puslespil de to oprindelige transaktioner sammen. Men selvom du ved, at der er to betalere, er der også flere andre kombinationer mulige.

For eksempel:

8 + 2 = 9 + 1

og

7 + 3 = 6 + 4

Eller:

8 + 2 = 6 + 4

og

7 + 3 = 9 + 1

Eller:

7 + 2 = 9

og

8 + 3 = 6 + 4 + 1

Eller:

7 = 6 + 1

og

8 + 3 + 2 = 9 + 4

For enkelheds skyld brugte dette eksempel kun runde tal. Dette muliggør flere potentielle konfigurationer, men afspejler faktisk ikke virkeligheden meget ofte. På bagsiden brugte dette forenklede eksempel kun to originale transaktioner. I virkeligheden kan en CoinJoin bestå af snesevis eller endda hundreder af originale transaktioner. Så mens det er forenklet, hjælper denne forenkling både og skader potentialet ved at oprette flere konfigurationer.

CashFusion er bygget op omkring teorien, afledt af Kombinatorik, at en stor nok CoinJoin-transaktion ofte (hvis ikke altid) vil tilbyde flere forskellige løsninger til puslespillet, selv når der anvendes realistiske beløb. Og at, da flere input og output er inkluderet, kan der udledes flere potentielle konfigurationer fra det. (Dette bør især være tilfældet, hvis beløbene er i samme ballpark – som 1 BCH – som CashFusion-brugere opfordres til at gøre for deres eget privatliv.)

Da der er flere potentielle løsninger på puslespillet, vil en blockchain-analytiker have sværere med at finde ud af, hvilken løsning der var den oprindelige konfiguration. Dette bør bryde sporet af mønter og gøre det sværere at forbinde input sammen. Som sådan skal det tilbyde privatliv.

For at forbedre dette potentiale inkluderer CashFusion et ekstra trick for at gøre det endnu sværere at pusle sammen den originale konfiguration: Det lader brugerne semi-tilfældigt hugge deres output i flere mindre output. Så i stedet for at Alice betalte Carol en output på 4 mønter, kunne Alice for eksempel sende Carol-output på 3 og 1 mønt. I stedet for at betale en output på 9 mønter kunne Bob sende Dave-output på 5, 3 og 1 mønt.

I mellemtiden opfordres brugerne også til at levere flere input, måske fra tidligere mix. Dette giver dem mulighed for at konsolidere deres mindre bidder i en større del, uden at det er tydeligt på blockchain. (Alice ville for eksempel give input på 2 + 2 + 1; Bob ville levere input på 6 + 5 + 4.) Faktisk var det den originale idé at konsolidere de ulige restpartier i større output og fungere som oprindelsen til protokollens navn: CashFusion.

Men holder antagelsen op?

For at skuffe dig, hvis du læser så langt på udkig efter en endelig konklusion: Denne artikel giver ikke et endeligt svar på spørgsmålet om CashFusions antagelser holder op eller ej, eller i hvilket omfang. Det ser ud til, at der ikke er et endeligt svar endnu. Forslaget har hidtil været relativt lidt peer review, og mens udviklerne bag CashFusion mener, at deres løsning giver tilstrækkelig fortrolighed, synes andre lidt mere skeptiske.

På forsiden ser CashFusions tilgang ud til at være vildledt, da tidligere ulige mængdeblandingsordninger som Blockchains SharedCoin var gået i stykker år siden. Men den afgørende forskel, mener Lundeberg og Fyookball nu, er, at en CashFusion-transaktion ville omfatte flere input og output, end en SharedCoin-transaktion gjorde. Svarende til andre ikke-intuitive matematiske egenskaber som fødselsdag problem, antallet af potentielle konfigurationer vokser eksponentielt for hver tilføjet input og output, hvilket løser problemet SharedCoin havde – skønt Lundeberg er enig i, at bedre matematiske bevis vil være nødvendige for at bekræfte dette korrekt.

Selve CashFusion-beskrivelsen inkluderer, hvad Lundeberg selvtillidigt betragter som “servietmatematik”, hvoraf en lidt mere avanceret version også var offentliggjort af ham på Reddit. Disse skøn antyder, at selv med kun 10 deltagere, der hver leverer 10 input, der skal konsolideres i en output (for i alt 100 input og 10 output), vil antallet af mulige konfigurationer i gennemsnit være i intervallet 100 quintillion. (Det er en med tyve nuller eller 10 ^ 20.) Selv bare at beregne alle disse muligheder ville tage en hel del tid – nevermind korrekt genoprette de oprindelige transaktioner.

På tidspunktet for skrivningen af ​​denne artikel er der mere forskning i gang; Fyookball offentliggjorde for nylig sin egen analyse i dette blogindlæg. For nu er Lundeberg, Fyookball og andre i det mindste tilstrækkeligt overbeviste om CashFusion-protokollen til at ønske at implementere den. En alfa-klient af CashFusion-softwaren er tilgængelig til test; en fuld frigivelse forventes inden for måneder.

Men andre er ikke så overbeviste. En kritik af forslaget er, at – selvom 10 ^ 20-tallet (groft) holder op – ikke alle output fra en CashFusion CoinJoin vil være lige så sandsynlige, at de kommer fra hver input. Med andre ord, mens nogle deltagere kan få betydeligt privatliv, kan andre få meget mindre privatliv fra den samme blanding. Og for enhver individuel bruger ville det være svært at fortælle, om det er dem, der får meget privatliv eller ej. (Denne kritik og andre kritikker kan findes i denne nylige bitcoin-dev e-mail-tråd.)

I modsætning hertil giver blanding med lige store mængder samme fortrolighed for alle deltagere og resulterer i et maksimalt antal mulige konfigurationer. På en måde resulterer blandinger med lige store mængder i en “perfekt” CashFusion CoinJoin og er derfor strengt bedre – hvis det ulige ændringsproblem ignoreres.

Selvom CashFusion aldrig ville erstatte blanding af lige store mængder, kan det stadig hjælpe med at løse problemet med ulige ændringer, som oprindeligt beregnet …

Forfatterens note: CashFusion-forslaget er lidt mere, som hvordan CoinJoin-transaktionen er konstrueret. Der er også flere subtile risici og kompromiser, når det kommer til privatlivets fred, som hvordan brugerne håndterer deres mønter før og efter blandingen. For enkelhed og læsbarhed fokuserer denne artikel kun på den centrale og uden tvivl mest interessante idé bag CashFusion: blanding af ulige beløb.

Tak til Mark Lundeberg for information og feedback.

Del to af denne artikel vil dække en anden ikke-lige mængde blandeteknik kaldet Rygsæk.