Czym jest Coin Mixing i CoinJoin
Czym jest Coin Mixing i CoinJoin
Strona GłównaArtykuły

Czym jest Coin Mixing i CoinJoin

Zaawansowany
Published Mar 25, 2020Updated Apr 29, 2021
5m

Wprowadzenie

Bitcoin jest często nazywany cyfrową gotówką, ale jest to wątpliwe porównanie. Jeśli Alice zapłaci Bobowi dziesięć dolarów w gotówce, Bob nie ma pojęcia, skąd pochodzą dostarczone pieniądze. Jeśli później przekaże je Carol, w żaden sposób nie będzie mogła wywnioskować, że Alice była kiedyś w ich posiadaniu.
Bitcoin jest inny ze względu na jego nieodłączny publiczny charakter. Historia danej monety (a dokładniej, niewydany output transakcji lub UTXO) może być obserwowana przez każdego. To trochę jak zapisanie kwoty transakcji i nazwisk uczestników na rachunku za każdym razem, gdy jest on używany. 
To powiedziawszy, pseudonimowość adresu publicznego zapewnia, że tożsamości użytkowników nie są łatwo ujawniane. Mimo to Bitcoin nie jest całkowicie prywatny. Metody analizy blockchainów stają się coraz bardziej wyrafinowana i umożliwiają efektywniejsze łączenie adresów z tożsamościami użytkowników. Oprócz innych technik nadzoru dedykowany podmiot może deanonimizować użytkowników kryptowalut. Aby temu zaradzić, na przestrzeni lat pojawiły się techniki zacierające wszelkie połączenia między adresami i transakcjami.


Czym jest Coin Mixing?

Mówiąc ogólnie, mieszanie monet (coin mixing) może odnosić się do każdego działania, które obejmuje zaciemnianie funduszy przez zastąpienie ich innymi. Jednak w przestrzeni kryptowalut mieszanie monet zwykle oznacza usługę świadczoną przez firmę zewnętrzną. Usługodawcy biorą monety użytkowników (i niewielką opłatę) i zwracają monety, które nie mają żadnego połączenia z wysyłanymi. Usługi te są również znane tumblery lub miksery kryptowalut.

Oczywiście bezpieczeństwo i anonimowość takich scentralizowanych usług jest wątpliwa. Użytkownicy nie mają gwarancji, że ich pieniądze zostaną zwrócone przez mikser lub że przekazane monety nie zostaną w żaden sposób "skażone". Dodatkowym aspektem do rozważenia podczas korzystania z miksera jest to, że IP i bitcoinowe adresy mogą być rejestrowane przez stronę trzecią. Ostatecznie użytkownicy rezygnują z kontroli swoich funduszy w nadziei na odzyskanie niepowiązanych środków i zachowanie prywatności.

Prawdopodobnie bardziej interesujące podejście istnieje w postaci transakcji CoinJoin, które stwarzają znaczny stopień prawdopodobnej zaprzeczalności. Po skorzystaniu z technologii CoinJoin nie istnieje żaden dowód, dzięki któremu można by powiązać użytkownika z jego poprzednimi transakcjami. Wiele rozwiązań CoinJoin stanowi zdecentralizowaną alternatywę dla scentralizowanych mikserów kryptowalut. Chociaż może być zaangażowany koordynator, użytkownicy nie muszą poświęcać opieki nad swoimi środkami stronie trzeciej.


Co to jest CoinJoin?

Transakcje CoinJoin zostały pierwotnie zaproponowane przez dewelopera Bitcoina, Gregory'ego Maxwella w 2013 roku. W swoim wątku dał on krótki przegląd struktury tych transakcji i tego, jak można osiągnąć ogromne zyski w zakresie prywatności bez wprowadzania fundamentalnych zmian w protokole.
Zasadniczo technologia CoinJoin obejmuje kombinację danych wejściowych wielu użytkowników w jednej transakcji. Zanim wyjaśnimy, jak (i dlaczego), spójrzmy na to, jak dokładnie zbudowana jest zwykła transakcja bitcoinami.

Transakcje Bitcoin składają się z wejść i wyjść. Gdy użytkownik chce dokonać transakcji, przyjmuje swoje dane UTXO jako dane wejściowe, określa dane wyjściowe i podpisuje dane wejściowe. Ważne jest, aby pamiętać, że każde wejście jest podpisane niezależnie, a użytkownicy mogą ustawić wiele wyjść (pod różnymi adresami).



Jeśli spojrzymy na daną transakcję składającą się z czterech danych wejściowych (0,2 BTC każda) i dwóch wyników (0,7 BTC i 0,09 BTC), możemy przyjąć kilka różnych założeń. Po pierwsze, obserwujemy, jak odbywa się płatność – nadawca wysyła komuś jedno z wyjść i zwraca część reszty sobie. Ponieważ użyto czterech wejść, większy output jest prawdopodobnie dla odbiorcy. Pamiętaj, że brakuje nam 0,01 BTC na wyjściu, które zostały przekazane jako opłata dla górnika obsługującego transakcję.

