10 ETHの返金バグがTHORChainの10チェーンの取引を停止させた経緯
重要ポイント
- •10月31日のイーサリアムの1ブロックのリオーグにより、THORChainへの単一の10 ETH入金が、クレジット済みスワップと入金自体の両方が返金され、20 ETHの支払いを引き起こした。
- •すべてのTHORChainノードがリオーグを記録したが、入金の自動再チェックが、THORChainチェーン上で観測がファイナライズされ返金が送られる前に完了しなかった。
- •自動支払能力チェッカーがETHスワップを停止し、ノード運営者は約2分以内にトランザクション署名を停止、ATOM、BCH、BSC、BTC、DOGE、ETH、LTC、SOL、TRON、ZECを含む10チェーンで予防的に取引が停止された。
- •受取人は自主的に余分な10 ETHを返還したが、THORChainは、リオーグ中にトランザクションのノンスを再利用する悪意ある行為者が返還義務なくボールトから支払いを受け得ると警告している。
- •この停止は、北朝鮮のTraderTraitorグループによるとされる64億ドル規模のBinance盗難資金の洗浄を意図せず遅らせた。THORChainは再開時期を示さず、5月の約1,070万ドルのエクスプロイト後は同等の修正と再開に5週間以上かかったと述べている。

クロスチェーン流動性プロトコルTHORChainは、イーサリアムの1ブロックのリオーグにより単一の10 ETH入金に対してボールトが二重に支払いを行ったことを受け、10のブロックチェーンで取引を凍結した。同プロトコルは、接続するブロックチェーン間でユーザーが資産をスワップできるようにするもので、入金はボールトに送られ、ノード運営者がそこから出ていく支払いに署名する。THORChainは11月1日、Xへの投稿でこの一連の経緯を説明し、ユーザーが余分な10 ETHを返還したこと、およびコア開発者が必要な変更に取り組んでいることを明らかにした。
リオーグによって失われたもの
10月31日11:34 UTC、イーサリアムは直近の1つのブロックを競合するバージョンに置き換えた。破棄されたブロックにはTHORChainボールトへの10 ETHの入金が含まれており、プロトコルのオブザーバーはすでにこれを確認し、クレジット済みだった。
これほど新しいブロックはまだ置き換えの対象となり得る。イーサリアムはブロックをおよそ2エポック、約13分経過後に初めてファイナライズされたものと扱うが、THORChainの説明にはファイナライズ済みの履歴が変わったことを示す内容はない。障害は、イーサリアムが入金を確定させる前に動作したTHORChain内部で発生した。
その後、2件の支払いが行われた。クレジット済みの入金に紐付けられたスワップは価格制限を満たさなかったため、THORChainは10 ETHを返金した。さらに、イーサリアムの承認済みチェーン上で送金者の入金も返金された。ボールトに届いた入金は10 ETHなのに、ボールトから出ていったのは20 ETHとなった。
THORChain自身の警告が、1件の入金が二重にカウントされ得る仕組みを示している。すべてのイーサリアムアカウントはノンスによってトランザクションに番号を付ける。元の送金がブロックとともに消滅すると、そのノンスは承認済みチェーンで再利用できた。THORChainは、外部リオーグの際に「悪意ある行為者が同じノンスで新しいトランザクションを実行し」、そのボールトから支払いを受け取ることができると記していた。
すべてのノードがリオーグを検知。それでも返金は支払われた。
問題は検知ではなかった。THORChainによれば、すべてのノードがリオーグを記録したが、入金の状態を確定させるための自動再チェックが、THORChainが自チェーン上で観測をファイナライズする前に完了できなかったという。Bifrostのドキュメントは、外部トランザクションが消滅した際に観測がどのように取り消されるかを説明している。10月31日、その取り消しは返金の支払い前には行われなかった。
投稿は、再チェックがなぜ時間切れになったのか、修正によって何が変わるのかについては述べていない。この支払いが返済されたのは、受取人が返還を選択したためだけである。THORChainの説明によれば、この欠陥はそれを引き起こした者に支払う仕組みであり、将来のリオーグを狙ってトランザクションのタイミングを計る者は、何かを返す理由がない。
10 ETHの欠陥がなぜ10チェーンを凍結させたのか
THORChainの自動支払能力チェッカーが不足を検知し、ETHスワップを停止した。約2分以内に、ノード運営者もETHトランザクションの署名を停止した。これによりボールトからの支払いが遮断される。さらに、ノンスの警告はイーサリアムだけでなく接続されたあらゆるチェーンのリオーグに及ぶため、予防措置として他のチェーンの取引も停止した。
11月1日の投稿時点でのTHORChainサービスの状況:
- 取引停止中: ATOM、BCH、BSC、BTC、DOGE、ETH、LTC、SOL、TRON、ZEC
- 取引稼働中: AVAX、BASE、RUNE、XRPL
- 送金支払い: 10月31日のステータスデータでは、停止済みのほとんどのチェーンで署名が引き続き有効であり、新規スワップはブロックされたままでも保留中の支払いは送金可能だった。
取引ステータスはTHORChainの11月1日の投稿に、署名ステータスは10月31日時点で報告されたTHORChainのステータスAPIに基づく。
このリストはすでに一度変動している。10月31日夜、The Defiantは、THORChainのステータスAPIが13の外部チェーンのうち12チェーンで取引が停止状態と表示していたと報じた。11月1日の投稿までに、そのうち3チェーンが再開された。THORChainは、なぜその3チェーンが最初に再開されたのかを説明していない。
これらの措置は基盤となるネットワークを止めるものではない。ビットコイン、イーサリアム、その他のチェーンはブロックの生成を続けており、停止はTHORChainが各チェーンについて処理する内容を制限するだけである。
ある見方をすれば、このインシデントはセーフガードが機能していることを示している。チェッカーは人手を介さずに作動し、支払いは数分以内に停止され、損失額は10 ETHに抑えられた。5月には、エクスプロイトによりボールトから約1,070万ドルが流出した後、同じチェックが取引と署名の停止を余儀なくされた。チェッカーにできないのは観測ロジックの修復であり、だからこそボールトが補填された後も停止は緩和されるどころか拡大した。
停止に3票、覆すのに4票
こうした停止は運用上の設定であり、THORChainのガバナンスドキュメントでは少数のノードが変更できる。設定には少なくとも3つのアクティブノードの投票が必要で、競合するすべての値を上回らなければならず、同票の場合は現行設定が維持される。
この閾値は以前にも公の場で試された。2025年2月のBybitから盗まれた資金の洗浄の際、3つのバリデータがETH取引の停止に投票したが、他のノード運営者がほぼ即座に投票を覆した。THORChainの11月1日の説明はまた、チェーンを停止してもノードがボールト資産の管理権を得るわけではないとも述べている。活動の停止と送金への署名は別個の権限である。
THORChainが資金洗浄者に対して使わなかった停止措置
9月28日、Bitgetハッキング資金の凍結を求める声に対し、THORChainはX上で、ネットワーク停止はプロトコルを守るための緊急セキュリティ措置であり、それらの資金に対しては使用しないと記した。リオーグの欠陥はまさにその種の緊急事態であり、それが引き起こした停止は結果的に資金洗浄者をも足止めした。
64億ドル規模のBinance盗難事件を北朝鮮のTraderTraitorグループの仕業とするChainalysisは、11月1日、THORChainが「Binanceから盗まれた多額の資金の洗浄を意図せず遅らせた」と述べた。この遅れは、一般ユーザーを苛立たせるのと同じ機能によるものである。停止されたチェーンは誰のスワップも処理しない。FBIの暗号インフラ事業者への要請に関するCoindooの報道は、これらのトランザクションを直接遮断する取り組みを扱っている。
スワップ再開までに必要なこと
THORChainの開発者ドキュメントは、停止中のチェーンへの資金送金を避けるよう警告している。トランザクションが停止解除まで未処理のまま残る可能性があるためだ。11月1日の投稿に再開時期は示されなかった。ノード運営者は、安全と判断した時点で各チェーンを再有効化する。
欠陥が一時停止ではなく解消されたと示すには、3つのことが必要だ。THORChainが外部リオーグの処理方法の変更を公開すること、ノード運営者がそれにアップグレードすること、そして停止中のチェーンで取引とともにETH署名が復活することである。5月のエクスプロイト後、この道のりは緊急パッチから完全な修正、そして取引再開まで5週間以上を要した。これはプロセスの参考例であり、今回のタイムスケジュールではない。
返還された10 ETHにより10月31日の支払いは清算された。ETH署名の再有効化こそが、運営者が次のリオーグに対応するTHORChainへの信頼を取り戻した最初の公的なサインとなるだろう。