ビットコインの二重支払いとは?51%攻撃は実現可能なのか?

▼おすすめの取引所ランキング

二重支払いとは、ある人へ支払いをした後に、別の人に同じ支払いを行うことです。

ビットコインのような中央集権的なサーバがないP2P型の分散ネットワークでは、この二重支払いを防ぐことが大きな課題でした。

二重支払いを防ぐのは何故難しいのか

中央集権的なシステムでは、ある人がお金を誰に払ったかどうかは時系列順にサーバが管理します。

例えば、AさんがBさんへ100円送ったとすると、サーバ内で管理されているデータベース上のAさんの残高が100円減り、Bさんの残高が100円増えます。

この取引履歴をサーバがまとめて管理することで、AさんがBさんへ100円送った後に、同じ100円をCさんに送ることは不可能になります。

しかしながら、ビットコインのような分散型のネットワークでは、中央集権的に取引履歴をまとめて管理するサーバが存在しないため、AさんがBさんへ100円を送金した後、直ちにCさんにも100円を送金した場合、不正を判断することができません。

ビットコインはどのように二重支払いを防ぐのか

2008年に暗号学系のメーリングリストにsatoshi nakamotoと名乗る匿名の人物が”Bitcoin: A Peer-to-Peer Electronic Cash System“という論文でこの二重支払い問題を解決する新しいデジタル通貨として紹介されました。

ビットコインは、分散型の台帳を参加者全員で共有し、取引履歴を互いに承認し合うことで、中央集権的な管理者をおかずに二重支払いの禁止に成功しました。

ただし、ビットコインのネットワークでは定期的(10分に一度)に全員で正しい取引履歴を承認するマイニングと呼ばれる作業があります。マイニングではあえて取引履歴を計算機コストの掛かる難しい形式に変換します。

このあえて難しい形式に取引履歴を加工する作業をProof of Workと呼びます。ビットコインネットワークでは、Proof of Workによって最も長く・計算量の注ぎ込まれた取引履歴が正しいものとして扱われます。

この承認作業は実は後から覆る可能性がありますが、長くて計算量の注ぎ込まれた取引履歴を作成することは大変むずかしい作業であるため、大量の計算機リソースを要します。

51%攻撃による二重支払い攻撃の可能性

ビットコインのネットワークでは、51%攻撃と呼ばれる方法を使うと二重支払い攻撃を行うことが実は可能です。

Aさんにビットコインを送金した後に、大量の計算機リソースを投入して長いブロックチェーンを作成し、取引履歴を改ざんすることで、Aさんへの支払いをなかったことにすることが論理上は可能なのです。

ただし、この攻撃を実現するには、ビットコインネットワークに参加している全ての計算機の持つ計算機リソースの50%以上の計算量を必要とします。

過半数の計算機リソースが必要なことにちなんで、このような二重支払いの方法を51%攻撃と呼びます。

では、51%攻撃は実現可能なのでしょうか?結論から言えば、現在のビットコインのネットワークでは限りなく困難です。

ビットコインネットワークに参加している計算機リソースは、既に一国の電力に相当する規模になっているとも言われており、その過半数を独占するようなパワーを集めることは困難です。

仮にできたとしても、それによって得られる利益とかけるコストのバランスが取れず、採算が会いません。

このようにしてビットコインのネットワークは安全で自立的に運営されているのです。

マイニングプールが結託すれば51%攻撃は可能?

現在ビットコインのマイニングは、個々人の持つ計算機リソースをまとめて報酬を平等に分配する仕組みでマイニングプールや企業の運営する大規模なマイニング施設が主流になってきています。

このサイトを見ればわかるように実は一部の企業やプールにビットコインのネットワークの計算機リソースは偏っているのです。

これらの企業が結託すれば二重支払いを実行することはできるのではないかという指摘は昔からあります。

しかしながら、もしも二重支払いが可能だったとしても、二重支払いによって得られる利益よりもかかるリソースの方が大きいため、実行に移す意味は殆ど無いでしょう。

事実ビットコインのネットワークは稼働から約9年間、攻撃に負けることなく常に稼働し続けています。

まとめ

  • 二重支払いを防ぐことは分散型のネットワークでは難しい
  • ビットコインはProof of Workとマイニングを組み合わせることでこれを解決
  • 51%攻撃という攻撃方法が考えられるが実現性に乏しいし、仮に実現できたとしても採算が合わない

いかがでしたでしょうか。ビットコインの技術的な強みは、分散ネットワーク上で二重支払いを防ぐ仕組みを構築したところにあるといっても過言ではありません。少し難しかったかもしれませんが非常に大事な概念ですので理解しておいて損はないです。


ビットコイン (bitcoin) 用語解説