デジタル通貨における最も古くからある問題の一つは、一見単純そうに見えるが、実はそうではない。それは、同じ硬貨を二度使うことをどうやって防ぐか、という問題だ。現金の場合、答えは明白だ。紙幣を手渡せば、それはもう存在しない。しかし、デジタル通貨は違う。デジタル通貨はデータであり、データは複製できる。この問題に対する確固たる解決策がなければ、いかなるデジタル通貨も真の通貨として機能することはできないだろう。
二重支払い問題を解決したことが、2008年のビットコインのホワイトペーパーを真に革新的なものにしたのです。サトシ・ナカモトは単に新しい通貨を説明しただけではありません。彼は、数十年にわたりデジタル通貨の開発を停滞させてきたコンピュータサイエンス上の問題に対する実用的な解決策を提案したのです。このガイドでは、二重支払いとは何か、どのように発生するのか、それを悪用する主要な攻撃の種類、そして現代のブロックチェーンネットワークがそれを防ぐために使用するあらゆる技術について解説します。
二重支出とは何ですか?
二重支払いは、同じデジタル通貨を複数回使用することを指します。従来の金融システムでは、この問題はほとんど発生しません。現金を店に渡すと、その紙幣の所有権が移転し、同時に2か所に存在することはありません。銀行振込で支払う場合も、中央機関が台帳を更新し、受取人の口座に入金される前に、あなたの口座から引き落としが行われます。
デジタル通貨は物理的な物体とは異なり、ファイルやコードで構成されているため、仕組みが異なります。適切な安全対策が講じられていない場合、悪意のあるユーザーは理論的には取引をコピーして複数の受信者に同時に送信し、一度の支払いで両方から商品やサービスを受け取ろうとする可能性があります。
実際には、その影響は深刻である。
信頼の喪失:二重支払い攻撃は仮想通貨ネットワークへの信頼を損ない、ユーザー、加盟店、投資家が参加をためらう原因となる可能性がある。
経済的損失:後日取り消された支払いを受け入れた加盟店は、商品と資金の両方を失う。不正な入金を処理した取引所は、直接的な経済的損害を被る。
ネットワークの不安定性:小規模ネットワークに対する度重なる攻撃により、価格の暴落、取引所の上場廃止、そして場合によってはプロジェクトの事実上の終焉が引き起こされている。
二重支払いを防止することは、あらゆる仮想通貨にとって最も基本的なセキュリティ要件です。取引速度、手数料体系、スマートコントラクトなど、その他のすべての要素は、まずこの問題を確実に解決することから派生します。
二重支出はどのようにして起こるのか
二重支払いは、取引がブロードキャストされてから、最終的な取引とみなされるのに十分な承認を得るまでの時間差を悪用する。このわずかな時間差こそが、攻撃対象領域となる。
最も一般的なシナリオは次のとおりです。
同時発生する競合トランザクション:悪意のあるユーザーが、同じ資金を支出する2つのトランザクションを、ネットワークの異なる場所に同時に送信します。どちらのトランザクションも、ノードがどちらが有効かを判断する前に、短時間伝播します。
取引確認前の取引取り消し:ユーザーが支払いを開始し、取引が確認される前に商品やサービスを受け取った後、資金を取り戻すために矛盾する取引をブロードキャストする。
ハッシュパワーの操作:プルーフ・オブ・ワークネットワークでは、十分な計算能力を持つマイナーが、取り消したいトランザクションを含まない競合するブロックチェーンを密かに構築し、そのブロックチェーンを公開して正当なトランザクション履歴を上書きすることができます。
二重支出攻撃の種類
プラットフォーム運営者と個々のユーザーの両方にとって、具体的な攻撃手法を理解することは重要です。攻撃の種類ごとに、必要な要件、リスクプロファイル、対策が異なります。
レースアタック
レースアタックは、未承認の取引を受け入れる業者や個人を標的とする攻撃です。攻撃者は、被害者への送金と、資金を自身のウォレットに返金する送金という、相反する2つの取引を同時に送信します。攻撃者は、返金取引が先にマイナーに到達し、ブロックに承認されることで、被害者への支払いが無効になることを期待します。
被害者がリスクにさらされるのは、少なくとも1回のブロック確認を待たずに商品やサービスをリリースした場合のみです。対策は簡単です。重要な取引においては、確認回数がゼロの決済は決して受け入れないことです。
攻撃者は、競争で優位に立つために、被害者のノードに直接接続を確立することがよくあります。受信ノード接続を無効にすることで、この手法による攻撃リスクを軽減できます。
フィニー攻撃
ビットコイン開発者のハル・フィニー氏が最初に提唱したフィニー攻撃は、より高度な技術を要し、攻撃者はアクティブなマイナーである必要があります。攻撃者は、自身のウォレットから自身に資金を送金するトランザクションを含むブロックを密かにマイニングしますが、そのブロックをすぐに公開しません。そして、その資金を使って被害者に支払います。被害者がトランザクションが承認される前に商品を発送した場合、攻撃者は密かにマイニングしたブロックを公開し、支払いを無効にして資金を返還します。
フィニー攻撃は、どんな対策を講じても完全に排除することはできませんが、攻撃者は正直にブロードキャストすることで得られたはずのブロック報酬を犠牲にする必要があります。高価な商品やサービスをリリースする前に最低6回のブロック承認を待つことで、フィニー攻撃は事実上不可能になります。
ベクター76アタック
Vector76攻撃(ワンコンファメーション攻撃とも呼ばれる)は、レース攻撃とフィニー攻撃の両方の要素を組み合わせた攻撃手法です。攻撃者は、被害者のノードのみに接続されたノードと、より広範なネットワークに接続されたノードの2つを作成します。攻撃者は、取引所または販売業者から高額取引を含むブロックを事前にマイニングし、それをネットワーク全体にブロードキャストするのではなく、被害者のノードに直接送信します。被害者は1つの承認を確認し、商品を解放します。同時に、攻撃者は競合する低額取引をメインネットワークにブロードキャストし、最終的にメインネットワークが勝利して元の支払いを無効にします。
この攻撃は、たとえ承認が1回しか得られていないトランザクションであっても、ネットワークの過半数によってブロックが承認されなければ、取り消されてしまう可能性があるという事実を悪用する。現実的な防御策としては、複数回の承認を要求し、未知の送信元からのノード接続の受け入れを無効にすることが挙げられる。
51%攻撃
51%攻撃(多数決攻撃とも呼ばれる)は、二重支払いの最もよく知られ、最も恐れられている形態です。単一の主体がネットワーク全体のマイニング能力の半分以上(プルーフ・オブ・ワークの場合)またはステーキングされた供給量の半分以上(プルーフ・オブ・ステークの場合)を支配すると、正直な参加者よりも速く、競合するプライベート版ブロックチェーンを構築できるようになります。
典型的な手順は次のとおりです。攻撃者は大量の仮想通貨を取引所に送金し、別の資産に変換して引き出します。その後、秘密裏にマイニングしたブロックチェーンを公開しますが、このブロックチェーンには入金取引は含まれておらず、事実上、入金取引が取り消されます。こうして攻撃者は、元の仮想通貨と変換された資産の両方を保有することになります。
ビットコインネットワークは、51%攻撃に成功したことは一度もありません。2025年10月までに、ビットコインのハッシュレートは毎秒約1ゼタハッシュに達し、攻撃は経済的に不可能になります。コストは数十億ドルに上り、現実的な利益はそれよりもはるかに小さいからです。しかし、マイニング参加者が限られている小規模なプルーフ・オブ・ワークネットワークは、繰り返し悪用されてきました。
ビットコインゴールドは、2018年5月に51%攻撃を受け、約1800万ドルを失いました。イーサリアムクラシックは、2019年と2020年に複数回の51%攻撃を受け、攻撃者はCoinbaseで110万ドルの二重支払いを試み、Gate.ioで20万ドルの二重支払いを成功させました。Verge、ZenCash、Litecoin Cash、MonaCoinも、2018年から2019年の間に同様の攻撃を受けました。
ブルートフォース攻撃
総当たり攻撃とは、ハッシュパワーが相当程度あるものの過半数に満たない攻撃者が、パブリックネットワークよりも速くプライベートチェーンをマイニングしようとする攻撃手法です。攻撃者は支払いをブロードキャストし、ネットワークが承認を蓄積している間に、自身のプライベートチェーンを拡張してパブリックネットワークを追い越そうとします。パブリックネットワークでの承認が増えるごとに成功確率は指数関数的に低下するため、この攻撃はハッシュパワーが相当程度あるネットワークや、複数の承認を必要とするトランザクションに対しては現実的ではありません。
ブロックチェーン技術が二重支出を防ぐ仕組み
ブロックチェーン技術は、複数の相互連携メカニズムを通じて、二重支払いを防止するための中心的なアーキテクチャソリューションを提供する。
地方分権
ブロックチェーンは分散型ノードネットワーク上で動作するため、単一の管理ポイントは存在しません。中央機関が不正に操作されたり、賄賂を受け取って不正な取引を承認したりすることは不可能です。二重支払いを成功させるには、攻撃者はネットワークの過半数を同時に説得する必要があり、ネットワークが大きくなるにつれてその難易度は増していきます。
不変性
トランザクションがブロックチェーンに記録され、十分な承認を得ると、事実上永続的なものとなる。それを変更するには、そのブロックだけでなく、それ以降に追加されるすべてのブロックを書き換える必要があり、そのためには膨大な量の計算資源または経済的資源が継続的に必要となる。
タイムスタンプと順序付け
トランザクションにはタイムスタンプが付与され、時系列順にブロックに追加されます。競合する2つのトランザクションが同時にブロードキャストされた場合、ネットワークはどちらが有効かを決定的に判断します。それは、先に確認済みブロックに含まれたトランザクションが有効となることです。無効となったトランザクションは破棄されます。
分散元帳
ネットワーク上のすべてのノードは、取引履歴の完全なコピーを保持しています。数千もの独立したノードが同一の記録を保持しているため、台帳を密かに改ざんすることは不可能です。不正な履歴が存在しても、大多数のノードが保持しているコピーと即座に矛盾が生じます。
合意形成メカニズム:二重支出防止の技術的核心
ブロックチェーンの種類によって、トランザクションの有効性に関する合意形成に用いられるコンセンサスアルゴリズムは異なる。このメカニズムの選択は、二重支払いの防止に直接的な影響を与える。
仕事の証明
ビットコインのようなプルーフ・オブ・ワーク方式では、マイナーは複雑な暗号パズルを解くために競い合います。有効な解を最初に見つけたマイナーが次のブロックを追加し、報酬を受け取ります。パズルを解くには、専用のハードウェアや電力といった現実世界の資源が必要となるため、不正なチェーンを構築しようとするコストは相当なものであり、測定可能です。
プルーフ・オブ・ワーク(PoW)の51%攻撃に対するセキュリティは、ネットワーク全体のハッシュパワーに比例します。現在ビットコインを攻撃するには、世界中のマイニング機器の半分以上を取得して運用する必要があり、これは物流面でも資金面でも不可能な作業です。ビットコインの設計は、2009年のローンチ以来、メインネットワーク上で二重支払いが成功した事例を一切生み出していません。
ステークの証拠
イーサリアムのようなプルーフ・オブ・ステーク(PoS)システムでは、バリデーターは仮想通貨を担保としてロックすることで、新しいブロックを提案し、承認する権利を得ます。51%攻撃を試みる攻撃者は、ステーキングされている全供給量の半分以上を取得してステーキングする必要があります。イーサリアムの場合、これは現在の評価額で20億ドル以上のステーキング済みETHを管理することを意味します。不正行為を行ったバリデーターは、スラッシングと呼ばれるペナルティメカニズムによってステーキング資金を没収されるリスクがあり、攻撃は経済的に自滅的なものとなります。
2022年9月に行われたイーサリアムのプルーフ・オブ・ワークからプルーフ・オブ・ステークへの移行(マージ)では、ファイナリティも導入されました。2エポック(約13分)経過後、トランザクションは、ステーキングされたETHの少なくとも3分の1が関与する、極めてコストがかかり検出可能な協調攻撃がない限り、取り消し不可能とみなされます。
ネットワークをまたいだトランザクションの最終性
二重支払いリスクにおいて、ファイナリティの概念は非常に重要です。プルーフ・オブ・ワーク(PoW)システムは確率的ファイナリティを提供します。つまり、トランザクションは数学的に取り消し不可能になることはありませんが、承認が増えるごとに取り消しの確率は指数関数的に減少します。プルーフ・オブ・ステーク(PoS)システムは経済的ファイナリティを提供できます。この場合、取り消しには莫大な額のステーキングされた資本を破棄する必要があります。
参考までに、ビットコインネットワークでは、高額決済を安全とみなす前に6回の承認を推奨しています。1ブロックあたり10分かかるため、6回の承認には約1時間かかります。イーサリアムのPoSシステムでは、約13分で実質的なファイナリティが達成されます。一方、Solanaはブロック生成時間が400ミリ秒と短いため、ほとんどの用途においてほぼ瞬時に実質的なファイナリティが達成されます。
UTXOモデル:ビットコインの構造的防御
ビットコインは、未使用トランザクション出力(UTXO)モデルと呼ばれる独自のデータ構造を使用しており、これが二重支払いの防止に直接貢献しています。すべてのビットコイン取引は、入力として1つ以上のUTXOを消費し、出力として新しいUTXOを作成します。UTXOは一度しか使用できません。使用すると、台帳上で使用済みとして記録されます。
トランザクションがネットワークにブロードキャストされると、ノードは参照されているUTXOが既に消費されているかどうかを即座に確認します。悪意のあるユーザーが同じUTXOを使用して2つのトランザクションを同時にブロードキャストしようとした場合、ノードは一方を受け入れ、もう一方を拒否します。UTXOモデルでは、同じコインが2つの異なる承認済みトランザクションで有効に参照されることは構造的に不可能です。
取引確認:実践的な安全基準
確認は、個人ユーザーと加盟店が二重支払いから身を守るための最も実用的な手段です。
承認されるたびに、トランザクションを含むブロックの上に、ブロックチェーンに新たなブロックが1つ追加されます。新しいブロックが追加されるたびに、ネットワークはそれに関する合意形成を行う必要があり、攻撃者がすべてのブロックを元のトランザクションの状態に戻すことが次第に困難になります。
ネットワークによる標準的な推奨事項:
ビットコイン:高額取引の場合、6回の承認が広く受け入れられている標準であり、現在のブロック生成時間では約60分かかります。少額でリスクの低い購入の場合は、1~3回の承認で十分な場合もあります。
イーサリアム:標準的なセキュリティレベルでは12回の承認が必要で、所要時間は約2~3分です。2エポック経過後、トランザクションは完全な経済的確定性を獲得します。
ライトコイン:承認回数は6回で、ブロック生成時間が2.5分であることを考慮すると、約15分かかります。
Solana: 400ミリ秒という短いブロック生成時間と履歴証明設計により、承認はほぼ瞬時に行われます。
ビットコインキャッシュ:マイニングネットワークが比較的小規模であること、および関連チェーンで51%の攻撃脆弱性の履歴があることから、一般的に15回の承認が推奨されます。
経験則として、取引金額が高ければ高いほど、商品の発送や支払いの完了とみなす前に、より多くの確認が必要となる。
実際の例とケーススタディ
2014年のビットコイン取引の可塑性問題
2014年、二重支払い攻撃は、トランザクションの可塑性と呼ばれるビットコインの脆弱性を悪用しました。攻撃者は、トランザクションの内容はそのままに、固有のトランザクション識別子を変更することで、トランザクションデータを操作し、複数の矛盾するトランザクションを作成しました。ビットコインコミュニティは、ソフトウェアのアップデートとプロトコルの改善で対応し、最終的には2017年のSegWitアップグレードによって、トランザクション署名とトランザクションデータを分離し、可塑性という攻撃経路を完全に排除することで、より包括的な対策が講じられました。
イーサリアムのプルーフ・オブ・ステークへの移行
イーサリアムは、2022年9月のマージを通じて、プルーフ・オブ・ワーク(PoW)からプルーフ・オブ・ステーク(PoS)へと移行しました。バリデーターは、ステーキングしたETHに基づいてブロックを提案・承認する役割を担い、不正行為には厳しいペナルティが課せられます。この移行により、イーサリアムの二重支払い耐性が大幅に強化され、PoWでは実現できなかった経済的な確定性が導入されました。
ダッシュインスタント送信
DashはInstantSendと呼ばれる機能を実装しており、マスターノードのネットワークを利用して、トランザクションの入力をブロードキャスト後ほぼ即座にロックし、競合するトランザクションで使用されることを防ぎます。これにより、標準的なブロック承認を待つことなく、ほぼ瞬時に競合攻撃から保護されるため、DashはPOS(販売時点情報管理)取引に実用的です。
リップルのコンセンサスプロトコル
リップルは独自のコンセンサス機構であるリップルプロトコルコンセンサスアルゴリズム(RPCA)を採用しており、信頼できるバリデーターのネットワークがすべてのトランザクションについて圧倒的多数の合意に達する必要があります。ネットワークは3~5秒でファイナリティを達成し、マイニングやプルーフ・オブ・ワークによるエネルギー消費は一切ありません。
二重支払いを防止するためのベストプラクティス
仮想通貨決済を受け付ける事業者であれ、個人ユーザーであれ、これらの対策を講じることで、二重支払い攻撃のリスクを大幅に軽減できます。
適切な確認をお待ちください
これは最も効果的な個人保護策です。未確認の取引に対して、高額な商品やサービスを決して提供しないでください。ビットコインの場合、高額な支払いは少なくとも6回の承認を待ってください。イーサリアムやソラナのような高速ネットワークでは、待ち時間は1時間ではなく、数分または数秒です。
取引手数料を戦略的に活用する
取引手数料が高くなると、マイナーやバリデーターはあなたの取引を次のブロックに含めるようになり、競合する取引がブロードキャストされる期間が短縮されます。ネットワークが混雑している時期には、資金不足の取引が長期間未承認のまま放置される可能性があり、競合攻撃のリスクが高まります。
セキュアウォレット管理を適用する
セキュリティ実績の高い信頼できるウォレットを選びましょう。秘密鍵はハードウェアウォレットまたは暗号化ストレージにオフラインで保管してください。取引所アカウントとウォレットアカウントで二段階認証を有効にしましょう。これらの対策により、認証情報が漏洩し、不正な取引に悪用されるリスクを軽減できます。
確立されたネットワーク上で取引を行う
規模が大きく、実績のあるブロックチェーンネットワークは、マイニングやステーキングへの参加率が高いほど、小規模なネットワークよりも51%攻撃に対する耐性がはるかに高くなります。セキュリティが最優先事項である場合、流動性が最も高く、バリデーターの分布が最も広いネットワークが、リスクが最も低い選択肢となります。
取引を積極的に監視する
取引履歴を注意深く監視し、ブロックチェーンエクスプローラーを使用して承認状況を独自に検証してください。予期せぬ取引の取り消しや承認深度の急激な変化など、異常な活動は、ネットワーク再編が進行中の初期兆候である可能性があります。
ネットワークガバナンスに参加する
ノードやバリデーターの運用に携わる人々にとって、プロトコル開発への参加やセキュリティアップグレードへの投票は、ネットワーク全体の回復力向上に貢献します。単一のマイナーがハッシュパワーの50%に近づいた際に自主的にプールのスロットリングを行うといったコミュニティレベルの対応は、これまで重要な局面でビットコインの健全性を守ってきました。
課題と今後の方向性
拡張性とセキュリティのトレードオフ
仮想通貨の普及が進むにつれ、取引処理速度の向上への圧力は、二重支払いを防止するための確認要件との間で矛盾を生じさせています。ビットコインのライトニングネットワークやイーサリアムのロールアップエコシステムといったレイヤー2ソリューションは、高頻度かつ少額の取引をオフチェーンで処理し、最終的な残高決済をセキュアな基盤レイヤーで行うことで、この課題に対処しています。これにより、基盤となるチェーン上で強力な二重支払い防止機能を維持しつつ、日常的な決済を実用的に実現することが可能になります。
量子コンピューティング
量子コンピューティングは、ウォレットのセキュリティとプルーフ・オブ・ワーク(PoW)マイニングの両方を支える暗号アルゴリズムに対し、長期的な理論的リスクをもたらします。ポスト量子暗号規格は現在積極的に開発が進められています。米国国立標準技術研究所(NIST)は2024年に初のポスト量子暗号規格を発表しており、ブロックチェーンプロジェクトは暗号基盤の将来性を確保するため、これらの動向を注視しています。
相互運用性(インターオペラビリティ) およびクロスチェーン取引
クロスチェーン資産移転は、ブリッジング処理中に資産が実質的に2か所に存在するため、新たな二重支払いの脆弱性を生み出します。近年発生した複数の著名なブリッジ攻撃は、このリスクを如実に示しています。長期的な解決策は、クロスチェーン検証プロトコルの改善と、基盤となるチェーンからセキュリティ保証を継承する、より信頼性の低いブリッジ設計の開発にあります。
分散型金融とスマートコントラクトのリスク
分散型金融(DeFi)プロトコルは、スマートコントラクトの複雑性をもたらし、トランザクション操作のための新たな攻撃対象領域を生み出す可能性がある。監査、スマートコントラクトの形式検証、そして慎重な流動性配分が主な防御策となる。
合意形成メカニズムの進化
新たなコンセンサス設計に関する研究は継続されている。指名型プルーフ・オブ・ステーク、プルーフ・オブ・ヒストリー、そして様々なハイブリッドモデルといったアプローチは、いずれも既存のメカニズムが抱えるセキュリティとスケーラビリティのトレードオフを改善することを目指している。その目標は一貫しており、主流の普及に必要なトランザクション処理能力を確保しつつ、可能な限り強力な二重支払い防止策を提供することである。

