導入
ビットコインはよくデジタルマネーと呼ばれますが、これは疑わしい比較です。アリスがボブに 10 ドルを現金で支払ったとしても、ボブはそのお金がどこから来たのか全く分かりません。後で彼がそれをキャロルに渡した場合、キャロルはアリスがかつてそのお金を所有していたことを知ることはありません。
ビットコインはそのオープンな性質によって区別されます。コインの履歴 (より具体的には、未使用トランザクション出力 (UTXO) ) は誰でも簡単に閲覧できます。この概念は、各取引の金額と当事者の名前を記録することに似ています。
それでも、公開アドレスのニックネームは、ユーザーの身元が簡単に明らかにならないことを保証します。しかし、ビットコインは完全にプライベートではありません。ブロックチェーン分析はますます洗練され、アドレスを個人データに効果的に結び付けることができるようになっています。他の追跡方法と合わせて、特定の組織が暗号ユーザーを非匿名化できる場合があります。これを避けるために、時間とともにトランザクション間の接続を断つ技術が登場しました。
コイン混合とは何ですか?
広義には、コイン混合は資金の履歴を混乱させ、そのデータを置き換えることに関連するあらゆる活動を指す場合があります。しかし、暗号通貨の分野では、コイン混合は通常、第三者が提供するサービスを指します。通常、サービスプロバイダーはユーザーのコインを受け取り(および小さな手数料)、送信されたコインに結び付かないコインを返します。これらのサービスは、タンブラーまたはミキサーとしても知られています。
このような中央集権型サービスのセキュリティと匿名性は、もちろん疑問です。ユーザーは資金が戻ってくる保証がなく、何らかの形で損なわれることがないことを保証されていません。さらに、ミキサーを使用する際には、知的財産のアドレスやビットコインが第三者によって登録される可能性があることに注意する必要があります。その結果、ユーザーは資金に対する制御を放棄し、結び付けられていない資金を戻すことを期待しています。
CoinJoinトランザクションの形で、より興味深いアプローチがあります。これにより、より高い秘密性のレベルが提供されます。つまり、CoinJoinの後、証拠がユーザーを以前のトランザクションに確実に結び付けることはできません。多くのCoinJoinソリューションは、ミキサーの分散型の代替手段です。スキームにコーディネーターがいる場合でも、ユーザーは資金の保管を犠牲にする必要はありません。
CoinJoinとは何ですか?
CoinJoinトランザクションは、2013年にビットコインの開発者であるグレゴリー・マクスウェルによって最初に提案されました。彼は、これらのトランザクションがどのように構造化されているか、及びプロトコルを変更せずにプライバシーのレベルを向上させる方法について簡単に説明しました。
CoinJoinの本質は、複数のユーザーの資金を1つのトランザクションに統合することです。どのように(そしてなぜ)行うかを説明する前に、基本的なトランザクションの構造を見てみましょう。
ビットコインのトランザクションは、入力と出力で構成されます。ユーザーがトランザクションを実行したい場合、彼は自分のUTXOを入力データとして取り、出力データを指定し、入力データに署名します。重要なのは、各入力が独自に署名され、ユーザーが複数の出力(異なるアドレスへの引き出し)を設定できることです。

このトランザクションを見てみると、4つの入力(それぞれ0.2 BTC)と2つの出力(0.7 BTCと0.09 BTC)から成ることがわかります。いくつかの異なる仮定を立てることができます。まず、私たちは支払いがどのように行われるかを観察しています - 送信者は誰かに資金を送信し、自分に一部を返しています。4つの入力が使われているため、大きな出力はおそらく受取人のためのものです。出力に0.01 BTCが欠けていることに注意してください - これはマイナーへの報酬です。
また、送信者が小さなUTXOを大きなUTXOにしたいと思っている可能性もあり、希望の結果である0.7 BTCを得るために小さな入力を統合しています。
もう1つの仮定は、各入力が独自に署名されているということです。このトランザクションには、入力を署名する4つの異なる当事者がいる可能性があります。そして、これがCoinJoinを効果的にする原則です。
CoinJoinはどのように機能しますか?
アイデアは、トランザクションに参加するのが複数の当事者であり、資金を出し、希望する出力を指定することです。入力が統合されるため、どの入力がどのユーザーに属するかを正確に言うことは不可能になります。以下のスキームを見てみましょう:

ここには、トランザクション間の接続を断ちたい4人の参加者がいます。彼らはお互いに(または特別なコーディネーターを介して)結びつき、オンにしたい入力と出力を宣言します。
コーディネーターはすべての情報を受け取り、トランザクションデータを含め、各参加者はネットワークに送信する前に署名します。ユーザーがそれを確認すると、トランザクションは無効にならずに変更できます。したがって、コーディネーターが資金を持ち逃げするリスクはありません。
このトランザクションは、コインを混合するためのブラックボックスのような役割を果たします。私たちは新しいものを作成するためにUTXOを効果的に破棄していることに注意してください。古いUTXOと新しいUTXOの間の唯一の接続は、トランザクション自体ですが、その参加者を区別することはできません。最良の場合、参加者が出力の1つを提供し、最終出力の新しい所有者である可能性があると言うことができます。
しかし、これさえも保証されていません。上記のトランザクションを見て、4人の参加者がいると言う人は誰ですか?もしかしたら、1人の人が自分の資金を4つのアドレスに送信しているのかもしれません。2人の人がそれぞれ0.2 BTCの別々の購入をして、それぞれのアドレスに戻しているのかもしれません。2人の人がそれぞれのアドレスに0.2 BTCを返すために2つの別々の購入をしているのかもしれません。私たちは確信を持つことができません。
否認を通じたプライバシー
CoinJoinの実装が存在するという事実だけで、トランザクション分析に使用される方法に疑問を投げかけるのに十分です。ほとんどの場合、CoinJoinが使用されたことを理解できますが、資金が誰に送金されたかを知ることはできません。CoinJoinの人気が高まるにつれて、入力が1人のユーザーに属するという仮定は根拠がなくなり、エコシステムのプライバシーが急激に向上しました。
前の例のトランザクションは、4つの入力からなる匿名性のセットを持っており、その受取人は参加している4人のうちの誰でもあり得ます。匿名性のセットが大きくなるほど、トランザクションが元の所有者に関連付けられる可能性は低くなります。新しいCoinJoinの実装により、ユーザーは他の数十の入力と信頼性の高い方法で自分の入力を結合し、高い否認レベルを提供します。最近、100人のトランザクションが成功裏に実行されました。
結論
コイン混合ツールは、プライバシーを真剣に考えるユーザーのアーセナルにとって重要な補完です。プライバシーのために提案されたアップデート(機密トランザクションなど)とは異なり、私たちのオプションは現在のプロトコルと互換性があります。
信頼できるサードパーティの信頼性と方法論を重視する方には、ミキシングサービスを利用するのが簡単な解決策です。透明性のある非カストディアルサービスを好む方には、CoinJoinが代替手段として適しています。これは、技術に詳しいユーザーが手動で行うか、より複雑なメカニズムを抽象化するソフトウェアツールを使用して行うことができます。すでにいくつかのこのようなツールが存在しており、ユーザーがより多くのプライバシーを求めるにつれて人気が高まっています。
