Co je mixování mincí a CoinJoin?

· 5 min read

Bitcoin bývá označován za digitální hotovost, jenže toto přirovnání je sporné. Když Alice zaplatí Bobovi 10 dolarů v hotovosti, Bob nemá tušení, odkud peníze pocházejí. A pokud je Bob později předá Carol, ta už nemůže odvodit, že bankovka nejdřív patřila Alici.

U Bitcoinu je to kvůli jeho otevřené povaze jinak. Historii konkrétní mince (tedy neutraceného transakčního výstupu neboli UTXO) si může snadno projít kdokoli. Připomíná to spíš situaci, kdy se při každém použití bitcoinu zapíše na fakturu částka a jméno příjemce.

Protože ale veřejné adresy neobsahují jména, identita uživatelů se jen tak neodhalí. To ovšem neznamená, že by byl Bitcoin plně soukromý. Analýza blockchainu je čím dál sofistikovanější a stále úspěšněji propojuje adresy s konkrétními lidmi. Kromě podobných sledovacích technik může identitu uživatelů kryptoměn odhalit i útvar, který se tím cíleně zabývá. Aby se tomu dalo předejít, vznikly v průběhu let postupy, jak vazby mezi transakcemi přetrhat.

Co je mixování mincí?

Obecně řečeno označuje mixování mincí transakce, jejichž cílem je zamaskovat prostředky tím, že se vymění za jiné. V kryptosvětě se ale tímto pojmem nejčastěji myslí služby nabízené třetími stranami. Poskytovatel převezme mince uživatele (a k tomu nízký poplatek) a pošle mu zpět jiné mince, které nemají s těmi odeslanými nic společného. Takové služby se označují také jako tumblery nebo mixéry.

Bezpečnost a soukromí u takto centralizovaných služeb samozřejmě vyvolávají otazníky. Nic nezaručuje, že mixér prostředky skutečně vrátí ani že vrácené mince nemají za sebou problematickou transakční historii. Dalším bodem, na který je při používání mixéru dobré myslet, je fakt, že IP adresy i bitcoinové adresy si může třetí strana zaznamenat. V konečném důsledku uživatel svěřuje své prostředky někomu cizímu a doufá, že dostane zpět mince bez minulosti.

Zajímavějším přístupem jsou transakce CoinJoin, které vytvářejí značnou míru věrohodného popření. Po provedení transakce CoinJoin totiž nelze předložit žádný důkaz, který by jednoznačně spojil uživatele s jeho předchozími transakcemi. Řada řešení postavených na CoinJoinu tak nabízí decentralizovanější alternativu k mixérům: uživatelé se nemusejí vzdát kontroly nad svými prostředky, i když se do procesu může zapojit koordinátor.

Co je CoinJoin?

Transakce CoinJoin poprvé představil v roce 2013 vývojář Bitcoinu Gregory Maxwell. Ve svém článku stručně popsal, jak jsou takové transakce postavené a jak lze díky nim dosáhnout velkého posunu v soukromí, aniž by se musel měnit protokol.

Jádro CoinJoinu spočívá v tom, že se vstupy od různých uživatelů spojí do jediné transakce. Než si vysvětlíme, jak (a proč) se to dělá, projděme si základní strukturu transakce.

Bitcoinové transakce se skládají ze vstupů a výstupů. Když chce uživatel provést transakci, použije svá UTXO jako vstupy, nastaví výstupy a vstupy podepíše. Podstatné je, že každý vstup se podepisuje nezávisle a že uživatel může vytvořit několik výstupů, tedy poslat prostředky na různé adresy.

Podíváme-li se na transakci se čtyřmi vstupy (každý po 0,2 BTC) a dvěma výstupy (0,7 BTC a 0,09 BTC), můžeme udělat několik odhadů. Prvním je, že se jedná o platbu – odesílatel posílá jeden z výstupů druhé osobě a zbytek sobě. Protože využívá čtyři vstupy, půjde nejvyšší výstup nejspíš příjemci. Pokud v součtu chybí 0,01 BTC, jde o transakční poplatek zaplacený těžaři.

