Čeprav Satoshi Nakamoto bel papir nakazuje, da je bila zasebnost oblikovalski cilj protokola Bitcoin, analiza veriženja blokov pogosto lahko zlomi zasebnost uporabnikov. To je težava. Uporabniki Bitcoinov morda ne bodo želeli, da svet ve, kje trošijo svoj denar, kaj zaslužijo ali koliko imajo v lasti, medtem ko podjetja morda ne bodo želela razkrivati podrobnosti transakcij konkurentom – če naštejemo nekaj primerov.
Vendar obstajajo rešitve za ponovno pridobitev zasebnosti. Nova rešitev je bila predlagano ta teden na poštnem seznamu za bitcoin-dev razvijal Bitcoin in Lightning, ki nosi psevdonim “ZmnSCPxj”. Predlagana rešitev, imenovana Payswap, ponuja preprost, a učinkovit trik za zmedo analize veriženja blokov, tako da obrne odnos med plačnikom in prejemnikom plačila.
Evo, kako to deluje.
Sledljivost plačil Bitcoin
Tipična transakcija bitcoinov je plačilo ene osebe (plačnika) drugi (prejemniku plačila). Recimo, na primer, Alice želi Bob plačati 3 bitcoine. Če ima Alice del kovancev (UTXO) v vrednosti natanko 3 kovancev, mi pa zaradi enostavnosti ignoriramo provizije, bi lahko ustvarila transakcijo z enim vhodom (glede na njen naslov, ki ima 3 kovance) in enim izhodom (glede na Bobov Bitcoin naslov) . Košček 3 kovancev bi se v bistvu preselil z Aliceinega naslova na Bobov naslov. Preprosto.
Vendar Alica pogosteje kot ne bo dobila natančno prave količine kovancev, ki jih mora plačati Bobu. Alice ima lahko na primer le koščke po 2 kovanca. V tem primeru lahko še vedno ustvari transakcijo. Ta transakcija bi imela dva vhoda (dva kosa 2 kovanca, verjetno z dveh različnih naslovov) in tudi dva izhoda: en izhod v vrednosti 3 kovancev, pripisanih Bobovemu naslovu, in en izhod v vrednosti 1 kovanca, ki ga pošlje nazaj enemu od svojih lastni naslovi kot sprememba.
Na žalost, ravno zato, ker je takšna transakcija tako značilna, bi analitikom blockchaina razkrila informacije. Predvidevali bodo, da del 3 kovancev predstavlja plačilo (Bobu) in da je 1 kovanec menjava (nazaj Alice). Konec koncev, če bi plačilo predstavljalo samo 1 kovanec, Alice ne bi bilo treba vključiti dveh vhodov. To analitikom blockchain omogoča sledenje plačil prek blockchaina in na koncu omogoča združevanje naslovov in več strategij za kršenje zasebnosti.
Vnesite zamenjavo plačil
Zamenjava plačil v bistvu nadomesti plačilo od Alice do Boba z dvema plačili: eno od Alice do Boba in drugo od Boba do Alice. Varno izvajanje tega zahteva nekaj tehnične zapletenosti – več o tem spodaj – vendar zaenkrat zanemarimo to.
V tem primeru bi Alice še vedno ustvarila transakcijo z dvema vhodoma: dvema kosoma po 2 kovanca. Toda tokrat bi transakcija vključevala le en izhod: vse 4 kovance je poslala Bobu. To že lahko zmede analitike blockchaina. Ker večina tipičnih plačilnih transakcij vključuje naslov za spremembo, ta pa ne, lahko (napačno) domnevajo, da gre za transakcijo, pri kateri nekdo na primer premika lastna sredstva v novo denarnico..
Bob bi medtem ustvaril tudi transakcijo z Alice. Recimo, da ima Bob koščke 0,6 kovanca. Ustvaril bi transakcijo, ki bi vključevala dva vhoda (kosi 0,6 kovanca) in dva izhoda: 1 kovanec za Alice in 0,2 kovanca kot spremembo. To bi izgledalo kot običajna transakcija (1 kovanec od Boba do Alice).
Če se uporabljajo različni naslovi Bitcoin, analitik blockchain ne bo mogel ugotoviti, da sta se tukaj opisani transakciji zgodili med istima dvema osebama (Alice in Bob). Namesto lažne domneve, ki so jo morda imeli o Aliceini transakciji z Bobom, imajo zdaj morda tudi napačno domnevo o Bobovi transakciji z Alice. Na splošno lahko mislijo, da je Bob Alice plačal 1 bitcoin, v resnici pa je Alice plačal Bob 3.
Analitiki Blockchaina bi bili s svojimi napačnimi predpostavkami zavedeni, kar bi koristilo zasebnosti Alice in Boba. Če se predpostavke analitikov blockchaina dovolj pogosto prebijejo skozi tovrstne trike, njihove predpostavke na splošno postanejo neuporabne.
Dodajanje CoinSwap
V resnici bi bil trik Payswap nekoliko bolj zapleten.
V zgornjem primeru je še treba rešiti težavo. Ker si Alice in Bob ne zaupata, nobeden ni pripravljen najprej plačati, saj bi to omogočilo, da drugi izgine, ne da bi vrnil plačilo.
Za to je mogoče poskrbeti s starejšim trikom, imenovanim Zamenjava kovancev. Na podlagi atomskih zamenjav (še starejši trik) sta lahko dve drugačni ločeni transakciji odvisni drug od drugega; nobena stranka ni mogla zavrniti vrnitve plačila.
Če veste, kako delujejo CoinSwap in / ali atomske zamenjave, je ideja Payswap pravzaprav zelo preprosta. Namesto da uporablja (skoraj) enake zneske pri atomsko povezanih transakcijah, Payswap uporablja neenake zneske; razlika predstavlja plačilo. (Če vam je to jasno, vam ni treba prebrati preostalega dela tega članka.)
Malo podrobneje Payswap v enačbo uvede dve dodatni transakciji.
Najprej, namesto da ustvari transakcijo, ki pošlje 4 kovance neposredno Bobu, Alice ustvari transakcijo, ki kovance pošlje v zelo osnovno pametno pogodbo. Od te pametne pogodbe lahko kovance prevzamete na dva načina. Lahko ga zahteva tudi Bob, če vključuje tudi skrivno številko, ki jo je sam ustvaril Bob. Če pa kovancev Bob ne zahteva, lahko kovance po preteku določenega časa zahteva Alice.
Drugič, namesto da bi ustvaril transakcijo, ki kovanec pošlje neposredno Alice, Bob ustvari tudi transakcijo, ki kovanec pošlje v osnovno pametno pogodbo. (In 0,2 kovanca nazaj k sebi kot drobiž.) Kovanec je mogoče zahtevati na dva načina. Kakor koli, lahko zahteva Alice, če vključuje isto tajno številko, ki jo je ustvaril Bob. Ali pa lahko to zahteva Bob po preteku nekaj časa. (Nekoliko več časa kot v prvi pametni pogodbi.)
Obe transakciji se predvajata v Bitcoin omrežje, da se vključita v blok.
Zdaj, ko želi Bob pobrati svoje plačilo (4 kovanci), bi ustvaril transakcijo iz pametne pogodbe, ki jo je ustvarila Alice, in tako vključil skrivno kodo, ki jo je ustvaril, terja denar. Pomembno je, da s tem razkrije svojo skrivno kodo na verigi Bitcoin, da jo lahko vidi Alice. Z njim lahko Alice nato ustvari transakcijo iz pametne pogodbe, ki jo je ustvaril Bob, in zahteva 1 kovanec nazaj na svoj naslov.
Z drugimi besedami: Bob lahko zahteva le 4 kovance, če dovoli, da Alice zahteva 1 kovanec. Obe transakciji se opravita ali pa tudi ne.
Če iz kakršnega koli razloga Bob ne zahteva plačila, poteče časovna zapora na osnovni pametni pogodbi, ki jo je ustvarila Alice, in lahko zahteva svoje 4 kovance nazaj. Bob nekoliko pozneje lahko tudi zahteva svoj kovanec 1 nazaj. Ni narejene škode.
Omeniti velja, da je te pametne pogodbe mogoče ustvariti z modnimi matematičnimi triki, da bi skrivnostne kode skrivali v kriptografskih podpisih in tako preprečili, da bi analitiki blokov prek kode povezali obe transakciji. Podrobnosti, kako se to naredi, pa ne spadajo v področje uporabe tega članka; če vas zanima več, si oglejte ta članek o Skripti brez skriptov.
Na koncu, medtem ko uporaba atomskih zamenjav doda nekaj zapletenosti, bi bili analitiki blockchain prav tako zmedeni.
Pomanjkljivosti zamenjave plačil
Zamenjava plačil ima nekaj kompromisov.
Najbolj očitna pomanjkljivost je, da bi za plačilo potrebovali štiri transakcije namesto samo ene. Za pridobitev sredstev od Alice do Boba sta potrebni dve transakciji, dve pa za vrnitev “menjave” z Boba na Alice. To zahteva več prostora v bloku in s tem več pristojbin.
Poleg tega plačilo zahteva, da Alice in Bob sodelujeta. Alice ne more preprosto poslati sredstev na Bobov naslov; namesto tega morata komunicirati zunaj protokola Bitcoin, da se poravnata tudi na identifikatorju (hash) Bobove tajne številke.
Rešitev bi zato lahko bila dejansko bolj uporabna v kontekstu strele. Usmerjanje plačil v omrežju Lightning v celoti temelji na izmenjavi tajnih številk, podobno kot tista, ki jo je Bob ustvaril v zgornjem primeru, zato ni težko razumeti, kako bi veljal isti trik. Kljub temu v omrežju Lightning dodatne transakcije ne bi prizadele verige blokov, medtem ko plačila vseeno zahtevajo interakcijo.
Pravzaprav se je ZmnSCPxj, osredotočen predvsem na Bitcoinovo omrežje Layer 2 za hitra in poceni plačila, sprva domislil Zamenjave plačil v okviru mreže Lightning, kjer jo preprosto imenuje “samoplačilo”. Toda več o tem predlogu v prihodnjem članku …