二重支出とは何ですか?

二重支出は、同じ資金が同じ期間に 2 回使用される可能性があるデジタル通貨システムでは潜在的な問題です。適切な対策がなければ、この問題に対処していないプロトコルはこの種のアクティビティに対して脆弱になります。ユーザーは自分の資金が他の場所で使用されていないことを確信できないだけです。

暗号空間では、特定のユニットの重複を制限することが最も重要です。アリスが 10 ユニットを受け取り、それを 10 回コピーして貼り付けて 100 ユニットを取得できたとしても、同じ 10 ユニットが同時にボリスとカティアに送信された場合、システム全体が機能しなくなります。したがって、デジタルマネーが機能するには、そのような可能性を制限するメカニズムを作成する必要があります。


二重支出を防ぐにはどうすればよいでしょうか?

一元化されたアプローチ

集中型のシステムは、分散型のシステムに比べて実装がはるかに簡単です。基本的に、システムを管理し、新しいユニットの発行と配布を制御する 1 つのエンティティまたは組織の存在が関係します。二重支出問題に対する一元的な解決策の好例は、David Chaum の eCash です。 

現金を模倣したデジタル資産(匿名でピアツーピアの交換が可能)をユーザーに発行するために、銀行はブラインド署名を使用することがあります。これは、暗号学者のデビッド・チャウムが1982年の論文「追跡不可能な支払いのためのブラインド署名」で説明したとおりです。

たとえば、ユーザー (デニスと呼びます) がデジタル通貨で 100 ドルを受け取りたい場合、まずそのことを銀行に通知する必要があります。口座に残高がある場合、乱数が 1 つ、または少額の場合は複数の乱数が生成されます。それぞれに 20 ドルの値が割り当てられた 5 つの数値が生成されるとします。銀行が通貨単位を追跡できないようにするために、デニスは乱数のそれぞれにブラインド要素を追加して乱数を隠しました。

次に、その情報を銀行に送信すると、銀行は彼の口座から 100 ドルを引き落とし、5 つの情報がそれぞれ 20 ドルと交換可能であることを確認するメッセージに署名します。これで、デニスは銀行が発行した資金を使用できるようになりました。彼はイリーナのレストランに行き、40ドルもする食べ物を買います。 

デニスは、小切手のデジタル通貨に関連付けられた乱数を使用することで、盲検化要因を取り除くことができます。この乱数は、各商品の一意の識別子 (シリアル番号と同様) として機能します。彼はそのうちの 2 つをイリーナに公開します。イリーナは、デニスが同じお金を他の場所で使えないようにするために、すぐに銀行でそれらを有効化する必要があります。銀行は署名を確認し、問題がなければイリーナさんの口座に 40 ドルを入金します。

有効化すると、使用済みの小切手は焼かれます。エリンが新しい残高を再度使いたい場合は、同じ方法で新しい小切手を取得する必要があります。

Chaum の eCash は個人の金融取引には便利かもしれませんが、銀行が中心的な障害点であるため、このアプローチはあまり信頼できません。発行された小切手自体には何の価値もありません。その価値は、小切手をドルに交換する銀行の意思によってのみ決定されるからです。同時に、顧客は銀行の言いなりになっており、お金を使うには銀行に依存しなければなりません。これがまさに、暗号通貨が解決しようとしている問題です。


分散型アプローチ

サードパーティの監視機関なしでエコシステム内で資金が二重に使われないようにすることは、より困難です。この場合、詐欺を防止し、すべてのユーザーが誠実に行動するよう奨励するために、同様に強力な参加者が特定のルールに同意する必要があります。

ビットコインのホワイトペーパーで提示された最大のイノベーションは、二重支出の問題の解決策でした。そのようには言及されていませんが、サトシが提案したデータ構造は現在ブロックチェーンとして広く知られています。

ブロックチェーンは、一連の固有のプロパティを持つデータベースです。ネットワーク参加者 (ノードと呼ばれます) は、特殊なソフトウェアを使用してデータベースのコピーを他の参加者と同期します。その結果、すべてのネットワーク参加者は、ジェネシスブロックから始めて各トランザクションの履歴を確認できます。ブロックチェーンを公開することで、二重支払い取引などの不正行為を簡単に発見、防止できます。

ユーザーがトランザクションをブロードキャストしても、トランザクションはすぐにブロックチェーンに追加されるわけではありません。まず、マイニングを通じてトランザクションをブロックに含める必要があります。受信者は、トランザクションを含むブロックをチェーンに追加した後でのみ転送が有効であるとみなします。そうしないと、送信者が同じコインを他の場所で使ってしまう可能性があるため、受信者は約束した資金を受け取れないリスクがあります。 

