Ho guardato il codice che era sbagliato con Cetus la scorsa notte, e la prima cosa che mi ha molto insospettito get_delta_b era il motivo per cui questa funzione convertiva u256 in u64, il che causava il problema dell'intercettazione di precisione. Dopo aver chiesto all'intelligenza artificiale, è probabile che quando cetus ha migrato tutte le formule di uniswap v3, poiché uni utilizza un punto fisso, debba essere convertito in un numero in virgola mobile senza un'attenta considerazione di sicurezza. Questo tipo di logica di business, che appartiene al livello dell'algoritmo, è difficile da rilevare negli audit del codice, a meno che l'istituto di audit non disponga anche di ricercatori che hanno familiarità sia con gli algoritmi che con il codice. Ecco la logica del motivo per cui l'intelligenza artificiale analizza il codice nel modo in cui lo fa:
Sulla base della mia analisi della base di codice, posso ora spiegare perché l'autore ha scelto di implementarla in questo modo
get_delta_b
funzioni e possibili cause:
Perché l'autore della funzione implementa get_delta_b modo
Ottimizzazione delle prestazioni: ) e bitmask gestiscono direttamente i tipi U256. È molto probabile che ciò migliori le prestazioni e riduca il sovraccarico computazionale. Nelle applicazioni DeFi, in particolare negli scenari di trading ad alta frequenza, le prestazioni sono fondamentali.
Il codice commentato utilizza u256::get
,u256::shrw
Mentre l'implementazione corrente utilizza operazioni bit (>> 64
Risparmia sulle commissioni del gas: le operazioni sulla blockchain Sui devono pagare le commissioni del gas e le operazioni più complesse consumeranno più gas. La semplificazione della matematica può ridurre i costi di transazione, in particolare per le funzioni principali AMM utilizzate di frequente.
Dipendenze ridotte: funzioni del modulo e l'implementazione corrente riduce le chiamate a queste funzioni, forse per ridurre le dipendenze da librerie esterne o per evitare problemi con alcune funzioni esterne.
Il codice nei commenti utilizza più u256
Porting da Solidity a Move: In termini di stile del codice, potrebbe trattarsi di un porting dal codice Solidity di Ethereum al linguaggio Move di Sui. Questo uso della manipolazione dei bit e del mascheramento è comune in Solidity, specialmente nelle implementazioni AMM come Uniswap V3.
Gestione della matematica a virgola fissa: il risultato risultante a 256 bit deve essere elaborato correttamente e lo spostamento di 64 bit a destra è un modo comune per ottenere la posizione decimale corretta.
La matematica a virgola fissa viene spesso utilizzata negli AMM per gestire i valori decimali. full_math_u128::full_mul
Potenziali problemi
Tuttavia, questa implementazione introduce diversi problemi:
Scarsa leggibilità del codice: l'uso di maschere hardcoded e le operazioni di spostamento rendono il codice difficile da comprendere e verificare.
Mancanza di controllo completo dei limiti: le operazioni di bit e le operazioni di conversione dei tipi non dispongono di un controllo completo dei limiti, il che può portare a comportamenti imprevisti in casi estremi.
Il codice di commento coesiste con il codice di implementazione: il mantenimento di versioni precedenti del codice commentato indica che il codice potrebbe essere in uno stato di transizione o non adeguatamente testato, il che è pericoloso per il codice critico che si occupa di attività finanziarie.
Rischio di overflow di numeri interi: quando si gestiscono valori di grandi dimensioni, le operazioni di bit e le trasformazioni possono portare a un overflow di numeri interi e le implementazioni semplificate potrebbero non disporre di meccanismi di protezione adeguati.
sommario
È probabile che il motivo principale per cui l'autore ha implementato questo codice sia quello di ottimizzare le prestazioni e ridurre i costi del gas, gestendo al contempo i calcoli matematici a virgola fissa negli AMM. Tuttavia, questa ottimizzazione, a scapito della sicurezza e della leggibilità del codice, può fornire agli aggressori vulnerabilità sfruttabili, come si può vedere dall'incidente di furto di Cetus fornito.
Nei progetti DeFi, la sicurezza dovrebbe sempre avere la precedenza sull'ottimizzazione delle prestazioni, soprattutto per le funzioni principali che gestiscono gli asset degli utenti. È meglio utilizzare funzioni di libreria collaudate, aggiungere controlli completi dei limiti e condurre controlli di sicurezza adeguati.
Mostra originale26
47.064
Il contenuto di questa pagina è fornito da terze parti. Salvo diversa indicazione, OKX non è l'autore degli articoli citati e non rivendica alcun copyright sui materiali. Il contenuto è fornito solo a scopo informativo e non rappresenta le opinioni di OKX. Non intende essere un'approvazione di alcun tipo e non deve essere considerato un consiglio di investimento o una sollecitazione all'acquisto o alla vendita di asset digitali. Nella misura in cui l'IA generativa viene utilizzata per fornire riepiloghi o altre informazioni, tale contenuto generato dall'IA potrebbe essere impreciso o incoerente. Leggi l'articolo collegato per ulteriori dettagli e informazioni. OKX non è responsabile per i contenuti ospitati su siti di terze parti. Gli holding di asset digitali, tra cui stablecoin e NFT, comportano un elevato grado di rischio e possono fluttuare notevolmente. Dovresti valutare attentamente se effettuare il trading o detenere asset digitali è adatto a te alla luce della tua situazione finanziaria.