二重支出とは何ですか?

二重支払いは、同じ資金が同時に 2 人の受取人に送られるデジタル キャッシュ システムで発生する可能性のある問題です。適切な対策がなければ、この問題を解決しないプロトコルは根本的に機能しなくなります。つまり、ユーザーは受け取った資金がすでに他の場所で使われていないかどうかを確認する方法がないのです。

デジタル マネーの場合、特定の単位が複製できないようにすることが最も重要です。アリスが 10 単位を受け取り、それを 10 回コピー アンド ペーストして 100 単位を所有しているとしたら、システム全体が崩壊します。同様に、アリスが同じ 10 単位をボブとキャロルの両方に同時に送信できる場合、このような計画は機能しません。したがって、デジタル マネーが機能するには、このような動作を防ぐメカニズムが必要です。


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

集中型アプローチ

集中型のルートは、分散型の代替手段よりも実装がかなり簡単です。通常、1 人の監督者がシステムを管理し、ユニットの発行と配布を制御します。二重支払い問題に対する集中型ソリューションの良い例は、David Chaum の eCash です。

銀行は、ユーザーに現金を模倣したデジタル資産(匿名およびピアツーピア交換が可能)を発行するために、ブラインド署名を使用できます。これは、暗号学者の David Chaum が 1982 年に発表した論文「Blind Signatures for Untraceable Payments」で詳しく説明されています。

このような状況では、ユーザー(ここではダンと呼ぶ)が 100 ドルのデジタル現金を受け取りたい場合、まず銀行に通知する必要があります。口座に残高があれば、ランダムな数字(少額の場合は複数)を生成します。たとえば、それぞれに 20 ドルの値が割り当てられる 5 つの数字を生成するとします。銀行が特定の単位を追跡できないように、ダンは各数字にブラインド ファクターを追加して、ランダムな数字を難読化します。

次に、このデータを銀行に渡すと、銀行は彼の口座から 100 ドルを引き落とし、5 つの情報のそれぞれが 20 ドルに引き換え可能であることを証明するメッセージに署名します。これで、ダンは銀行から発行された資金を使えるようになります。彼はエリンのレストランに行き、40 ドルの食事を購入します。

ダンは、各デジタル現金「紙幣」に関連付けられたランダムな番号を明らかにするためにブラインド要素を削除できます。この番号は、各ユニットの一意の識別子として機能します (シリアル番号のように)。ダンは、この 2 枚をエリンに見せます。エリンは、ダンが他の商店で使用できないように、すぐに銀行で引き換える必要があります。銀行は署名が有効かどうかを確認し、すべてが正しいと思われる場合は、エリンの口座に 40 ドルを入金します。

使用された紙幣は実質的に焼却されたため、エリンさんが新しい残高を同じように使いたい場合には、さらに紙幣を発行する必要があります。

ショーミアンの eCash 設定は、個人間の送金には価値があるかもしれない。しかし、銀行が中心的な障害点であるため、回復力に欠ける。発行された紙幣自体に価値はなく、その価値は銀行がドルに交換する意思があるかどうかにのみ左右される。顧客は銀行の言いなりであり、お金が機能するためには銀行の善意に頼らなければならない。これはまさに、暗号通貨が解決しようとしている問題である。


分散型アプローチ

監視者のいないエコシステムで資金が二重に使われないようにすることは、さらに困難です。同等の力を持つ参加者は、詐欺を防止し、すべてのユーザーが誠実に行動するよう促す一連のルールに沿って調整する必要があります。

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

ブロックチェーンは、実際にはいくつかのユニークな特性を持つデータベースです。ネットワークの参加者 (ノードと呼ばれる) は、データベースのコピーを他の参加者と同期できる特殊なソフトウェアを実行します。その結果、ネットワーク全体で、ジェネシス ブロックに遡るトランザクションの履歴を監査できます。ブロックチェーンを公開することで、二重支払いを試みるトランザクションなどの不正行為を簡単に検出して防止できます。

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

取引が確認されると、所有権が新しいユーザーに割り当てられるため、コインの二重使用は不可能となり、ネットワーク全体でこれを検証できます。このため、支払いを有効と認める前に、複数の確認を待つことを推奨する人が多くいます。後続のブロックごとに、チェーンを変更または書き換えるために必要な労力が大幅に増加します (51% 攻撃中に発生する可能性があります)。

