La chose la plus effrayante dans une attaque sandwich est que l’attaquant calcule clairement le montant du profit dès la première étape de l’attaque.
L'arbitrage sandwich est une méthode d'arbitrage controversée, également connue sous le nom d'attaque sandwich. Il s'agit d'une méthode d'attaque qui utilise le front-running pour attaquer les transactions de la victime à des fins d'arbitrage. Lors de la session de partage technologique tous les mercredis du 9 novembre 2022, @daimajia, un codeur du Fonds Zhen, a vulgarisé la science sur le MEV, les prêts flash et l'arbitrage sandwich, et a analysé l'arbitrage sandwich basé sur l'incident d'attaque DODO USDT/DAI comme un cas précis. , beaucoup de contenu et beaucoup d’informations utiles.
1. Science populaire sur le MEV, les prêts flash et l'arbitrage sandwich
1. Qu’est-ce que le MEV ?
MEV (Miner Extractable Value) fait référence à la valeur extractible maximale. Elle était également appelée auparavant valeur extractible par le mineur. Les mineurs peuvent regrouper des transactions et générer des blocs dans Ethereum, et dans les blocs qu'ils génèrent, les mineurs peuvent inclure, exclure, trier les transactions, etc. En plus des frais de transaction et des récompenses de bloc, les mineurs peuvent également extraire plus de valeur grâce aux opérations ci-dessus, et cette valeur est MEV.
La dernière définition du MEV dans la blockchain PoS est :
La valeur totale qu'un validateur peut extraire sur un bloc (ou une série de blocs) compte tenu de l'état de l'environnement et de toutes les actions disponibles
Les validateurs peuvent effectuer des opérations telles que la réorganisation, la révision et l'insertion de transactions. Ils peuvent également intégrer des stratégies plus spécialisées, telles que la modification de l'horodatage des blocs, la manipulation du « caractère aléatoire », l'exécution de validateurs supplémentaires, etc.
De manière générale, un validateur ne peut pas modifier l'état de son environnement, y compris les règles de la blockchain, le code du contrat intelligent sur la blockchain, les ensembles de transactions dans son pool de mémoire, etc.
2. Prêt Flash
Le prêt flash est un outil de prêt non garanti né de l'atomicité et des caractéristiques de restauration des transactions blockchain. Les utilisateurs doivent finaliser l'emprunt et le remboursement dans le cadre d'une transaction atomique et n'ont besoin d'aucune garantie. Donnez aux utilisateurs la possibilité d’utiliser d’énormes sommes d’argent à un coût proche de zéro.
Les prêts flash doivent être remboursés au cours de la même transaction. En ce qui concerne les prêts flash, le « processus de transaction » peut être considéré comme composé de trois parties : accepter le prêt, faire des choses avec le prêt et rembourser le prêt, mais tout cela se produit en un instant.
La transaction est soumise au réseau, vous prêtant temporairement ces fonds, et vous pouvez faire quelque chose avec les fonds (la deuxième partie de la transaction), et tant que les fonds peuvent être restitués à la troisième partie à temps, vous pouvez le faire tout ce que vous voulez. Si les fonds ne reviennent pas à temps, le réseau blockchain rejette la transaction, ce qui signifie que le prêteur récupère les fonds. En fait, dans le concept blockchain, ils ont toujours des fonds.
Cela explique pourquoi les prêteurs n’exigent pas que vous fournissiez une garantie, le remboursement des fonds étant imposé par le code du contrat.
3. Arbitrage sandwich
L'arbitrage sandwich, également connu sous le nom d'attaque sandwich, est une méthode d'attaque qui utilise le front-running pour attaquer les transactions de la victime à des fins d'arbitrage.
L'arbitrage sandwich est lancé par des robots d'arbitrage. Lorsque le robot d'arbitrage détecte qu'une transaction peut entraîner un dérapage des prix des actifs numériques, l'attaquant paiera des frais de gaz plus élevés pour rivaliser pour les droits de packaging d'un bloc. En cas de succès, le robot d'arbitrage achète immédiatement une certaine quantité d'actifs numériques, forçant le prix de l'actif à augmenter, puis vend les actifs numériques nouvellement achetés une fois la transaction d'attaque terminée pour réaliser un arbitrage sans frais.
L'arbitrage sandwich n'est pas une méthode d'arbitrage pacifique - cette méthode d'arbitrage doit inclure une attaque contre un certain utilisateur victime et lui faire perdre des actifs.
Dans les transactions Ethereum, afin de s'emparer du droit de prioriser l'emballage, les attaquants doivent payer des frais de gaz plus élevés. En effet, ETH adopte la méthode d'enchère optimale pour les frais de gaz, c'est-à-dire que l'utilisateur qui paie les frais de gaz les plus élevés peut obtenir la priorité pour emballer. . Afin d'avoir la première chance de regrouper des blocs, les attaquants créeront une concurrence féroce en matière de frais de gaz, mais étant donné que les frais de gaz d'Ethereum sont payés pour chaque transaction (indépendamment du succès ou de l'échec). Par conséquent, lorsque les attaquants se lancent dans une concurrence vicieuse, les intérêts des utilisateurs ordinaires doivent être lésés.
2. Analyse étape par étape de l'incident d'attaque DODO USDT/DAI
Le 3 novembre 2022, heure de Pékin, la plateforme de trading décentralisée Ethereum DODO a été attaquée. L'attaquant a utilisé les vulnérabilités du contrat pour changer fréquemment de tokens et a réalisé une attaque sandwich. Cependant, en étudiant les données de la chaîne, on découvrira que l'ensemble Le rapport profits/pertes du processus n'était pas si exagéré, mais plutôt impuissant. L'attaquant a utilisé un prêt flash de plus de 3,5 millions de dollars en une seule opération et n'a réalisé qu'un bénéfice de 26,4 dollars. C'est embarrassant. L'ensemble du processus est comme suit:
1. La première étape de l’attaque sandwich : la première transaction de l’attaquant FrontRun
La transaction a été initiée à partir de l'adresse 0xf480, a interagi avec un contrat (contrat attaquant 1) marqué comme MEVbot par Etherscan, a transféré 12 840 $ sur le contrat (c'est-à-dire son propre compte), puis l'a transféré au contrat suivant (contrat attaquant 1). ).Contrat 2).
2. Étape 2 : Utilisez un prêt flash pour échanger du Tether contre du DAI
L'attaquant a accordé un prêt flash, a emprunté 3,55 millions de dollars américains à Balancer et a transféré l'argent à l'adresse, transférant Tether vers le pool USDT de jetons de gage DODO, puis l'a transféré à l'attaquant. est un swap (c'est-à-dire un échange de jetons).
Dans cet échange, l'attaquant a transféré 3,55 millions de dollars en USDT et 3,53 millions de dollars en DAI, changeant ainsi l'argent du compte de l'attaquant de Tether en DAI.
3. Changez fréquemment de jetons
1) Utilisez Psm pour échanger DAI contre USDC
Ensuite, l'attaquant a effectué un autre transfert, transférant le DAI vers un contrat public DssPsm. Psm est un contrat dont le rachat est terminé. Les utilisateurs peuvent transférer le DAI vers Psm et l'échanger contre de l'USDC. Psm détruira le DAI transféré par l'utilisateur.
L'attaquant a envoyé 3538543 DAI à Psm. Le contrat Psm a transféré l'argent à l'adresse zéro (c'est-à-dire qu'il a brûlé tous les DAI), puis a retransféré 3538543 USDC à l'attaquant.
2) L'USDC est transféré à l'USDT
L'attaquant a ensuite utilisé l'USDC échangé pour effectuer un échange dans le pool USDT/USDC de DODO : le contrat de l'attaquant a donné 3,53 millions d'USDC à DODO, et DODO a donné 3,53 millions d'USDT au contrat de l'attaquant.
4. Étape 3 : Extraire la commission BackRun pour terminer la boucle fermée
L'attaquant a ensuite transféré 70 $ supplémentaires de DODO vers un portefeuille multi-signature (l'adresse de DODOteam). Au cours de cette étape, DODO a perçu une commission lors de la transaction. Finalement, l'attaquant a restitué tous les USDT (3551259) et le prêt flash a pris fin.
3. Résumé
Au total, l'attaquant a échangé deux fois des pièces stables dans les deux pools de DODO. Le processus était le suivant : 3551259 USDT - 3538543 DAI (cette étape a produit un dérapage important) - 3538543 USDC - 3 538 419 USDT.
On peut constater que l'USDT finalement échangé n'était pas suffisant pour rembourser l'argent prêté par le prêt flash. La différence de prix était de 3551259-3538149 = 12840. À ce moment-là, les 12840 dollars américains transférés par l'attaquant à lui-même dans le la première étape s’est avérée utile.
À ce stade, nous aurons des questions : l’attaquant n’a-t-il pas perdu les 12 840 $ qu’il avait avancés ? Qu’est-ce que cela vise à réaliser ?
En fait, l'opération de l'attaquant (lors de l'échange de l'USDT contre du DAI) a rendu le pool DODO encore plus déséquilibré. Il a utilisé ce pool déséquilibré pour échanger contre plus d'USDT (processus d'arbitrage) et a utilisé un processus inverse pour inverser la récolte. Cela a coûté 26,4 dollars américains. (après déduction des commissions du Gaz et du DODO).
Par conséquent, nous constatons qu'il existe en fait un biais de survie dans de telles attaques. Il existe en fait de nombreux attaquants qui trouvent de telles opportunités sur la chaîne et mènent de telles attaques. La plupart d'entre nous ne peuvent voir que des cas d'attaques réussies, et le plus souvent ils effectuent des attaques sandwich. attaques. Les robots attaquants seront battus et de nombreux robots seront arbitrés par d'autres robots. C'est pourquoi MEV est très compliqué maintenant.