はじめに
Coin Mixingとは?
もちろん、こうした中央集権的なサービスの安全性や匿名性には疑問があります。ユーザーは、mixerからお金が戻ってくるかどうか、戻ってきたコインが何らかの形で汚染されていないかという保証はありません。さらに、mixerを使用する際に考慮すべき点は、IPアドレスとBitcoinアドレスが第三者によって記録される可能性があることです。最終的にユーザーは、リンクされていない資金が戻ってくることを期待して、資金の管理を放棄してしまいます。
より興味深いのは、CoinJoin取引という形で、かなりの程度、もっともらしい否認権を生み出すアプローチです。つまり、CoinJoin後は、どのような証拠もユーザーの過去の取引と確実に結びつけることはできないのです。多くのCoinJoinソリューションは、mixerに代わる分散型ソリューションを提供しています。コーディネーターは必要かもしれませんが、ユーザーは資金の管理を犠牲にする必要はありません。
CoinJoinとは?
Bitcoinのトランザクションはインプットとアウトプットで構成されています。ユーザーが取引を行う場合、ユーザーはUTXOをインプットとして受け取り、アウトプットを指定した上でインプットに署名します。重要なのは、各インプットは独立して署名され、ユーザーは複数のアウトプット (異なるアドレスに行く) を設定できるということです。
4つのインプット (各0.2 BTC) と2つのアウトプット (0.7BTCと0.09BTC) で構成される特定のトランザクションを見た場合、いくつかの異なる仮説を立てることができます。1つ目は、送信者が誰かにアウトプットを送り、自分にお釣りを返しているのです。4つのインプットを使用しているにも関わらず、アウトプットが大きいのは受信者のためでしょう。なお、アウトプットから0.01 BTCが差し引かれていますが、これはマイニング業者に渡される手数料です。
また、送信者は小さなUTXOから大きなUTXOを作成したいという場合もあります。そのため、送信者は小さなインプットを統合して、目的となる0.7 BTCの結果を取得した可能性があります。
もう1つの仮説は、各インプットが独立して署名されているという事実に基づいています。このトランザクションでは、最大で4つの異なる当事者がインプットに署名する可能性があります。そしてそこには、CoinJoiningを効果的にする原則があります。
CoinJoinの仕組みとは?
複数の関係者が協調して取引を行い、それぞれがインプットと希望するアウトプットを提供するという考え方です。すべてのインプットが組み合わされると、どのアウトプットがどのユーザーのものかを確実に特定することは不可能になります。下図を見てみましょう:
ここでは、トランザクション間のつながりを断ち切りたいと考える4人の参加者がいます。彼らは、自分たちの間で (あるいは専任のコーディネーターを通じて) 、盛り込みたいインプットとアウトプットを発表するために調整します。
コーディネーターは、すべての情報を取り込み、トランザクションを作成し、各参加者に署名させた後、ネットワークにブロードキャストします。ユーザーが署名した後は、無効とならない限りトランザクションを変更することはできません。そのため、コーディネーターが資金を持ち逃げする心配はありません。
しかし、それさえも決して保証されているわけではありません。上記のトランザクションを見て、誰が参加者が4人だと特定することができるのでしょうか?この1人が自分の4つのアドレスに送金しているのでしょうか?2人が別々の買い物をして、それぞれ0.2 BTCを自分のアドレスに戻していますか?4人が新しい参加者に送ったり、自分自身に戻したりしていますか?確証はありません。
否認権によるプライバシー保護
CoinJoinの実装が存在するという事実だけで、取引の分析手法に疑問を持つには十分です。多くの場合、CoinJoinが行われたことは推測できますが、アウトプットの所有者はまだわかりません。普及が進むにつれて、はすべて同じユーザーが所有しているという前提が弱くなります – これは、より広範なエコシステムにおけるプライバシーのための大きな飛躍です。
まとめ
第三者の誠実さと手法を信頼する人々にとって、ミキシングサービスは容易な解決策です。検証可能で非保護的な代替手段を好む人には、 CoinJoinの代替手段 が優れています。これらは、技術力のあるユーザーには手作業で、また、より複雑なメカニズムを抽象化したソフトウェアツールを使って行うことができます。すでに、このようなツールは一握りで、ユーザーがより高いプライバシーを求めているため、その人気は高まる一方です。