2024年5月31日に、国内取引所のDMMビットコインより480億円相当のビットコインが不正に流出しました。

DMMビットコイン不正流出 金融庁 あらゆる可能性想定し調査を | NHK
【NHK】暗号資産の交換業を行う「DMMビットコイン」で、480億円相当のビットコインが不正に流出した問題で、金融庁は会社側に対し…

過去にあった流出事件の反省を踏まえ、日本では大変厳しいセキュリティ、運用体制が敷かれている中での事件でしたので、業界の関係者にとっても衝撃的なニュースとなりました。一方、顧客資産については全額補填の方向で順調に調整が進んでいるようで、私たちユーザーからすると何よりです。

https://bitcoin.dmm.com/news/20240605_01

お客様の預りビットコイン(BTC)全量については、流出相当分のビットコイン(BTC)を、グループ会社からの支援のもと調達し、全量保証いたします。

さて、今回はこちらの件に関連しまして、手数料を調整する仕組みであるRBFとの絡みについてご質問を受けていまして、こちらを深堀りしたいと思います。

ご質問

国内取引所のビットコイン流出がありました。こういった事象の対策として、外部への異常な送金があった際には通知され、RBFで手数料合戦といった展開にはならないのでしょうか。

RBFとは

手数料合戦に触れる前に、まずはRBFとはどういった仕組みなのかを確認します。

Bitcoin Optechでは次のように説明されています。

Replace-by-fee (RBF)
Replace-By-Fee (RBF) is a node policy that allows an unconfirmed transaction in a mempool to be replaced with a different transaction that spends at least one of the same inputs and which pays a higher transaction fee.
Replace-By-Fee (RBF)とは、mempool内の未承認トランザクションを、同じ入力の少なくとも1つを使用し、より高いトランザクション手数料を支払う別のトランザクションに置き換えることを可能にするノードポリシーです。

つまり、一度送金トランザクションを送信してしまったあとに、より高い手数料をセットしたトランザクションを改めて送信することで、より早くブロックチェーンに取りこんでもらうことを可能とする仕組みです。一ユーザーからすると手数料効率よく送金できるため、メリットの大きい仕組みであるといえます。

ややこしいのが、ブロックチェーンに取り込む際の判断がノードの運用ポリシーに依存する点です。同じUTXOを消費するトランザクションが同時にmempoolに存在したとき、どのトランザクションを取り込むかはそのノードの運用、実装に依存します。

手数料合戦にならないのか、について

こうしたRBFですが、実は過去に、適用される運用ポリシーの内容が変更になっています。

  • Full RBF - Bitcoin Core 0.3.12で廃止されるまで有効だったもの
  • Opt-in RBF (BIP 125) - Bitcoin Core 0.12.0から利用できるもの(最新のBitcoin CoreではデフォルトでONとなっている)

その他にも細かい亜種がありますが詳しくは Bitcoin Wiki を参照ください。

さて、なんでFull RBFがBitcoin Core 0.3.12で廃止されたか、ですが、これこそまさに手数料合戦によりトランザクション渋滞が誘発されるDoS攻撃に悪用されかねない、となったからなんですね。ノードの立場からすると、いつ置換されるか分からないトランザクションはとりあえずメモリ保管する必要があります。でもメモリは有限の資産なため、限度があります。この限度を超える分量を送られてしまうとパンクし、動作が不安定になります。

なお、大前提として同じ秘密鍵を持つ主体がトランザクションに署名をして送るシチュエーションである必要はあります。それはノードを懲らしめたいという悪意ある一人かもしれませんし、秘密鍵が漏洩しており、2者以上が送信合戦をする場合にあたるかもしれません。後者の場合、送付先アドレスを奪い合うシチュエーションであるともいえ、まさしくご質問にて想定されている話となりますね。

最近のノード実装では、Opt-in RBF (BIP 125)が有効になっています。BIP125では、DoS攻撃を防ぐための対策がいくつか取り込まれており、より健全で効率的な運用が行えます。

さて、今回のDMMビットコインの件では、特にはRBF合戦は発生しませんでした。そもそも、攻撃者作成のトランザクションにはRBFフラグが付けられていませんでした。

The Mempool Open Source Project®
Explore the full Bitcoin ecosystem with The Mempool Open Source Project®. See the real-time status of your transactions, get network info, and more.

攻撃トランザクション

その代わりに異常に高い手数料(7,707 サトシ/vB !)が付与されており、何が何でも即時取り込んで貰うぞ、という意志が込められているようにも思えますね。

もし、RBFフラグが付いていたらどうなっていたか、を考えるのは一興です。私としては、それでもRBF合戦とは中々ならないように思います。RBF合戦が起きる前提を考えてみると、つぎの前提が必要となりそうです。

  1. 取引所が、不正送金をアラートで知り、且つそれをトリガーに不正トランザクション以上の手数料を載せた正規トランザクション(自社ウォレットアドレスへの送付)を即時発行する仕組みを導入している(コールドウォレットで?!)
  2. 取引所が、RBF用手数料の原資を不正流出の対象とは別に工面しておく必要がある(そもそもハックされているのにこれを保護できているの?!)
  3. 攻撃者が、取引所の上記の仕組みと同様のものを導入している(最初から手数料がっつり載せで十分なのでは)

なかなか大変そうな前提ですね。