ダブルスペンディング(二重支払い)とは、デジタル通貨において同じ料金を2度支払ってしまうリスクのことです。 フィアット通貨と共に、銀行はデジタルでの資金移動の門番としての役割を果たします。銀行口座を保有する人が入出金を行うごとに、銀行はそれに応じて残高を更新します。実際には、銀行は全てのユーザーの資金の元帳を保持しています。
インターネットが発展し、様々なイノベーターが銀行のいらないオンライン決済の仕組みを生み出そうとしている中で、彼らは常に同じ課題に直面してきました。デジタル通貨は画像やPDF同様、単なるデジタルファイルに過ぎないということです。誰かが誰かに送金をデジタルで行う場合、そのどちらかが単にファイルをコピーし2度同じ支払いを行うことをどのように防ぐのでしょうか?
サトシ・ナカモトがビットコインを開発した時、初めてこのダブルスペンディングの問題に対する有効なソリューションが考えられました。ビットコインが運用されるようになってから12年以上が経ちましたが、今のところダブルスペンディングに関する事例はありません。
明確にするために、大文字の「B」でビットコインを使用する場合、それはビットコインブロックチェーンまたはマイナーのネットワークを指します。 小文字の「b」でビットコインを使用する場合、それは通貨を意味します。
ビットコインはどのようにダブルスペンディングを防ぐのか?
ビットコインのブロックチェーンは循環中のビットコインも含めた全ての取引を記録している公的かつ透明性のある台帳です。各取引が正当である、つまり取引を行った人がその価値を補うのに十分な残高を講座に残していることを認めたノードの分散型ネットワークによって認証されているため、それぞれの取引は有効であると確認できます。一度ビットコインが新たなユーザの手に渡ると、元のユーザーの手元に戻ることはありません。
過去の取引を遡ることで、誰でも各口座の残高を確認することができます。よって、誰もが常に確認をできるのでダブルスペンディングが起こる可能性はほぼありません。
ダブルスペンディング(二重支払いとは)
アリスがボブに彼の店で何かを購入するために0.1BTC送ったとしよう。それぞれの取引はビットコインのブロックチェーンに含まれる前の待機場であるmempoolに保存されます。マイナーは1セットのトランザクションをmempoolから選び、ネットワーク上の他のマイナーとプルーフ・オブ・ワークの問題を解決する競争をします。
マイナーはアリスの取引を選択し、プルーフ・オブ・ワークの問題を解決する最初のマイナーとなります。マイナー達は、現在のブロックチェーンの状態を元に取引の正当性を確認したネットワーク上の他のマイナー達にブロックを散布します。そした、マイナー達は取引のブロックをブロックチェーンに追加し、マイニングの報酬としてビットコインを受け取ります。一度アリスの取引がビットコインのブロックチェーンに取り込まれると、全ての参加者に公開されます。
ダブルスペンディング攻撃の種類
では、アリスが0.1BTCをダブルスペンディングしようとしている悪質なユーザーだとしたらどうでしょう?彼女はどのようにしてそれを成し遂げるのでしょうか?彼女がボブからの負債を免れる方法は3つ考えられます。ただし、それらの手法は全て簡単でも確実でもありません。
51%攻撃
これは誰かがネットワークの全体のハッシュパワーの50%以上をコントロールしている状況のことを指します。もしアリスがこの状況を成し遂げた時、彼女はシンプルに自分の取引履歴を削除することがき、ビットコインの大腸を見る限りでは0.1BTCは彼女の口座に残り続けます。ビットコインのネットワークは膨大なハッシュパワーによって分散化が強化されているため、このタイプの攻撃が起こる可能性はありません。しかし、イーサリアムクラシックなどの他のネットワーク上では起こります。
レース攻撃
ボブに0.1BTCを送金した後、アリスは即座に彼女の別のアドレスに他の取引として0.1BTCを送金します。彼女はボブに負債が解決したことを伝えルト同時に、2つ目の取引が選択、検証されることで1回目の取引が無効になることを狙いとしています。ボブが彼の資金を取り戻すことはできません。彼が取引を承認しアリスを店から帰していたと仮定すると、彼は資金を回収することができないでしょう
フィニーアタック
アリスは0.1BTCを送金した取引を彼女の別のアドレスにプレマイニングし、ネットワーク上に公開しなかったとしましょう。そして彼女はボブに0.1BTCを送金しますが、すぐに最初の取引を認証しているプレマイニング済みのブロックを公開します。ネットワークは彼女がボブに送った資金を拒否します。これもまた、もしボブがすでにアリスを店から帰していたら彼は資金を回収することができません。
後半の2つのケースは、ボブは取引がマイナーに承認されることを待つことで酷く信頼性を失う可能性があります。1つ目のケースは、時間が経ち多くのブロックが承認されればされるほど、アリスが51%攻撃を実行するのは難しくなります。
ビットコインの白書で、中本聡氏は、6ブロック後に51%の攻撃を成功させることは事実上不可能であると計算しました。 したがって、ボブが約6ブロック待つ準備ができていれば、アリスが自分の資金を二重に使うことはないので安心できます。
2021年1月22日にビットコインの二重支払いはあったのか?
2021年1月22日、BitMEXの「フォークモニター」機能は、一見すると二重支払いが発生したことを示しているように見えました。 BitMEXは、発生したと思われたことについてツイートし、暗号通貨の報道機関はすぐにそのニュースに飛びつきました。 21ドル相当のビットコインの見かけの二重支払いに基づいて、BTCの価格は過去20日間で初めて30,000ドルを下回りました。
一体何があったのでしょうか? 残念ながら、それはあまりにも多くの人々が、何がビットコインの運営において正常な出来事であるかについて興奮してしまったということでした。ユーザーが非常に低い料金で取引を送信しようとしましたが、これは数日間mempoolでキューに入れられていました。これは、マイナーがブロックに含めるより収益性の高い取引を選択していたためと考えられます。
その後、送信者はトランザクションを再度送信しようとしましたが、おそらく鉱夫に引き取られるようにするために、より高い料金がかかりました。 それがうまくいかなかったとき、彼らはさらに高い料金で再試行しました。 そのため、3つのトランザクションがmempoolでキューに入れられました。
最終的に、最初と最後の取引は2つの別々のマイニングプールによって取得されました。 時折、2人のマイナーが同時にプルーフオブワークパズルを解き、マイナーがマイニングを継続したいバージョンを決定しなければならないブロックチェーンの2つの別々のバージョンになります。 ビットコインネットワークは多くのマイナーで構成されているため、これはかなり一般的です。 彼らは通常、最も重いブロックでマイニングを継続することを選択します。これがこの場合に起こったことです。 ブロックの1つは「失効」として拒否され、2番目の取引は、マイナーが無効であることに気付いた後は、どのブロックにも含まれませんでした。
まとめ
これまでに示したように、二重支払い攻撃は不可能ではありませんが、ビットコインブロックチェーンは、ネットワーク上に十分な数のマイナーが存在する場合、それが発生しないように設計されています。 一般に、ブロックチェーンネットワークのセキュリティは分散化の程度に依存し、暗号通貨コミュニティがブロックチェーンを管理する最も重要な原則の1つとして分散化を高く評価する傾向がある理由を説明しています。