La cosa più spaventosa di un attacco sandwich è che l’attaccante calcola chiaramente l’importo del profitto nella prima fase dell’attacco.

L'arbitraggio sandwich è un metodo di arbitraggio controverso, noto anche come attacco sandwich. È un metodo di attacco che utilizza il front-running per attaccare le transazioni della vittima per l'arbitraggio. Alla sessione di condivisione tecnologica ogni mercoledì del 9 novembre 2022, @daimajia, un programmatore del Fondo Zhen, ha divulgato la scienza su MEV, prestiti flash e arbitraggio sandwich e ha analizzato l'arbitraggio sandwich basato sull'incidente di attacco DODO USDT/DAI come un caso specifico, molti contenuti e molte informazioni utili.

1. Divulgazione scientifica su MEV, prestiti flash e arbitraggio sandwich

1. Cos'è il MEV?

MEV (Miner Extractable Value) si riferisce al valore massimo estraibile. Prima era anche chiamato valore estraibile del minatore. I minatori possono impacchettare transazioni e generare blocchi in Ethereum e, all'interno dei blocchi che generano, i minatori possono includere, escludere, ordinare transazioni, ecc. Oltre alle commissioni di transazione e ai premi per blocco, i minatori possono anche estrarre più valore attraverso le operazioni di cui sopra, e questo valore è MEV.

L’ultima definizione di MEV nella blockchain PoS è:

Il valore totale che un validatore può estrarre da un blocco (o da una serie di blocchi) dato lo stato dell'ambiente e tutte le azioni disponibili

I validatori possono eseguire operazioni come il riordino, la revisione e l'inserimento di transazioni. Possono anche incorporare strategie più di nicchia, come la modifica dei timestamp dei blocchi, la manipolazione della "casualità", l'esecuzione di validatori aggiuntivi e altro ancora.

In generale, un validatore non può modificare lo stato del suo ambiente, comprese le regole della blockchain, il codice del contratto intelligente sulla blockchain, i set di transazioni nel suo pool di memoria, ecc.

2. Prestito lampo

Il prestito flash è uno strumento di prestito non garantito nato a causa delle caratteristiche atomiche e di rollback delle transazioni blockchain. Gli utenti devono completare il prestito e il rimborso all'interno di una transazione atomica e non richiedono alcuna garanzia. Consenti agli utenti di utilizzare enormi quantità di fondi a un costo prossimo allo zero.

I prestiti flash devono essere rimborsati nell'ambito della stessa operazione. Per quanto riguarda i prestiti flash, il "processo di transazione" può essere pensato come composto da tre parti: accettare il prestito, fare cose con il prestito e rimborsare il prestito, ma tutto questo avviene in un istante.

La transazione viene inviata alla rete, prestandoti temporaneamente questi fondi e puoi fare qualcosa con i fondi (la seconda parte della transazione) e finché i fondi possono essere restituiti alla terza parte in tempo, puoi farlo quello che vuoi. Se i fondi non ritornano in tempo, la rete blockchain rifiuta la transazione, il che significa che il prestatore recupera i fondi. Infatti, nel concetto di blockchain, hanno sempre dei fondi.

Questo spiega perché gli istituti di credito non richiedono garanzie collaterali, il rimborso dei fondi viene imposto tramite il codice contrattuale.

3. Arbitraggio sandwich

L'arbitraggio sandwich, noto anche come attacco sandwich, è un metodo di attacco che utilizza il front-running per attaccare le transazioni della vittima per l'arbitraggio.

L’arbitraggio sandwich viene avviato da robot di arbitraggio. Quando il robot di arbitraggio rileva che una transazione può causare uno slittamento dei prezzi delle risorse digitali, l’aggressore pagherà tariffe del gas più elevate per competere per i diritti di confezionamento di un blocco. In caso di successo, il robot di arbitraggio acquista immediatamente una certa quantità di risorse digitali, costringendo il prezzo della risorsa ad aumentare, quindi vende le risorse digitali appena acquistate una volta completata la transazione di attacco per ottenere un arbitraggio gratuito.

L'arbitraggio sandwich non è un metodo di arbitraggio pacifico: questo metodo di arbitraggio deve includere un attacco a un determinato utente vittima e causare la perdita di beni della vittima.

Nelle transazioni di Ethereum, per accaparrarsi il diritto di dare priorità al packaging, gli aggressori devono pagare tariffe sul gas più elevate. Questo perché ETH adotta il metodo di offerta ottimale per la tariffa del gas, ovvero l'utente che paga la tariffa del gas più alta può ottenere la priorità. pacchetto. . Per avere la prima possibilità di impacchettare blocchi, gli aggressori creeranno una feroce competizione sulle tariffe del gas, ma poiché le tariffe del gas di Ethereum vengono pagate per ogni transazione (indipendentemente dal successo o dal fallimento). Pertanto, quando gli aggressori si impegnano in una concorrenza feroce, gli interessi degli utenti comuni devono essere danneggiati.

