CoinJoin

提供: tezos-wiki
移動先: 案内検索

'CoinJoin' 'は不要な情報を破棄してプライバシーを向上させることを目的としたビットコイントランザクション圧縮方式です。 コインジョイン取引とは、アウトプットの一部が同じ価値を持つ単一の取引を複数の人が行うことに同意した取引です。 ブロックチェーンを偶然に見ても、どの出力が各送信者にとって関心があるのか​​を知ることはできません。 多くの他のプライバシーソリューションとは異なり、コインジョイントランザクションはビットコインプロトコルの変更を必要としません。

このタイプのトランザクションは、最初に記事<ref> [1]実際の世界でのビットコインのプライバシー] </ ref> <ref> CoinJoin gmaxwellによって。

モチベーション[編集]

Bitcoinはプライバシのためのツールとしてしばしば宣伝されていますが、Bitcoinに存在する唯一のプライバシーは、再利用、「汚れ」分析、支払いの追跡、IPアドレス監視ノード、Webスパイダリングなど、脆弱で簡単に侵害される匿名アドレスメカニズム。一度壊れてしまうと、このプライバシーは回復しにくく、時にはコストがかかります。

従来のバンキングは、デフォルトでかなりの量のプライバシーを提供します。あなたのインローは、あなたが壮大な子供たちを奪ってしまう避妊薬を購入しているのを見ていません。雇用主は給料からお金でサポートしている非営利について学んでいません。あなたが裕福であれば、彼らはあなたを狙って詐欺をするのを助けるべきです。 Bitcoinの貧弱なプライバシーは、個人と企業にとって大きな実用上の欠点となります。

ユーザーがBIP 32アドレスチェーンに切り替えることで住所の再利用を終了した場合でも、ユーザーは古いより大きな取引をしたときの過去の支払いの参加などがあります。

プライバシーの誤りは、外部化されたコストを生む可能性があります。あなたは良い慣行を持っているかもしれませんが、あなたが(緑の住所を使っている人たちと)取引していない人と取引すると、プライバシーの喪失はBitcoinにとって重大なシステミックリスクももたらします。悪質なプライバシーが人々に良いコインと悪いコインのリストを集めることを可能にするならば、あなたの正直に受け入れられたコインが後に他人によって尊敬されないときにBitcoinの原則が破棄され、それは人々が自分のコインで人気のあるブラックリストを強制的に強制すると感じるときです。

コンセプト[編集]

アイデアは非常にシンプルで、最初は簡単な背景です:

class = fullwidth

Bitcoinトランザクションは、1つ以上の入力を消費し、指定された値を持つ1つ以上の出力を作成します。

各入力は、過去のトランザクションからの出力です。各入力には、それが消費している過去出力で指定されたルール(scriptpubkey)に従って作成された別個の署名(scriptsig)があります。

Bitcoinシステムは、署名が正しいこと、入力が存在し、消費可能であること、出力値の合計が入力値の合計以下であることを確認することで請求されます(超過分は、取引を含む)。

取引が意図した支払いを支払うのに十分な価値を得るためには多くのインプットを費やすことが多く、また、未払いの(および料金以外の)超過を受け取るための追加の「変更」アウトプットを作成することが多い。

使用する入力のscriptpubkeysが同じである必要はありません。つまり、同じ住所への支払いである必要はありません。実際、Bitcoinが支払いごとに1つのアドレスで正しく使用されている場合、それらのどれも同じではありません。

Bitcoinの所有権の歴史を考えてみると、複数の別個のスクリプトベースから所有権を共有するトランザクションを見ることができ、共通のパーティーがそれらのアドレスを制御しない限り、トランザクションは複数のアドレスからどのように使用できますか?

イラスト「トランザクション2」は、1A1と1C3に割り当てられたコインを使います。ですから、1A1と1C3は必ず同じパーティーですか?

この仮定は間違っています。単一のトランザクションでの使用は共通の制御を証明していませんが(現在のところかなり示唆的です)、これがCoinJoin 'を可能にしています:

トランザクション内の入力ごとに1つの署名は、互いに完全に独立しています。つまり、Bitcoinユーザーは、使用するインプットのセットと、支払うべき一連のインプットに同意し、個別に個別にトランザクションに署名し、後でそれらのシグネチャをマージすることができます。取引は有効ではなく、すべての署名が提供されるまでネットワークによって受け入れられず、誰も好きではない取引には署名しません。

これを使用してプライバシーを高めるには、Nユーザーは一定の出力サイズに同意し、少なくともそのサイズに達する入力を提供します。トランザクションは、そのサイズのN個の出力を有し、一部のユーザが目標を超えて入力を提供した場合、N個以上の変更出力を有する可能性がある。 Allはトランザクションに署名し、トランザクションを送信することができます。どの時点でも盗難のリスクはありません。

