Prima di tutto, le mie più sentite condoglianze al team di @Balancer e a tutti coloro che sono stati colpiti da questo exploit. È sempre una giornata difficile quando c'è un hack significativo nel DeFi come questo, tanto più proveniente da un protocollo OG. Più del costo in dollari dei fondi rubati, questo danneggia davvero l'immagine di tutto il crypto e del DeFi nel suo insieme e riporta indietro la nostra industria di diversi mesi. Il fatto è che Solidity è semplicemente un linguaggio troppo insicuro per essere davvero quello che ospita il futuro della finanza. Solidity ha una superficie troppo ampia che la rende vulnerabile agli hack, con gli sviluppatori che si affidano a controlli manuali per tutto, dai controlli di accesso ai calcoli precisi, ed è esattamente per questo che sono stati inventati linguaggi orientati agli asset come Move. Dopo aver fatto un po' di ricerche, ecco come è stato hackato Balancer: gli attaccanti hanno sfruttato errori di arrotondamento negli scambi di pool stabili per distorcere l'invariante del pool, una costante matematica chiave che rappresenta la liquidità bilanciata. Hanno iniziato con scambi di BPT (Balancer Pool Tokens) per un asset sottostante come cbETH, spingendo i saldi ai confini di arrotondamento esatti (ad esempio, scalati a 9). Poi, hanno scambiato tra asset come wstETH e cbETH con quantità elaborate (ad esempio, ~8.918 arrotondato a 8 a causa della scalatura a punto fisso), sottovalutando le variazioni di riserva e deflazionando artificialmente l'invariante (D). Questo ha fatto crollare il prezzo di BPT (D / totalSupply), permettendo agli attaccanti di fare un reverse-swap per coniare BPT in eccesso a basso costo, bruciarlo per ritirare asset sottostanti a tassi "normali" e intascare la differenza, rubando essenzialmente dai fornitori di liquidità. I profitti si sono accumulati nei saldi interni del Vault e sono stati incassati tramite manageUserBalance con WITHDRAW_INTERNAL, senza necessità di bypassare l'autenticazione diretta poiché il difetto matematico ha sovvenzionato il furto. È una perdita di precisione nelle librerie a punto fisso manuali di Solidity che si traduce in enormi drenaggi. Il modo in cui Move avrebbe bypassato completamente questo hack è integrando la sicurezza al suo interno: gli asset sono trattati come risorse con tipi lineari che impongono una rigorosa conservazione (niente duplicati, perdite o cadute non intenzionali), e la matematica utilizza interi esatti u64/u128 con aborti di overflow integrati, niente float, niente scivolamenti di arrotondamento sfruttabili in calcoli complessi. In un DEX basato su Move, le funzioni di scambio controllerebbero e aggiornerebbero in modo atomico le invarianti tramite la VM, abortendo su qualsiasi squilibrio, come: public entry fun swap(pool: &mut LiquidityPool, in: Coin, out_amt: u64): Coin { assert!(coin::value(&in) >= calculate_required_in(pool, out_amt), E_INSUFFICIENT_INPUT); coin::merge(&mut pool.coin_x_reserve, in); let out = coin::extract(&mut pool.coin_y_reserve, out_amt); assert!(check_invariant(pool), E_INVARIANT_VIOLATION); out } Inoltre, le transazioni atomiche eliminano i rischi di reentrancy. Questo è il motivo per cui gli ecosistemi Move hanno molte meno vulnerabilità rispetto all'EVM. È tempo che i costruttori di DeFi abbraccino linguaggi come Move che danno priorità alla sicurezza fin dall'inizio, così possiamo finalmente costruire un futuro finanziario resiliente senza ritardi prevenibili come questo.