Możliwe jest również, że nadawca chce utworzyć duży UTXO z mniejszych, więc konsoliduje mniejsze wejścia, aby uzyskać pożądany wynik, w postaci 0,7 BTC.

Kolejne założenie, które możemy przyjąć, opiera się na fakcie, że każde wejście zostało podpisane niezależnie. Ta transakcja może obejmować do czterech różnych stron podpisujących dane wejściowe. I na tym polega zasada, która sprawia, że CoinJoining jest skuteczny.


Jak działa CoinJoin?

Chodzi o to, że wiele stron będzie koordynować swoje działania, aby utworzyć transakcje, z których każda zapewnia dane wejściowe i pożądane wyniki. Ponieważ wszystkie dane wejściowe są połączone, nie można z całą pewnością stwierdzić, które dane wyjściowe należą do którego użytkownika. Rozważmy poniższy schemat:



Tutaj mamy czterech uczestników, którzy chcą zerwać powiązanie między transakcjami. Koordynują działania między sobą (lub za pośrednictwem dedykowanego koordynatora), aby nadać wejścia i wyjścia, które chcieliby uwzględnić. 

Koordynator weźmie wszystkie te informacje, przekształci je w transakcję i poprosi każdego uczestnika o podpisanie przed transmisją do sieci. Po podpisaniu przez użytkowników transakcji nie można modyfikować bez utraty ważności. Dlatego nie ma ryzyka, że koordynator ucieknie z funduszami. 

Transakcja służy jako coś w rodzaju czarnej skrzynki do mieszania kryptowalut. Pamiętaj, że skutecznie niszczymy UTXO, aby tworzyć nowe. Jedynym łączem między starym a nowym UTXO, który mamy, jest sama transakcja, ale oczywiście nie możemy rozróżnić jej uczestników. W najlepszym wypadku możemy powiedzieć, że uczestnik podał jedną z danych wejściowych i być może jest nowym właścicielem wyjścia.

Ale nawet to nie jest w żaden sposób gwarantowane. Kto powie, patrząc na powyższą transakcję, że na pewno brało w niej udział czterech uczestników? Czy ta jedna osoba wysyła fundusze na cztery adresy? Dwie osoby dokonujące dwóch osobnych zakupów i zwracające po 0,2 BTC z powrotem na swoje adresy? Cztery osoby wysyłają do nowych uczestników lub do siebie? Nie możemy być pewni.


Prywatność poprzez nieufność

Sam fakt, że istnieją implementacje CoinJoin, jest wystarczający, aby poddać w wątpliwość metody stosowane do analizy transakcji. Możesz wywnioskować, że CoinJoin miał miejsce w wielu przypadkach, ale nadal nie daje ci to informacji, o tym kto jest nowym właścicielem monet. Wraz ze wzrostem popularności założenie, że wszystkie dane wejściowe są własnością tego samego użytkownika, słabnie – i tworzy ogromny skok w zakresie prywatności w szerszym ekosystemie kryptowalut.

W poprzednim przykładzie mówimy, że transakcja miała zbiór anonimowości równy 4 – właścicielem wyniku może być dowolny z czterech zaangażowanych uczestników. Im większy zbiór anonimowości, tym mniej prawdopodobne jest, że transakcje można powiązać z pierwotnym właścicielem. Na szczęście ostatnie implementacje CoinJoin sprawiają, że użytkownicy swobodnie łączą swoje dane wejściowe z dziesiątkami innych, zapewniając wysoki stopień zaprzeczalności. Ostatnio pomyślnie przeprowadzono 100-osobową transakcję.


Wnioski końcowe

Narzędzia do mieszania monet są ważnym dodatkiem do arsenału każdego użytkownika poważnie traktującego swoją prywatność. W przeciwieństwie do proponowanych aktualizacji prywatności (takich jak Transakcje Poufne), są one zgodne z protokołem w obecnej formie. 

Dla tych, którzy ufają uczciwości i metodologii stron trzecich, usługi mikserów są ciekawą i łatwą w użytku alternatywą. Dla tych, którzy preferują weryfikowalną i niekustiodialną alternatywę, CoinJoin będzie lepszym rozwiązaniem. Z CoinJoin można korzystać ręcznie - dla zaawansowanych technicznie użytkowników lub za pomocą specjalistycznych narzędzi programowych, które wyodrębniają bardziej złożone mechanizmy. Istnieje już kilka takich narzędzi, które wciąż zyskują na popularności, gdyż użytkownicy kryptowalut dążą do większej prywatności.