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 måske 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. En ny løsning var foreslog på bitcoin-dev-mailinglisten i denne uge af Bitcoin og Lightning-udvikleren, der går under pseudonymet “ZmnSCPxj.” Kaldt Payswap, den foreslåede løsning tilbyder et simpelt, men alligevel effektivt trick til at forvirre blockchain-analyse ved at vende forholdet mellem betaler og betalingsmodtager.
Sådan fungerer det.
Sporbarheden af Bitcoin-betalinger
En typisk bitcoin-transaktion er en betaling fra en person (betaleren) til en anden (betalingsmodtageren). Lad os sige, for eksempel, at Alice vil betale Bob 3 bitcoin. Hvis Alice ejer en bid af mønter (en UTXO) til en værdi af nøjagtigt 3 mønter, og vi for enkelheds skyld ignorerer gebyrer, kunne hun oprette en transaktion med et input (henviser til hendes adresse med 3 mønter) og en output (henviser til Bobs Bitcoin-adresse) . Klumpen på 3 mønter flyttede i det væsentlige fra Alice’s adresse til Bobs adresse. Enkel.
Oftere end ikke vil Alice dog ikke have en del af den nøjagtige rigtige mængde mønter, hun har brug for at betale Bob. Alice kan for eksempel kun have bidder på 2 mønter. I dette tilfælde kan hun stadig oprette en transaktion. Denne transaktion ville have to input (to klumper med 2 mønter, formodentlig fra to forskellige adresser) og også to output: en output til 3 mønter tilskrevet Bobs adresse og en output til en mønt til en mønt, som hun sender tilbage til en af hende egne adresser som ændring.
Desværre, nøjagtigt fordi en sådan transaktion er så typisk, afslører den information til blockchain-analytikere. De antager, at klumpen på 3 mønter udgør betalingen (til Bob), og at 1-mønten ændres (tilbage til Alice). Når alt kommer til alt, hvis betalingen kun udgjorde 1 mønt, ville Alice ikke have haft brug for at inkludere to input. Dette gør det muligt for blockchain-analytikere at spore betalinger via blockchain og i sidste ende muliggøre adresseklyngning og flere strategier, der krænker privatlivets fred..
Indtast Payswap
Payswap erstatter i det væsentlige betalingen fra Alice til Bob med to betalinger: en fra Alice til Bob og en fra Bob til Alice. At gøre dette sikkert kræver en vis teknisk kompleksitet – mere om det nedenfor – men lad os lige nu ignorere det.
I dette tilfælde vil Alice stadig oprette en transaktion med to input: to klumper med 2 mønter. Men denne gang ville transaktionen kun omfatte en output: Hun ville sende alle 4 mønter til Bob. Dette kan allerede forvirre blockchain-analytikere. Fordi de fleste typiske betalingstransaktioner inkluderer en ændringsadresse, og denne transaktion ikke gør det, antager de muligvis (fejlagtigt), at dette er en transaktion, hvor nogen f.eks. Flytter deres egne midler til en ny tegnebog.
I mellemtiden ville Bob også oprette en transaktion til Alice. Lad os sige, at Bob har klumper på 0,6 mønt. Han ville oprette en transaktion, der inkluderer to input (klumper på 0,6 mønt) og to output: 1 mønt til Alice og 0,2 mønt som ændring. Dette ville ligne en almindelig transaktion (1 mønt fra Bob til Alice).
Hvis der bruges forskellige Bitcoin-adresser, kan en blockchain-analytiker ikke fortælle, at de to transaktioner, der er beskrevet her, skete mellem de samme to personer (Alice og Bob). I stedet for den falske antagelse, de måske har gjort om Alice’s transaktion til Bob, kan de nu også have en forkert antagelse om Bobs transaktion til Alice. Samlet set tror de måske, at Bob betalte Alice 1 bitcoin, mens Alice i virkeligheden betalte Bob 3.
Blockchain-analytikere ville efter deres falske antagelser være blevet vildledt, hvilket gavner både Alice og Bobs privatliv. I forlængelse heraf, hvis antagelser fra blockchain-analytikere ofte brydes gennem denne slags tricks, bliver deres antagelser generelt ubrugelige.
Tilføjer CoinSwap
I virkeligheden ville Payswap-tricket være lidt mere kompliceret.
I eksemplet ovenfor er der et problem tilbage at løse. Da Alice og Bob ikke stoler på hinanden, er ingen af dem villige til at foretage deres betaling først, da dette vil gøre det muligt for den anden at forsvinde uden at returnere betalingen.
Dette kan håndteres med et ældre trick, kaldet CoinSwap. Baseret på atomswaps (et endnu ældre trick) kan to ellers separate transaktioner gøres afhængige af hinanden; ingen af parterne kunne nægte at returnere betalingen.
Hvis du ved, hvordan CoinSwap og / eller atombytter fungerer, er ideen bag Payswap faktisk meget enkel. I stedet for at bruge (næsten) lige store beløb i de atomkoblede transaktioner bruger Payswap ulige beløb; forskellen udgør betalingen. (Hvis dette er klart for dig, er det ikke nødvendigt at læse resten af denne sektion af artiklen.)
Lidt mere detaljer introducerer Payswap to yderligere transaktioner i ligningen.
For det første opretter Alice en transaktion, der sender mønterne til en meget grundlæggende smart kontrakt, i stedet for at oprette en transaktion, der sender 4 mønter direkte til Bob. Mønterne kan kræves fra denne smarte kontrakt på to måder. Det kan enten kræves af Bob, hvis han også inkluderer et hemmeligt nummer, som Bob selv genererede. Eller, hvis mønterne ikke kræves af Bob, kan Alice kræve mønterne tilbage efter nogen tid er gået.
For det andet, i stedet for at oprette en transaktion, der sender en mønt direkte til Alice, opretter Bob også en transaktion, der sender mønten til en grundlæggende smart kontrakt. (Og 0,2 mønt tilbage til sig selv som forandring.) Igen kan mønten kræves på to måder. Enten kan det hævdes af Alice, hvis hun inkluderer det samme hemmelige nummer, som Bob genererede. Eller det kan Bob hævde efter nogen tid er gået. (Lidt mere tid end i den første smarte kontrakt.)
Begge transaktioner sendes til Bitcoin-netværket for at blive inkluderet i en blok.
Når Bob nu ønsker at indsamle sin betaling (4 mønter), opretter han en transaktion fra den smarte kontrakt, som Alice oprettede, og dermed inkluderer den hemmelige kode, han genererede, og hævder pengene. Det er vigtigt, at ved at gøre det afslører han sin hemmelige kode på Bitcoin-blockchain, som Alice kan se. Med det kan Alice igen oprette en transaktion fra den smarte kontrakt, som Bob oprettede, og hævde 1 mønt tilbage til sin adresse.
Med andre ord: Bob kan kun kræve 4 mønter ved at lade Alice kræve 1 mønt. Enten begge transaktioner gennemføres, eller det gør det ikke.
Hvis Bob af en eller anden grund ikke hævder sin betaling, udløber timelåsen på den grundlæggende smarte kontrakt, Alice oprettede, og hun kan kræve sine 4 mønter tilbage. Bob, lidt senere, kan også kræve sin 1 mønt tilbage. Ingen skade sket.
Det er værd at påpege, at disse smarte kontrakter kan oprettes med smarte matematiske tricks til at skjule de hemmelige koder i de kryptografiske signaturer for at forhindre, at de to transaktioner kobles af blockchain-analytikere gennem koden. Detaljerne om, hvordan dette gøres, falder dog uden for denne artikels anvendelsesområde; hvis du er interesseret i at lære mere, se denne artikel om scriptless scripts.
I sidste ende, mens brug af atomombytninger tilføjer en vis kompleksitet, ville blockchain-analytikere forveksles med det samme.
Ulemper ved Payswap
Payswap kommer med nogle kompromiser.
Den mest åbenlyse ulempe er, at en betaling vil kræve fire transaktioner i stedet for kun en. To transaktioner er nødvendige for at få midlerne fra Alice til Bob, og to transaktioner er nødvendige for at få “ændringen” tilbage fra Bob til Alice. Dette kræver mere blockspace og derfor flere gebyrer.
Derudover kræver betalingen, at Alice og Bob interagerer. Alice kan ikke bare sende penge til Bobs adresse; i stedet skal de to kommunikere uden for Bitcoin-protokollen for også at slå sig ned på en identifikator (hash) af Bobs hemmelige nummer.
Løsningen kan derfor faktisk være mere nyttig i lynets sammenhæng. Betalingsrute på Lightning Network er udelukkende baseret på udveksling af hemmelige numre, ligesom den, Bob genererede i eksemplet ovenfor, så det er ikke svært at se, hvordan det samme trick vil gælde. Alligevel ville de ekstra transaktioner ikke ramme blockchain på Lightning Network, mens betalinger alligevel kræver interaktion.
Faktisk, primært fokuseret på Bitcoins Layer 2-netværk til hurtige og billige betalinger, kom ZmnSCPxj oprindeligt med ideen til Payswap i forbindelse med Lightning Network, hvor han simpelthen henviser til det som en “selvbetaling.” Men mere om dette forslag i en fremtidig artikel …