売り注文が誘発したトークンバーン、BNB Chain上のTENDRIL流動性プールをほぼ枯渇させる
CoinDeskによると、2026年11月4日、売り注文をきっかけに発生したトークンバーンにより、BNB Chain上のTENDRIL流動性プールのTENDRIL側がほぼ空になり、約442万USDTが交換で引き出された。この取引の純流出は555,670.538752928908475139 USDTと小さい。同じ取引の前にも多額のUSDTが流入していたためだ。
売却がなぜバーンを引き起こすのか。売り手の残存TENDRILがプールに入る前にコントローラーが呼び出された。16:02:45 UTC、ルーターのtransferFromコールが39,053,180,124.060957132414461269 TENDRILの売却を開始し、トークンの手数料とコントローラーのロジックを発動した。メインプールへの転送には30%の売却税がかかるが、設定済みの_poolControlと_markControlからの送金は除外される。この取引を実行したコントラクトはどちらの免除にも該当しない。トークンはまず11,715,954,037.218287139724338380 TENDRILを_poolControlへ送った。続いてコントローラーのsellToken関数を呼び出し、税額だけでなく元の売却額を渡した。この呼び出しは、残り70%がプールに記録される前に完了している。過去のコールトレースはtransferFrom、sellToken、controlburn、sync、最終スワップの順を示す。コントローラーのオペコードトレースは、元の売却額を2倍して、その後にプールから引き抜く正確な数量を決めたことを確認している。
controlburnは総供給量を減らさずにプールからトークンを除去する。プール残高からTENDRILをデッドアドレスへ移すが、トークンの総供給量やLPトークンを減らすものではない。権限チェックでは呼び出し元が_poolControlと一致することを求める。認可されると_basicTransferでプール残高から差し引き、デッドアドレスへ記帳する。ここにプールの認可や流動性の引き出しはない。トークンコントラクトが自身の残高記録を直接制御している。ログ28は78,106,360,248.121914264828922538 TENDRILの除去を記録し、プールには元の6,678単位だけが残った。TENDRILの小数桁18を考慮すると、残額は0.000000000000006678 TENDRILにすぎない。このバーンはUSDTを同時に除去していない。TENDRIL残高はほぼ消えたが、プール内のUSDTは次の交換に利用できる状態で残った。
所有権の放棄もこの経路を無効にしなかった。事案前のブロック131653426でowner()はゼロアドレスを返した。controlburnはowner()ではなく設定済みコントローラーを確認するため、このアクセス経路は有効なままだった。関数は誰にでも開かれておらず、呼び出し元は認可チェックで失敗する。準備高のリセットにより、ほぼすべてのUSDTを引き出せる。コントローラーは破壊直後にsync()を呼び、残りの売却トークンが到着する前に空になった後のトークン残高を記録した。ログ29は準備高を4,421,023.357469283419586501 USDTと0.000000000000006678 TENDRILに設定した。その後、27,337,226,086.842669992690122889 TENDRILがプールに入った。最終スワップは4,421,023.357469283419586499 USDTを引き出し、残ったUSDTは0.000000000000000002だけだった。
一定積公式がこの出力量を説明する。手数料と丸めを無視した例示では、USDT出力はUSDT準備高にトークン入力を掛け、トークン準備高とトークン入力の和で割って計算できる。記録上のトークン準備高がほぼゼロなら、入力が分母を支配し、出力はUSDT準備高の全体に近づく。ただし、今回引き出された最終額はプールから純粋に取り出した額ではない。USDTの総流出は5,117,517.824288279504509510、総流入は4,561,847.285535350596034371だった。差し引きすると純流出は555,670.538752928908475139 USDTとなる。
コントラクトコードと履歴の軌跡から一連の流れが再構成された。この売却に伴うトークンバーンは、ブロックエクスプローラーを通じた検証済みソースコード、過去のコール、イベントログ、オペコードトレースで再現された。Solidity v0.8.24+commit.e11b9ed9で最適化を無効にして再コンパイルすると、ブロック131653426の実行時コードはコンパイラメタデータを除きコントラクトのバイトコードと一致した。デコードしたバーンパラメータは、プールからデッドアドレスへ移された額と正確に一致する。整数演算も税額、売却に残るトークン、準備高残高に正しく対応した。総供給量は取引の前後で隣接ブロック間でも変わっていない。成功したイベント取引はブロック131653427に現れた。2つの公開BNB Chain RPCエンドポイントで検証したレシートは一致し、2026年11月6日のレビュー時点でアドレスレベルのUSDTフローも完全に整合した。本記事は人工知能の支援を受けて作成され、編集チームが確認した。