CoinJoin(コインジョイン)
CoinJoinは複数ユーザーのトランザクションを一つに結合し、誰が誰に送金したかの追跡を困難にするビットコインのプライバシー技術です。
**CoinJoin(コインジョイン)**は、複数のユーザーのビットコイントランザクションのインプットとアウトプットを一つのトランザクションに結合し、外部の観察者がどのインプットがどのアウトプットに対応するかを判別できなくするプライバシー技術です。ビットコインブロックチェーンは本質的に公開台帳(パブリックレジャー)であり、すべてのトランザクションが永久に記録され、誰でも閲覧できます。金融プライバシーを守るためには、資金の流れを意図的に曖昧にする技術が不可欠であり、CoinJoinはこの問題に対する最も実用的かつ信頼最小化(トラストレス)された解決策の一つです。
CoinJoinの誕生
CoinJoinの概念は、2013年にビットコインコア開発者の**グレゴリー・マクスウェル(Gregory Maxwell)**がbitcointalk.orgフォーラムに投稿した記事で初めて公式に提案されました。マクスウェルはビットコインのプライバシーの限界を指摘し、複数のユーザーが自発的にトランザクションを結合すれば、第三者を信頼することなくプライバシーを大幅に向上させることができると主張しました。
この提案の核心的洞察はビットコインのトランザクション構造にあります。ビットコインのトランザクションは複数のインプットと複数のアウトプットを持つことができ、プロトコルレベルではすべてのインプットが同一人物のものである必要はありません。異なるユーザーのインプットを一つのトランザクションに含めることは、技術的に完全に正当なビットコイントランザクションです。この構造的特性を活用することで、所有関係を意図的に曖昧にすることができます。
マクスウェルの提案の優雅さは、ビットコインプロトコルの変更を一切必要としない点にあります。ソフトフォークも新しいオペコードも不要で、既存のビットコイン機能を革新的な方法で活用するだけです。
ビットコインのプライバシーにおける構造的問題
ビットコインはしばしば匿名と誤解されますが、実際には**仮名性(pseudonymous)**のシステムです。すべてのトランザクションはブロックチェーンに永久記録され、誰でも閲覧可能です。これは深刻なプライバシー上の脆弱性につながります。
UTXO追跡とチェーン分析
ビットコインはUTXO(未使用トランザクションアウトプット)モデルを使用しています。各ビットコインは前のトランザクションのアウトプットとして存在し、新しいトランザクションでインプットとして消費されます。この構造により、資金の流れをトランザクションからトランザクションへと連鎖的に追跡することが可能になります。Chainalysis、Elliptic、CipherTraceなどのブロックチェーン分析企業は、このUTXOグラフを分析して資金の出所と行き先を追跡し、ユーザーの金融活動の包括的な全体像を構築しています。
これらの企業は大規模に活動しており、毎日数十億ドル相当のビットコインフローを追跡しています。法執行機関、金融機関、取引所にサービスを販売し、新しいデータポイントが利用可能になるたびに、何年も前のトランザクションでさえ遡及的に匿名解除できる監視インフラを構築しています。
共通インプット所有ヒューリスティック
チェーン分析の最も基本的な仮定は、**共通インプット所有ヒューリスティック(Common Input Ownership Heuristic、CIOH)**です。このヒューリスティックは、一つのトランザクションに含まれるすべてのインプットが同一の所有者のものであると推定します。一般的なビットコインの使用において、この仮定はほとんどの場合正しいです。ユーザーが複数のUTXOを組み合わせて一回の支払いを行う場合、それらのインプットはすべて同じウォレットから来ます。CoinJoinはまさにこのヒューリスティックを無効化するために設計されました。
クラスタリングと身元特定
チェーン分析企業はCIOHに基づいてアドレスをクラスターにグループ化します。同じトランザクションのインプットとして使用されたアドレスは、同一のエンティティに分類されます。クラスター内の一つのアドレスに実名が紐づくと(例:KYC対応取引所からの出金)、そのクラスターのすべてのトランザクション履歴が身元と結びつきます。取引所の出金アドレス一つから、あなたのビットコイン資産総額、取引相手、消費パターン、経時的な金融行動まで露出する可能性があります。
CoinJoinの動作原理
CoinJoinの核心メカニズムは驚くほどシンプルです。複数のユーザーがそれぞれのインプット(UTXO)とアウトプット(受取アドレス)を一つのトランザクションに結合し、各参加者は自分のインプットにのみ署名します。
基本プロセス
- 参加者の募集: 複数のユーザーがCoinJoinラウンドへの参加を登録します。
- インプットとアウトプットの提出: 各参加者は使用したいUTXO(インプット)とビットコインを受け取る新しいアドレス(アウトプット)を提出します。
- トランザクション構築: コーディネーター(または分散型プロトコル)がすべてのインプットとアウトプットを一つのトランザクションに組み立てます。
- 検証と署名: 各参加者は完成したトランザクションを検証し、自分のアウトプットが正しく含まれていることを確認した上で、自分のインプットにのみ署名します。
- ブロードキャスト: すべての署名が集まると、トランザクションがビットコインネットワークに送信されます。
ここで重要なセキュリティ特性は、各参加者が自分のインプットにのみ署名するという点です。コーディネーターも他の参加者もあなたのビットコインを盗むことはできません。自分のアウトプットがトランザクションに含まれていなければ、単に署名を拒否するだけです。
外部観察者の視点
完成したCoinJoinトランザクションをブロックエクスプローラーで見ると、例えば5つのインプットと5つのアウトプットを持つトランザクションが表示されます。外部の観察者はどのインプットがどのアウトプットに対応するかを判別できません。5つのインプットと5つのアウトプットがある場合、理論的には5! = 120通りのマッピングが可能であり、参加者が増えるほど**匿名性セット(anonymity set)**は指数的に拡大します。
同一金額アウトプットの重要性
CoinJoinのプライバシー効果を最大化するためには、**同一金額アウトプット(equal-amount outputs)**が極めて重要です。
仮にAliceが0.3 BTCをインプットし、Bobが0.7 BTCをインプットした後、アウトプットが0.3 BTCと0.7 BTCだった場合、金額だけでどのインプットがどのアウトプットに対応するかを推論できてしまいます。これはCoinJoinのプライバシーを完全に無効化します。
これを防ぐため、効果的なCoinJoin実装では、すべての参加者のアウトプット金額を統一します。例えば、すべての参加者が正確に0.01 BTCのアウトプットを受け取るように設定します。残りの金額(お釣り)は別のチェンジアウトプットとして返されますが、このチェンジアウトプットはプライバシーが弱い可能性があるため、再度CoinJoinに参加させることが推奨されます。
この同一金額方式が匿名性セットのサイズを決定します。同じ金額のアウトプットが10個あれば、各アウトプットが特定のインプットから来た確率は1/10です。CoinJoinラウンドに参加者が多ければ多いほど、プライバシーが強化されるのはこのためです。
主要な実装
Wasabi Wallet: ZeroLinkからWabiSabiへ
Wasabi Walletはデスクトップビットコインウォレットであり、最も広く使用されているCoinJoin実装の一つです。当初はアダム・フィクソール(Adam Ficsor、nopara73)が設計したZeroLinkプロトコルを使用していました。ZeroLinkはチャウミアンブラインド署名(Chaumian blind signatures)を採用し、コーディネーターですらどのインプットがどのアウトプットに対応するかを知ることができないようにしました。
2022年から、WasabiはWabiSabiプロトコルに移行しました。WabiSabiはキード・クレデンシャル(keyed credentials)とゼロ知識証明(zero-knowledge proofs)を使用してZeroLinkの限界を克服しました。最大の改善点はアウトプット金額の柔軟性です。ZeroLinkではすべてのアウトプットが固定金額である必要がありましたが、WabiSabiでは多様な金額のアウトプットが可能でありながら、インプット-アウトプットのマッピングを隠すことができます。これによりチェンジアウトプットが削減され、プライバシーがさらに強化されます。
WabiSabiはブロックスペースのより効率的な使用も可能にし、参加者は単一のCoinJoinラウンド内でUTXOを統合したり、希望する金額に分割したりすることができ、すべてコーディネーターや他の参加者に所有パターンを明かすことなく行えます。
JoinMarket: メーカー・テイカーモデル
JoinMarketはCoinJoinのための分散型マーケットプレイスです。その特徴的な点はメーカー・テイカーモデルであり、流動性提供に対する経済的インセンティブを創出しています。
- メーカー(Maker): 自分のビットコインをCoinJoinの流動性として提供し、その見返りとして手数料を得ます。メーカーはソフトウェアを常時稼働させ、CoinJoinに提供する金額と手数料を示すオーダーを公開します。
- テイカー(Taker): プライバシーを求めるユーザーです。メーカーの流動性を利用してCoinJoinを開始し、メーカーに手数料を支払います。
このモデルの利点は経済的インセンティブが組み込まれていることです。メーカーはビットコインで利回りを得ながら同時に自身のプライバシーも向上させ、テイカーは他のプライバシー希求ユーザーを待つことなくオンデマンドでCoinJoinを実行できます。さらにJoinMarketは中央集権的なコーディネーターなしにP2Pで動作するため、単一障害点がありません。
JoinMarketはPayJoinトランザクションやタンブラースクリプトもサポートしており、ランダム化されたタイミングと金額で複数の連続CoinJoinラウンドを自動実行し、最小限のユーザー介入で高度なプライバシーを提供します。
Whirlpool(Samourai Wallet)
WhirlpoolはSamourai Walletチームが開発したCoinJoin実装でした。その特徴は厳格な同一金額プールと**無料リミックス(free remixes)**ポリシーでした。
Whirlpoolは複数のプールサイズ(0.5 BTC、0.05 BTC、0.01 BTC、0.001 BTC)を運営していました。ユーザーは初めてプールに入る際に一度だけ手数料を支払い、その後のすべてのリミックスは無料でした。これにより、ユーザーはUTXOを複数回リミックスするよう動機づけられ、時間の経過とともに匿名性セットが最大化されました。
Whirlpoolはまた、プレミックス、ポストミックス、未ミックスのUTXO間の厳格な分離を強制し、プライバシーを劣化させる可能性のある誤った統合を防止していました。
しかし、2024年4月にSamourai Walletの創設者がアメリカ司法省により起訴され、Whirlpoolサービスは停止されました。この事件はビットコインプライバシーツールの法的地位に関する重大な議論を引き起こしました。
CoinJoin vs 中央集権型ミキサー
CoinJoinを中央集権型のビットコインミキサーやタンブラーと混同してはいけません。両者は根本的に異なる信頼モデルを持っています。
中央集権型ミキサーの問題点
中央集権型ミキサーは、ユーザーがビットコインをミキサー運営者に送り、運営者が別のビットコインをユーザーに返す構造です。この方式には深刻な問題があります。
- カストディリスク: 運営者が資金を持ち逃げする可能性があります。ミキサーの出口詐欺の事例は数多く報告されています。
- ログ保持: 運営者がインプット-アウトプットのマッピング記録を保持する可能性があり、これらの記録が法執行機関に押収されたりハッカーに盗まれたりする恐れがあります。
- ハニーポット標的: 中央集権型サービスは法執行機関やハッカーの自然な標的となり、リスクが一点に集中します。
CoinJoinの信頼最小化
対してCoinJoinは根本的に異なります。
- 非カストディ(non-custodial): ユーザーはCoinJoinプロセス中、自分のビットコインの管理権を一瞬たりとも手放しません。各参加者は自分のインプットにのみ署名し、自分のアウトプットが含まれていないトランザクションには署名しません。
- ログ記録不可能: ブラインド署名やゼロ知識証明を使用する実装では、コーディネーターですらインプット-アウトプットのマッピングを知ることができません。
- 検証可能: CoinJoinは標準的なビットコイントランザクションであるため、すべての参加者が署名前にトランザクションの正確性を独立して検証できます。
法的論争とプライバシーの権利
CoinJoinとプライバシーツールは近年、深刻な法的課題に直面しており、技術、プライバシー権、金融規制の交差点における根本的な問題を提起しています。
Tornado Cash制裁(2022年)
2022年8月、米国財務省外国資産管理局(OFAC)はイーサリアムベースのプライバシープロトコルTornado Cashを制裁リストに追加しました。これは特定の個人や団体ではなく、オープンソースのスマートコントラクトコードを制裁した史上初の事例であり、技術コミュニティに大きな衝撃を与えました。その後の裁判で一部の制裁が無効化されるなど、法的攻防が続いています。
Samourai Wallet起訴(2024年)
2024年4月、Samourai Walletの共同創設者であるキオネ・ロドリゲス(Keonne Rodriguez)とウィリアム・ヒル(William Hill)が、無許可送金業の運営および資金洗浄共謀の容疑で起訴されました。米国司法省はWhirlpool CoinJoinサービスとRicochet機能が1億ドル以上の資金洗浄に利用されたと主張しました。
プライバシーは犯罪ではなく権利
ビットコインコミュニティとプライバシー擁護者たちはこれらの法的措置に強く反発しています。その核心的主張は以下の通りです。
- 金融プライバシーは基本的人権です。現金取引には基本的なプライバシーがあり、デジタル決済でも同等の保護が保証されるべきです。
- ツールは犯罪ではありません。鍵師が窃盗に使用される可能性のあるピッキングツールを販売したからといって起訴されないように、ソフトウェア開発者がユーザーの犯罪行為の責任を負わされるべきではありません。
- CoinJoinは合法的なビットコイントランザクションです。複数の人が一つのトランザクションに署名することはビットコインプロトコルが許可する標準的な機能であり、特別なハッキングや回避策ではありません。
- プライバシーのない通貨は監視ツールになります。すべての金融取引が追跡可能になれば、権威主義体制は反対勢力の資金を凍結でき、企業は顧客の消費パターンを監視でき、個人の経済的自由が根本的に損なわれます。
電子フロンティア財団(EFF)、Coin Center、その他多数の市民的自由組織が、プライバシー保護技術の開発と使用の権利を擁護するアミカス・ブリーフや公式声明を提出しています。
PayJoin: 2者間CoinJoinの特殊形態
PayJoin(P2EP、Pay-to-Endpointとも呼ばれる)はCoinJoinの特殊な形態であり、実際の支払い場面で使用されます。通常のCoinJoinがプライバシーのためだけに複数のユーザーが集まるのとは異なり、PayJoinは送金者と受取者の2者だけでCoinJoinを構成します。
動作方式
通常のビットコイン支払いでは、送金者のみがインプットを提供し、受取者はアウトプットにのみ現れます。PayJoinでは、受取者も自分のUTXOをインプットとして提供します。例えば、AliceがBobに0.5 BTCを支払う場合、Bobも自身の0.3 BTC UTXOをインプットとして追加します。結果として、トランザクションのインプットにはAliceとBob両方のUTXOが含まれます。
CIOHの無効化
PayJoinの最も強力な効果は、共通インプット所有ヒューリスティック(CIOH)を直接的に無効化することです。チェーン分析ツールが「同一トランザクションのインプットは同一所有者のもの」と仮定すると、AliceとBobの資金を同一人物のものとして誤分類してしまいます。PayJoinが広く普及すれば、この仮定自体の信頼性が低下し、PayJoinを一度も使用していないユーザーを含む、すべてのビットコインユーザーのプライバシーが間接的に向上します。
BIP 78
PayJoinはBIP 78として標準化されており、送金者と受取者間の通信プロトコルを定義しています。BTCPay Serverなどの決済プロセッサーにすでに統合されています。PayJoinの最大の利点は、ブロックチェーン上で通常のトランザクションと区別不可能であることです。標準的なCoinJoinは同一金額アウトプットのパターンで識別可能ですが、PayJoinは外見上完全に普通の支払いに見えます。
限界と未来
現在の限界
CoinJoinは強力なプライバシーツールですが、いくつかの限界があります。
- 手数料負担: CoinJoinトランザクションは通常のトランザクションよりサイズが大きいため、より高いマイニング手数料が必要です。ビットコインの手数料が高騰している時期には、小額のCoinJoinが経済的に不合理になる可能性があります。
- 流動性要件: CoinJoinには複数の参加者が同時に必要です。参加者が少なければ匿名性セットは小さくなり、待ち時間が長くなります。
- チェンジアウトプット問題: 同一金額CoinJoin後に残るお釣りはプライバシーが弱いです。チェンジの適切な管理を怠ると、CoinJoinのプライバシーが事後的に劣化する可能性があります。
- ユーザーエクスペリエンス: CoinJoinを正しく使用するにはUTXO管理、チェンジ処理、ラベリングの理解が必要であり、一般ユーザーにとっては参入障壁があります。
Taprootとの相乗効果
2021年に有効化されたTaprootアップグレードは、CoinJoinの未来にとって重要な意味を持ちます。TaprootのSchnorr署名は**署名集約(signature aggregation)**を可能にし、複数の署名を一つに統合できます。これをCoinJoinに適用すると、複数の参加者の署名が単一の署名に統合され、トランザクションサイズが大幅に削減され、手数料も節約されます。
さらにTaprootは複雑なスクリプト条件を通常の支払いと区別不可能にし、CoinJoinトランザクションがブロックチェーン上で通常のトランザクションと同一に見えるようにすることに貢献します。
クロスインプット署名集約(CISA)
ビットコインコミュニティで議論中の**CISA(Cross-Input Signature Aggregation)**が有効化されれば、CoinJoinにとって革命的な転換点となる可能性があります。CISAは単一トランザクション内のすべてのインプットの署名を単一の署名に圧縮します。これによりCoinJoinトランザクションのサイズは通常のトランザクションレベルまで縮小され、手数料負担が解消され、CoinJoinの大衆化が実現可能になるでしょう。
CISAが実現すれば、すべてのウォレットがすべてのトランザクションでバックグラウンドでCoinJoinを自動的に実行できるようになります。署名集約による手数料削減が協調的トランザクションへの自然な経済的インセンティブを生み出すため、プライバシーの利点を考慮しなくても合理的になります。
プライバシーをデフォルトに
ビットコインプライバシーコミュニティの究極的な目標は、プライバシーがオプトインの選択ではなくデフォルトになることです。現在、CoinJoinにはユーザーの能動的な参加が必要ですが、PayJoinがすべての支払いに統合され、ウォレットソフトウェアが自動的にコイン選択の最適化とプライバシールーティングを実行し、CoinJoinがシームレスにバックグラウンドで行われる未来を目指しています。
CoinJoinは、ビットコインが単なる投資資産ではなく、検閲耐性がありプライバシーが保証された自由の通貨として機能するための核心的技術です。法的課題にもかかわらず、CoinJoin技術は進化し続けており、ビットコインの代替可能性(ファンジビリティ)の強化とユーザーの金融プライバシーの保護において不可欠な役割を果たしています。金融プライバシーのための闘いは、単なる技術的課題ではなく、貨幣の未来を形作る基本的な市民的自由の問題です。