# ビットコインの重複取引: 面白いがリスクの小さいバグビットコインシステムには珍しい現象が存在します:二つの完全に同じ取引です。この状況が発生する可能性があるのは、coinbase取引に入力がないためで、直接新しい通貨が生成されるからです。したがって、二つの異なるcoinbase取引が同じアドレスに同じ数量の通貨を送信し、完全に同じ方法で構築される可能性があります。それらは完全に一致します。これらの取引の内容が同じであるため、彼らの取引ID(TXID)も一致します。TXIDは取引データのハッシュ値だからです。! [ビットコイン重複トランザクション:最小限のリスクで興味深いバグ](https://img-cdn.gateio.im/social/moments-2846f47605c9192f211e3a6b36c04d0d)この二つのグループの重複取引は2010年11月14日から15日の間に発生し、時間のスパンは約16時間です。最初のグループの重複取引(TXID:d5d2....8599)は、二番目のグループの間に挟まれています。d5d2....8599が最初にコピーされたとしても、奇妙なことに、それはブロックチェーン上での最初の出現時間が別の重複取引e3bf....b468よりも遅くなっています。! [ビットコイン重複トランザクション:最小限のリスクで興味深いバグ](https://img-cdn.gateio.im/social/moments-edcc2e884cd4273116606ff15afa6e15)繰り返し取引は明らかにいくつかの問題を引き起こす可能性があります。それらはウォレットやブロックブラウザを混乱させ、ビットコインの出所を追跡するのを難しくすることがあります。さらに深刻なのは、それが攻撃に使用される可能性があることです。例えば、攻撃者は2つの繰り返し取引を使って誰かに2回支払うことができますが、実際には受取人は資金の半分しか受け取れません。これは取引所に対する攻撃に使われ、資金が不足するように仕向けることができます。この問題を解決するために、ビットコインの開発者は多くの対策を講じました:1. 2012年3月にBIP30ソフトフォークを実施し、前のTXIDが使用されていない限り、重複TXIDを使用した取引を禁止しました。2. 2012年9月、グレッグ・マクスウェルはルールを変更し、BIP30のチェックを2012年3月15日以降のブロックだけでなく、すべてのブロックに適用することにしました。3. 2013年3月にBIP34ソフトフォークがアクティブ化され、コインベース取引にブロック高を含めることを求め、これにより基本的に重複取引の問題が解決されました。4. 2015年11月、開発者はノードのBIP30チェックを削除しました。なぜならBIP34がこの問題を解決したからです。! [ビットコイン重複トランザクション:最小限のリスクで興味深いバグ](https://img-cdn.gateio.im/social/moments-9e956bcc28b2786c805e8c59bc4aee37)しかし、BIP34は完璧ではありません。BIP34がアクティブになる前のいくつかのブロックでは、coinbaseトランザクションのscriptSigsの最初のバイトが、将来的に有効なブロック高と一致していました。これにより、重複トランザクションが発生する可能性がわずかに残っています。! [ビットコイン重複トランザクション:最小限のリスクで興味深いバグ](https://img-cdn.gateio.im/social/moments-e19f04bf763b8df0cd361e2927ccaaba)次に重複取引が発生する可能性のあるブロックは1,983,702で、2046年1月頃に生成されると予想されています。しかし、この脆弱性を利用するには、マイナーは巨額のコストを負担する必要があります。現在のビットコイン価格で計算すると、攻撃コストは1500万ドルを超える可能性があり、ほとんど実際の利益はありません。! [ビットコイン重複トランザクション:リスクの少ない興味深いバグ](https://img-cdn.gateio.im/social/moments-0076e239e15e09665bdc3aaa08391cef)その後の潜在的な脆弱性ブロックは2078年まで現れないため、その時には攻撃コストがさらに高くなる可能性があります。さらに、2017年のSegWitアップグレード以来、coinbaseトランザクションにはブロック内のすべてのトランザクションへのコミットメントも含まれており、これが攻撃の難易度をさらに高めています。以上のように、この繰り返し取引の脆弱性は理論的には存在しますが、それを利用する難しさ、コスト、そして極めて稀な機会を考慮すると、ビットコインの主要なセキュリティ脅威とはなりません。それにもかかわらず、この問題は開発者の関心を引き続けており、彼らは2046年までにこの脆弱性を完全に修正することを目指す可能性があり、ソフトフォークの方法で実現するかもしれません。! [ビットコイン重複トランザクション:最小限のリスクで興味深いバグ](https://img-cdn.gateio.im/social/moments-fb0734843d00c4922acda3f85fd02126)
ビットコインの重複取引の脆弱性:興味深い歴史的遺留問題と小さなリスク
ビットコインの重複取引: 面白いがリスクの小さいバグ
ビットコインシステムには珍しい現象が存在します:二つの完全に同じ取引です。この状況が発生する可能性があるのは、coinbase取引に入力がないためで、直接新しい通貨が生成されるからです。したがって、二つの異なるcoinbase取引が同じアドレスに同じ数量の通貨を送信し、完全に同じ方法で構築される可能性があります。それらは完全に一致します。これらの取引の内容が同じであるため、彼らの取引ID(TXID)も一致します。TXIDは取引データのハッシュ値だからです。
! ビットコイン重複トランザクション:最小限のリスクで興味深いバグ
この二つのグループの重複取引は2010年11月14日から15日の間に発生し、時間のスパンは約16時間です。最初のグループの重複取引(TXID:d5d2....8599)は、二番目のグループの間に挟まれています。d5d2....8599が最初にコピーされたとしても、奇妙なことに、それはブロックチェーン上での最初の出現時間が別の重複取引e3bf....b468よりも遅くなっています。
! ビットコイン重複トランザクション:最小限のリスクで興味深いバグ
繰り返し取引は明らかにいくつかの問題を引き起こす可能性があります。それらはウォレットやブロックブラウザを混乱させ、ビットコインの出所を追跡するのを難しくすることがあります。さらに深刻なのは、それが攻撃に使用される可能性があることです。例えば、攻撃者は2つの繰り返し取引を使って誰かに2回支払うことができますが、実際には受取人は資金の半分しか受け取れません。これは取引所に対する攻撃に使われ、資金が不足するように仕向けることができます。
この問題を解決するために、ビットコインの開発者は多くの対策を講じました:
2012年3月にBIP30ソフトフォークを実施し、前のTXIDが使用されていない限り、重複TXIDを使用した取引を禁止しました。
2012年9月、グレッグ・マクスウェルはルールを変更し、BIP30のチェックを2012年3月15日以降のブロックだけでなく、すべてのブロックに適用することにしました。
2013年3月にBIP34ソフトフォークがアクティブ化され、コインベース取引にブロック高を含めることを求め、これにより基本的に重複取引の問題が解決されました。
2015年11月、開発者はノードのBIP30チェックを削除しました。なぜならBIP34がこの問題を解決したからです。
! ビットコイン重複トランザクション:最小限のリスクで興味深いバグ
しかし、BIP34は完璧ではありません。BIP34がアクティブになる前のいくつかのブロックでは、coinbaseトランザクションのscriptSigsの最初のバイトが、将来的に有効なブロック高と一致していました。これにより、重複トランザクションが発生する可能性がわずかに残っています。
! ビットコイン重複トランザクション:最小限のリスクで興味深いバグ
次に重複取引が発生する可能性のあるブロックは1,983,702で、2046年1月頃に生成されると予想されています。しかし、この脆弱性を利用するには、マイナーは巨額のコストを負担する必要があります。現在のビットコイン価格で計算すると、攻撃コストは1500万ドルを超える可能性があり、ほとんど実際の利益はありません。
! ビットコイン重複トランザクション:リスクの少ない興味深いバグ
その後の潜在的な脆弱性ブロックは2078年まで現れないため、その時には攻撃コストがさらに高くなる可能性があります。さらに、2017年のSegWitアップグレード以来、coinbaseトランザクションにはブロック内のすべてのトランザクションへのコミットメントも含まれており、これが攻撃の難易度をさらに高めています。
以上のように、この繰り返し取引の脆弱性は理論的には存在しますが、それを利用する難しさ、コスト、そして極めて稀な機会を考慮すると、ビットコインの主要なセキュリティ脅威とはなりません。それにもかかわらず、この問題は開発者の関心を引き続けており、彼らは2046年までにこの脆弱性を完全に修正することを目指す可能性があり、ソフトフォークの方法で実現するかもしれません。
! ビットコイン重複トランザクション:最小限のリスクで興味深いバグ