イラスト「トランザクション2」には、1A1および1C3からの入力があります。 1A1はアリスに使用されているアドレス、1C3はチャーリーに使用されているアドレスです。アリスとチャーリーのどちらが1Dと1Eの出力のどちらを所有していますか?

アイデアはもっと気軽に使用することもできます。支払いをしたいときは、支払いをして一緒に支払いをしたいと思う他の人を見つけてください。そうすることでプライバシーが大幅に向上するわけではありませんが、実際には取引が小さくなり、ネットワーク上で簡単になり(料金も安くなります)。余分なプライバシーは特権です。

このようなトランザクションは、従来の使用によって作成されたトランザクションと外部的に区別できません。このため、これらの取引が広範囲になると、それらを使用しない人々のプライバシーも向上します。なぜなら、共同参入を入力することがなくなり、共通のコントロールの強い証拠となるからです。

このアイデアには多くのバリエーションがあり、アイデアはBitcoinシステムに変更を必要としないため、すべてが共存できます。千の花が咲きましょう:これを達成する方法で多様性を持ち、最高のものを学ぶことができます。

[編集]

2者共同取引の例https://chain.localbitcoins.com/tx/c38aac9910f327700e0f199972eed8ea7c6b1920e965f9cb48a92973e7325046 アドレス1MUngngNnrQRXRqqRTeDmpULW8X1aaGWeRと1Fufjpf9RM2aQsGedhSpbSCGRHrmLMJ7yYへの出力は両方とも0.01btcの値であるためコインジョイントされています。

もう1つの例は、この3者コインジョインです。 https://chain.localbitcoins.com/tx/92a78def188053081187b847b267f0bfabf28368e9a7a642780ce46a78f551ba

FAQ[編集]

誰もが誰のIPをも覚えてしまうのを防ぐために、torや何か必要はありませんか?[編集]

ユーザのアドレスを隠すことを望む取引プライバシーシステムは、何らかの匿名性ネットワークから始めるべきである。これは変わりません。 Tor、I2P、Bitmessage、Freenetのようなネットワークはすでにすべて存在しており、これをすべて使用することができます。 (しかし、Freenetはやや遅い取引になります)

しかし、「汚れ分析」を集めてトランザクションサイズを縮小しても、ユーザー同士がプライベートである必要はありません。したがって、torのようなものがなくても、これは通常の取引よりも悪くないでしょう。

===ユーザーはどの入力がどの出力に一致するかを知ることはできないのですか?

ユーザーがIRCでtorなどで会う最も簡単な実装では、そうです。次の最も簡単な実装では、ユーザーが入出力情報を一部のミーティングポイントサーバーに送信し、サーバーがトランザクションを作成し、ユーザーに署名するように依頼します。サーバはマッピングを学習しますが、誰もそれを実行しません。サーバはまだコインを盗むことができません。

サーバでさえマッピングを学習しないより複雑な実装が可能である。

例えば。チャームブラインドシグネチャの使用:ユーザーは、プライベートコインを移動させるために、入力(および変更アドレス)と暗号化されていないバージョンのアドレスを接続して提供します。サーバーはトークンに署名し、トークンを返します。ユーザーは匿名で再接続し、出力アドレスを解除してサーバーに戻します。サーバーはすべての出力がそれによって署名されていることを知ることができ、すべての出力は有効な参加者からのものでなければなりません。後で人々は再接続し、署名する。

さまざまなゼロ知識証明システムでも同様のことが達成できます。

完全プライベート版にはサーバーが必要ですか?もしそれがシャットダウンされたら?[編集]

同じプライバシーは、すべてのユーザーがブラインド署名サーバーとして機能する分散型の方法で実現できます。これはn ^ 2シグニチャを必要とし、分散システムは一般に作成するのがずっと難しくなります。私は完全なプライバシーを持つ完全に分散されたバージョンを気にする理由があるのか​​、それともそうであるのか分かりませんが、確かに可能です。

DOS攻撃はどうですか?取引が有効であっても誰かが署名を拒否できないのですか?[編集]

はい、これは2通りの方法でDOSを攻撃することができます。誰かが有効な共同取引に署名することを拒否することも、完了する前に誰かが共同取引の下で彼らの入力を費やすこともできます。

ただし、すべての署名が期限内に入らない場合や、競合するトランザクションが作成された場合は、悪意のある当事者を離れて再試行することができます。自動化されたプロセスでは、再試行はユーザーには見えません。唯一の本当のリスクは、永続的なDOS攻撃者です。

分散化されていない(または非集中化されているが非公開の参加者の)ケースでは、DOS攻撃者に対して何らかの免疫を得るのは簡単です。誰かが入力にサインしなかった場合、その入力をブラックリストに追加します。彼らは当然のことながら、より確かなBitcoinトランザクションを作成する能力によって、当然レート制限されます。

