Bitcoin Core v25.0より前のバージョンでは、変異ブロックを送信するピアが、 同じブロックを通知した他のピアのダウンロード状態をクリアしてしまう可能性があり、 ブロックの伝播を妨げていました。

この問題の重大度は  です。

詳細

Bitcoin Coreは、たとえばヘッダーのマークルルートや、 コインベーストランザクション内のwitness commitmentがブロック内のトランザクションと一致しない場合、 そのブロックを変異ブロックとして扱います。

Bitcoin Core v25.0より前のバージョンでは、ピアが要求されていない変異ブロックを送信することで、 他のピアのブロックダウンロード状態をクリアすることができました。 これは、たとえばコンパクトブロックのリレーでは問題でした。コンパクトブロックを受信した後、 完全なブロックを再構築するためにgetblocktxn要求に対する応答を待っている間に変異ブロックを受信すると、 Bitcoin Coreはコンパクトブロックの再構築状態を忘れてしまいます。変異ブロックの後に届いたblocktxn応答は、 ブロックの再構築には使用できませんでした。これはブロックの伝播を妨げました。

これは#27608で、 ピアが影響を与えるのは自分のブロックダウンロード状態のみで、 他のピアのダウンロード状態には影響を与えないようにすることで修正されました。

貢献

この問題に気付き、修正に取り組んだSuhas Daftuarに感謝します。

タイムライン

  • 2023-05-08 - 変異ブロックに関する問題は#bitcoin-core-dev IRC channelで最初に報告される
  • 2023-05-10 - 修正がマージされる(#27608
  • 2023-05-25 - v25.0がリリースされる
  • 2024-10-09 - 公開