Bitcoin akkurat nå er egentlig ikke anonymt. 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 konkurrenter – 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 av disse løsningene er “fortrolige transaksjoner.”
Bakgrunn
I motsetning til de fleste digitale økonomiske infrastrukturer blir alle typiske Bitcoin-transaksjoner registrert på den offentlige blockchain, synlig for alle å se. Dette kreves for å validere transaksjoner uten sentralisert myndighet, men gjør det også trivielt å spore hvor mange bitcoins som sendes fra hvilke adresser til hvilke adresser.
For å forbedre personvernet er det mulig å skjule hvor mye bitcoins som er behandlet. En tidlig versjon av dette konseptet, da referert til som “bitcoins med homomorf verdi”, var først foreslått i 2013 av hashcash oppfinner og nåværende Blockstream president Dr. Adam Back. Ideen ble senere hentet av Bitcoin Core og Blockstream-utviklerne Gregory Maxwell og Dr. Pieter Wuille og Blockstream-matematikeren Andrew Poelstra. Dette førte til slutt til implementering av konfidensielle transaksjoner i Blockstreams testnet-sidekjede, Alpha.
Hvordan det fungerer
Konfidensielle transaksjoner kombinerer og bruker flere kryptografiske triks, spesielt Borromeiske ringsignaturer og Pedersen forpliktelsesordninger.
Uten å dykke for dypt inn i de kryptografiske detaljene, brukes disse triksene slik at bare avsenderen og mottakeren av en transaksjon er klar over beløpet som ble gjennomført. Alle andre ville bare se at bitcoins blir behandlet, men vet ikke hvor mange.
Det smarte er at mens noen eller alle beløp er maskert for “tilskuere”, kan disse tilskuerne fortsatt bruke de maskerte beløpene til visse typer beregninger. Nærmere bestemt kan alle innspill fra en transaksjon legges sammen, alle utganger kan legges sammen, og de to summene kan sammenlignes for å sikre at de er like – alt mens du aldri avslører noen av de maskerte beløpene eller summen. Som sådan kan noder verifisere at det ikke ble opprettet bitcoins uten tanke, uten å vite hvor mange bitcoins som faktisk ble sendt.
(På en sidemerknad er et av beløpene alltid synlig: gruvegebyret. Det er for å sikre at gruvearbeidere ikke kan tildele seg selv for mange avgifter, og har ingen ytterligere konsekvenser fra et personvernperspektiv. Andre beløp kan også synliggjøres hvis avsenderen eller mottakeren velger det.)
Myk gaffel
Kanskje overraskende ville konfidensielle transaksjoner være mer eller mindre kompatible med den gjeldende Bitcoin-protokollen. Mens detaljene må legges ut, kan løsningen rulles ut som en myk gaffel – selv om det kan være litt “hacky.”
Dette er hvordan.
For å sikre at “gamle” (ikke-oppgraderte) og “nye” (oppgraderte) noder forblir synkroniserte, må bitcoins som brukes i en konfidensiell transaksjon, først “passere” en “alle som kan bruke” -adresse. Dette er en Bitcoin-adresse som alle kan bruke fra, selv uten den tilsvarende private nøkkelen eller signaturen.
Eller så ser det ut til gamle noder.
Nye noder vil gjenkjenne adressen som det første trinnet i en konfidensiell transaksjon, og vil bare akseptere transaksjoner fra den adressen som inkluderer riktig signatur. Så lenge et flertall av hashkraften bruker disse reglene, kan ikke bitcoins på den som kan bruke-adressen blir stjålet av noen som ikke kontrollerer den tilsvarende private nøkkelen. (Gamle noder kan lure på hvorfor ingen bruker de fritt tilgjengelige bitcoins. Men de vil heller ikke ha noe imot at ingen gjør det. Fra deres perspektiv brytes ingen protokollregler.)
Her blir det interessant.
Hvis det gjøres en konfidensiell transaksjon fra adressen som alle kan bruke, ser både gamle noder og nye noder den transaksjonen. Men de ser noe annerledes. Nye noder vil gjenkjenne transaksjonen som en konfidensiell transaksjon, og for eksempel kontrollere at det ikke er noen bitcoins opprettet fra luften. Gamle noder vil i mellomtiden bli lurt til å tro at det er en null-bitcoin-transaksjon: de tror ingen bitcoins forlot den som kan bruke adressen i det hele tatt.
Denne logikken gjelder for hver påfølgende transaksjon. Nye noder vil se nye transaksjoner, og vet at en viss mengde bitcoin sannsynligvis blir flyttet fra adresse til adresse – selv om de ikke hadde peiling på hvor mange. Gamle noder, hele tiden, ser “null-bitcoin-transaksjoner”, og tror at alle bitcoins fortsatt sitter i den hvem som helst-kan-bruke-adressen. (Gamle noder lurer kanskje på hvorfor folk sender tomme transaksjoner til hverandre. Men igjen vil de ikke bry seg.)
Årsaken til at dette ikke vil forårsake kaos (spesielt på grunn av inkompatibel UTXO-sett) er at bitcoins mottatt gjennom en konfidensiell transaksjon i utgangspunktet bare kan brukes som en konfidensiell transaksjon. De er “låst” i den hvem som helst som kan bruke adressen for nå, og kan ikke synlig bevege seg over Bitcoin-blockchain i det hele tatt.
For å kunne bruke disse bitcoinsene i en normal transaksjon igjen, må de først “passere” den opprinnelige hvem som helst som kan bruke adressen. Mottakeren av en konfidensiell transaksjon må sende dem tilbake til den som kan bruke adressen, og derfra begynne å flytte myntene i klart syn på blockchain igjen.
Når de begynner å bevege seg tydelig igjen, vil nye noder sjekke at ikke for mange mynter blir flyttet, mens gamle noder ganske enkelt antar at myntene beveger seg for første gang siden de ble “låst opp”.
Som sådan fungerer den enhver-kan-bruke-adressen effektivt som en tilsløringsenhet. Å passere gjennom den hvem som helst som kan bruke adressen gjør beløpene for påfølgende transaksjoner usynlige for alle noder. Bitcoins ville “vises” igjen bare etter at de har kommet tilbake til den opprinnelige alle som kan bruke adressen.
Ulemper og kompromisser
Dessverre er konfidensielle transaksjoner ingen sølvkule for personvern.
Mest åpenbart, mens konfidensielle transaksjoner maskerer beløp, kan tilskuere fremdeles se hvilken adresse som betaler hvilken adresse.
Men det er potensielle løsninger for å løse dette også.
For det første er det trivielt å lage falske negativer og betale null bitcoins til flere adresser for å forvirre hvor bitcoins virkelig gikk. I tillegg kan konfidensielle transaksjoner være spesielt nyttige i kombinasjon med CoinJoin, som kombinerer sending og mottak av adresser fra flere transaksjoner til en enkelt, stor transaksjon.
En annen potensiell svakhet ved konfidensielle transaksjoner er at maskerte beløp egentlig bare maskeres for den aktuelle transaksjonen. Dette kan være ganske meningsløst hvis en påfølgende transaksjon ikke er en konfidensiell transaksjon. Informasjonen fra senere transaksjoner kan noen ganger brukes til å retroaktivt beregne hvor mange bitcoins som må ha vært involvert i den konfidensielle transaksjonen..
(For eksempel: Hvis Alice sender en ukjent mengde bitcoins til Bob, og Bob deretter sender 5 bitcoins til Carol og 2 til seg selv som endring, betyr det selvsagt at Alice sendte 7 bitcoins til Bob.)
Dette betyr at konfidensielle transaksjoner bare er nyttige hvis slik bruk er utbredt. Men det bringer oss til et kanskje enda større problem: Konfidensielle transaksjoner er ganske ressurstunge. En konfidensiell transaksjon er omtrent 20 ganger større enn en vanlig transaksjon, mens den til og med øker beregningen tredoblet. Som sådan vil kostnadene for hver konfidensiell transaksjon være betydelig høyere sammenlignet med typiske transaksjoner, noe som hindrer folk som faktisk bruker dem – noe som reduserer deres nytte for alle andre også.
På toppen av det setter den store størrelsen på konfidensielle transaksjoner dem i strid med enten skalerbarhet (ettersom Bitcoin-nettverket vil kunne håndtere færre transaksjoner) eller desentralisering (ettersom færre brukere vil kunne kjøre en full node og verifisere alle transaksjoner ), eller begge.
Og sist men ikke minst: Det er ikke klart at alle er enige om at Bitcoin skal være mer privat eller soppbart, noe som ytterligere kan komplisere å rulle ut potensielle myke gafler som disse.
Takk til Pieter Wuille, Adam Back og Monero lederutvikler Riccardo Spagni for informasjon og tilbakemelding.