Bitcoin lige nu er ikke rigtig anonym. Mens Bitcoin-adresser ikke nødvendigvis er knyttet til virkelige identiteter, kan de være det. Overvågning af det ukrypterede peer-to-peer-netværk, analyse af den offentlige blockchain og Know Your Customer (KYC) -politik eller Anti-Money Laundering (AML) -regulering kan afsløre meget om, hvem der bruger Bitcoin, og til hvad.
Dette er ikke godt set fra et privatlivsperspektiv. 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.
Derudover er bitcoins, der er sporbare, muligvis “plettet” og potentielt mindre værd end andre bitcoins, i modstrid med fungibilitet. Dette kan endda udfordre Bitcoins værdiproposition som penge.
Men der er mulige løsninger til at øge privatlivets fred og forbedre svaghed.
En af disse løsninger er “fortrolige transaktioner.”
Baggrund
I modsætning til de fleste digitale finansielle infrastrukturer registreres alle typiske Bitcoin-transaktioner på den offentlige blockchain, der er synlig for alle at se. Dette er nødvendigt for at validere transaktioner uden nogen central autoritet, men gør det også trivielt at spore, hvor mange bitcoins der sendes fra hvilke adresser til hvilke adresser.
For at forbedre privatlivets fred er det muligt at skjule transaktionen af bitcoins. En tidlig version af dette koncept, der derefter blev benævnt “bitcoins med homomorf værdi”, var først foreslog i 2013 af hashcash opfinder og nuværende Blockstream præsident Dr. Adam Back. Ideen blev senere hentet af Bitcoin Core og Blockstream-udviklerne Gregory Maxwell og Dr. Pieter Wuille og Blockstream-matematikeren Andrew Poelstra. Dette førte til sidst til implementeringen af fortrolige transaktioner i Blockstreams testnet-sidekæde, Alpha.
Hvordan det virker
Fortrolige transaktioner kombinerer og bruger flere kryptografiske tricks, især Borromeiske ringunderskrifter og Pedersen forpligtelsesordninger.
Uden at dykke for dybt ned i de kryptografiske specifikationer anvendes disse tricks, så kun afsenderen og modtageren af en transaktion er opmærksomme på det transaktionsbeløb. Alle andre ville kun se, at der handles bitcoins, men ved ikke, hvor mange.
Det kloge er, at mens nogle eller alle beløb er maskeret for “tilskuere”, kan disse tilskuere stadig bruge de maskerede beløb til bestemte typer beregninger. Specifikt kan alle input fra en transaktion tilføjes, alle output kan tilføjes, og de to summer kan sammenlignes for at sikre, at de er lige store – alt sammen uden at afsløre nogen af de maskerede beløb eller summen. Som sådan kan noder kontrollere, at der ikke blev oprettet bitcoins ud af luften uden at vide, hvor mange bitcoins der faktisk blev sendt.
(På en sidebemærkning er et af beløbene altid synlige: minegebyret. Det er for at sikre, at minearbejdere ikke kan tildele sig selv for mange gebyrer og har ingen yderligere konsekvenser fra et privatlivsperspektiv. Andre beløb kan også synliggøres, hvis afsenderen eller modtageren vælger det.)
Blød gaffel
Måske overraskende ville fortrolige transaktioner være mere eller mindre kompatible med den nuværende Bitcoin-protokol. Mens detaljerne skal uddybes, kan løsningen rulles ud som en blød gaffel – selvom det måske er lidt “hacky.”
Sådan gør du.
For at sikre, at “gamle” (ikke-opgraderede) og “nye” (opgraderede) noder forbliver synkroniserede, skal bitcoins, der bruges i en fortrolig transaktion, først “passere” en “enhver, der kan bruge” -adresse. Dette er en Bitcoin-adresse, som alle kan bruge fra, selv uden den tilsvarende private nøgle eller signatur.
Eller sådan ser det ud til gamle noder.
Nye noder genkender adressen som det første trin i en fortrolig transaktion og accepterer kun transaktioner fra den adresse, der inkluderer den korrekte signatur. Så længe et flertal af hashkraft anvender disse regler, kan bitcoins på den enhver-kan-bruge-adresse ikke stjæles af nogen, der ikke kontrollerer den tilsvarende private nøgle. (Gamle noder spekulerer muligvis på, hvorfor ingen bruger de frit tilgængelige bitcoins. Men de vil heller ikke have noget imod, at ingen gør det; fra deres synspunkt brydes ingen protokolregler.)
Her bliver det interessant.
Hvis der foretages en fortrolig transaktion fra den adresse, som alle kan bruge, ser både gamle noder og nye noder den transaktion. Men de ser noget anderledes. Nye noder vil genkende transaktionen som en fortrolig transaktion og for eksempel kontrollere, at der ikke er nogen bitcoins oprettet fra luften. Gamle noder ville i mellemtiden blive narret til at tro, at det var en nul-bitcoin-transaktion: de ville tro, at ingen bitcoins overhovedet havde nogen, der kan bruge adressen.
Denne logik gælder for hver efterfølgende transaktion. Nye noder ville se nye transaktioner og vide, at en vis mængde bitcoin sandsynligvis flyttes fra adresse til adresse – selvom de ikke havde nogen idé om, hvor mange. Gamle noder, hele tiden, se “nul-bitcoin-transaktioner”, og tror, at alle bitcoins stadig sidder i den enhver-kan-bruge-adresse. (Gamle noder spekulerer måske på, hvorfor folk sender tomme transaktioner til hinanden. Men igen ville de ikke have noget imod det.)
Årsagen til dette vil ikke forårsage kaos (specifikt på grund af inkompatibel UTXO-sæt) er, at bitcoins modtaget gennem en fortrolig transaktion oprindeligt kun kan bruges som en fortrolig transaktion. De er “låst” i den enhver-kan-bruge-adresse for nu og kan overhovedet ikke synligt bevæge sig over Bitcoin-blockchain.
For at være i stand til at bruge disse bitcoins i en normal transaktion igen, skal de først “passere” den oprindelige enhver, der kan bruge-adresse. Modtageren af en fortrolig transaktion bliver nødt til at sende dem tilbage til den enhver-kan-bruge-adresse, og derfra begynder at flytte mønterne i klart syn på blockchain igen.
Når de først begynder at bevæge sig med et klart syn igen, vil nye noder kontrollere, at der ikke flyttes for mange mønter, mens gamle noder simpelthen antager, at mønterne bevæger sig for første gang, siden de var “låst”.
Som sådan fungerer den enhver-kan-bruge-adresse effektivt som en tilsløringsenhed. At passere gennem den enhver-kan-bruge-adresse gør beløbene for efterfølgende transaktioner usynlige for alle noder. Bitcoins “vises igen” først, efter at de har gjort det tilbage til den oprindelige enhver, der kan bruge adressen.
Ulemper og kompromiser
Desværre er fortrolige transaktioner ingen sølvkugle for privatlivets fred.
Selvom fortrolige transaktioner maskerer beløb, kan publikum stadig se, hvilken adresse der betaler hvilken adresse.
Men der er også mulige løsninger til at løse dette.
For det første er det trivielt at oprette falske negativer og betale nul bitcoins til flere adresser for at tilsløre, hvor bitcoins virkelig gik. Derudover kan fortrolige transaktioner være særligt nyttige i kombination med CoinJoin, som kombinerer afsendelse og modtagelse af adresser fra flere transaktioner til en enkelt, stor transaktion.
En anden potentiel svaghed ved fortrolige transaktioner er, at maskerede beløb egentlig kun maskeres for den pågældende transaktion. Dette kan være ret meningsløst, hvis en efterfølgende transaktion ikke er en fortrolig transaktion. Oplysningerne fra senere transaktioner kan undertiden bruges til at retroaktivt beregne, hvor mange bitcoins der skal have været involveret i den fortrolige transaktion.
(For eksempel: Hvis Alice sender en ukendt mængde bitcoins til Bob, og Bob efterfølgende sender 5 bitcoins til Carol og 2 til sig selv som ændring, betyder det selvfølgelig, at Alice sendte 7 bitcoins til Bob.)
Dette betyder, at fortrolige transaktioner kun er nyttige, hvis sådan anvendelse er udbredt. Men det bringer os til et måske endnu større problem: Fortrolige transaktioner er ret ressourcetunge. En fortrolig transaktion er ca. 20 gange større end en normal transaktion, mens den endda øger beregningen tredobbelt. Som sådan ville omkostningerne ved hver fortrolig transaktion være betydeligt højere sammenlignet med typiske transaktioner, hvilket giver et afskrækkende resultat for folk, der rent faktisk bruger dem – hvilket også mindsker deres anvendelighed for alle andre.
Oven i det sætter den store størrelse af fortrolige transaktioner dem i strid med enten skalerbarhed (da Bitcoin-netværket ville være i stand til at håndtere færre transaktioner) eller decentralisering (da færre brugere ville være i stand til at køre en fuld node og kontrollere alle transaktioner ), eller begge.
Og sidst men ikke mindst: Det er ikke klart, at alle er enige om, at Bitcoin skal være mere privat eller fungibelt, hvilket yderligere kan komplicere udrulning af potentielle bløde gafler som disse.
Tak til Pieter Wuille, Adam Back og Monero hovedudvikler Riccardo Spagni for information og tilføjet feedback.