どのユーザーが実際にルールを破ったかを知ることは難しいため、分散システムにおけるDOSの免責を得ることはかなり困難です。 1つの解決策は、ユーザーにゼロ知識証明システムの下で活動を実行させることです。したがって、どのユーザーが詐欺者であると自信を持って、無視することに同意することができます。

どんな場合でも、あなたは仕事の証拠、忠実な結束、または他の希少なリソースの使用法を使ってアンチDOSメカニズムを補うことができます。しかし私は、実際の攻撃が発生したときにそれに適応するほうが良いと考えています。事前に、そしてすべてのユーザーに対して、単一のセキュリティメカニズムにコミットする必要はないからです。私はまた、悪い入力除外が始めるための十分な保護を提供すると信じています。

匿名性セットのサイズは、あなたが1回の取引で何人のパーティーに参加できるかによって制限されないのですか?[編集]

まあまあ。単一トランザクションの匿名セットのサイズは、明らかにパーティの数によって制限されます。トランザクションサイズの制限や障害(再試行)リスクは、実際に巨額の共同取引が賢明ではないことを意味します。しかし、これらのトランザクションは安価であるため、カスケードできるトランザクションの数に制限はありません。

特に、トランザクションごとにm人の参加者とのトランザクションを構築できる場合は、m * 3トランザクションのシーケンスを作成して、3段階の[2]を作成し、 m ^ 2の最終出力のどれかがm ^ 2元の入力のどれかに由来すると仮定します(例えば、32個の入力と32個の入力を持つ3つのステージを使用して、1024人のユーザーを合計96個のトランザクションに参加させることができます)。これにより、匿名性は任意のサイズに設定され、参加のみによって制限されます。

実際には、ほとんどのユーザーは、味方の友人(と泥棒)が財政的な生活に巻き込まれるのを防ぎ、アドレス再利用のような悪い習慣のために失ったプライバシーの一部を回復したいと考えています。これらのユーザーは1回のパスで満足している可能性があります。他の人たちは機敏に機能し、他の人は多くのパスと大きな匿名のセットを達成するために働くかもしれません。すべてが共存することができます。

これは[3]とどう違うのですか?[編集]

暗号とコンピュータサイエンスのオタクとして、私はZerocoinに非常に興奮しています。その背後にある技術は魅力的で重要です。しかし、Bitcoinのユーザーと開発者は、プライバシーを改善するためのソリューションとしてそれを宣伝することが私を失望させます。

ゼロコインにはいくつかの重大な制限があります。

  • これは最先端の暗号を使用しており、安全性に欠ける可能性があり、比較的少数の人が理解できる(例えばECDSAと比較して)。
  • ブロックチェーンを膨らませる大規模な(20kbyte)シグネチャを生成します(または外部ストレージに詰まっているとリスクを引き起こす)。
  • アキュムレータを開始するには信頼できる当事者が必要です。その当事者が不正行為をすると、彼らはコインを盗むことができます。 (おそらく最先端の暗号で修正可能です。)
  • 検証は非常に遅い(高速CPUで約2tx /秒の処理が可能)、各ノードがすべてのトランザクションを検証する必要があるため、Bitcoinでの展開の大きな障壁となります。
  • 大規模な取引と検証の遅れは、匿名セットのサイズを縮小し、潜在的にプライバシーを気にすることのない無作為のメンバーにZCの使用を不可能にするコストのかかる取引を意味します。
  • 永久に成長し、枝刈りのないアキュムレータを使用します。実際には、アキュムレータを定期的に切り替えてワーキングセットのサイズを減らし、匿名セットのサイズを小さくする必要があることを意味します。アキュムレータの水平線があらかじめ設定されていないと、大きなUTXOの問題を引き起こす可能性があります。

これらの事柄の中には、時間の経過とともにより良い数学とソフトウェアエンジニアリングによって大幅に改善されるものもあります。

しかし、とりわけ、ZerocoinはBitcoinプロトコルにソフトフォークを変更する必要があります。これはBitcoinをZerocoinプロトコルの特定のバージョンにコミットするフルノードすべてを採用する必要があります。このことは、おそらく数年以内に起こるとは考えられません。特に、コスト削減のためにアルゴリズムをさらに洗練する可能性が非常に高いことを考えると、いくつかの開発者とBitcoinの企業は、「匿名性」に過度に関連していることを非常に懸念しているため、政治的に論争になるだろう。ネットワーク全体のルールの変更は自殺条約のようなものであり、軽視するべきではありません。

'CoinJoinトランザクションは今日働いていて、彼らはBitcoinの初日以来働いています。これらは通常のトランザクションと区別がつかないため、他のBitcoinトランザクションがブロックされる可能性がある場合を除き、ブロックまたは禁止することはできません。

