二重支出とは何ですか?
同じ資金が同時に 2 人の受取人に送金される電子マネー システムでは、二重支出が潜在的な問題となります。適切な対策がない場合、問題に対処しないプロトコルは基本的に失敗する運命にあります。ユーザーは、受け取った資金が他の場所ですでに使用されていないことを確認する方法がありません。
電子マネーに関しては、特定の単位が複製できないようにすることが不可欠です。アリスが 10 ユニットを受け取り、それを 10 回コピーして貼り付け、最終的に 100 ユニットになると、システム全体が危険にさらされてしまいます。同様に、同じ 10 ユニットをボブとキャロルに同時に送信できる場合、そのようなシステムは機能しません。デジタルマネーが機能するには、この行為を防止するメカニズムが必要です。
二重支出を避けるにはどうすればよいでしょうか?
集中型アプローチ
集中型のアプローチは、分散型のアプローチよりも実装がかなり簡単です。これには通常、システムを管理し、ユニットの発行と配布を制御するスーパーバイザーが関与します。二重支出問題に対する一元的な解決策の好例は、David Chaum の eCash です。
お金を模倣したデジタル資産(匿名のピアツーピア交換を行うために使用できる)をユーザーに発行するために、銀行はブラインド署名を使用できます。これについては、暗号学者のデビッド・チャウムが 1982 年の論文「追跡できない支払いのためのブラインド署名」で詳しく説明しています。
このような状況において、ユーザー (ダンと呼びます) が 100 ドルをデジタル マネーで受け取りたい場合は、まず銀行に通知する必要があります。アカウントに残高がある場合は、乱数 (少額の場合は複数) を生成します。彼が 5 つの数字を生成し、それぞれに 20 ドルの値が割り当てられているとします。銀行が特定のユニットを発見できないようにするために、ダンは各乱数にブラインド要素を追加して乱数をスクランブルします。
次に、このデータを銀行に渡すと、銀行は彼の口座から 100 ドルを引き落とし、5 枚のコインがそれぞれ 20 ドルと交換可能であることを証明するメッセージに署名します。ダンは銀行が発行した資金を使用できるようになりました。彼はエリンのレストランに行き、40 ドルの食事を買います。
ダンは、ブラインド要素を削除して、各電子マネーの「紙幣」に関連付けられた乱数を公開できます。乱数は、各ユニットの一意の識別子として機能します (シリアル番号とよく似ています)。彼は 2 つをエリンに明らかにします。ダンが他の商人でそれらを使用するのを防ぐために、エリンはすぐに銀行と交換しなければなりません。銀行は署名が有効であることを確認し、すべてが正しければ、エリンの口座に 40 ドルを入金します。
使用済みのチケットは基本的に役に立たないため、エリンが新しい残高を同じように使いたい場合は、さらにチケットを発行する必要があります。
Chaumian の eCash システムは個人的な送金に役立つ可能性があります。しかし、銀行は失敗の中心点であるため、回復力では失敗します。発行された紙幣自体には何の価値もありません。その価値は単に銀行がそれをドルに交換する意欲によってもたらされるからです。顧客は銀行のなすがままであり、お金が機能するためには銀行の善意に頼らなければなりません。これはまさに暗号通貨が解決したい問題です。
分散型アプローチ
監督者のいないエコシステム内で資金が二度使われないようにすることはさらに困難です。同様に強力な参加者は、詐欺を防止し、すべてのユーザーが誠実に行動するよう奨励する一連のルールを中心に調整する必要があります。
ビットコインのホワイトペーパーで提示された最大のイノベーションは、二重支出問題の解決策でした。そのようには言及されていませんが、サトシは現在ブロックチェーンとして知られているデータ構造を提案しました。
ブロックチェーンは実際には、特定の固有の特性を備えた単なるデータベースです。ネットワーク参加者 (ノードと呼ばれる) は特殊なソフトウェアを実行し、データベースのコピーをピアと同期できるようにします。その結果、ネットワーク全体がトランザクション履歴をチェックし、ジェネシスブロックまで追跡できるようになります。ブロックチェーンは公的に利用できるため、二重支払いを試みる取引などの不正行為を簡単に検出して防止できます。
ユーザーがトランザクションをブロードキャストすると、トランザクションはすぐにブロックチェーンに追加されるのではなく、まずマイニングを通じてブロックに含められる必要があります。したがって、受信者は、ブロックがチェーンに追加された後にのみトランザクションが有効であるとみなすべきです。そうしないと、送信者が同じユニットを他の場所で費やす可能性があるため、資金を失う危険があります。
トランザクションが確認されると、所有権が新しいユーザーに割り当てられ、ネットワーク全体でこれを確認できるため、ユニットを 2 回使用することはできません。このため、多くの人は、支払いが有効であると判断する前に、数回確認を待つことを推奨しています。後続のブロックごとに、文字列の変更または書き換えに必要な労力が大幅に増加します (これは 51% 攻撃で発生する可能性があります)。
レストランのシナリオに戻りましょう。ダンがレストランに戻ると、今度は窓に Bitcoin Accepted のステッカーが貼られています。前回食べた料理がとても美味しかったので、また注文しました。それには 0.005 BTC かかります。
エリンは資金の送付先となる公開住所を彼に示しました。ダンはトランザクションをブロードキャストします。これは本質的に、ダンが所有していた 0.005 BTC が現在はエリンのものであることを示す署名付きメッセージです。あまり詳細を知らなくても、ダンの署名付き取引を提示された人は誰でも、彼が実際に資金を所有しており、したがって資金を送金する権限を持っていたことを確認できます。
ただし、前述したように、トランザクションは確認されたブロックに含まれている場合にのみ有効です。未確認のトランザクションを受け入れることは、前の例で示した 40 ドルの eCash を受け入れるのと似ていますが、銀行ですぐに現金化せずに、送信者はその間に他の場所でお金を使うことができます。したがって、Erin は Dan からの支払いを受け入れる前に少なくとも 6 ブロック確認 (約 1 時間) 待つことをお勧めします。
二重支出とビットコイン
ビットコインは、少なくともプロトコルが意図したとおりに使用されている場合には、二重支払い攻撃を防ぐように慎重に設計されています。つまり、ユーザーがブロック内でトランザクションが確認されるのを待っている場合、送信者がトランザクションをキャンセルする簡単な方法はありません。これを行うには、ブロックチェーンを「反転」する必要がありますが、これには非現実的な量のハッシュパワーが必要です。
ただし、少数の二重支払い攻撃は、未確認の取引を受け入れる当事者を標的としています。たとえば、低額の購入の場合、トレーダーはトランザクションがブロックに含まれるまで待ちたくない場合があります。忙しいファストフード レストランでは、おそらくネットワークがすべての購入を処理するのを待つ余裕はありません。したがって、企業が「即時」支払いを許可すると、二重支出が発生する可能性があります。誰かがハンバーガーを注文して代金を支払い、すぐに同じ資金を自分の住所に送金することができます。手数料が高くなると、この新しいトランザクションが最初に確認され、前のトランザクションが無効になるリスクがあります。
二重支出には 3 つの一般的な方法があります。
51% 攻撃: 単一のエンティティまたは組織がハッシュ レートの 50% 以上を制御し、トランザクションを除外したり順序を変更したりできるようになります。このような攻撃がビットコインに対して発生する可能性は非常に低いですが、他のネットワークでは発生しています。
人種攻撃: 同じ資金を使用して 2 つの矛盾するトランザクションが連続してブロードキャストされますが、確認されたトランザクションは 1 つだけです。攻撃者の目標は、攻撃者に利益をもたらす取引 (たとえば、攻撃者が管理するアドレスに同じ資金を送信する) のみを検証することで支払いを無効にすることです。人種攻撃は、受信者に未確認のトランザクションを支払いとして受け入れることを強制します。
フィニー攻撃: 攻撃者は、トランザクションをすぐにネットワークにブロードキャストせずに、ブロック内でトランザクションを事前に準備します。代わりに、彼は同じコインを別のトランザクションで使用し、以前にマイニングしたブロックのみをブロードキャストするため、支払いが無効になる可能性があります。フィニー攻撃には特定の一連のイベントが必要であり、受信者が未確認のトランザクションを受け入れることにも影響を受けます。
ご覧のとおり、ブロックの確認を待つ販売者は二重支払いの被害者になる可能性を大幅に減らします。
結論としては
二重支払いにより、ユーザーは同じ資金を複数回使用して、自分の目的のために電子マネー システムを操作することができます。従来、この問題に対する適切な解決策がなかったため、さらなる進歩が妨げられてきました。
しかし幸いなことに、ブラインド署名の使用は、集中型金融システムにとって魅力的なソリューションを提供します。その後、プルーフ・オブ・ワークのメカニズムとブロックチェーン技術の創設により、分散型通貨の一種であるビットコインが誕生し、それが他の何千もの暗号通貨プロジェクトに影響を与えました。

