Även om Satoshi Nakamoto vitt papper föreslår att integritet var ett designmål för Bitcoin-protokollet, blockchain-analys kan ofta bryta användarnas integritet. Det här är ett problem. Bitcoin-användare vill inte nödvändigtvis att världen ska veta var de spenderar sina pengar, vad de tjänar eller hur mycket de äger, medan företag kanske inte vill läcka transaktionsinformation till konkurrenter – för att nämna några exempel.
Men det finns lösningar för att återfå integriteten. En ny lösning var föreslagen på bitcoin-dev-e-postlistan den här veckan, av Bitcoin och Lightning-utvecklaren som går under pseudonymen “ZmnSCPxj.” Kallas Payswap, den föreslagna lösningen erbjuder ett enkelt men ändå effektivt trick för att förvirra blockchain-analys genom att vända förhållandet mellan betalare och betalningsmottagare.
Så här fungerar det.
Spårbarheten av Bitcoin-betalningar
En typisk bitcoin-transaktion är en betalning från en person (betalaren) till en annan (betalningsmottagaren). Låt oss säga, till exempel, Alice vill betala Bob 3 bitcoin. Om Alice äger en bit mynt (en UTXO) värt exakt 3 mynt, och vi för enkelhetens skull ignorerar avgifter, kan hon skapa en transaktion med en ingång (med hänvisning till hennes adress med 3 mynt) och en utgång (med hänvisning till Bobs Bitcoin-adress) . En bit av tre mynt skulle i huvudsak flyttas från Alice adress till Bob adress. Enkel.
Men oftare än inte kommer Alice inte att ha en bit av exakt rätt mängd mynt hon behöver för att betala Bob. Alice kan till exempel bara ha bitar av 2 mynt. I det här fallet kan hon fortfarande skapa en transaktion. Denna transaktion skulle ha två ingångar (två bitar med 2 mynt, förmodligen från två olika adresser), och även två utgångar: en utgång värt 3 mynt tillskrivna Bobs adress och en utgång till ett mynt, som hon skickar tillbaka till en av henne egna adresser som förändring.
Tyvärr, precis för att en sådan transaktion är så typisk, skulle den avslöja information för blockchain-analytiker. De antar att biten av tre mynt utgör betalningen (till Bob), och att 1 myntet är byte (tillbaka till Alice). När allt kommer omkring, om betalningen bara utgjorde ett mynt, skulle Alice inte behöva inkludera två ingångar. Detta gör det möjligt för blockchain-analytiker att spåra betalningar via blockchain och möjliggör i slutändan adresskluster och fler strategier som kränker sekretess.
Ange Payswap
Payswap ersätter i huvudsak betalningen från Alice till Bob med två betalningar: en från Alice till Bob och en från Bob till Alice. Att göra detta säkert kräver viss teknisk komplexitet – mer om det nedan – men låt oss för närvarande ignorera det.
I det här fallet skulle Alice fortfarande skapa en transaktion med två ingångar: två bitar med 2 mynt. Men den här gången skulle transaktionen bara innehålla en utgång: Hon skulle skicka alla fyra mynt till Bob. Redan kan detta förvirra blockchain-analytiker. Eftersom de flesta typiska betalningstransaktioner inkluderar en ändringsadress, och den här transaktionen inte, kan de (falskt) anta att det här är en transaktion där någon till exempel flyttar sina egna medel till en ny plånbok.
Under tiden skulle Bob också skapa en transaktion till Alice. Låt oss säga att Bob har bitar på 0,6 mynt. Han skulle skapa en transaktion som innehåller två ingångar (bitar på 0,6 mynt) och två utgångar: 1 mynt för Alice och 0,2 mynt som förändring. Detta skulle se ut som en vanlig transaktion (1 mynt från Bob till Alice).
Om olika Bitcoin-adresser används kommer en blockchain-analytiker inte att kunna berätta att de två transaktionerna som beskrivs här hände mellan samma två personer (Alice och Bob). Istället förutom det falska antagandet de kan ha gjort om Alice transaktion till Bob, kan de nu också ha ett fel antagande om Bobs transaktion till Alice. Sammantaget kan de tro att Bob betalade Alice 1 bitcoin, medan Alice i verkligheten betalade Bob 3.
Blockchain-analytiker skulle, på grund av sina falska antaganden, ha vilseleds och gynnat både Alice och Bobs integritet. I förlängning, om blockchain-analytikerns antaganden bryts igenom den här typen av tricks ofta, blir deras antaganden värdelösa totalt sett.
Lägger till CoinSwap
I verkligheten skulle Payswap-tricket vara något mer komplicerat.
I exemplet ovan finns det ett problem kvar att lösa. Eftersom Alice och Bob inte litar på varandra är ingen av dem villiga att betala först, eftersom detta skulle göra det möjligt för den andra att försvinna utan att återbetala.
Detta kan hanteras med ett äldre trick, kallat CoinSwap. Baserat på atombyten (ett ännu äldre trick) kan två annars separata transaktioner göras beroende av varandra; ingen av parterna kunde vägra att återbetala betalningen.
Om du vet hur CoinSwap och / eller atombyten fungerar är tanken bakom Payswap faktiskt väldigt enkel. Istället för att använda (nästan) lika stora belopp i de atomlänkade transaktionerna använder Payswap olika belopp. skillnaden utgör betalningen. (Om detta är klart för dig behöver du inte läsa resten av det här avsnittet i artikeln.)
I lite mer detalj introducerar Payswap ytterligare två transaktioner i ekvationen.
Först, i stället för att skapa en transaktion som skickar fyra mynt direkt till Bob, skapar Alice en transaktion som skickar mynt till ett mycket grundläggande smart kontrakt. Mynten kan krävas från detta smarta kontrakt på två sätt. Det kan antingen hävdas av Bob, om han också inkluderar ett hemligt nummer som Bob själv genererade. Eller om mynten inte görs anspråk på av Bob kan mynten återkrävas av Alice efter en tid.
För det andra, istället för att skapa en transaktion som skickar ett mynt direkt till Alice, skapar Bob också en transaktion som skickar myntet till ett grundläggande smart kontrakt. (Och 0,2 mynt tillbaka till sig själv som förändring.) Återigen kan myntet göras anspråk på två sätt. Antingen kan det hävdas av Alice om hon inkluderar samma hemliga nummer som Bob genererade. Eller så kan det hävdas av Bob efter en tid. (Något mer tid än i det första smarta kontraktet.)
Båda transaktionerna sänds till Bitcoin-nätverket för att ingå i ett block.
När Bob nu vill samla in sin betalning (4 mynt) skulle han skapa en transaktion från det smarta kontraktet som Alice skapade och därmed inkludera den hemliga koden han genererade och kräva pengarna. Viktigt är att genom att göra det avslöjar han sin hemliga kod på Bitcoin blockchain för Alice att se. Med det kan Alice i sin tur skapa en transaktion från det smarta kontraktet som Bob skapade och hävda 1 mynt tillbaka till sin adress.
Med andra ord: Bob kan bara göra anspråk på 4 mynt genom att låta Alice göra anspråk på 1 mynt. Antingen kommer båda transaktionerna igenom eller inte heller.
Om Bob, av någon anledning, inte gör anspråk på sin betalning, upphör tidslåset på det grundläggande smarta kontraktet som Alice skapade och hon kan kräva tillbaka sina fyra mynt. Bob, lite senare, kan också ta tillbaka sitt 1 mynt. Ingen skada gjort.
Det är värt att påpeka att dessa smarta kontrakt kan skapas med snygga matematiska knep för att dölja hemliga koder i kryptografiska signaturer, för att förhindra att de två transaktionerna kopplas av blockchain-analytiker genom koden. Detaljerna om hur detta görs faller dock utanför denna artikel; om du är intresserad av att lära dig mer, läs den här artikeln om skriptfria manus.
I slutändan, medan man använder atombyten tillför lite komplexitet, skulle blockchain-analytiker vara förvirrade på samma sätt.
Nackdelar med Payswap
Payswap kommer med vissa avvägningar.
Den mest uppenbara nackdelen är att en betalning kräver fyra transaktioner istället för bara en. Två transaktioner behövs för att få pengarna från Alice till Bob, och två transaktioner behövs för att få “förändringen” tillbaka från Bob till Alice. Detta kräver mer blockområde och därför fler avgifter.
Dessutom kräver betalningen att Alice och Bob interagerar. Alice kan inte bara skicka pengar till Bobs adress; istället måste de två kommunicera utanför Bitcoin-protokollet för att också slå sig ner på en identifierare (hash) av Bobs hemliga nummer.
Lösningen kan därför faktiskt vara mer användbar i Lightning-sammanhang. Betalningsrutt på Lightning Network bygger helt på utbytet av hemliga nummer, ungefär som det som Bob genererade i exemplet ovan, så det är inte svårt att se hur samma trick skulle gälla. Ändå, på Lightning Network, skulle de extra transaktionerna inte slå blockchain, medan betalningar kräver interaktion ändå.
Faktum är att ZmnSCPxj ursprungligen fokuserade på Bitcoins Layer 2-nätverk för snabba och billiga betalningar, ursprungligen med idén för Payswap i samband med Lightning Network, där han helt enkelt hänvisar till det som en “självbetalning.” Men mer om detta förslag i en framtida artikel …