(別名:ZCは、DOS攻撃に対する耐性のある方法でユーザーを盲目的にする方法として、分散型CoinJoinのBitcoinに外部的に使用される可能性があります。これにより、ZCはコストをかけずに、または特定のプロトコル全体のネットワーク)。

私がZCをCoinJoinよりも上に作ることができる主要な議論は、暗号のオタク欲望を煽ることを超えて、より大きな匿名性セットを提供する可能性があるということです。しかし、ZCのパフォーマンスとスケーリングの限界、そしてCJとのソートネットワークトランザクションを構築する可能性、または1つのZCトランザクションに必要なストレージと処理に数百のCJトランザクションを使用する能力だけでは、実際にはより大きな匿名性を生み出す例えば。 1024人のユーザーに加わるには、32個の32-wayジョイント・トランザクションの完全な3段階カスケードの場合の3%未満と比較して、ZC償還には20k * 1024バイトのデータが含まれます。 ZCの匿名性セットは、より簡単に時間を越えることができます。

CoinJoinトランザクションの匿名セットは、一般ユーザーがカジュアルなプライバシーを取り戻すのに十分なほど簡単に大きくなる可能性があり、それが最も興味深いと思います。

これはCoinWitnessとどのように比較されますか?[編集]

CoinWitnessはZerocoinよりもロケット効率であり、プライバシーの向上の手段として多くの弱点を共有しています。新しい暗号、計算コスト、ソフトフォークを必要とし、今日入手できない巨大なポイント。これは単なるプライバシーツール以上のものとして使用される場合、スケーリングのメリットがあるかもしれません。しかし、実際にはこの問題は残酷で、いつでもすぐには利用できません。

いいですね!どこですか?[編集]

Theres the rub:これを行うための既製の、使いやすいソフトウェアは存在しません。 Bitcoin-QtとRaw Transaction APIを使用してトランザクションを手作業で行うことができますが、これを実用的な現実にするには、使いやすい自動ツールが必要です。

Lukeは、いくつかの[4]プロトコルをスケッチして、通常のBitcoinネットワーク上で共同トランザクションを確立できるようにしました。

Bitcoin-Qt RPCシステムは、そのようなシステムの参加者がサイドカーアプレットを作成するために必要なすべてのものを提供します(txoutsをロックアウトして、そこから消費されないようにする機能も含みます)。しかし、非常に多くのユーザーが今日集中管理されたWebwalletを使用してスパイすることができれば、最終的にこれらのツールのユーザーベースが制限されます。

個人的には、私の脳の能力の大半は、私にとってもっと重要な他のものに費やされています。私がBitcoinで余裕ができるのは、より多くのコアとセキュリティに費やされています。もし私が何らかの財布に関係することがあれば、すぐにコインセレクションのプライバシー行動を改善するでしょう...しかし、

これを構築する人は誰でも犯罪行為を可能にすると非難されますが、実際の犯罪者がこれを使用するかどうかは関係ありません。犯罪行為は見出しを売っています。 Bitcoinのコア開発者であることは、この種の告発、特に私が支払っていないリスクのための私のクォータのための私のクォータをすでに満たしています。 :)

実際の犯罪者は、CoinJoinを必要としません。たとえそれが普通のユーザーができないような方法でプライバシーを購入する余裕がありますが、それは単なる(収益性の高い)ビジネスの単なるコストです。

ジョー犯罪者は、新しいコインを入手するために120%PPS鉱業を購入したり、50%削減のために一連のセミ・シャム・ハイキャッシュフロー・ギャンブル事業を通じて金を稼ぐことができ、彼らは探し求め、これらの荒々しいサービス...ジョーとジェーンDoe?彼らの名前はblockchain.infoのネオンで上がっています。それは彼らにとって素晴らしいとは思われないかもしれませんが、それを修正するためのコストが高ければ、単に修正するコストは非常に具体的であり、コストまたはプライバシーの損失は投機的で遠いので、単純にはしません。ビットコインをあきらめて、ほとんど完全に私的なものに切り替える必要があるかもしれません:普通のユーザーは、彼らを助けることができるならば、効率的で安価なプライバシーを必要とします。

このようなツールを作ることは、多くのBitcoinビジネスの豊かで速い形にフィットしませんが、その重要性は自明であり、これの最も簡単なバージョンでは、非常に深い技術的魔法を必要としません。私は、人々のプライバシーを改善する "政治的"リスクは、あなたが慎重に検討すべき本当のものだと思いますが、これらの部分の周りには、むしろ、私は "汚れた豊かな"スレッドがコミュニティ活動に影響を与えるのに十分であると思っていましたが、おそらくこれがそうです。

関連項目[編集]

参考文献[編集]

<リファレンス> </リファレンス>