ブロックチェーンにおける二重支出とは何ですか?またそれはどのように防止されますか?
二重支出は暗号通貨に対する信頼をすべて損なう可能性があるため、この種の詐欺が起こらないようにするために多大な努力が払われています。
ブロックチェーン技術のおかげで、暗号通貨取引は安全で信頼できます。ただし、ほとんどの革新的なシステムと同様に、ブロックチェーンには悪用可能な脆弱性があり、二重支出につながる可能性があります。しかし、二重支出とは何でしょうか?また、それはどのように防止されるのでしょうか?
二重支出とは何ですか?
二重支出は、単一のエンティティが同じ暗号通貨トークンを複数回支出した場合に発生します。これは、デジタル通貨を簡単に再現できる欠陥によって引き起こされます。
ブロックチェーンネットワーク上の情報は、特定の条件が満たされれば、トランザクション中に変更できます。これらの条件が満たされると、変更されたトランザクション ブロックがブロックチェーンに侵入し、加害者が以前に使用した暗号トークンを再取得できるようになります。
これがどのように起こるかをよりよく理解するために、ここでは簡略化されたプロセスの説明を示します。ブロックチェーン ネットワーク上でトランザクション (たとえばビットコイン) が実行されると、トランザクション データ、前のブロックのデータ、およびタイムスタンプを含むブロックが作成されます。ブロックにはハッシュと呼ばれる暗号化されたコードが含まれています。
ビットコイン ネットワーク上でビットコインをマイニングする人々は、プルーフ・オブ・ワーク・コンセンサス・アルゴリズムを通じてトランザクションを検証し、ブロックを閉じて、新しいブロックを作成します。新しいブロックには、タイムスタンプ、前のブロックのハッシュ、および新しいトランザクション データが含まれます。その後、勝利したマイナーはハッシュを検証することでブロック報酬 (BTC) を受け取ります。
二重支出を成功させるには、加害者は実際のブロックの作成を上回る秘密ブロックをマイニングする必要があります。これを行うには、加害者は、新しいブロックの前に秘密のブロックを導入する必要があります。これにより、ネットワークは、それが増加するブロックの最新のセットであると騙されて、増加し続けるチェーンに偽のブロックを追加します。その後、加害者は以前に使用した暗号トークンを取り戻すことができます。
二重支払いは仮想通貨業界ではよく知られた現象ですが、文書化された事例はありません。トランザクションの検証は膨大な計算能力を必要とする複雑なプロセスであるためです。ブロックの改ざんや複製は、加害者がブロックチェーン上の他のすべてのマイナーよりも先に作業しなければならないため、非常に困難です。
なぜ二重支出が問題になるのでしょうか?
二重支出はブロックチェーン ネットワークのセキュリティに対する侮辱です。それは悪用可能な弱点があるときに起こります。
さらに、ブロックチェーン ネットワークは安全で信頼できるものでなければなりません。暗号通貨ネットワークで二重支出が発生すると、その暗号システムに対する不信感が生まれ、投資家の意欲が失われます。そして最終的にはトークンの価値は下落します。
さらに、二重支出はデジタル窃盗です。ハッカーが利益を得る一方で、ネットワーク上の他の誰か (通常は販売者) が損失を被ります。加害者は販売者の商品と暗号トークンの所有権を保持します。
二重支出攻撃の例
サイバー犯罪者が利用する二重支出攻撃にはさまざまな形があります。その一部を次に示します。
51% 攻撃力
51% 攻撃は、二重支出の形態として最も広く議論されています。これは、マイナー (またはマイナーのグループ) が、ネットワーク上のトランザクションを検証する計算能力の大部分 (50% 以上) を制御している場合に発生します。
これが起こると、彼らはトランザクションを指示し、新しいブロックを作成し、すでに使用された暗号を回収し、暗号トークンを授与することができます。これにより、デジタルコインを二重に使うことができるようになります。
51% 攻撃は、ビットコインのようなより確立された暗号通貨では発生する可能性が低くなります。これは、ネットワーク上に膨大な数のマイナーが存在し、ハッシュ化が困難であるためです。ただし、新しいネットワークやフォークされたネットワークなど、小規模なネットワークを持つ仮想通貨はリスクにさらされる可能性があります。
2014年、2013年から2016年まで運営されていたマイニングプールであるGHash.ioは、ビットコインの計算能力の51%を一時的に超えました。この開発により、ネットワークのセキュリティに関して重大な懸念が生じました。その後、Gnash.io はネットワークの信頼を回復するために、自発的に計算能力を 39.99% に制限しました。
フィニー・アタック
このタイプの二重支出攻撃は普及し、ハル フィニーにちなんで名付けられました。フィニー攻撃では、ハッカーはハッシュパワーの 51% を必要としません。これが成功するためには、販売者はマイナーであるハッカーからの未確認のトランザクションを受け入れる必要があります。
ハッカーは、ネットワークにブロードキャストせずに、アドレス X からアドレス Y (両方とも自分に属します) へのトランザクションを開始することで、暗号トークンを自分にクレジットするブロックを生成します。彼は、アドレス X から販売者に属するアドレス Z まで、同じ暗号トークンを使用して別の支払いを実行します。
販売者がブロックチェーンからの検証を行わずに未確認のトランザクションを受け入れると、ハッカーは最初のトランザクションを含むブロックを解放します。販売者が商品やサービスをハッカーに公開した後、ネットワークは販売者との取引を無効にします。これにより、ハッカーは二重支出を行うことができます。
レースアタック
この攻撃は、51% 攻撃やフィニー攻撃よりも簡単に成功します。競合攻撃では、2 つのトランザクション間に「競合」が存在します。
ハッカーは異なるマシンを使用して同じトークンを 2 つの販売者に送信します。取引が確認される前に販売者が商品やサービスを送信すると、マイニング プロセス中に取引が受け入れられなかったことに気づきます。
ブロックチェーンが二重支出を防ぐ仕組み
ブロックチェーンは、次のようなコンセンサス アルゴリズムを通じて二重支出を防ぎます。
プルーフ・オブ・ワーク (PoW)
プルーフ・オブ・ワークは非常に競争の激しいプロセスであり、膨大なエネルギーを必要とします。このコンセンサス メカニズムでは、マイナーは複雑なコンピューターを使用してトランザクション ブロックのハッシュを推測します。
ハッシュは、すべてのトランザクションが持つ、暗号化された一意の 64 桁の 16 進コードです。このプロセスでは、トランザクションの信頼性を証明するために計算能力が消費されます。
トランザクションが検証されると、成功したマイナーはトランザクションを分散型デジタル台帳に追加します。プロセスの最後に、成功したマイナーはネイティブ デジタル トークンでブロック報酬を受け取ります。
ビットコイン、ビットコイン キャッシュ、ライトコイン、モネロ、ドージコインは、このコンセンサス アルゴリズムを使用する人気のある暗号通貨です。
プルーフ・オブ・ステーク (PoS)
Proof-of-Stake では、暗号ネットワーク上の参加者がブロック トランザクションを認証し、バリデーターと呼ばれます。バリデーターは、成長するブロックチェーンにトランザクションを追加する前にトランザクションを検証する権利を得るために、スマート コントラクトで暗号トークンの一部を提供 (または「ステーク」) します。
ネットワークは、ステーキングされたトークンとステーキング期間に基づいて誠実なバリデーターを選択します。選択すると、勝者はトランザクションを検証し、他のバリデーターもそれを確認します。
PoW と同様に、バリデーターも新しいトランザクションを認証した後に収入の形で報酬を受け取ります。ネットワークがバリデーターの不正を発見した場合、ペナルティとしてステーキングされたトークンの一部またはすべてを失います。
このプロセスは PoW よりも高速で、必要な計算能力とエネルギーが少なくなります。したがって、ブロックチェーン上の参加者は効率的にバリデーターとして機能できます。
Ethereum 2.0、Cardano、Tezos、Solana はそれぞれ PoS を使用します。
委任されたプルーフ・オブ・ステーク (DPoS)
このタイプの PoS コンセンサス アルゴリズムでは、ブロックチェーン上のユーザーに、デジタル トークンを使用して「デリゲート」と呼ばれる正直なバリデーターに投票することが義務付けられます。新しいトランザクションを検証し、ブロックチェーンに追加するために、1 人のデリゲートがランダムに選択されます。
支払い後、デリゲートは投票したユーザーにブロック報酬を配布します。
DPoS アルゴリズムを採用する暗号通貨には、EOS、Ark、Tron、Lisk などがあります。
まだ訴訟は起きていないが、二重支出の可能性はある
確認された症例はありませんが、新しい仮想通貨やフォークされた仮想通貨の出現と最近の技術の進歩により、二重の支出が予想外に起こる可能性があります。したがって、安全な暗号通貨ブロックチェーンで取引することで自分自身を守る必要があります。そして原則として、トークン、商品、サービスをリリースする前に、マイナーがトランザクションを確認するのを待ちます。






