Cel mai înfricoșător lucru la un atac tip sandwich este că atacatorul calculează în mod clar suma profitului în prima etapă a atacului.
Arbitrajul tip sandwich este o metodă de arbitraj controversată, cunoscută și sub numele de atac sandwich. Este o metodă de atac care folosește front-running pentru a ataca tranzacțiile victimei pentru arbitraj. La sesiunea de partajare a tehnologiei în fiecare miercuri, pe 9 noiembrie 2022, @daimajia, un programator de la Fondul Zhen, a adus popularizarea științei despre MEV, împrumuturi flash și arbitraj sandwich și a analizat arbitrajul sandwich bazat pe incidentul de atac DODO USDT/DAI ca un caz specific, mult conținut și multe informații utile.
1. Știință populară pe MEV, împrumuturi flash și arbitraj sandwich
1. Ce este MEV?
MEV (Valoarea extractibilă a minerului) se referă la valoarea maximă extractabilă. Minerii pot împacheta tranzacții și pot genera blocuri în Ethereum, iar în cadrul blocurilor pe care le generează, minerii pot include, exclude, sorta tranzacții etc. Pe lângă taxele de tranzacție și recompensele de bloc, minerii pot extrage și mai multă valoare prin operațiunile de mai sus, iar această valoare este MEV.
Cea mai recentă definiție a MEV în blockchain PoS este:
Valoarea totală pe care un validator o poate extrage dintr-un bloc (sau o serie de blocuri) având în vedere starea mediului și toate acțiunile disponibile
Validatorii pot efectua operațiuni precum reordonarea, revizuirea și inserarea tranzacțiilor. De asemenea, pot încorpora mai multe strategii de nișă, cum ar fi modificarea marcajelor de timp ale blocurilor, manipularea „aleatoriei”, executarea de validatori suplimentari și multe altele.
În general, un validator nu poate schimba starea mediului său, inclusiv regulile blockchain, codul smart contract pe blockchain, seturile de tranzacții din pool-ul său de memorie etc.
2. Împrumut flash
Împrumutul flash este un instrument de împrumut negarantat care s-a născut datorită caracteristicilor de atomicitate și rollback ale tranzacțiilor blockchain. Utilizatorii trebuie să finalizeze împrumutul și rambursarea în cadrul unei tranzacții atomice și nu necesită nicio garanție. Permiteți utilizatorilor să aibă capacitatea de a folosi sume uriașe de fonduri la costuri aproape de zero.
Împrumuturile flash trebuie rambursate în cadrul aceleiași tranzacții. În ceea ce privește împrumuturile flash, „procesul de tranzacție” poate fi gândit ca fiind alcătuit din trei părți: acceptarea împrumutului, a face lucrurile cu împrumutul și rambursarea împrumutului, dar toate acestea se întâmplă într-o clipă.
Tranzacția este transmisă rețelei, împrumutându-ți temporar aceste fonduri și poți face ceva cu fondurile (a doua parte a tranzacției), iar atâta timp cât fondurile pot fi returnate în a treia parte la timp, poți face ce vrei tu. Dacă fondurile nu revin la timp, rețeaua blockchain respinge tranzacția, ceea ce înseamnă că creditorul primește fondurile înapoi. De fapt, în conceptul blockchain, ei au întotdeauna fonduri.
Acest lucru explică de ce creditorii nu vă cer să oferiți garanții, rambursarea fondurilor este impusă prin codul contractului.
3. Arbitraj Sandwich
Sandwich arbitrage, cunoscut și sub denumirea de atac sandwich, este o metodă de atac care folosește front-running pentru a ataca tranzacțiile victimei pentru arbitraj.
Arbitrajul tip sandwich este inițiat de roboții de arbitraj Când robotul de arbitraj detectează că o tranzacție poate cauza derapajul de preț al activelor digitale, atacatorul va plăti taxe mai mari pentru a concura pentru drepturile de ambalare a unui bloc. Când are succes, robotul de arbitraj achiziționează imediat o anumită cantitate de active digitale, forțând prețul activului să crească și apoi vinde activele digitale nou achiziționate după finalizarea tranzacției de atac pentru a obține un arbitraj gratuit.
Arbitrajul tip sandwich nu este o metodă de arbitraj pașnică - această metodă de arbitraj trebuie să includă un atac asupra unui anumit utilizator victimă și să determine victima să piardă active.
În tranzacțiile cu Ethereum, pentru a profita de dreptul de a acorda prioritate ambalajului, atacatorii trebuie să plătească taxe mai mari pentru gaz. Acest lucru se datorează faptului că ETH adoptă metoda de licitare optimă a taxei de gaz, adică utilizatorul care plătește cea mai mare taxă de gaz poate obține prioritate. pachet. . Pentru a obține prima șansă de a împacheta blocuri, atacatorii vor crea concurență vicioasă în taxele de gaz, dar din moment ce taxele de gaz ale Ethereum sunt plătite pentru fiecare tranzacție (indiferent de succes sau eșec). Prin urmare, atunci când atacatorii se angajează într-o competiție vicioasă, interesele utilizatorilor obișnuiți trebuie să fie lezate.
2. Analiza pas cu pas a incidentului de atac DODO USDT/DAI
Pe 3 noiembrie 2022, ora Beijingului, platforma de tranzacționare descentralizată Ethereum DODO a fost atacată. Atacatorul a folosit vulnerabilitățile contractului pentru a schimba frecvent jetoanele și a finalizat un atac tip sandwich Raportul profit-pierdere a procesului nu a fost atât de exagerat, ci mai degrabă neajutorat. Atacatorul a folosit un împrumut rapid de peste 3,5 milioane USD într-o singură operațiune și a realizat doar un profit de 26,4 USD după cum urmează:
1. Primul pas al atacului tip sandwich: prima tranzacție FrontRun a atacatorului
Tranzacția a fost inițiată de la adresa 0xf480, a interacționat cu un contract (contractul atacatorului 1) marcat ca MEVbot de către Etherscan, a transferat 12.840 USD în contract (adică în cont propriu) și apoi a transferat-o în următorul contract (contractul atacatorului 1). ). Contractul 2).
2. Pasul 2: Folosiți un împrumut rapid pentru a schimba Tether cu DAI
Atacatorul a făcut un împrumut rapid, a împrumutat 3,55 milioane de dolari SUA de la Balancer și a transferat banii la adresă, transferând Tether în pool-ul USDT de gaj DODO, apoi i-a transferat atacatorului. O sumă de bani este returnată este un schimb (adică un schimb de jetoane).
În acest schimb, atacatorul a transferat 3,55 milioane USD în USDT și 3,53 milioane USD în DAI, schimbând astfel banii din contul atacatorului din Tether în DAI.
3. Schimbați frecvent jetoanele
1) Utilizați Psm pentru a schimba DAI cu USDC
Apoi, atacatorul a efectuat un alt transfer, transferând DAI la un contract public DssPsm, care a finalizat.
Atacatorul a trimis 3538543 DAI către Psm. Contractul Psm a transferat banii la adresa zero (adică a ars toate DAI) și apoi a retransferat 3538543 USDC atacatorului.
2) USDC este transferat la USDT
Atacatorul a folosit apoi USDC-ul schimbat pentru a face un schimb în pool-ul USDT/USDC al DODO: contractul atacatorului a dat 3,53 milioane USDC lui DODO, iar DODO a dat 3,53 milioane USDT contractului atacatorului.
4. Pasul 3: Extrageți comisionul BackRun pentru a finaliza bucla închisă
Atacatorul a transferat apoi încă 70 USD de la DODO într-un portofel cu semnături multiple (adresa DODOteam). În acest pas, DODO a extras un comision în timpul tranzacției. În cele din urmă, atacatorul a returnat toate USDT (3551259) și împrumutul flash s-a încheiat.
3. Rezumat
În total, atacatorul a schimbat monede stabile de două ori în cele două pool-uri ale DODO Procesul a fost: 3551259 USDT - 3538543 DAI (acest pas a produs un alunecare mare) - 3538543 USDC - 3.538.419 USD.
Se poate constata că USDT care a fost schimbat în cele din urmă nu a fost suficient pentru a rambursa banii împrumutați prin împrumutul flash. Diferența de preț a fost de 3551259-3538149=12840 primul pas a fost util.
În acest moment vom avea întrebări, nu a pierdut atacatorul cei 12.840 de dolari pe care i-a avansat? Ce se urmărește să realizeze acest lucru?
De fapt, operațiunea atacatorului (la schimbul USDT cu DAI) a făcut ca grupul DODO să fie mai dezechilibrat pentru a schimba USDT (proces de arbitraj) și a folosit un proces invers pentru a inversa recolta (dupa scaderea comisionului din Gaz si DODO).
Prin urmare, vedem că există de fapt o tendință de supraviețuire în astfel de atacuri. De fapt, mulți atacatori găsesc astfel de oportunități în lanț și efectuează astfel de atacuri Roboții atacatori vor fi bătuți, iar mulți roboți vor fi arbitrați de alți roboți. De aceea, MEV este foarte complicat acum.