Coin MixingとCoinJoinsの説明
ホーム
記事
Coin MixingとCoinJoinsの説明

Coin MixingとCoinJoinsの説明

上級者
公開済 Mar 25, 2020更新済 Dec 28, 2022
6m

はじめに

Bitcoinデジタルキャッシュと呼ばれることが多いのですが、この比較には疑問があります。Alice氏がBob氏に現金で$10をお支払いした場合、Bob氏はそのお金がどこから来たのかわかりません。その後、Carol氏に渡すことになれば、Alice氏がかつてそれを所持していたことを推理することはできません。
Bitcoinは、その固有の公共性からして異なります。あるコインの履歴 (より正確には、未使用のトランザクション出力またはUTXO) は、誰でも些細なことから観察することができます。お札を使うたびに取引金額と参加者の名前を書くようなものです。 
とはいえ、パブリックアドレスの仮名性により、ユーザーの身元が簡単に判明することはありません。それでも、Bitcoinは完全にプライベートなものではありません。ブロックチェーンの解析はますます高度化し、アドレスとIDをより効率的に結びつけることができるようになります。他の監視技術と並んで、専門の事業者が仮想通貨ユーザーの匿名性を解除することができます。これを解決するために、トランザクションのリンクを解除する技術が長年にわたって浮上してきました。


Coin Mixingとは?

Coin Mixingとは、広義には、資金を他のもので代用することによって難読化する行為全般を指すと思われます。しかし、仮想通貨の分野では、Coin Mixingは一般的に第三者が提供するサービスを意味します。通常、 サービスプロバイダーはユーザーのコイン (とわずかな手数料) を受け取り、送られたコインと何の関連性もないコインを返送します。これらのサービスは、tumblersmixersとも呼ばれます。

もちろん、こうした中央集権的なサービスの安全性や匿名性には疑問があります。ユーザーは、mixerからお金が戻ってくるかどうか、戻ってきたコインが何らかの形で汚染されていないかという保証はありません。さらに、mixerを使用する際に考慮すべき点は、IPアドレスとBitcoinアドレスが第三者によって記録される可能性があることです。最終的にユーザーは、リンクされていない資金が戻ってくることを期待して、資金の管理を放棄してしまいます。

より興味深いのは、CoinJoin取引という形で、かなりの程度、もっともらしい否認権を生み出すアプローチです。つまり、CoinJoin後は、どのような証拠もユーザーの過去の取引と確実に結びつけることはできないのです。多くのCoinJoinソリューションは、mixerに代わる分散型ソリューションを提供しています。コーディネーターは必要かもしれませんが、ユーザーは資金の管理を犠牲にする必要はありません。


CoinJoinとは?

CoinJoin取引は、2013年にBitcoin開発者のGregory Maxwell氏が最初に提案しました。彼のスレッドでは、これらの取引がどのように構成されているか、また、プロトコルに変更を加えることなく、いかにして大規模なプライバシー保護を実現できるかが簡単に説明されています。
CoinJoinとは、複数のユーザーによるインプットを組み合わせて1つのトランザクションにすることです。その方法 (と理由) を説明する前に、基本的なトランザクション構造について見てみましょう。

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人の参加者がいます。彼らは、自分たちの間で (あるいは専任のコーディネーターを通じて) 、盛り込みたいインプットとアウトプットを発表するために調整します。 

コーディネーターは、すべての情報を取り込み、トランザクションを作成し、各参加者に署名させた後、ネットワークにブロードキャストします。ユーザーが署名した後は、無効とならない限りトランザクションを変更することはできません。そのため、コーディネーターが資金を持ち逃げする心配はありません。 

トランザクションは、コインを混ぜるためのブラックボックスのような役割を果たします。UTXOを効果的に破壊して、新しいUTXOを作ることを忘れないでください。新旧のUTXOをつなぐのはトランザクションそのもののみですが、当然ながら参加者を区別することはできません。せいぜい、ある参加者がインプットの1つを提供し、その結果から得られたアウトプットの新しい所有者となるくらいです。

しかし、それさえも決して保証されているわけではありません。上記のトランザクションを見て、誰が参加者が4人だと特定することができるのでしょうか?この1人が自分の4つのアドレスに送金しているのでしょうか?2人が別々の買い物をして、それぞれ0.2 BTCを自分のアドレスに戻していますか?4人が新しい参加者に送ったり、自分自身に戻したりしていますか?確証はありません。


否認権によるプライバシー保護

CoinJoinの実装が存在するという事実だけで、取引の分析手法に疑問を持つには十分です。多くの場合、CoinJoinが行われたことは推測できますが、アウトプットの所有者はまだわかりません。普及が進むにつれて、はすべて同じユーザーが所有しているという前提が弱くなります – これは、より広範なエコシステムにおけるプライバシーのための大きな飛躍です。

先ほどの例では、アウトプットの所有者が参加した4人の参加者のいずれかになりうる匿名性の高い4つのトランザクションがあったとします。匿名性の設定が大きければ大きいほど、トランザクションの元の所有者に関連付けられる可能性は低くなります。幸いなことに、最近のCoinJoinの実装では、ユーザーが自分のインプットと他の何十ものインプットを信頼してマージすることが容易であり、高度な否認可能性を提供することができます。最近では、100人規模のトランザクションに成功しました。


まとめ

コインを混ぜるためのツールは、プライバシーを重視するユーザーにとって重要な武器となります。提案されているプライバシーのアップグレード (機密トランザクションなど) とは異なり、現在のプロトコルと互換性があります。 

第三者の誠実さと手法を信頼する人々にとって、ミキシングサービスは容易な解決策です。検証可能で非保護的な代替手段を好む人には、 CoinJoinの代替手段 が優れています。これらは、技術力のあるユーザーには手作業で、また、より複雑なメカニズムを抽象化したソフトウェアツールを使って行うことができます。すでに、このようなツールは一握りで、ユーザーがより高いプライバシーを求めているため、その人気は高まる一方です。