2. Analisi passo passo dell'incidente di attacco DODO USDT/DAI

Il 3 novembre 2022, ora di Pechino, la piattaforma di trading decentralizzata di Ethereum DODO è stata attaccata. L'aggressore ha utilizzato le vulnerabilità del contratto per cambiare frequentemente token e ha completato un attacco sandwich. Tuttavia, studiando i dati sulla catena, si scoprirà che l'intero Il rapporto profitti/perdite del processo non era così esagerato, ma piuttosto impotente. L'aggressore ha utilizzato un prestito flash di oltre 3,5 milioni di USDT in un'unica operazione e ha realizzato un profitto di soli 26,4 USDT. L'intero processo è imbarazzante come segue:

1. Il primo passo dell’attacco sandwich: la prima transazione FrontRun dell’attaccante

La transazione è stata avviata dall'indirizzo 0xf480, ha interagito con un contratto (contratto dell'attaccante 1) contrassegnato come MEVbot da Etherscan, ha trasferito $ 12.840 al contratto (ovvero, il suo conto), quindi li ha trasferiti al contratto successivo (contratto dell'attaccante 1 ).

2. Passaggio 2: utilizza un prestito flash per scambiare Tether con DAI

L'aggressore ha concesso un prestito flash, ha preso in prestito 3,55 milioni di dollari da Balancer e ha trasferito il denaro all'indirizzo, trasferendo Tether al pool USDT del token DODO, quindi ha restituito una somma di denaro all'aggressore è uno swap (cioè uno scambio di token).

In questo scambio l'aggressore ha trasferito 3,55 milioni di dollari in USDT e 3,53 milioni di dollari in DAI, cambiando così il denaro sul conto dell'aggressore da Tether a DAI.

3. Cambia frequentemente i token

1) Usa Psm per scambiare DAI con USDC

Successivamente, l'aggressore ha effettuato un altro trasferimento, trasferendo DAI a un contratto pubblico DssPsm è un contratto che ha completato il riscatto. Gli utenti possono trasferire DAI a Psm e scambiarlo con USDC distruggerà il DAI trasferito dall'utente.

L'aggressore ha inviato 3538543 DAI a Psm. Il contratto Psm ha trasferito il denaro all'indirizzo zero (ovvero ha bruciato tutti i DAI), quindi ha ritrasferito 3538543 USDC all'aggressore.

2) L'USDC viene trasferito all'USDT

L'attaccante ha quindi utilizzato gli USDC scambiati per effettuare uno scambio nel pool USDT/USDC di DODO: il contratto dell'attaccante ha dato 3,53 milioni di USDC a DODO, e DODO ha dato 3,53 milioni di USDT al contratto dell'attaccante.

4. Passaggio 3: estrarre la commissione BackRun per completare il circuito chiuso

L'aggressore ha poi trasferito altri 70 dollari da DODO su un portafoglio multifirma (l'indirizzo di DODOteam). In questo passaggio DODO ha percepito una commissione durante la transazione. Alla fine, l’aggressore ha restituito tutti gli USDT (3551259) e il prestito flash è terminato.

3. Riepilogo

In totale, l'aggressore ha scambiato stablecoin due volte nei due pool di DODO. Il processo è stato: 3551259 USDT - 3538543 DAI (questo passaggio ha prodotto un grande slippage) - 3538543 USDC - 3.538.419 USDT.

Si è constatato che l'USDT scambiato alla fine non era sufficiente per ripagare il denaro prestato con il prestito flash. La differenza di prezzo era di 3551259-3538149=12840 il primo passo è tornato utile.

A questo punto avremo delle domande: l’attaccante non ha perso i 12.840$ che aveva anticipato? Cosa si intende ottenere?

In effetti, l'operazione dell'aggressore (durante lo scambio di USDT con DAI) ha reso il pool DODO più sbilanciato. Ha utilizzato questo pool sbilanciato per scambiare più USDT (processo di arbitraggio) e ha utilizzato un processo inverso per invertire il raccolto (al netto delle commissioni Gas e DODO).

Pertanto, vediamo che in tali attacchi esiste effettivamente un pregiudizio per il sopravvissuto. In realtà ci sono molti aggressori che trovano tali opportunità sulla catena ed eseguono tali attacchi. La maggior parte di noi può vedere solo casi di attacchi riusciti e più spesso eseguono sandwich attacchi. I robot attaccanti verranno sconfitti e molti robot verranno arbitrati da altri robot. Questo è il motivo per cui MEV è molto complicato ora.