CoinJoin je způsob, jak spojit prostředky více lidí do jedné bitcoinové transakce, přičemž každý nadále ovládá své klíče a kontroluje, co podepisuje. Výsledkem jsou nové výstupy pro účastníky nebo jejich příjemce. Pozorovatel může hůře určit, který původní vlastník dostal který výstup. Účinek závisí na podobě transakce, použitém protokolu i dalších informacích, které má pozorovatel k dispozici.
Anna zaplatí za službu a nechce, aby příjemce snadno sledoval i její další peníze. Bitcoin ale nemá soukromý bankovní výpis: jeho účetní historie je veřejná. Transakce používá dřívější neutracené výstupy, zvané UTXO, a vytváří nové. Výstup je záznam částky a podmínek, za kterých ji lze utratit. Pokud do běžné platby vstoupí několik takových výstupů, analytik často předpokládá, že je ovládá jeden člověk. Je to pomůcka k odhadu, tedy heuristika, nikoli důkaz. CoinJoin tento předpoklad porušuje tím, že v jedné transakci spolupracuje více vlastníků. Nejde o přepsání minulosti; mění se jistota, s jakou lze z veřejných údajů vyvozovat další vztahy. [1]
Pro zjednodušený příklad mají Anna a Pavel každý výstup o 100 500 sat. Sat je zkratka pro satoshi, nejmenší jednotku bitcoinu. Domluví transakci, v níž každý dostane nový výstup o 100 000 sat; zbývajících 1 000 sat tvoří společný síťový poplatek. Jde o výukový model bez dalších servisních poplatků. Koordinátor nebo komunikující peněženky sestaví návrh. Digitální podpis je ověřitelné schválení vytvořené pomocí privátního klíče — tajného údaje, který dává možnost podepisovat. Samotný klíč se přitom nezveřejňuje. Každý zkontroluje adresu vlastního výstupu, částku, poplatky a celé podmínky a teprve pak podepíše své vstupy. Samotný koordinátor nemá klíče ani právo utratit cizí prostředky. Pokud potřebný podpis nedorazí, tuto transakci nelze platně dokončit. Ochrana však předpokládá správný software a ověření návrhu: podepsání návrhu, který posílá peníze podvodníkovi, by ji zmařilo. [1] [5]
V příkladu vidí člověk sledující jen blockchain dva nové výstupy o stejné hodnotě. Samotná částka mu neřekne, který patří Anně a který Pavlovi. To však neznamená automatickou pravděpodobnost jedna ku dvěma ani záruku anonymity: může znát adresu jednoho z nich nebo získat jiné vodítko. U skutečných transakcí mohou pomoci s přiřazením rozpoznatelná vratka, odlišné částky, typy výstupů nebo časování. Množina anonymity označuje kandidáty, mezi nimiž pozorovatel nerozlišuje; není to jednoduše počet lidí přihlášených do kola. Skóre zobrazené peněženkou je odhad podle určitého modelu, nikoli slib, co o tobě ví každý pozorovatel. [1] [4]
Je rozdíl mezi možností ukrást peníze a možností něco se dozvědět. Jednoduchý koordinátor může znát vazbu vstupů a výstupů; jiné protokoly ji před ním skrývají kryptografickými postupy. Záleží také na síťových údajích, například IP adresách a časech připojení. Dalším problémem je Sybil Attack: jeden protivník vystupuje jako mnoho účastníků, zná vlastní výstupy a tím zmenšuje nejasnost těch zbývajících. Účastník navíc může odmítnout podpis a narušit celé kolo. Proto se posuzují konkrétní pravidla účasti a obrana proti zahlcení či sabotování, označovanému jako DoS. Velký počet vstupů sám o sobě tyto otázky neřeší. [1] [4]
Anna později použije nový výstup společně s penězi vybranými z burzy, která zná její totožnost. Tím může pozorovateli znovu nabídnout spojení, které se předtím snažila znejasnit. Podobně působí opakované použití adres nebo sloučení více výstupů do jednoho, tedy konsolidace. Coin Control je možnost vybírat, které UTXO peněženka při platbě použije; pomáhá oddělit peníze určené pro různé účely. Není to ale tlačítko pro absolutní soukromí. Příjemce může znát plátce a provozovatel služby může mít vlastní záznamy. Ochrana proto pokračuje i po úspěšném kole a netýká se pouze vzhledu jedné transakce. [5]
Nejdřív si pojmenuj, před kým chceš chránit které informace. Zvědavý příjemce, koordinátor a někdo sledující síť nemají stejné možnosti. Potom ověř, kdo drží klíče, co aplikace podepisuje, jaké účtuje náklady a jak zachází s výstupy po skončení. Služba, které prostředky nejprve odešleš do její úschovy, má jiný model důvěry než neúschovní CoinJoin. Ten nepřidává zvláštní pravidlo Bitcoinu: uzly ověřují běžnou transakci a její podmínky. Uzel je počítač se softwarem, který ověřuje bitcoinové transakce a bloky. CoinJoin neodstraňuje ani záznamy burzy nebo jiného příjemce a neslibuje, jak s platbou naloží konkrétní služba. Začátečníkovi více pomůže porozumění těmto hranicím než samotný údaj „anonymní“ v aplikaci. [1] [5]
Gregory Maxwell veřejně vysvětlil CoinJoin v srpnu 2013. Myšlenka nevyžadovala změnu pravidel sítě, ale zbývalo vyřešit, jak se lidé najdou a domluví. JoinMarket ukázal tržní přístup: účastník připravující společnou transakci platí dalším za dostupnost jejich prostředků k účasti. Koordinované protokoly řeší organizaci jinak. WabiSabi například pracuje s různými částkami a anonymními pověřeními, která umožňují ověřovat oprávnění k výstupům bez prostého zveřejnění vazby na vstupy. Není proto správné ztotožňovat celý CoinJoin s jedinou aplikací nebo tvrdit, že všechny jeho varianty musejí mít jen stejné výstupy. [1] [2] [4]
Maxwellův text vysvětluje základní myšlenku, dokumentace konkrétní peněženky její vlastní postup a výzkumný článek WabiSabi vlastnosti protokolu. Tyto vrstvy nejsou zaměnitelné. Původní repozitář JoinMarket client/server je při této revizi archivovaný; zde slouží jako historický a technický podklad, nikoli jako doporučení k instalaci. PayJoin podle BIP 78 je příbuzná spolupráce plátce a příjemce, při níž vstupy dodávají obě strany. Zpravidla necílí na velkou skupinu stejných výstupů. Při srovnávání tedy hledej, kdo spolupracuje, co může zjistit a co člověk a jeho peněženka ověřují před podpisem, ne pouze společné slovo „soukromí“. [1] [2] [3] [4] [5] [6]
Společná transakce neznamená společného vlastníka
Alice a Bob každý ovládají jiný vstup společné transakce a získají vlastní výstupy. Předpoklad, že všechny vstupy patří jednomu člověku, zde neplatí. Samotné spojení však nezaručuje skryté přiřazení výstupů; částky, další údaje a pozdější utrácení mohou vazby odhalit.
Pro nejúplnější obraz čtěte toto heslo společně s Bitcoin, Soukromí v Bitcoinu, Pseudonymita, Peněženka, UTXO, Transakce. Opačným směrem na něj odkazují také Change Address, Soukromí v Bitcoinu, Pseudonymita, KYC.
01Může koordinátor CoinJoin ukrást prostředky ze vstupů?+
U neúschovního CoinJoinu, který je správně navržený, zůstávají klíče u účastníků. Ti před podpisem kontrolují celou transakci, hlavně vlastní výstupy, částky a poplatky. Koordinátor bez potřebných podpisů platnou útratu nevytvoří, může však kolo narušit nebo odmítnout účast. Pokud ale účastník podepíše transakci, která jeho peníze posílá podvodníkovi, sám tím takovou platbu schválí.
02Jsou výstupy po CoinJoin navždy anonymní?+
Ne. Historie zůstává veřejná. Opakované použití adres, konsolidace, platba známé protistraně, rozpoznatelné chování peněženky a síťová metadata mohou omezit či odstranit nejasnost přiřazení. Výsledek závisí na protokolu i následném zacházení s výstupy.