何よりもまず、@Balancerチームと、このエクスプロイトの影響を受けたすべての人に心からお見舞い申し上げます。 OG プロトコルからのハッキングはおろか、このような重大な DeFi ハッキングが発生すると、常に厳しい日です。これは、盗まれた資金のドルコスト以上に、仮想通貨とDeFi全体のイメージを真に傷つけ、私たちの業界を数か月後退させます。 実際のところ、Solidityは、金融の未来をホストする言語にはあまりにも安全ではありません。Solidity は表面積が大きすぎるためハッキングされやすく、開発者はアクセス制御から正確な計算まであらゆることを手動チェックに依存しており、それがまさに Move のようなアセットファースト言語が最初に発明された理由です。 少し調べた結果、Balancer は次のようにハッキングされました: 攻撃者は、安定したプール スワップの丸めエラーを悪用して、バランスの取れた流動性を表す重要な数学定数であるプールの不変量を歪めました。彼らは、bbETH などの原資産に対する BPT (バランサー プール トークン) のフラッシュ ローン スワップから始めて、残高を正確な丸め境界 (たとえば、9 にスケーリング) まで押し上げました。次に、wstETH などの資産を細工された金額 (たとえば、固定小数点スケーリングにより ~8.918 を 8 に切り捨てる) で交換し、準備金の変化を過小評価し、不変量 (D) を人為的に収縮させました。 これにより、BPT 価格 (D / totalSupply) が急落し、攻撃者はリバーススワップして余剰の BPT を安価に鋳造し、それを燃やして原資産を「通常の」レートで引き出し、その差額をポケットに入れることができ、本質的に流動性プロバイダーから盗むことができました。利益は Vault の内部残高に蓄積され、manageUserBalance を介して WITHDRAW_INTERNAL で現金化され、数学の欠陥が盗難を助成したため、直接の認証バイパスは必要ありませんでした。これは、Solidity の手動固定小数点ライブラリの精度の低下であり、大量の排水にカスケードされます。 Move がこのハックを完全に回避する方法は、安全性をコアに組み込むことです: アセットは、厳密な保存 (意図しない複製、ドロップ、または損失なし) を強制する線形型のリソースとして扱われ、数学は、オーバーフローの中止、浮動小数点数、複雑な計算で悪用可能な丸めスリップが組み込まれた正確な u64/u128 整数を使用します。 Move ベースの DEX では、スワップ関数は VM を介して不変条件をアトミックにチェックおよび更新し、次のような不均衡を中止します。 パブリックエントリーファンスワップ(pool: &mut LiquidityPool, in: Coin, out_amt: u64): Coin { 主張する!(coin::value(&in) >= calculate_required_in(プール、out_amt)、E_INSUFFICIENT_INPUT); coin::merge(&mut pool.coin_x_reserve, in); レットアウト = coin::extract(&mut pool.coin_y_reserve, out_amt); 主張する!(check_invariant(プール)、E_INVARIANT_VIOLATION); アウト } さらに、アトミック トランザクションは再入リスクを排除します。これが、Move エコシステムのエクスプロイトが EVM に比べてはるかに少ない理由です。 DeFi ビルダーは、セキュリティをゼロから優先する Move のような言語を採用する時期が来ており、このような予防可能な挫折なしに回復力のある金融の未来を最終的に構築できるようになります。