仮想通貨の二重送金(二重支払い)問題って何?|DApps(ブロックチェーンを活用したアプリケーション)のことなら

TOP  コラム  仮想通貨の二重送金(二重支払い)問題って何?

仮想通貨の二重送金(二重支払い)問題って何?

2019.02.12

コラム

仮想通貨の二重送金(二重支払い)問題って何?

仮想通貨における期待と課題
近年、ブロックチェーンを基盤技術とする仮想通貨が大きな注目の的となっています。不正流出事件など、マイナス面で取り上げられるケースも多くなっていますが、その法定通貨にはない運用方法による利便性や独立的透明性、独自経済圏の創出を通じた社会問題解決の可能性など、メリットと期待される面もなお多く、改善を経た今後の発展が望まれるでしょう。

仮想通貨に関心をもっている方や運用を始めている方ならば、「二重送金(二重支払い・ダブルスペント)問題」というワードを耳にしたこともあるかもしれません。この問題は非常に大きな課題といえる点で、基本的には対策がとられていますが、より確実に、適正に解消されなければ、通貨としての信頼性と価値を大幅に失いかねない深刻な事態に陥ってしまいます。

今回は二重送金問題とは何か、このワードに触れるのが初めてという方にも理解できるよう、基本から解説していきます。

同じコインが2回使えてしまう??
二重送金とは、その名の通り同じ仮想通貨を二重に送金取引で用いてしまうこと、すでに使われたはずのコインを再び使うことです。もしこれが可能となれば、1つの100円コインで200円分の支払いに使用することができてしまいます。

もっといえば、100円のコインを相手に支払う取引と、自分に支払う取引の2回で使うかたちにすることで、永遠に価値の減らないコイン、お金を生み出し続けるコインを持てることにもなってしまうでしょう。こうした事態が参加者らの知るところとなって広まれば、誰もがそのコインの価値を認めなくなるのは当然です。

一部の人間だけが手法を知り得て実行可能な状態があれば深刻な不正、ネットワークに広く知られればコイン価値の喪失によるシステムそのものの崩壊となるもの、それが二重送金の問題としてあるのです。

仮想通貨の場合、価値はデジタルデータで完全に表現されるものであるため、物理的な紙幣や硬貨と異なり、コピーが容易であることなどから、本質的にこうした二重送金(二重支払い)を起こさせやすいといえます。よってどのようなときに発生し、それをどう防ぐか、その仕組みづくりが重要になります。

ビットコインにみる発生と対策
仮想通貨のトランザクションは、送金元が生成し、自らの秘密鍵で電子署名を行って投函しただけでは、まだ確実な取引として成立していません。マイナーによる検証、ブロック生成でどのブロックに帰属するかが決定し、ブロックチェーンに記録されて未承認から承認となり、確かさが増していくことで正式に成立となります。

電子署名の仕組みにより、他者によるコインの不正利用は防げますが、この未承認から承認となるまでのタイムラグがある間に、秘密鍵を持っている本人が二重送金を行うことは防げません。ブロックチェーンに記録される前のタイミングで、再びトランザクションを生成、送信すればコインを減らさない、2回使用の支払いができてしまうのです。

そこで、こうした行為を防ぐ工夫が必要となります。代表的な例として、ビットコインでみてみましょう。ビットコインの場合、ブロックチェーンの特性とPoW(プルーフ・オブ・ワーク)の導入でこれを防いでいます。

まずブロックチェーンの場合、全ノードにデータが共有されており、皆で正しさを保証し合っている、監視し合っている状況であるため、二重送金による不正が発生してもすぐに発見され、無効データとして破棄されるようになっています。

またPoWは、より多くの計算リソースを注ぎ込み、いち早くブロックを生成、チェーンにつないでいく条件に適した特別なパラメータ値を見出した人(マイナー)に報酬を与える検証・承認の仕組みであり、チェーンが分岐しても、より多くの計算力で正しいと認められるメインチェーンのみを生き残らせ、そちらについたマイナーしか報酬を得られないようになっています。

これにより、二重送金のような問題のあるトランザクションはブロック生成時点ではじかれるか、仮にいったんブロックチェーンにのっても分岐した孤立ブロックとなり、後続が伸び悩んで数ブロック後には自動消去されて、全体はメインチェーンに収束するか、いずれかになります。こうして二重送金が成立する可能性はきわめて低いものとなるのです。

ただし、二重送金のトランザクション生成自体は存在でき、その後に無効処理されるという解決方法ですから、取引の観点では受取手にとって着金がキャンセルされるものとなるため、トラブルに発展するケースもあります。トランザクションの段階として、未承認か承認か、ビットコインならば推奨される6ブロックの承認が満たされているか、きちんと確認しながら取引を行うことが重要です。

トランザクション展性と51%攻撃
このほか、悪意ある攻撃により二重送金が起きる可能性も指摘されています。ひとつは「トランザクション展性」の脆弱性をついたもので、ここではデータ識別用のトランザクションIDが悪用されます。トランザクションIDはハッシュで与えられるものですが、仕様上これを改ざんすることが可能で、送金額やアドレスに対しては改ざん不可能性が引き続き機能していながら、実際には同一取引の複数作成が可能になり、それが通ってしまうことがあり得るという問題です。

これに対しては、Segwitと呼ばれる新技術が対策として有効で、これによりトランザクションIDの書き換えが防がれ、リスクが低下するとみられています。

もうひとつは「51%攻撃」と呼ばれているもので、マイナーらの計算リソースのうち、過半にあたる51%を手にすれば不正も通ってしまうという問題です。

PoWは報酬を組み込んだ仕組みにより、悪意のあるノードが正しい行いをするノードを上回ることはないこと、ネットワーク全体の過半に及ぶような膨大な計算リソースを手に入れるなどおよそ現実的でないことをベースにしており、これが崩れれば、確かに不正なチェーンがメインチェーンになり得、不正データを通すことができてしまいます。

しかし、やはりそれは理論上であり、実際にはほぼ起こらないと考えられます。組織的に51%攻撃を仕掛け、成功したとしても、二重送金の発生でコインの価値自体が大きく暴落してしまいますから、かかる膨大なコストに対し、得られるものは非常に少なく、攻撃するメリットがありません。よってほぼリスクは無視できると考えられています。

いかがでしたか。二重送金問題の概要が理解できたでしょうか。トランザクションのライフサイクルとあわせて学ぶようにすると、より理解しやすく、ブロックチェーン全体の理解も深まると思います。安全な取引のためにも、ぜひ正しい知識を増やしていきましょう。

▼DApps総研
https://dapps-info.com/

(画像は写真素材 足成より)