レストランのシナリオをもう一度考えてみましょう。ダンはレストランに戻り、今度は窓に「Bitcoin Accepted Here」のステッカーが貼られているのに気づきました。前回食べた料理が気に入ったので、もう一度注文しました。料金は 0.005 BTC です。

エリンは、資金を送るべき公開アドレスをダンに提示します。ダンはトランザクションをブロードキャストします。これは基本的に、ダンが所有していた 0.005 BTC が現在エリンの所有であることを示す署名付きメッセージです。詳細には触れませんが、ダンの署名付きトランザクションを提示された人は誰でも、ダンが実際にコインを所有しており、したがってそれを送信する権限があったことを確認できます。

ただし、前述のように、トランザクションは確認されたブロックに含まれている場合にのみ有効です。未確認のトランザクションを受け入れることは、前の例の eCash の 40 ドルをすぐに銀行に換金せずに受け入れることとよく似ています。つまり、送信者が他の場所でそれを使用できるということです。したがって、Erin は Dan の支払いを受け入れる前に、少なくとも 6 ブロックの確認 (約 1 時間) を待つことをお勧めします。


ビットコインの二重支出

ビットコインは、少なくともプロトコルが想定どおりに使用されている限り、二重支払い攻撃を防ぐよう注意深く設計されています。つまり、個人がブロック内でトランザクションが確認されるのを待つ場合、送信者がそれを簡単に元に戻すことはできません。元に戻すには、ブロックチェーンを「反転」する必要があり、非現実的な量のハッシュパワーが必要になります。

しかし、未確認の取引を受け入れる当事者を狙った二重支払い攻撃もいくつかあります。たとえば、少額の購入の場合、商店は取引がブロックに含まれるまで待ちたくないかもしれません。忙しいファーストフード店は、ネットワークがすべての購入を処理するのを待つ余裕がないかもしれません。したがって、ビジネスが「即時」支払いを可能にすると、二重支払いの危険にさらされることになります。誰かがハンバーガーを注文し、支払いを済ませ、すぐに同じ金額を自分のアドレスに送金するかもしれません。手数料が高いと、この新しい取引が最初に確認される可能性が高く、以前の取引が無効になります。

二重支出を実行する一般的な方法は 3 つあります。

  • 51% 攻撃: 単一のエンティティまたは組織がハッシュ レートの 50% 以上を制御し、トランザクションの順序を除外または変更できる場合。このような攻撃は Bitcoin で発生する可能性は非常に低いですが、他のネットワークでは発生しています。

  • レース攻撃: 同じ資金を使用して、2 つの競合するトランザクションが連続してブロードキャストされますが、1 つのトランザクションのみが確認されます。攻撃者の目的は、自分に利益のあるトランザクションのみを検証して支払いを無効にすることです (たとえば、同じ資金を自分が管理するアドレスに送信するなど)。レース攻撃では、受信者は未確認のトランザクションを支払いとして受け入れる必要があります。

  • フィニー攻撃: 攻撃者は、1 つのトランザクションをブロックに事前マイニングしますが、すぐにネットワークにブロードキャストしません。代わりに、攻撃者は同じコインを別のトランザクションで使用し、その後で初めて以前にマイニングしたブロックをブロードキャストします。これにより、支払いが無効になる可能性があります。フィニー攻撃では、特定の一連のイベントが発生する必要があり、受信者が未確認のトランザクションを受け入れることも条件となります。

ご覧のとおり、ブロックの確認を待つ販売者は、二重支払いの被害者になるリスクを大幅に軽減します。


最後に

二重支払いにより、ユーザーは同じ資金を複数回使用して、電子マネー システムを悪用して金銭的利益を得ることができます。従来、この問題に対する適切な解決策がないため、この分野の進歩が妨げられてきました。

しかし幸運なことに、ブラインド署名の使用は、中央集権型の金融スキームに興味深い解決策を提案しました。その後、プルーフ・オブ・ワークのメカニズムとブロックチェーン技術の創出により、分散型通貨の強力な形態としてビットコインが誕生し、それが他の何千もの暗号通貨プロジェクトに影響を与えました。