Bitcoin trenutno v resnici ni anonimen. Čeprav Bitcoin naslovi niso nujno povezani z resničnimi identitetami, so lahko. Spremljanje nešifriranega omrežja peer-to-peer, analiza javnega veriženja blokov in politika »Spoznaj svoje stranke« (KYC) ali uredba o preprečevanju pranja denarja (AML) lahko razkrijeta veliko o tem, kdo uporablja Bitcoin in za kaj.
Z vidika zasebnosti to ni super. 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.
Poleg tega je bitcoinov, ki jih je mogoče izslediti, morda so “umazani” in morda vredni manj kot drugi bitcoin, v nasprotju z zamenljivostjo. To bi lahko celo izpodbijalo vrednost Bitcoina kot denar.
Obstajajo pa potencialne rešitve za povečanje zasebnosti in izboljšanje zamenljivosti.
Ena od teh rešitev je »Zaupne transakcije«.
Ozadje
V nasprotju z večino digitalne finančne infrastrukture so vse tipične transakcije Bitcoinov zabeležene v javni verigi blokov, kar je vidno vsem. To je potrebno za potrditev transakcij brez kakršnega koli centraliziranega organa, prav tako pa je trivialno slediti, koliko bitcoinov je poslanih s katerih naslovov na katere naslove.
Za izboljšanje zasebnosti je mogoče skriti znesek poslanih bitcoinov. Zgodnja različica tega koncepta, ki se je takrat imenovala »bitcoin z homomorfno vrednostjo«, je bila prva predlagano leta 2013 izumitelj in trenutni hashcash Blockstream predsednik dr. Adam Back. Idejo je kasneje prevzel Bitcoin jedro in razvijalci Blockstream Gregory Maxwell in dr. Pieter Wuille ter matematik Blockstream Andrew Poelstra. To je sčasoma privedlo do izvajanja zaupnih transakcij v testni strani Side-Chain Blockstream, Alfa.
Kako deluje
Zaupne transakcije združujejo in uporabljajo več kriptografskih trikov, predvsem Podpisi boromejskih obročev in Pedersenove sheme zavez.
Ti triki se uporabljajo, ne da bi se poglobili v kriptografske posebnosti, tako da sta le pošiljatelj in prejemnik transakcije seznanjena s transakcijskim zneskom. Vsi ostali bi videli le, da se z bitcoini trguje, vendar ne vedo, koliko.
Pametno je, da čeprav so nekateri ali vsi zneski prikriti za “opazovalce”, lahko ti opazovalci še vedno uporabljajo prikrite zneske za določene vrste izračunov. Natančneje, se lahko seštejejo vsi vnosi transakcije, seštejejo se vsi izhodi in primerjata obe vsoti, da zagotovita, da sta enaka – in hkrati ne razkrijeta nobenega zamaskiranega zneska ali vsote. Kot taka vozlišča lahko preverijo, da noben bitcoin ni bil ustvarjen iz nič, ne da bi vedeli, koliko bitcoinov je bilo dejansko poslanih.
(Na stranski opombi je vedno viden eden od zneskov: rudarska pristojbina. To pomeni, da si rudarji ne morejo dodeliti preveč pristojbin in da nima nadaljnjih posledic z vidika zasebnosti. Vidni so lahko tudi drugi zneski, če se tako odloči pošiljatelj ali prejemnik.)
Mehke vilice
Morda presenetljivo, da bi bile zaupne transakcije bolj ali manj združljive s trenutnim protokolom Bitcoin. Čeprav je treba podrobnosti podrobno določiti, lahko rešitev razstavimo kot a mehke vilice – čeprav je morda nekoliko “hacky”.
Evo kako.
Da bi zagotovili, da bodo »stara« (nenadgrajena) in »nova« (nadgrajena) vozlišča ostala sinhronizirana, bi morali bitcoine, uporabljene v zaupni transakciji, najprej »prenašati« z naslovom »vsakdo lahko porabi«. To je Bitcoin naslov, s katerega lahko porabi vsakdo, tudi brez ustreznega zasebnega ključa ali podpisa.
Ali tako se zdi starim vozliščem.
Nova vozlišča bi naslov prepoznala kot prvi korak v zaupni transakciji in bi sprejela samo transakcije s tega naslova, ki vključujejo pravilen podpis. Dokler večina hash moči uporablja ta pravila, bitcoinov na naslovu, kdo lahko porabi, ne more ukrasti nihče, ki ne nadzoruje ustreznega zasebnega ključa. (Stara vozlišča bi se lahko vprašala, zakaj nihče ne troši brezplačno dostopnih bitcoinov. Vendar jih tudi ne bi motilo, da nihče ne; z njihove perspektive se ne krši nobeno protokolarno pravilo.)
Tu postane zanimivo.
Če je zaupna transakcija izvedena z naslova vsakogar, ki ga lahko porabi, to transakcijo vidijo tako stara kot nova vozlišča. A vidijo nekaj drugačnega. Nova vozlišča bi transakcijo prepoznala kot zaupno transakcijo in na primer preverila, da ni bitcoinov, ustvarjenih iz zraka. Medtem bi stara vozlišča prevarala, da bi šlo za transakcijo brez bitcoinov: verjeli bi, da noben bitcoin sploh ne zapusti naslova, ki ga lahko kdo porabi.
Ta logika velja za vsako naslednjo transakcijo. Nova vozlišča bi videla nove transakcije in vedela, da se neka količina bitcoinov verjetno premakne z naslova na naslov – čeprav ne bi vedela, koliko. Stara vozlišča ves čas vidijo “nič-bitcoin transakcije” in verjamejo, da vsi bitcoini še vedno sedijo na naslovu, ki ga lahko kdorkoli porabi. (Stara vozlišča se morda sprašujejo, zakaj si ljudje medsebojno pošiljajo prazne transakcije. Toda spet jih ne bi motilo.)
Razlog za to ne bo povzročil opustošenja (zlasti zaradi nezdružljivega UTXO-kompleti) je, da se bitcoinov, prejetih s pomočjo zaupne transakcije, na začetku lahko porabi samo kot zaupno transakcijo. Za zdaj so “zaprti” v naslovu vsakogar, ki ga lahko porabi, in se sploh ne morejo vidno premikati po verigi Bitcoin.
Da bi lahko te bitkoine spet porabili v običajni transakciji, morajo najprej »preiti« prvotni naslov, ki ga lahko kdo porabi. Prejemnik zaupne transakcije bi jih moral poslati nazaj na naslov, ki ga lahko porabi vsakdo, in od tam spet začeti premikati kovance na vidnem mestu na verigi blokov.
Ko se spet začnejo premikati v jasnem pogledu, bodo nova vozlišča preverila, da se ne premika preveč kovancev, medtem ko bodo stara vozlišča preprosto domnevala, da se kovanci premikajo prvič, odkar so bili “zaklenjeni”.
Kot tak naslov, ki ga lahko porabi vsakdo, učinkovito deluje kot prikrivalna naprava. Prehod skozi naslov, ki ga lahko porabi vsakdo, naredi zneske nadaljnjih transakcij nevidna za vsa vozlišča. Bitcoini bi se “znova pojavili” šele, ko bi se vrnili na prvotni naslov, ki ga lahko kdo porabi.
Slabe strani in kompromisi
Zaupne transakcije na žalost niso srebrna tarča za zasebnost.
Najbolj očitno je, da medtem ko zaupne transakcije prikrivajo zneske, lahko opazovalci še vedno vidijo, kateri naslov plačuje kateri naslov.
Toda tudi za to obstajajo potencialne rešitve.
Prvič, trivialno je ustvariti lažne negative in na več naslovov plačati nič bitcoinov, da bi zakrili, kam so bitcoini v resnici šli. Zaupne transakcije bi bile lahko še posebej koristne v kombinaciji s CoinJoin, ki združuje pošiljanje in prejemanje naslovov iz več transakcij v eno samo veliko transakcijo.
Druga potencialna slabost zaupnih transakcij je, da so zakriti zneski v resnici prikriti samo za to določeno transakcijo. To je lahko precej nesmiselno, če nadaljnja transakcija ni zaupna transakcija. Podatke iz poznejših transakcij lahko včasih uporabimo za nazaj, da izračunamo, koliko bitcoinov mora biti vključenih v zaupno transakcijo.
(Na primer: če Alice pošlje neznano količino bitcoinov Bobu, Bob pa Carol nato 5 bitcoinov in 2 sebi kot spremembo, očitno pomeni, da je Alice poslala 7 bitcoinov Bobu.)
To pomeni, da so zaupne transakcije res koristne le, če je taka uporaba zelo razširjena. Toda to nas pripelje do morda še večje težave: zaupne transakcije so precej težke z viri. Zaupna transakcija je približno 20-krat večja od običajne transakcije, medtem ko celo poveča izračun tridesetkrat. Kot taki bi bili stroški vsake zaupne transakcije bistveno višji v primerjavi s tipičnimi transakcijami, kar ljudem, ki jih dejansko uporabljajo, odvrača – zmanjšuje njihovo uporabnost tudi za vse ostale.
Poleg tega pa se zaradi velike velikosti zaupnih transakcij skrega bodisi s prilagodljivostjo (saj bi Bitcoin omrežje lahko obvladovalo manj transakcij) bodisi z decentralizacijo (saj bi manj uporabnikov lahko zagnalo celotno vozlišče in preverilo vse transakcije ), ali oboje.
In nenazadnje: Ni jasno, da se vsi strinjajo, da bi moral biti Bitcoin bolj zaseben ali zamenljiv, kar bi lahko še bolj otežilo uvajanje potencialnih mehkih vilic, kot so te.
Zahvaljujoč Pieterju Wuilleu, Adamu Backu in Monero vodilni razvijalec Riccardo Spagni za informacije in dodane povratne informacije.