Bitcoin akkurat nå er egentlig ikke anonym. Mens Bitcoin-adresser ikke nødvendigvis er knyttet til virkelige identiteter, kan de være det. Overvåking av det ukrypterte peer-to-peer-nettverket, analyse av den offentlige blockchain og Know Your Customer (KYC) -politikken eller AML-regulering (Anti-Money Laundering) kan avsløre mye om hvem som bruker Bitcoin, og for hva.
Dette er ikke bra fra et personvernperspektiv. Bitcoin-brukere vil kanskje ikke nødvendigvis at verden skal vite hvor de bruker pengene sine, hva de tjener eller hvor mye de eier, mens bedrifter kanskje ikke vil lekke transaksjonsdetaljer til konkurrentene – for å nevne noen eksempler.
I tillegg er bitcoins som kan spores, muligens “tainted” og potensielt verdt mindre enn andre bitcoins, i strid med fungibilitet. Dette kan til og med utfordre Bitcoins verdiforslag som penger.
Men det er potensielle løsninger for å øke personvernet og forbedre soppbarheten.
En løsning som har eksistert en stund er CoinJoin.
Bakgrunn
I sitt hjerte består Bitcoin-protokollen av transaksjoner. Alle disse transaksjonene er fullstendig offentlige på blockchain, noe som betyr at alle kan se hvilke adresser som sendte bitcoins til hvilke adresser. Hvis noen av disse adressene er knyttet til virkelige verdensidentiteter, kan det avsløre hvem som handlet med hvem – eller hva for. Dette er i strid med personvern og – spesielt – soppbarhet.
I tillegg bruker hver enkelt transaksjon en eller flere “innganger”, med henvisning til adressene bitcoins sendes fra. (Disse inngangene blir brukt til “utganger”, med henvisning til adressene bitcoins sendes til.) Dette utgjør en annen utfordring for personvern og soppbarhet, siden alle inngangsadresser vanligvis tilhører samme bruker: avsenderen av transaksjonen. Hvis til og med en av alle grupperte inngangsadresser kan knyttes til en identitet fra den virkelige verden, er alle av dem.
CoinJoin – foreslått i 2013 av Bitcoin Core og Blockstream utvikler Gregory Maxwell – er designet for å løse begge disse problemene. Det tilslører sporet av bitcoins og bryter antagelsen om at alle inngangsadresser tilhører samme bruker.
Ideen
CoinJoin-konseptet er ganske greit.
I hovedsak lar CoinJoin flere brukere kombinere alle innganger og utganger fra flere transaksjoner til en enkelt, stor transaksjon. Denne enkelt transaksjonen bruker bitcoins fra forskjellige adresser til forskjellige adresser – og siden ingen av adressene betaler ingen av mottaksadressene spesifikt; det er ingen kobling mellom noen av dem.
(Dette kan sammenlignes med en gruppe mennesker som kaster penger sammen og handler. Mens alle kunne sørge for at ingen bruker mer enn de burde, ville ikke kundene nødvendigvis bruke de nøyaktige regningene de opprinnelig la i den delte lommeboken selv. .)
I Bitcoin kan dette oppnås perfekt sikkert. Alle innganger krever en tilsvarende signatur fra deres respektive eier, mens innholdet i en transaksjon ikke kan endres etter at en signatur er lagt til. Som sådan kunngjør deltakerne i en CoinJoin-transaksjon bare hvilke innganger og utganger de vil inkludere i transaksjonen, og signerer bare aggregatet hvis disse inngangene og utgangene er riktig inkludert. Når alle deltakerne har signert (og bare når de har signert), sendes transaksjonen.
Et sentralt trekk ved CoinJoin: når transaksjonen er sendt og inkludert i blockchain, er det ingen måte å vite hvilke bitcoins som gikk hvor; ikke engang mottakerne av transaksjonen vil vite fra hvilke adresser de fikk betalt.
I tillegg forbedrer CoinJoin personvernet selv for de som ikke bruker det i det hele tatt. Siden en kombinasjon av innganger ikke lenger nødvendigvis betyr at alle inngangsadressene tilhører samme bruker, har klynging blitt et mindre kraftig analyseverktøy generelt.
I praksis
CoinJoin krever ingen endringer i Bitcoin-protokollen, og det er allerede flere implementeringer av den. Hovedforskjellen mellom noen av versjonene der ute er hvordan CoinJoin-transaksjonen opprettes.
Den enkleste måten å opprette en CoinJoin-transaksjon er via en dedikert server. Alle som ønsker å bruke CoinJoin, vil bare koble til serveren for å indikere hvilke innganger og utganger transaksjonen skal inkludere. Serveren oppretter deretter en stor samlet transaksjon, og sender denne tilbake slik at alle deltakerne kan signere. DarkWallet – den personvernfokuserte Bitcoin-lommeboken som virker fast i alfafasen – bruker en serverbasert modell, det samme gjør den populære Blockchain web lommebok, selv om effektiviteten har vært avhørt i fortiden.
Hovedproblemet med den serverbaserte modellen er at den som kontrollerer serveren, vanligvis vil ha tilgang til dataene som de enkelte deltakerne gir. Som sådan presenterer denne serveren et eneste feilpunkt fra et personvern- og soppabilitetsperspektiv. Det er potensielle løsninger for å kryptografisk maskere transaksjonsdata selv fra serveren, men dette er fremdeles teoretisk for nå.
Det er også desentraliserte CoinJoin-løsninger, som konstruerer CoinJoin-transaksjoner peer-to-peer, eller i det minste uten noen spesiell sentral formidler. Det har vært flere forsøk i denne retningen, inkludert Coinmux, Coinjumble, CoinJoiner og tidligere DarkWallet-utvikler Amir Taaki’s CoinJoin-verktøy. Men ingen av disse er mye brukt, og derfor ikke veldig nyttige – “coinjoining” er bare fornuftig når det er noen å bli med.
En nyere opptreden av CoinJoin-strategien som har til hensikt å takle dette problemet er Bli med på markedet: en markedsplass for CoinJoin-transaksjoner. Brukere kan tilby et sted i en CoinJoin-transaksjon mot en liten avgift – eller kjøpe tilgang til en CoinJoin-transaksjon selv. Skaperne av JoinMarket tro at insentivet til å blande mynter mot avgifter skal generere nok likviditet til å gjøre markedet til en suksess – mens den konkurransedyktige naturen til å holde avgiftene lave. Ja, JoinMarket er relativt godt brukt i forhold til alternativer, og bestillingsbok (i skrivende stund) tilbyr tusenvis av bitcoins å blande med.
Til slutt en annen personvernfokusert lommebok, Samourai lommebok, inkluderer for øyeblikket en type CoinJoin-imitasjon, designet for å kaste bort den som analyserer blockchain-data. Dette alternativet gjør at transaksjoner ser ut som CoinJoin-transaksjoner, mens i realiteten alle innganger og utganger tilhører den samme brukeren. (Samourai Wallet planlegger å utvide innbyggings- og kryss-lommebok-blandingsalternativer senere i år, som også kan bruke CoinJoin-funksjonalitet.)
Ulemper og kompromisser
Mens CoinJoin kan være nyttig – det er ikke perfekt.
Det viktigste, mens CoinJoin gjør en god jobb med å blande innganger og utganger, er dette ikke tilstrekkelig hvis beløpene er avslørende. Hvis en inngang sender 4,9 bitcoins, en annen inngang sender 2,7 bitcoins og en tredje inngang sender 0,8 bitcoins, mens en utgang mottar 4,9 bitcoins, en mottar 2,7 bitcoins og en tredje mottar 0,8 bitcoins, så er det enkelt å koble innganger til utganger.
En potensiell løsning på dette problemet er selvfølgelig Konfidensielle transaksjoner. Siden konfidensielle transaksjoner maskerer sendte beløp (men ikke innganger og utganger), er CoinJoin og Confidential Transactions en potensielt kraftig kombinasjon.
En annen risiko er at Sybil angriper. Tilsynelatende kan flere deltakere i en CoinJoin-transaksjon virkelig være en og samme enhet, og overvåke en bestemt deltaker.
(Hvis ni av ti innganger og utganger tilhører en enkelt NSA-agent som sender bitcoins til seg selv, ville han vite hvilken gjenværende produksjon som sendte bitcoins til hvilken gjenværende produksjon.)
Det er ingen enkel løsning for problemet med Sybil-angrep, men ettersom flere ekte brukere blander myntene sine, blir det betydelig vanskeligere å trekke frem vellykket.
Noe som bringer oss til neste punkt: CoinJoin er fortsatt et problem. Nesten ingen lommebøker har den innebygd, og de som ikke bruker mye (og stole på en sentral server.) JoinMarket er trolig den mest vellykkede implementeringen til dags dato, men krever fortsatt spesiell programvare og tilleggsavgifter (selv om de er små).
Men en interessant utvikling i horisonten kan forvride disse insentivene: Schnorr signaturer. Aktivert av Segregated Witness, kunne Schnorr-signaturer muliggjøre aggregering av alle signaturer i en CoinJoin-transaksjon til en enkelt signatur. Denne effektiviteten skal resultere i lavere transaksjonsgebyrer per innsats, og kanskje stimulere bruken av den mest private og fungibilitetsvennlige løsningen.
Takk til Gregory Maxwell for tilsatt tilbakemelding.