トランザクションが確認されると、所有権は新しいユーザーに譲渡され、ネットワーク全体でこれを確認できるため、コインを二重に使用することはできません。このため、多くの場合、支払いを受け入れる前に確認を数回受け取るまで待つことをお勧めします。後続のブロックごとに、チェーンの変更または書き換えに必要な作業量が増加します (51% 攻撃の場合と同様)。

もう一度レストランの例を見てみましょう。デニスはレストランに戻り、この店がサービスの支払いをビットコインで受け付けているという広告に気づきました。前回食べた料理が気に入ったので、また注文しました。 0.005 BTC かかります。 

イリーナは資金を送る先の公開アドレスを提供します。デニスはトランザクションをブロードキャストします。これは基本的に、デニスの 0.005 BTC がイリーナに送金されるという署名付きメッセージです。デニスの署名付き取引を提示された人は誰でも、彼が確かにコインの所有者であり、したがってコインを送信する権利を持っていたことを確認できます。

すでに述べたように、トランザクションは確認されたブロックに含まれている場合にのみ有効です。未確認のトランザクションを受け入れることは、前の例で銀行で小切手を適時に換金せずに 40 ドルの eCash を受け取るのとよく似ており、送信者は同じ金額を他の場所で使うことができます。したがって、イリーナはデニスの支払いを受け入れる前に、少なくとも 6 回のブロック確認(約 1 時間)を待つ必要があります。


ビットコインネットワークでの二重支出

ビットコインのメカニズムは、少なくともプロトコルが適切に機能している限り、二重支払い攻撃を防ぎます。つまり、誰かがブロック内のトランザクションの確認を待っている場合、送信者がトランザクションを取り消すのは簡単ではありません。これを達成するには、ブロックチェーンをリバースする必要がありますが、これには膨大な量のハッシュパワーが必要になります。

ただし、未確認の取引をターゲットにした二重支払い攻撃がいくつかあります。たとえば、低価格で購入する場合、売り手はトランザクションがブロックに含まれるまで待ちたくない場合があります。注文が殺到したファーストフード レストランも、購入ごとにこれほど長い処理時間がかかると適切に機能できなくなります。したがって、企業が即時支払いに依存している場合、二重支出に対して脆弱になります。誰かがハンバーガーを注文して代金を支払い、すぐに同じ資金を自分の住所に送金する可能性があります。より高い手数料がかかる新​​しいトランザクションが最初に確認され、その後、前のトランザクションの検証が中止される可能性が高くなります。

二重支出を実現するには、次の 3 つの一般的な方法があります。

  • 51% 攻撃は、エンティティまたは組織がネットワーク全体のハッシュレートの 50% 以上を制御できるようになり、トランザクションが削除されたり順序が変更されたりする場合に発生します。ビットコインの場合、このような攻撃は起こりそうにありませんが、他のブロックチェーン ネットワークに関しては発生する可能性があります。

  • 競合する 2 つのトランザクションが同じ手段を使用して同時にブロードキャストされ、そのうちの 1 つだけが確認された場合、競合攻撃が発生します。攻撃者の目的は、必要なトランザクションのみを確認することで検証を無効にすることです (たとえば、同じ資金を自分のアドレスに送信するなど)。このような攻撃の条件は、未確認の取引を通じて商品の代金を支払うことを売り手が許可することです。

  • フィニー攻撃は、攻撃者がトランザクションを即座にネットワークにブロードキャストせずに、トランザクションでブロックを事前にマイニングするときに発生します。代わりに、別のトランザクションの一部としてコインを再び使用し、その後でのみ前のブロックをブロードキャストし、売り手への送金をキャンセルします。フィニー攻撃には特定の一連のイベントが必要であり、受信者が未確認のトランザクションを受け入れるかどうかにも依存します。

ご覧のとおり、ブロックが確認されるまで待っている売り手は、二重支払いの被害者になるリスクが大幅に低くなります。


再開する

二重支出では、同じ金額を複数回支出することで、デジタル マネー システムを使用して経済的利益を得ることができます。この問題に対する適切な解決策がないため、この分野のさらなる進歩が妨げられています。

幸いなことに、ブラインド署名の出現により、集中型金融システムの問題の多くが解決されました。そして、Proof of Work メカニズムとブロックチェーン技術の構築により、強力な分散型通貨であるビットコインが誕生し、多くのユーザーが他の数千の暗号通貨プロジェクトを作成するきっかけを与えてきました。