Selv om Satoshi Nakamoto’s hvitt papir antyder at personvern var et designmål for Bitcoin-protokollen, blockchain-analyse kan ofte bryte brukernes privatliv. Dette er et problem. 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.
Men det er løsninger for å gjenvinne privatlivet. En ny løsning var foreslått på bitcoin-dev-postlisten denne uken, av Bitcoin and Lightning-utvikleren som går under pseudonymet “ZmnSCPxj.” Kalt Payswap, den foreslåtte løsningen tilbyr et enkelt, men effektivt triks for å forvirre blockchain-analyse ved å invertere forholdet mellom betaler og betalingsmottaker..
Slik fungerer det.
Sporbarheten til Bitcoin-betalinger
En typisk bitcoin-transaksjon er en betaling fra en person (betaleren) til en annen (betalingsmottakeren). La oss si, for eksempel, Alice vil betale Bob 3 bitcoin. Hvis Alice eier en mengde mynter (en UTXO) verdt nøyaktig 3 mynter, og vi for enkelhets skyld ignorerer gebyrer, kan hun opprette en transaksjon med en inngang (med henvisning til adressen hennes som inneholder 3 mynter) og en utgang (med henvisning til Bobs Bitcoin-adresse) . Biten av tre mynter vil i det vesentlige bevege seg fra Alice adresse til Bob adresse. Enkel.
Imidlertid vil Alice oftere enn ikke ha en del av den nøyaktige mengden mynter hun trenger for å betale Bob. Alice kan for eksempel bare ha biter på 2 mynter. I dette tilfellet kan hun fremdeles opprette en transaksjon. Denne transaksjonen vil ha to innganger (to biter med 2 mynter, antagelig fra to forskjellige adresser), og også to utganger: en utgang verdt 3 mynter tilskrevet Bobs adresse, og en utgang verdt 1 mynt, som hun sender tilbake til en av henne egne adresser som endring.
Dessverre, akkurat fordi en slik transaksjon er så typisk, vil den avsløre informasjon for blockchain-analytikere. De antar at mengden av 3 mynter utgjør betalingen (til Bob), og at 1 mynten er forandring (tilbake til Alice). Tross alt, hvis betalingen bare utgjorde en mynt, hadde ikke Alice trengt å inkludere to innganger. Dette gjør det mulig for blockchain-analytikere å spore betalinger over blockchain og til slutt tillate adresseklynging og flere strategier som krenker personvern..
Skriv inn Payswap
Payswap erstatter i hovedsak betalingen fra Alice til Bob med to betalinger: en fra Alice til Bob, og en fra Bob til Alice. Å gjøre dette sikkert krever litt teknisk kompleksitet – mer om det nedenfor – men la oss for øyeblikket ignorere det.
I dette tilfellet vil Alice fremdeles opprette en transaksjon med to innganger: to biter med 2 mynter. Men denne gangen ville transaksjonen bare inneholde en utgang: Hun ville sende alle de 4 myntene til Bob. Allerede kan dette forvirre blockchain-analytikere. Fordi de fleste typiske betalingstransaksjoner inkluderer en endringsadresse, og denne transaksjonen ikke gjør det, kan de (falskt) anta at dette er en transaksjon der noen for eksempel flytter sine egne midler til en ny lommebok.
I mellomtiden ville Bob også opprette en transaksjon til Alice. La oss si at Bob har biter på 0,6 mynt. Han ville lage en transaksjon som inkluderer to innganger (biter på 0,6 mynt), og to utganger: 1 mynt for Alice og 0,2 mynt som endring. Dette vil se ut som en vanlig transaksjon (en mynt fra Bob til Alice).
Hvis forskjellige Bitcoin-adresser brukes, vil en blockchain-analytiker ikke kunne fortelle at de to transaksjonene som er beskrevet her skjedde mellom de samme to personene (Alice og Bob). I stedet for på den falske antagelsen de kan ha gjort om Alice’s transaksjon til Bob, kan de nå også ha en feil antagelse om Bobs transaksjon til Alice. Samlet sett kan de tro at Bob betalte Alice 1 bitcoin, mens Alice i virkeligheten betalte Bob 3.
Blockchain-analytikere ville, på grunn av sine falske antagelser, blitt villedet, til fordel for både Alice og Bobs privatliv. I forlengelse av dette, hvis antagelser fra blockchain-analytikere ofte blir brutt gjennom slike triks, blir antagelsene deres ubrukelige generelt.
Legger til CoinSwap
I virkeligheten ville Payswap-trikset være litt mer komplisert.
I eksemplet ovenfor er det et problem igjen å løse. Siden Alice og Bob ikke stoler på hverandre, er ingen av dem villige til å betale først, da dette vil tillate den andre å forsvinne uten å betale tilbake.
Dette kan tas vare på med et eldre triks, kalt CoinSwap. Basert på atombytter (et enda eldre triks), kan to ellers separate transaksjoner gjøres avhengige av hverandre; ingen av partene kunne nekte å returnere betalingen.
Hvis du vet hvordan CoinSwap og / eller atombytter fungerer, er ideen bak Payswap faktisk veldig enkel. I stedet for å bruke (nesten-) like store mengder i de atomkoblede transaksjonene, bruker Payswap forskjellige beløp; forskjellen utgjør betalingen. (Hvis dette er klart for deg, er det ikke nødvendig å lese resten av denne delen av artikkelen.)
I litt mer detalj introduserer Payswap to ekstra transaksjoner i ligningen.
For det første, i stedet for å lage en transaksjon som sender 4 mynter direkte til Bob, oppretter Alice en transaksjon som sender myntene til en veldig grunnleggende smart kontrakt. Myntene kan kreves fra denne smarte kontrakten på to måter. Det kan enten hevdes av Bob, hvis han også inkluderer et hemmelig nummer som Bob selv genererte. Eller hvis myntene ikke blir gjort krav på av Bob, kan myntene kreves tilbake av Alice etter en tid.
For det andre, i stedet for å lage en transaksjon som sender en mynt direkte til Alice, oppretter Bob også en transaksjon som sender mynten til en grunnleggende smart kontrakt. (Og 0,2 mynt tilbake til seg selv som endring.) Igjen kan mynten hevdes på to måter. Enten kan det hevdes av Alice hvis hun inkluderer det samme hemmelige nummeret som Bob genererte. Eller det kan hevdes av Bob etter at det har gått litt tid. (Litt mer tid enn i den første smarte kontrakten.)
Begge transaksjonene sendes til Bitcoin-nettverket for å bli inkludert i en blokk.
Nå, når Bob ønsker å samle inn betalingen sin (4 mynter), vil han opprette en transaksjon fra den smarte kontrakten som Alice opprettet, og dermed inkludere den hemmelige koden han genererte, og kreve pengene. Det er viktigere at ved å gjøre det avslører han sin hemmelige kode på Bitcoin blockchain for Alice å se. Med det kan Alice i sin tur opprette en transaksjon fra den smarte kontrakten som Bob opprettet, og kreve 1 mynt tilbake til adressen hennes.
Med andre ord: Bob kan bare kreve 4 mynter ved å la Alice kreve 1 mynt. Enten begge transaksjonene kommer gjennom eller ikke gjør det.
Hvis Bob av en eller annen grunn ikke krever betaling, vil tidslåsen på den grunnleggende smarte kontrakten Alice opprettet utløpe, og hun kan kreve sine 4 mynter tilbake. Bob, litt senere, kan også kreve 1 mynt tilbake. Ingen skade gjort.
Det er verdt å påpeke at disse smarte kontraktene kan opprettes med fancy matematiske triks for å skjule de hemmelige kodene i de kryptografiske signaturene, for å forhindre at de to transaksjonene blir koblet av blockchain-analytikere gjennom koden. Detaljene om hvordan dette gjøres faller imidlertid utenfor omfanget av denne artikkelen; Hvis du er interessert i å lære mer, kan du se denne artikkelen om skriptløse skript.
Til slutt, mens bruk av atombytter gir litt kompleksitet, vil blockchain-analytikere være forvirret akkurat det samme.
Ulemper med Payswap
Payswap kommer med noen kompromisser.
Den mest åpenbare ulempen er at en betaling vil kreve fire transaksjoner, i stedet for bare en. To transaksjoner er nødvendig for å få midlene fra Alice til Bob, og to transaksjoner er nødvendig for å få “endringen” tilbake fra Bob til Alice. Dette krever mer blokkplass og derfor flere avgifter.
I tillegg krever betalingen at Alice og Bob samhandler. Alice kan ikke bare sende midler til Bobs adresse; i stedet må de to kommunisere utenfor Bitcoin-protokollen for også å bosette seg på en identifikator (hash) av Bobs hemmelige nummer.
Løsningen kan derfor faktisk være mer nyttig i lynets sammenheng. Betalingsruting på Lightning Network er helt basert på utveksling av hemmelige tall, omtrent som Bob genererte i eksemplet ovenfor, så det er ikke vanskelig å se hvordan det samme trikset vil gjelde. Likevel, på Lightning Network, ville de ekstra transaksjonene ikke rammet blockchain, mens betalinger uansett krever samhandling.
Faktisk, hovedsakelig fokusert på Bitcoins Layer 2-nettverk for raske og billige betalinger, kom ZmnSCPxj opprinnelig med ideen til Payswap i sammenheng med Lightning Network, hvor han ganske enkelt refererer til det som en “egenbetaling.” Men mer om dette forslaget i en fremtidig artikkel …