Autor: Daii Quelle: mirror
Am letzten Mittwoch (12. März) sorgte ein Vorfall für Aufsehen, bei dem ein Krypto-Trader durch einen MEV-Angriff einmalig 215.000 US-Dollar verlor.
Einfach gesagt, der Nutzer wollte im Uniswap v3 Handelsbecken Stablecoins im Wert von 220.800 USDC gegen den gleichen Wert in USDT eintauschen, erhielt jedoch nur 5.272 USDT, was zu einem sofortigen Verlust von 215.700 USDC in wenigen Sekunden führte, siehe Abbildung unten.
Das obige Bild ist ein Screenshot der On-Chain-Aufzeichnung dieser Transaktion. Der grundlegende Grund für diese Tragödie ist, dass sie einem in der Blockchain-Welt berüchtigten “Sandwich-Angriff” ausgesetzt war.
Der erste, der diesen MEV-Angriff enthüllte, war Michael (siehe obiges Bild), der erklärte:
Ein MEV-Bot hat die Transaktion durch das Abziehen der gesamten USDC-Liquidität vorweggenommen. Nachdem die Transaktion ausgeführt wurde, haben sie die Liquidität wieder hinzugefügt. Der Angreifer hat einem Blockbauer (bobTheBuilder) 200.000 $ gegeben und 8.000 $ aus dieser Transaktion profitierte.
Übersetzung: MEV-Roboter nutzen den Austausch aller USDC-Liquidität, um tx vorwegzunehmen. Nach der Ausführung der Transaktion geben sie die Liquidität zurück. Der Angreifer hat dem Blockbuilder (bobTheBuilder) 200.000 Dollar Trinkgeld gegeben und 8.000 Dollar aus dieser Transaktion gewonnen.
Der obenstehende Inhalt enthält einen Schreibfehler, der MEV-Angriffsroboter hat eine große Menge USDT ausgewechselt und nicht USDC.
Nachdem du jedoch seine Erklärungen und die Nachrichtenberichte gelesen hast, bist du vielleicht immer noch verwirrt, weil es zu viele neue Begriffe gibt, wie Sandwich-Angriff (Sandwich Attack), Vorwegnehmen (front-ran the tx), Liquidität zurückgeben (put back the liquidity), einem Blockbauer Trinkgeld geben (tipped a block builder) usw.
Heute werden wir am Beispiel dieses MEV-Angriffs den gesamten Prozess aufschlüsseln und Ihnen einen Einblick in die dunkle Welt von MEV geben.
Zunächst müssen wir erklären, was MEV ist.
MEV wurde ursprünglich als Miner Extractable Value bezeichnet und bezieht sich auf den zusätzlichen Gewinn, den Miner erzielen können, indem sie Transaktionen in Blockchain-Blöcken umsortieren, einfügen oder ausschließen. Diese Praktiken können dazu führen, dass normale Benutzer höhere Kosten tragen oder ungünstigere Transaktionspreise erhalten.
Mit dem Übergang von Blockchain-Netzwerken wie Ethereum vom Konsensmechanismus der Proof-of-Work (PoW) hin zum Konsensmechanismus der Proof-of-Stake (PoS) wurde die Kontrolle über die Transaktionsreihenfolge von Minern auf Validatoren übertragen. Daher hat sich der Begriff entsprechend von „Miner Extractable Value“ (MEV) zu „Maximal Extractable Value“ (MEV) entwickelt.
Obwohl sich der Name geändert hat, bleibt das Kernkonzept, durch die Manipulation der Handelsreihenfolge Wert zu extrahieren, dasselbe.
Der obige Inhalt ist etwas technisch, du musst nur merken: MEV existiert, weil frühere Miner und jetzige Validatoren das Recht haben, Transaktionen im Mempool zu sortieren. Diese Sortierung findet in einem Block statt, und derzeit wird alle etwa 11 Sekunden ein Block auf Ethereum erstellt, was bedeutet, dass alle 11 Sekunden eine solche Ausübung von Macht stattfindet. Ebenso wurde dieser MEV-Angriff auch durch die Sortierung der Validatoren erreicht.
Klicken Sie auf diesen Link, um die Transaktionsinhalte des mit dem Angriff verbundenen Blocks mit der Nummer 22029771 zu sehen, wie im folgenden Bild.
Bitte beachten Sie, dass die im Bild 1, 2, 3 dargestellten Transaktionen den MEV-Angriff darstellen, von dem zu Beginn dieses Artikels die Rede ist. Diese Reihenfolge wurde von dem Validator (bobTheBuilder) festgelegt. Warum ist das möglich?
Um das Funktionsprinzip von MEV zu verstehen, müssen wir zuerst begreifen, wie die Blockchain Informationen aufzeichnet und aktualisiert.
Blockchain kann als ein ständig wachendes Hauptbuch betrachtet werden, das alle stattgefundenen Transaktionen aufzeichnet. Der Status dieses Hauptbuchs, wie beispielsweise das Guthaben jedes Kontos, die Reservemengen der verschiedenen Tokens im Uniswap-Handelspool usw., wird durch vorherige Transaktionen bestimmt.
Wenn ein neuer Block zur Blockchain hinzugefügt wird, werden alle Transaktionen, die in diesem Block enthalten sind, nacheinander in der Reihenfolge ausgeführt, in der sie im Block angeordnet sind. Bei jeder Ausführung einer Transaktion ändert sich der globale Status der Blockchain entsprechend.
Das bedeutet, dass nicht nur die Reihenfolge der Blöcke wichtig ist, sondern auch die Reihenfolge der Transaktionen innerhalb der Blöcke. Wie wird also die Reihenfolge der Transaktionen in einem Block bestimmt?
Wenn ein Benutzer eine Transaktion im Blockchain-Netzwerk initiiert, wie zum Beispiel eine Transaktion, bei der USDC über Uniswap in USDT umgewandelt wird, wird diese zunächst an die Knoten im Netzwerk gesendet. Nach einer ersten Überprüfung gelangt die Transaktion in einen Bereich namens “Mempool”. Der Mempool ist wie ein Wartebereich, in dem die Transaktionen noch nicht bestätigt und dem nächsten Block der Blockchain hinzugefügt wurden.
Frühere Miner (im PoW-System) sind jetzt Validatoren (im PoS-System) und haben das Recht, Transaktionen aus dem Memory-Pool auszuwählen und die Reihenfolge dieser Transaktionen im nächsten Block zu bestimmen.
Die Reihenfolge der Transaktionen in einem Block ist entscheidend. Bevor ein Block endgültig bestätigt und zur Blockchain hinzugefügt wird, werden die Transaktionen in diesem Block in der Reihenfolge ausgeführt, die von den Validierern (zum Beispiel bobTheBuilder) festgelegt wurde. Das bedeutet, dass, wenn ein Block mehrere Transaktionen enthält, die mit demselben Transaktionspool interagieren, die Ausführungsreihenfolge dieser Transaktionen direkt das Ergebnis jeder einzelnen Transaktion beeinflusst.
Diese Fähigkeit ermöglicht es den Validierern, bestimmte Transaktionen priorisiert zu bearbeiten, andere Transaktionen zu verzögern oder auszuschließen und sogar eigene Transaktionen einzufügen, um den Gewinn zu maximieren.
Die Reihenfolge dieser Transaktion ist ebenfalls wichtig; ein kleiner Fehler kann zum Scheitern eines Angriffs führen.
Lassen Sie uns zunächst einen kurzen Überblick über die 3 mit dem MEV-Angriff verbundenen Transaktionen verschaffen:
Der Validator des MEV-Angriffs diesmal ist bob-The-Builder.eth, der dafür verantwortlich ist, die Transaktionen in der Reihenfolge 1, 2, 3 anzuordnen. Natürlich arbeitet bobTheBuilder nicht umsonst, er hat durch diese Sortierung über 100 ETH verdient, während der Initiator des MEV-Angriffs nur 8000 Dollar Einkommen hatte. Ihre Einkünfte stammen aus der zweiten Transaktion des Opfers.
In einem Satz haben der Angreifer (MEV-Roboter) und der Validator (bobTheBuilder) zusammengearbeitet, um das Opfer der zweiten Transaktion um 215.000 USD zu betrügen, wobei der Angreifer 8.000 USD und der Validator 200.000 USD (über 100 ETH) erhielt.
Die von ihnen verwendete Angriffsart hat einen einprägsamen Namen – Sandwich-Angriff. Lassen Sie uns nun einen Handel nach dem anderen erklären, damit Sie vollständig verstehen, wie der recht komplexe Sandwich-Angriff von MEV funktioniert.
Der Grund, warum es als Sandwich-Angriff (Sandwich Attack) bezeichnet wird, liegt darin, dass die beiden Transaktionen des Angreifers (Transaktion 1 und Transaktion 3) jeweils vor und nach der Transaktion des Opfers (Transaktion 2) platziert werden, sodass die gesamte Reihenfolge der Transaktionen die Struktur eines Sandwiches hat (siehe obiges Bild).
Der Handel 1 und der Handel 3 haben jeweils unterschiedliche Funktionen. Einfach gesagt, der Handel 1 ist für die Ausführung des Verbrechens verantwortlich, während der Handel 3 für die Verteilung der Beute zuständig ist. Konkret läuft der gesamte Prozess folgendermaßen ab:
Klicken Sie auf den Link der Transaktion Nr. 1 in der obigen Abbildung, Sie sehen die Details der Transaktion Nr. 1, und der Angreifer hat den Preis von USDT sehr direkt erhöht, dh er hat 18,65 Millionen USDC verwendet, um alle 17,58 Millionen USDT darin umzutauschen, siehe Abbildung unten.
Zu diesem Zeitpunkt befinden sich im Liquiditätspool große Mengen USDC und eine geringe Menge USDT. Wenn man den Berichten Glauben schenken darf, dass vor dem Angriff etwa 19,8 Millionen USDC und USDT im Liquiditätspool von Uniswap waren, dann verbleiben nach der Ausführung der Transaktion 2,22 Millionen USDT (=1980-1758) im Pool, während der USDC-Saldo auf etwa 38,45 Millionen steigt (=1980+1865).
Zu diesem Zeitpunkt liegt der Wechselkurs zwischen USDC und USDT in diesem Pool bei weit mehr als 1:1, nämlich bei 1:17. Das bedeutet, dass man jetzt 17 USDC benötigt, um 1 USDT zu erhalten. Dieser Kurs ist jedoch nur ungefähr, da es sich um einen V3-Pool handelt, in dem die Liquidität nicht gleichmäßig verteilt ist.
Es gibt noch einen Punkt, den ich dir sagen möchte. Tatsächlich hat der Angreifer nicht einmalig 18,65 Millionen USDC eingesetzt, sondern tatsächlich nur 1,09 Millionen USDC, was nicht einmal 6 % entspricht. Wie hat er das gemacht? Wir werden mehr Details dazu geben, wenn wir mit der Erklärung des Angriffs fertig sind.
Klicken Sie auf den Link zum Handel 2 im obigen Bild, um das folgende Bild zu sehen.
Wie im obigen Bild dargestellt, hat die Transaktion 2 des Opfers aufgrund der Auswirkungen von Transaktion 1 nur 5.272 USDT für 220.000 USDC erhalten und hat unbewusst 170.000 USDT verloren. Warum sagt man, dass es unbewusst war? Weil, wenn das Opfer die Transaktion über Uniswap durchgeführt hat, es beim Einreichen der Transaktion folgendes Interface sehen würde.
Durch das obige Bild werden Sie feststellen, dass die Opfer mindestens 220.000 erhalten sollten, was garantiert sein sollte. Der Grund, warum die Opfer am Ende nur über 5000 USDT erhalten haben, ist, dass es zu einem enormen Slippage von über 90 % kam. Allerdings hat Uniswap eine standardmäßige maximale Slippage-Beschränkung von 5,5 %, siehe das untenstehende Bild.
Das bedeutet, dass wenn das Opfer über die Uniswap-Frontend handelt, es mindestens 208381 USDT ( = 220510 * 94,5 %) erhalten sollte. Sie fragen sich vielleicht, warum in den obigen Blockchain-Aufzeichnungen angezeigt wird, dass diese Transaktion in “Uniswap V3” durchgeführt wurde.
Weil die Frontend- und Backend-Transaktionen der Blockchain getrennt sind. Der oben genannte “Uniswap V3” bezieht sich auf den USDC-USDT-Fonds von Uniswap, dieser Pool ist öffentlich und jedes Frontend für Transaktionen kann über diesen Pool handeln.
Auch aus diesem Grund gibt es Zweifel, dass das Opfer nicht einfach ist, es handelt sich nicht um eine gewöhnliche Person, sonst würde es nicht zu solch großen Slippage kommen, möglicherweise wird MEV-Angriff für Geldwäsche genutzt. Darüber werden wir später sprechen.
Klicken Sie auf den Link, um die Details der Transaktion 3 zu sehen, wie im obigen Bild. Lassen Sie uns die drei Transaktionen A, B und C einzeln besprechen.
Handel A, um die Liquidität im Pool wiederherzustellen, wurden 17,32 Millionen USDT gegen 18,6 Millionen USDC getauscht;
Handel B, Beutevorbereitung, einen Teil des Gewinns – 20,4 Tausend USDC in 105 ETH umtauschen;
Transaktion C, Verteilung, 100.558 ETH an den Validator bob-The-Builder.eth zahlen.
Damit ist der Sandwich-Angriff beendet.
Jetzt kommen wir zu einer sehr wichtigen Frage, die oben erwähnt wurde: Wie hat der Angreifer mit 1,09 Millionen USDC einen Angriff im Wert von 18 Millionen durchgeführt.
Der Grund, warum Angreifer mit nur 1,09 Millionen USDC Kapital einen Angriff im Wert von 18 Millionen Dollar durchführen konnten, liegt in einem wunderbaren und besonderen Mechanismus der Blockchain-Welt – dem Flash Swap von Uniswap V3.
Einfach gesagt:
Lightning Exchange ermöglicht es den Nutzern, in einer einzigen Transaktion zuerst Vermögenswerte aus dem Uniswap-Pool abzuziehen und dann mit einer anderen Art von Vermögenswert (oder derselben Art von Vermögenswert zuzüglich Gebühren) zurückzuzahlen.
Solange die gesamte Operation innerhalb der gleichen Transaktion abgeschlossen wird, erlaubt Uniswap dieses Verhalten des “Zuerst erhalten, dann bezahlen”. Bitte beachten Sie, dass dies innerhalb derselben Transaktion abgeschlossen sein muss. Dieses Design wurde entwickelt, um die Sicherheit der Uniswap-Plattform selbst zu gewährleisten:
Das ursprüngliche Design des Lightning Swaps war darauf ausgelegt, um effizienter on-chain Arbitrage zu betreiben, wurde jedoch leider von MEV-Angreifern ausgenutzt und zu einem Instrument der Marktmanipulation.
Jetzt schauen wir uns das Bild an und erklären Schritt für Schritt, wie der Flash-Exchange-Angriff in diesem Fall umgesetzt wurde, siehe Abbildung unten.
Nach dieser Transaktion (Transaktion 1) verringerte sich das Kontoguthaben des Angreifers um 1,09 Millionen USDC, da von den 18,64 Millionen USDC, die an Uniswap zurückgegeben wurden, nur 17,55 Millionen USDC aus Curve stammen, während die restlichen 1,09 Millionen USDC Eigenmittel des Angreifers sind.
Du solltest festgestellt haben, dass dieser Handel den Angreifern tatsächlich einen Verlust von 1,09 Millionen eingebracht hat. Allerdings hat der folgende Handel 3, der ebenfalls durch die Methode des Blitztauschs durchgeführt wurde, nicht nur die 1,09 Millionen USDC zurückgeholt, sondern auch über 200.000 gewonnen.
Unten analysieren wir Schritt für Schritt die Daten von Handel 3.
Du wirst vielleicht überrascht sein, warum Angreifer bereit sind, bis zu 200.000 Dollar Gewinn den Validierern zu überlassen?
Eigentlich ist das keine Großzügigkeit, sondern eine notwendige Bedingung für den Erfolg eines Sandwich-Angriffs, also eines MEV-Angriffs:
Daher ist es dem Angreifer lieber, den Großteil seines Gewinns zu opfern, um den Angriff erfolgreich durchzuführen und sich einen gewissen Gewinn zu sichern.
Es ist wichtig zu erwähnen, dass MEV-Angriffe auch Kosten verursachen. Bei Uniswap-Schnellwechseln entstehen Kosten, und auch beim Curve-Handel fallen Kosten an. Da die Gebühren jedoch relativ niedrig sind, etwa 0,01–0,05 %, sind sie im Vergleich zu den Erträgen aus Angriffen vernachlässigbar.
Zum Schluss noch einmal zur Erinnerung: Der Schutz vor MEV-Angriffen ist eigentlich ganz einfach. Sie müssen nur: die Slippage-Toleranz festlegen, nicht über 1 % hinaus; große Transaktionen in mehrere kleinere aufteilen. Daher müssen Sie sich keine Sorgen machen und dürfen nicht aus Angst vor dem, was schiefgehen könnte, aufhören, an DEX (dezentralen Börsen) zu handeln.
Dieser MEV-Angriff im Wert von 215.000 US-Dollar ist zweifellos eine weitere brutale Veranschaulichung des “Dunklen Wald”-Prinzips in der Blockchain-Welt. Er zeigt eindrucksvoll, dass in einer dezentralen, genehmigungsfreien Umgebung komplexe Spiele existieren, die darauf abzielen, durch die Ausnutzung von Mechanismusfehlern Gewinne zu erzielen.
Auf einer höheren Ebene ist das Auftreten von MEV ein Ausdruck des zweischneidigen Effekts der Transparenz und Programmierbarkeit von Blockchain.
Dies ist kein einfaches Hackerverhalten, sondern ein tiefes Verständnis und die Nutzung der zugrunde liegenden Mechanismen der Blockchain. Es prüft die Robustheit des Protokolldesigns und stellt die Risikobewusstheit der Teilnehmer in Frage.
Verstehen Sie MEV und erkennen Sie die Risiken, um besser in dieser digitalen Welt, die voller Chancen, aber auch versteckter Gefahren ist, navigieren zu können. Denken Sie daran, dass man im “dunklen Wald” der Blockchain nur durch die Achtung der Regeln und die Verbesserung des Verständnisses vermeiden kann, das nächste verschlungene Opfer zu werden.
Das ist auch der Effekt, den ich mit diesem Artikel erreichen möchte.