Stejně dobře je ale možné, že odesílatel chce z menších UTXO vytvořit jedno velké, a proto drobné vstupy spojuje, aby se dostal na požadovaných 0,7 BTC.

Další úvaha vychází z toho, že se každý vstup podepisuje samostatně. Transakce mohla vzniknout i tak, že jednotlivé vstupy podepsaly čtyři různé strany. A právě tento princip dělá z CoinJoinu účinný nástroj.

Jak CoinJoin funguje?

Hlavní myšlenka je taková, že se několik stran domluví a společně vytvoří transakci: každá oznámí své vstupy i požadované výstupy. Jakmile se všechny vstupy spojí, nelze s jistotou určit, který výstup patří kterému uživateli. Celý postup vidíte na schématu níže:

Máme tu čtyři uživatele, kteří chtějí přerušit vazbu mezi svými transakcemi. Domlouvají se mezi sebou (nebo prostřednictvím koordinátora) na tom, jaké vstupy a výstupy chtějí zahrnout.

Koordinátor všechny údaje shromáždí, sestaví z nich transakci a nechá ji každým účastníkem podepsat, než ji rozešle do sítě. Jakmile ji uživatelé podepíšou, není možné ji změnit, aniž by pozbyla platnosti. Riziko, že koordinátor prostředky ukradne, je tak vyloučené.

Transakce funguje jako černá skříňka, ve které se mince promíchají. Aby mohla vzniknout nová UTXO, musí ta stará zaniknout. Jediným pojítkem mezi starými a novými UTXO je samotná transakce, jenže v tu chvíli už účastníky od sebe nerozlišíte. V nejlepším případě lze říct, že jeden ze vstupů přidal konkrétní účastník a že tento účastník může být novým majitelem výsledného výstupu.

Ani to ale není žádná jistota. Dá se z výše uvedené transakce vůbec usoudit, že se jí účastní čtyři lidé? Neposílá snad jeden člověk prostředky na čtyři vlastní adresy? Nebo dva lidé provedou dva různé nákupy a každý pošle 0,2 BTC zpět na svou adresu? Anebo čtyři lidé posílají prostředky někomu jinému či sami sobě? Na žádnou z těchto otázek neumíme dát přesnou odpověď.

Soukromí díky popiratelnosti

Už jen to, že aplikace pro CoinJoin existují, stačí k tomu, abychom začali pochybovat o metodách používaných k analýze transakcí. Můžete dojít k závěru, že se CoinJoin používá v mnoha transakcích, ale stejně se nedozvíte, komu výstupy patří. S rostoucí popularitou těchto aplikací zesláblo i tvrzení, že všechny vstupy patří stejnému uživateli – a to je v rámci celého ekosystému velký krok k soukromí.

V předchozím příkladu má transakce anonymitní množinu o velikosti 4, takže majitelem výstupu může být kterýkoli ze čtyř zúčastněných uživatelů. Čím větší je anonymitní množina, tím obtížnější je transakci spojit s jejím původním majitelem. Naštěstí díky nejnovějším implementacím CoinJoinu mohou uživatelé spojit svůj vstup s desítkami dalších, aniž by komukoli museli důvěřovat, a dosáhnout tak vysoké míry popiratelnosti. V nedávné době se úspěšně podařilo provést transakci se 100 účastníky.

Závěrem

Nástroje na mixování mincí jsou důležitou pomůckou dostupnou všem uživatelům, kterým na soukromí záleží. Na rozdíl od jiných vylepšení v oblasti soukromí (například Confidential Transactions) je lze využívat, aniž by se protokol musel měnit ze svého současného stavu.

Pro uživatele, kteří věří poctivosti a postupům třetích stran, představují mixovací služby snadné řešení. Pro ty, kdo dávají přednost ověřitelným alternativám bez svěřování prostředků, je CoinJoin jednoznačně lepší volbou. Technicky zdatní uživatelé si takovou transakci sestaví ručně, ostatním pomohou softwarové nástroje, které složité mechanismy schovají pod kapotu. Několik takových nástrojů už existuje a jejich obliba roste ruku v ruce s tím, jak uživatelé volají po větším soukromí.