الأربعاء الماضي (12 مارس) ، تعرض أحد المتداولين في العملات المشفرة لهجوم MEV وفقد 215,000 دولار دفعة واحدة.
ببساطة، كان هذا المستخدم يريد استبدال عملة USDC المستقرة بقيمة 220,800 دولار في بركة التداول Uniswap v3 إلى ما يعادلها من USDT، لكنه حصل فقط على 5,272 USDT، حيث تبخرت الأصول بشكل مفاجئ بقيمة 215,700 دولار في غضون ثوانٍ قليلة، انظر الصورة أدناه.
الصورة أعلاه هي لقطة شاشة لسجل المعاملة على السلسلة. السبب الجذري لهذا الكارثة هو مواجهة الهجوم الشهير في عالم البلوكشين المعروف باسم "هجوم السندويتش" (Sandwich Attack).
أول من كشف عن هجوم MEV هذا هو مايكل (انظر الصورة أعلاه) ، وقد أوضح قائلاً:
قام روبوت MEV بتقديم عرض مسبق على المعاملة من خلال سحب جميع سيولة USDC. بعد تنفيذ المعاملة، أعادوا السيولة. قام المهاجم بإكرامية لباني الكتل (bobTheBuilder) بمبلغ 200 ألف دولار وحقق ربحًا قدره 8 آلاف دولار من هذه المعاملة.
المحتوى أعلاه يحتوي على خطأ مطبعي، حيث إن روبوتات هجوم MEV تستبدل بكميات كبيرة من USDT، وليس USDC.
ومع ذلك، بعد قراءة شرحه والتقارير الإخبارية، قد تظل في حيرة من أمرك، لأن هناك الكثير من المصطلحات الجديدة مثل هجوم السندويش (Sandwich Attack)، التنفيذ المسبق (front-ran the tx)، إعادة وضع السيولة (put back the liquidity)، مكافأة بناء الكتل (tipped a block builder) وغيرها.
اليوم ، سنأخذ هجوم MEV هذا كمثال ، ونفكك العملية برمتها ، ونأخذك عبر عالم MEV المظلم.
أولاً، نحتاج إلى توضيح ما هو MEV.
ما هو MEV؟
تمت الإشارة في البداية إلى MEV بقيمة استخراجها من قبل المعدنين (Miner Extractable Value) ، ويشير إلى الأرباح الإضافية التي يمكن أن يحصل عليها المعدنون من خلال إعادة ترتيب أو إدراج أو استبعاد المعاملات في كتلة سلسلة الكتل. يمكن أن تؤدي هذه العمليات إلى تكبد المستخدمين العاديين تكاليف أعلى أو الحصول على أسعار معاملات أقل ملاءمة.
مع تحول شبكات blockchain مثل Ethereum من آلية إجماع إثبات العمل (Proof-of-Work، PoW) إلى آلية إجماع إثبات الحصة (Proof-of-Stake، PoS)، انتقلت سلطة التحكم في ترتيب المعاملات من المعدنين إلى المدققين. وبالتالي، تطور المصطلح أيضًا من "قيمة يمكن استخراجها من المعدنين" (Miner Extractable Value) إلى "أقصى قيمة يمكن استخراجها" (Maximal Extractable Value).
على الرغم من أن الاسم قد تغير، إلا أن المفهوم الأساسي لاستخراج القيمة من خلال التلاعب في ترتيب المعاملات لا يزال كما هو.
المحتوى أعلاه لا يزال قليلاً احترافيًا، كل ما تحتاج إلى تذكره هو: وجود MEV هو لأن عمال المناجم السابقين، والمتحققين الحاليين لديهم حق في ترتيب المعاملات في تجمع الذاكرة (mempool). يحدث هذا الترتيب داخل كتلة واحدة، والآن يتم إنشاء كتلة في الإيثيريوم تقريبًا كل 11 ثانية، مما يعني أن هناك ممارسة لهذا الحق كل 11 ثانية. وبالمثل، فإن هجوم MEV هذا تم تنفيذه أيضًا من خلال ترتيب المتحققين.
انقر على هذا الرابط، سترى محتوى المعاملات الواردة في الكتلة رقم 22029771 المتعلقة بهذا الهجوم، كما هو موضح في الصورة أدناه.
يرجى ملاحظة أن التداولات في الشكل 1 و 2 و 3 هي تلك الهجمات MEV التي ذكرت في بداية هذه المقالة، وهذا الترتيب هو ما قام به المدقق (bobTheBuilder). لماذا يمكن أن يكون الأمر كذلك؟
مبدأ MEV
لفهم كيفية عمل MEV، نحتاج أولاً إلى فهم كيفية تسجيل وتحديث المعلومات في سلسلة الكتل.
2.1 آلية تحديث حالة البلوكشين
يمكن اعتبار البلوكشين دفتر حسابات متزايد، يسجل جميع المعاملات التي تحدث. حالة هذا الدفتر، مثل رصيد كل حساب، وكمية الاحتياطي من الرموز المختلفة في بركة التداول Uniswap، يتم تحديدها بواسطة المعاملات السابقة.
عندما يتم إضافة كتلة جديدة إلى سلسلة الكتل، سيتم تنفيذ جميع المعاملات المضمنة في هذه الكتلة واحدة تلو الأخرى وفقًا لترتيبها في الكتلة. مع تنفيذ كل معاملة، سيتغير الوضع العام لسلسلة الكتل وفقًا لذلك.
بمعنى آخر، ليس فقط ترتيب الكتل مهمًا، بل إن ترتيب المعاملات داخل الكتلة مهم أيضًا. فكيف يتم تحديد ترتيب المعاملات داخل الكتلة؟
2.2 يحدد المدقق ترتيب المعاملات
عندما يقوم المستخدم بإجراء عملية في شبكة البلوكشين، مثل هذه العملية التي يتم من خلالها تحويل USDC إلى USDT عبر Uniswap، يتم أولاً بثها إلى العقد الموجودة في الشبكة. بعد التحقق الأولي، ستدخل العملية إلى منطقة تُعرف باسم "ذاكرة التجميع" (mempool). ذاكرة التجميع تشبه منطقة الانتظار، حيث لم يتم تأكيد العمليات فيها بعد وإضافتها إلى الكتلة التالية في سلسلة الكتل.
كان لدى عمال المناجم السابقين (في نظام إثبات العمل) ، والمتحققين الحاليين (في نظام إثبات الحصة) الحق في اختيار المعاملات من تجمع الذاكرة وتحديد ترتيب هذه المعاملات في الكتلة التالية.
ترتيب المعاملات في الكتلة أمر حيوي. قبل أن يتم تأكيد كتلة نهائياً وإضافتها إلى سلسلة الكتل، يتم تنفيذ المعاملات داخل هذه الكتلة بالترتيب الذي يحدده المدقق (مثل bobTheBuilder). وهذا يعني أنه إذا كانت الكتلة تحتوي على عدة معاملات تتفاعل مع نفس مجموعة المعاملات، فإن ترتيب تنفيذ هذه المعاملات سيؤثر مباشرة على نتيجة كل معاملة.
تتيح هذه القدرة للمتحققين معالجة معاملات معينة بشكل أولوي، وتأخير أو استبعاد معاملات أخرى، وحتى إدراج معاملات خاصة بهم لزيادة الأرباح.
ترتيب هذه الصفقة مهم بنفس القدر، وأي خطأ بسيط سيجعل من المستحيل تنفيذ الهجوم بنجاح.
2.3 ترتيب المعاملات في هجوم MEV الحالي
دعونا نتعرف بشكل بسيط على 3 معاملات مرتبطة بهجوم MEV هذا:
الصفقة 1 (أول صفقة للمهاجم): يتم تنفيذها قبل صفقة الضحية. الهدف من هذه الصفقة عادة هو رفع سعر الرموز التي ترغب الضحية في تداولها.
الصفقة 2 (صفقة الضحية): تنفذ بعد الصفقة الأولى للمهاجم. بسبب عمليات المهاجم السابقة، تكون الأسعار في بركة الصفقات في تلك اللحظة غير مواتية للضحية، حيث يحتاج إلى دفع المزيد من USDC للحصول على ما يعادل USDT، أو يمكنه الحصول فقط على كمية أقل من USDT.
الصفقة 3 (الصفقة الثانية للمهاجم): يتم تنفيذها بعد صفقة الضحية. الغرض من هذه الصفقة عادة هو الاستفادة من التغيرات الجديدة في الأسعار الناتجة عن صفقة الضحية لتحقيق الربح.
المتحقق من هجوم MEV هذه المرة هو bob-The-Builder.eth، وهو المسؤول عن ترتيب المعاملات بهذا الشكل 1، 2، 3. بالطبع، bobTheBuilder لم يكن يعمل مجاناً، فقد حصل على أكثر من 100 ETH من هذه الترتيبات، في حين أن مُطلق هجوم MEV لم يحصل سوى على 8000 دولار. مصدر دخلهم هو المعاملة الثانية للضحايا.
في جملة واحدة، تآمر المهاجم (روبوت MEV) مع المدقق (bobTheBuilder) مما أدى إلى خسارة ضحية المعاملة الثانية 215,000 دولار، حيث حصل المهاجم على 8,000 دولار، وحصل المدقق على 200,000 دولار (أكثر من 100 ETH).
يُطلق على أسلوب الهجوم الذي يستخدمونه اسم تصويري - هجوم السندويش. دعنا نتناول شرحاً لكل صفقة على حدة، حتى تفهم تماماً كيف يعمل هجوم السندويش المعقد نسبياً في MEV؟
تحليل شامل لهجوم السندويش
يُطلق على هذا الهجوم اسم هجوم السندويتش (Sandwich Attack) لأن المعاملتين اللتين يقوم بهما المهاجم (المعاملة 1 والمعاملة 3) يتم وضعهما قبل وبعد المعاملة الضحية (المعاملة 2)، مما يجعل تسلسل المعاملات بأكمله يشبه هيكل السندويتش (انظر الصورة أعلاه).
تتحمل الصفقة 1 و الصفقة 3 وظائف مختلفة. باختصار، الصفقة 1 مسؤولة عن ارتكاب الجريمة، والصفقة 3 مسؤولة عن توزيع الغنائم. بشكل محدد، تكون العملية كاملة على النحو التالي:
3.1交易1,مسؤول عن زيادة سعر USDT
انقر على الرابط الموجود في الصورة أعلاه للصفقة رقم 1، سترى التفاصيل الدقيقة للصفقة رقم 1، حيث قام المعتدي برفع سعر USDT بطريقة مباشرة، وهو استبدال 1758 مليون USDT الموجودين بـ 1865 مليون USDC، انظر الصورة أدناه.
في هذه اللحظة، يوجد في صندوق السيولة المتبقي كمية كبيرة من USDC وكمية صغيرة من USDT. إذا كانت التقارير الإخبارية صحيحة، فإنه قبل الهجوم، كان لدى Uniswap حوالي 19.8 مليون من USDC وUSDT، وبعد تنفيذ الصفقة 1، يتبقى في الصندوق 2.22 مليون USDT (=1980-1758)، بينما يرتفع رصيد USDC إلى حوالي 38.45 مليون (=1980+1865).
في هذه اللحظة، لم يعد معدل تحويل USDC إلى USDT في هذا المسبح 1:1، بل أصبح 1:17، مما يعني أنه في هذه اللحظة تحتاج إلى 17 USDC لتحصل على 1 USDT، لكن هذه النسبة تقريبية فقط، لأن هذا المسبح هو V3، والسيولة داخله ليست موزعة بشكل متساو.
هناك شيء آخر أود أن أخبرك به. في الواقع، لم يستخدم المهاجم 18650000 USDC دفعة واحدة، بل استخدم 1090000 USDC فقط، وهو أقل من 6%. كيف فعل ذلك؟ سنشرح ذلك بالتفصيل بعد الانتهاء من الحديث عن الهجوم.
3.2 صفقة 2، تنفيذ 220,000 USDC تحويل إلى USDT
انقر على رابط التداول 2 في الصورة أعلاه لرؤية الصورة أدناه.
كما هو موضح في الصورة أعلاه، تأثرت صفقة الضحية 2 بسبب صفقة 1، حيث حصلت على 5272 USDT فقط مقابل 220,000 USDC، مما أدى إلى خسارة غير واعية قدرها 170,000 USDT. لماذا نقول إنه غير واعٍ؟ لأنه، إذا كانت الضحية تتداول من خلال Uniswap، فسيظهر لها الواجهة التالية عند تقديم الصفقة.
من خلال الصورة أعلاه، ستكتشف أن الضحايا يجب أن يحصلوا على 220,000 على الأقل بشكل مضمون. السبب في أن الضحايا حصلوا في النهاية على أكثر من 5000 USDT هو بسبب حدوث انزلاق كبير، تجاوز 90%. ومع ذلك، فإن Uniswap لديه حد أقصى افتراضي للانزلاق بنسبة 5.5%، انظر الصورة أدناه.
أي أنه إذا كان الضحية يتاجر من خلال واجهة Uniswap، فيجب أن يحصل على الأقل على 208381 USDT (= 220510 * 94.5%). قد تتساءل لماذا تظهر المعاملة في سجل blockchain أعلاه على أنها تمت في "Uniswap V3".
لأن الواجهة الأمامية والخلفية لتداولات البلوكتشين مفصولتان. ما تم ذكره أعلاه "Uniswap V3" يشير إلى حوض السيولة USDC-USDT الخاص بـ Uniswap، وهذا الحوض مفتوح، حيث يمكن لأي واجهة أمامية للتداول استخدام هذا الحوض للتداول.
أيضًا بسبب هذه النقطة، يشك البعض في أن الضحية ليست بسيطة، وليست شخصًا عاديًا، وإلا فلن يحدث مثل هذا الانزلاق الكبير، وقد يكون هناك استخدام لهجوم MEV في غسل الأموال. هذا، سنتحدث عنه لاحقًا.
3.3 تداول 3، حصاد + تقاسم الغنائم
انقر على الرابط لعرض تفاصيل الصفقة 3، كما هو موضح في الصورة أعلاه. دعونا نتحدث عن المعاملات الثلاثة A و B و C.
تمت إعادة السيولة في المحفظة إلى وضعها الطبيعي من خلال تداول A، حيث تم استبدال 17320000 USDT مقابل 18600000 USDC.
تبادل B ، استعداد لتوزيع الأرباح ، تحويل جزء من الأرباح - 20.4 ألف USDC إلى 105 ETH؛
تداول C ، تقاسم الغنائم ، دفع 100.558 ETH إلى المدقق bob-The-Builder.eth.
وبذلك انتهى هجوم السندويتش.
الآن دعونا نجيب على سؤال مهم تم ذكره أعلاه: كيف استطاع المهاجمون استخدام 1,090,000 USDC لتنفيذ هجوم بقيمة 18,000,000.
كيف نفذ المهاجم هجوم حوض بقيمة 18 مليون USDC
تمكن المهاجم من تنفيذ هجوم بمستوى 18 مليون دولار باستخدام رأس مال قدره 1.09 مليون USDC فقط، وذلك بفضل وجود آلية سحرية وخاصة في عالم blockchain - تبادل Uniswap V3 الفوري (Flash Swap).
4.1 ما هو تبادل البرق (Flash Swap)؟
ببساطة:
تسمح خدمة التبادل الفوري للمستخدمين بسحب الأصول من بركة Uniswap في نفس المعاملة، ثم سدادها بأصل آخر (أو نفس الأصل مع رسوم المعاملة).
تسمح Uniswap بهذا السلوك "استلام البضاعة أولاً ثم الدفع" طالما تم إتمام العملية بأكملها ضمن نفس المعاملة. يرجى ملاحظة أنه يجب أن يتم الانتهاء من ذلك ضمن نفس المعاملة. تم تصميم ذلك لضمان سلامة منصة Uniswap نفسها:
إقراض بدون مخاطر: يسمح Uniswap للمستخدمين بسحب الأموال مؤقتًا من المسبح بدون ضمان (مشابه للإقراض)، ولكن يجب سدادها على الفور عند انتهاء المعاملة.
الذرية (Atomicity): يجب أن تكون العملية بالكامل ذرية، إما أن تنجح تمامًا (إرجاع الأموال) أو تفشل تمامًا (تراجع المعاملة).
تم تصميم تبادل البرق لتحقيق فعالية أكبر في التحكيم على السلسلة (Arbitrage)، لكن للأسف تم استغلاله من قبل مهاجمي MEV ليصبح أداة للتلاعب في السوق.
4.2 كيف تساعد عملية التحويل الفوري؟
لننظر في الصورة للتعبير عن الرسم، خطوة بخطوة لفهم كيف تم تنفيذ تبادل البرق في هذا الهجوم، انظر الصورة أدناه.
استعار المهاجم F1 مبلغ 1,090,000 USDC من AAVE باستخدام 701 WETH الخاص به؛
F2 المهاجم يقدم طلب تبادل فوري، حيث يقوم أولاً بسحب 17.58 مليون USDT من حوض Uniswap (في هذه المرحلة لا حاجة للدفع مسبقاً) حساب المهاجم مؤقتاً زاد بمقدار 17.58 مليون USDT؛
ألقى المهاجم 1758 مليون USDT بسرعة في حوض Curve ، واستبدل 1755 مليون USDC. انخفض USDT في حساب المهاجم بمقدار 1758 مليون ، وزاد USDC بمقدار 1755 مليون. من خلال الصورة أدناه ، ستكتشف أن المهاجم اختار Curve لأن السيولة هنا وفيرة جداً ، حيث يوجد أكثر من 7054 مليون USDT و 5071 مليون USDC ، وانزلاق الأسعار منخفض نسبياً.
قامت مجموعة F4 المهاجمون بتحويل 17.55 مليون USDC التي حصلوا عليها من Curve، بالإضافة إلى 1.09 مليون USDC التي كانوا قد أعدوها مسبقًا (من قرض Aave)، ليصبح المجموع 18.64 مليون USDC، وسددوها دفعة واحدة إلى Uniswap، وتمت عملية التبادل الفوري.
بعد هذه الصفقة (الصفقة 1) ، انخفض رصيد حساب المهاجم بمقدار 1.09 مليون USDC ، لأن 18.64 مليون USDC الذي تم إعادته إلى Uniswap فقط 17.55 مليون USDC تم استبدالها من Curve ، بينما 1.09 مليون USDC المتبقية هي من أموال المهاجم الخاصة.
يجب أن تكون قد اكتشفت أن هذه المعاملة قد تسببت في خسارة المهاجمين بمبلغ 1.09 مليون. ولكن، المعاملة الثالثة التي تليها، والتي استخدمت أيضًا طريقة تبادل البرق، لم تسترجع فقط 1.09 مليون USDC، بل حققت أيضًا ربحًا يزيد عن 200 ألف.
دعونا نحلل خطوة بخطوة بناءً على بيانات الصفقة 3.
K1 المهاجم، سحب 1860 ألف USDC عبر تبادل البرق في Uniswap؛
قامت مجموعة K2 بالهجوم، من خلال استبدال جزء من 1730 مليون USDC الذي تم سحبه للتو من Uniswap، مقابل 1732 مليون USDT؛
أعاد مهاجم K1 مبلغ 17.32 مليون USDT الذي تم استبداله من Curve إلى Uniswap. اكتملت مبادلة البرق. تحتاج إلى ملاحظة أن المهاجم حصل على 17.32 مليون USDT مقابل 17.3 مليون USDC فقط من خلال K2. من بين ال 130 المتبقية (= 1860-1730) USDC ، 1.09 مليون لديهم أموالهم الخاصة ، والباقي 210000 USDC هو ربح هذا الهجوم.
أعاد مهاجم K3 رأس المال إلى AAVE ، وأخذ 701 WETH ، وتبادل 200,000 USDC مقابل 105 ETH ، وأرسل 100.558 ETH إلى المدقق كإكرامية (حوالي 200,000 دولار) ، تاركا أقل من 10,000 دولار في الأرباح.
قد تتفاجأ لماذا يرغب المهاجمون في منح المدققين أرباح تصل إلى 200000 دولار بسهولة؟
4.3 لماذا يجب إعطاء "بقشيش" بقيمة 200000 دولار؟
في الحقيقة، ليست هذه كرمًا، بل هي الشرط الضروري لنجاح هجوم MEV من نوع هجوم السندويتش:
جوهر النجاح في الهجوم هو التحكم الدقيق في ترتيب المعاملات، والشخص الذي يتحكم في ترتيب المعاملات هو المدقق (bobTheBuilder).
لا يساعد المدققون المهاجمين فقط على التأكد من أن معاملات الضحية تقع بين معاملات الهجوم، بل الأمر الأكثر أهمية هو أن المدققين يمكنهم ضمان عدم تمكن الروبوتات المتنافسة على MEV من تجاوز الطابور أو التدخل في إتمام الهجوم بسلاسة.
لذلك، يفضل المهاجم التضحية بمعظم الأرباح لضمان نجاح الهجوم، والاحتفاظ ببعض الأرباح لنفسه.
يجب الإشارة بشكل خاص إلى أن هجمات MEV لها أيضًا تكاليف، فهناك تكلفة في تبادل Uniswap الفوري، وهناك تكلفة في تداول Curve أيضًا، ولكن نظرًا لأن الرسوم منخفضة نسبيًا حوالي 0.01~0.05%، فإنها قد تكون غير ملحوظة مقارنة بالأرباح الناتجة عن الهجمات.
أخيرًا، أود أن أذكركم أن الدفاع ضد هجمات MEV بسيط للغاية، ما عليك سوى: تحديد مستوى تحمل الانزلاق، ولا تتجاوز 1٪؛ تنفيذ الصفقات الكبيرة على عدة دفعات. لذا، ليس عليك أن تتجنب التداول في DEX (البورصات اللامركزية) بسبب هذه المخاوف.
الخاتمة: التحذير والإلهام في الغابة المظلمة
إن حادثة هجوم MEV التي بلغت قيمتها 215000 دولار لا شك أنها تجسد مرة أخرى بشكل قاسي قانون "الغابة المظلمة" في عالم blockchain. إنها تكشف بشكل حي عن الصراع المعقد الذي يكمن في بيئة لا مركزية وغير مسموح بها، حيث يمكن استغلال الثغرات الميكانيكية لتحقيق الفوائد.
من منظور أعلى، فإن ظهور MEV هو تجسيد لتأثير السيف ذو الحدين لشفافية blockchain وقابليته للبرمجة.
من ناحية، جميع سجلات المعاملات متاحة للبحث، مما يجعل من الممكن تتبع وتحليل سلوكيات الهجوم؛
من ناحية أخرى، توفر المنطق المعقد للعقود الذكية واليقين في تنفيذ المعاملات فرصًا للمشاركين الأذكياء.
إنه ليس مجرد سلوك هاكر بسيط، بل هو فهم عميق واستخدام لآلية البلوكشين الأساسية، يختبر متانة تصميم البروتوكول، ويتحدى أيضًا وعي المشاركين بالمخاطر.
فهم MEV ، والتعرف على مخاطرها ، هو السبيل الأفضل للإبحار في هذا العالم الرقمي المليء بالفرص ولكنه يخفي أيضًا الأزمات. تذكر أنه في "غابة الظلام" الخاصة بالبلوك تشين ، لا يمكن تجنب أن تصبح الفريسة التالية المبتلعة إلا من خلال احترام القواعد وزيادة الوعي.
المحتوى هو للمرجعية فقط، وليس دعوة أو عرضًا. لا يتم تقديم أي مشورة استثمارية أو ضريبية أو قانونية. للمزيد من الإفصاحات حول المخاطر، يُرجى الاطلاع على إخلاء المسؤولية.
تحليل شامل لهجمات سمو MEV السندويش: من الترتيب إلى سلسلة الموت للتحويل الفوري
كتابة: دايي
الأربعاء الماضي (12 مارس) ، تعرض أحد المتداولين في العملات المشفرة لهجوم MEV وفقد 215,000 دولار دفعة واحدة.
ببساطة، كان هذا المستخدم يريد استبدال عملة USDC المستقرة بقيمة 220,800 دولار في بركة التداول Uniswap v3 إلى ما يعادلها من USDT، لكنه حصل فقط على 5,272 USDT، حيث تبخرت الأصول بشكل مفاجئ بقيمة 215,700 دولار في غضون ثوانٍ قليلة، انظر الصورة أدناه.
الصورة أعلاه هي لقطة شاشة لسجل المعاملة على السلسلة. السبب الجذري لهذا الكارثة هو مواجهة الهجوم الشهير في عالم البلوكشين المعروف باسم "هجوم السندويتش" (Sandwich Attack).
أول من كشف عن هجوم MEV هذا هو مايكل (انظر الصورة أعلاه) ، وقد أوضح قائلاً:
قام روبوت MEV بتقديم عرض مسبق على المعاملة من خلال سحب جميع سيولة USDC. بعد تنفيذ المعاملة، أعادوا السيولة. قام المهاجم بإكرامية لباني الكتل (bobTheBuilder) بمبلغ 200 ألف دولار وحقق ربحًا قدره 8 آلاف دولار من هذه المعاملة.
المحتوى أعلاه يحتوي على خطأ مطبعي، حيث إن روبوتات هجوم MEV تستبدل بكميات كبيرة من USDT، وليس USDC.
ومع ذلك، بعد قراءة شرحه والتقارير الإخبارية، قد تظل في حيرة من أمرك، لأن هناك الكثير من المصطلحات الجديدة مثل هجوم السندويش (Sandwich Attack)، التنفيذ المسبق (front-ran the tx)، إعادة وضع السيولة (put back the liquidity)، مكافأة بناء الكتل (tipped a block builder) وغيرها.
اليوم ، سنأخذ هجوم MEV هذا كمثال ، ونفكك العملية برمتها ، ونأخذك عبر عالم MEV المظلم.
أولاً، نحتاج إلى توضيح ما هو MEV.
تمت الإشارة في البداية إلى MEV بقيمة استخراجها من قبل المعدنين (Miner Extractable Value) ، ويشير إلى الأرباح الإضافية التي يمكن أن يحصل عليها المعدنون من خلال إعادة ترتيب أو إدراج أو استبعاد المعاملات في كتلة سلسلة الكتل. يمكن أن تؤدي هذه العمليات إلى تكبد المستخدمين العاديين تكاليف أعلى أو الحصول على أسعار معاملات أقل ملاءمة.
مع تحول شبكات blockchain مثل Ethereum من آلية إجماع إثبات العمل (Proof-of-Work، PoW) إلى آلية إجماع إثبات الحصة (Proof-of-Stake، PoS)، انتقلت سلطة التحكم في ترتيب المعاملات من المعدنين إلى المدققين. وبالتالي، تطور المصطلح أيضًا من "قيمة يمكن استخراجها من المعدنين" (Miner Extractable Value) إلى "أقصى قيمة يمكن استخراجها" (Maximal Extractable Value).
على الرغم من أن الاسم قد تغير، إلا أن المفهوم الأساسي لاستخراج القيمة من خلال التلاعب في ترتيب المعاملات لا يزال كما هو.
المحتوى أعلاه لا يزال قليلاً احترافيًا، كل ما تحتاج إلى تذكره هو: وجود MEV هو لأن عمال المناجم السابقين، والمتحققين الحاليين لديهم حق في ترتيب المعاملات في تجمع الذاكرة (mempool). يحدث هذا الترتيب داخل كتلة واحدة، والآن يتم إنشاء كتلة في الإيثيريوم تقريبًا كل 11 ثانية، مما يعني أن هناك ممارسة لهذا الحق كل 11 ثانية. وبالمثل، فإن هجوم MEV هذا تم تنفيذه أيضًا من خلال ترتيب المتحققين.
انقر على هذا الرابط، سترى محتوى المعاملات الواردة في الكتلة رقم 22029771 المتعلقة بهذا الهجوم، كما هو موضح في الصورة أدناه.
يرجى ملاحظة أن التداولات في الشكل 1 و 2 و 3 هي تلك الهجمات MEV التي ذكرت في بداية هذه المقالة، وهذا الترتيب هو ما قام به المدقق (bobTheBuilder). لماذا يمكن أن يكون الأمر كذلك؟
لفهم كيفية عمل MEV، نحتاج أولاً إلى فهم كيفية تسجيل وتحديث المعلومات في سلسلة الكتل.
2.1 آلية تحديث حالة البلوكشين
يمكن اعتبار البلوكشين دفتر حسابات متزايد، يسجل جميع المعاملات التي تحدث. حالة هذا الدفتر، مثل رصيد كل حساب، وكمية الاحتياطي من الرموز المختلفة في بركة التداول Uniswap، يتم تحديدها بواسطة المعاملات السابقة.
عندما يتم إضافة كتلة جديدة إلى سلسلة الكتل، سيتم تنفيذ جميع المعاملات المضمنة في هذه الكتلة واحدة تلو الأخرى وفقًا لترتيبها في الكتلة. مع تنفيذ كل معاملة، سيتغير الوضع العام لسلسلة الكتل وفقًا لذلك.
بمعنى آخر، ليس فقط ترتيب الكتل مهمًا، بل إن ترتيب المعاملات داخل الكتلة مهم أيضًا. فكيف يتم تحديد ترتيب المعاملات داخل الكتلة؟
2.2 يحدد المدقق ترتيب المعاملات
عندما يقوم المستخدم بإجراء عملية في شبكة البلوكشين، مثل هذه العملية التي يتم من خلالها تحويل USDC إلى USDT عبر Uniswap، يتم أولاً بثها إلى العقد الموجودة في الشبكة. بعد التحقق الأولي، ستدخل العملية إلى منطقة تُعرف باسم "ذاكرة التجميع" (mempool). ذاكرة التجميع تشبه منطقة الانتظار، حيث لم يتم تأكيد العمليات فيها بعد وإضافتها إلى الكتلة التالية في سلسلة الكتل.
كان لدى عمال المناجم السابقين (في نظام إثبات العمل) ، والمتحققين الحاليين (في نظام إثبات الحصة) الحق في اختيار المعاملات من تجمع الذاكرة وتحديد ترتيب هذه المعاملات في الكتلة التالية.
ترتيب المعاملات في الكتلة أمر حيوي. قبل أن يتم تأكيد كتلة نهائياً وإضافتها إلى سلسلة الكتل، يتم تنفيذ المعاملات داخل هذه الكتلة بالترتيب الذي يحدده المدقق (مثل bobTheBuilder). وهذا يعني أنه إذا كانت الكتلة تحتوي على عدة معاملات تتفاعل مع نفس مجموعة المعاملات، فإن ترتيب تنفيذ هذه المعاملات سيؤثر مباشرة على نتيجة كل معاملة.
تتيح هذه القدرة للمتحققين معالجة معاملات معينة بشكل أولوي، وتأخير أو استبعاد معاملات أخرى، وحتى إدراج معاملات خاصة بهم لزيادة الأرباح.
ترتيب هذه الصفقة مهم بنفس القدر، وأي خطأ بسيط سيجعل من المستحيل تنفيذ الهجوم بنجاح.
2.3 ترتيب المعاملات في هجوم MEV الحالي
دعونا نتعرف بشكل بسيط على 3 معاملات مرتبطة بهجوم MEV هذا:
الصفقة 1 (أول صفقة للمهاجم): يتم تنفيذها قبل صفقة الضحية. الهدف من هذه الصفقة عادة هو رفع سعر الرموز التي ترغب الضحية في تداولها.
الصفقة 2 (صفقة الضحية): تنفذ بعد الصفقة الأولى للمهاجم. بسبب عمليات المهاجم السابقة، تكون الأسعار في بركة الصفقات في تلك اللحظة غير مواتية للضحية، حيث يحتاج إلى دفع المزيد من USDC للحصول على ما يعادل USDT، أو يمكنه الحصول فقط على كمية أقل من USDT.
الصفقة 3 (الصفقة الثانية للمهاجم): يتم تنفيذها بعد صفقة الضحية. الغرض من هذه الصفقة عادة هو الاستفادة من التغيرات الجديدة في الأسعار الناتجة عن صفقة الضحية لتحقيق الربح.
المتحقق من هجوم MEV هذه المرة هو bob-The-Builder.eth، وهو المسؤول عن ترتيب المعاملات بهذا الشكل 1، 2، 3. بالطبع، bobTheBuilder لم يكن يعمل مجاناً، فقد حصل على أكثر من 100 ETH من هذه الترتيبات، في حين أن مُطلق هجوم MEV لم يحصل سوى على 8000 دولار. مصدر دخلهم هو المعاملة الثانية للضحايا.
في جملة واحدة، تآمر المهاجم (روبوت MEV) مع المدقق (bobTheBuilder) مما أدى إلى خسارة ضحية المعاملة الثانية 215,000 دولار، حيث حصل المهاجم على 8,000 دولار، وحصل المدقق على 200,000 دولار (أكثر من 100 ETH).
يُطلق على أسلوب الهجوم الذي يستخدمونه اسم تصويري - هجوم السندويش. دعنا نتناول شرحاً لكل صفقة على حدة، حتى تفهم تماماً كيف يعمل هجوم السندويش المعقد نسبياً في MEV؟
يُطلق على هذا الهجوم اسم هجوم السندويتش (Sandwich Attack) لأن المعاملتين اللتين يقوم بهما المهاجم (المعاملة 1 والمعاملة 3) يتم وضعهما قبل وبعد المعاملة الضحية (المعاملة 2)، مما يجعل تسلسل المعاملات بأكمله يشبه هيكل السندويتش (انظر الصورة أعلاه).
تتحمل الصفقة 1 و الصفقة 3 وظائف مختلفة. باختصار، الصفقة 1 مسؤولة عن ارتكاب الجريمة، والصفقة 3 مسؤولة عن توزيع الغنائم. بشكل محدد، تكون العملية كاملة على النحو التالي:
3.1交易1,مسؤول عن زيادة سعر USDT
انقر على الرابط الموجود في الصورة أعلاه للصفقة رقم 1، سترى التفاصيل الدقيقة للصفقة رقم 1، حيث قام المعتدي برفع سعر USDT بطريقة مباشرة، وهو استبدال 1758 مليون USDT الموجودين بـ 1865 مليون USDC، انظر الصورة أدناه.
في هذه اللحظة، يوجد في صندوق السيولة المتبقي كمية كبيرة من USDC وكمية صغيرة من USDT. إذا كانت التقارير الإخبارية صحيحة، فإنه قبل الهجوم، كان لدى Uniswap حوالي 19.8 مليون من USDC وUSDT، وبعد تنفيذ الصفقة 1، يتبقى في الصندوق 2.22 مليون USDT (=1980-1758)، بينما يرتفع رصيد USDC إلى حوالي 38.45 مليون (=1980+1865).
في هذه اللحظة، لم يعد معدل تحويل USDC إلى USDT في هذا المسبح 1:1، بل أصبح 1:17، مما يعني أنه في هذه اللحظة تحتاج إلى 17 USDC لتحصل على 1 USDT، لكن هذه النسبة تقريبية فقط، لأن هذا المسبح هو V3، والسيولة داخله ليست موزعة بشكل متساو.
هناك شيء آخر أود أن أخبرك به. في الواقع، لم يستخدم المهاجم 18650000 USDC دفعة واحدة، بل استخدم 1090000 USDC فقط، وهو أقل من 6%. كيف فعل ذلك؟ سنشرح ذلك بالتفصيل بعد الانتهاء من الحديث عن الهجوم.
3.2 صفقة 2، تنفيذ 220,000 USDC تحويل إلى USDT
انقر على رابط التداول 2 في الصورة أعلاه لرؤية الصورة أدناه.
كما هو موضح في الصورة أعلاه، تأثرت صفقة الضحية 2 بسبب صفقة 1، حيث حصلت على 5272 USDT فقط مقابل 220,000 USDC، مما أدى إلى خسارة غير واعية قدرها 170,000 USDT. لماذا نقول إنه غير واعٍ؟ لأنه، إذا كانت الضحية تتداول من خلال Uniswap، فسيظهر لها الواجهة التالية عند تقديم الصفقة.
من خلال الصورة أعلاه، ستكتشف أن الضحايا يجب أن يحصلوا على 220,000 على الأقل بشكل مضمون. السبب في أن الضحايا حصلوا في النهاية على أكثر من 5000 USDT هو بسبب حدوث انزلاق كبير، تجاوز 90%. ومع ذلك، فإن Uniswap لديه حد أقصى افتراضي للانزلاق بنسبة 5.5%، انظر الصورة أدناه.
أي أنه إذا كان الضحية يتاجر من خلال واجهة Uniswap، فيجب أن يحصل على الأقل على 208381 USDT (= 220510 * 94.5%). قد تتساءل لماذا تظهر المعاملة في سجل blockchain أعلاه على أنها تمت في "Uniswap V3".
لأن الواجهة الأمامية والخلفية لتداولات البلوكتشين مفصولتان. ما تم ذكره أعلاه "Uniswap V3" يشير إلى حوض السيولة USDC-USDT الخاص بـ Uniswap، وهذا الحوض مفتوح، حيث يمكن لأي واجهة أمامية للتداول استخدام هذا الحوض للتداول.
أيضًا بسبب هذه النقطة، يشك البعض في أن الضحية ليست بسيطة، وليست شخصًا عاديًا، وإلا فلن يحدث مثل هذا الانزلاق الكبير، وقد يكون هناك استخدام لهجوم MEV في غسل الأموال. هذا، سنتحدث عنه لاحقًا.
3.3 تداول 3، حصاد + تقاسم الغنائم
انقر على الرابط لعرض تفاصيل الصفقة 3، كما هو موضح في الصورة أعلاه. دعونا نتحدث عن المعاملات الثلاثة A و B و C.
تمت إعادة السيولة في المحفظة إلى وضعها الطبيعي من خلال تداول A، حيث تم استبدال 17320000 USDT مقابل 18600000 USDC.
تبادل B ، استعداد لتوزيع الأرباح ، تحويل جزء من الأرباح - 20.4 ألف USDC إلى 105 ETH؛
تداول C ، تقاسم الغنائم ، دفع 100.558 ETH إلى المدقق bob-The-Builder.eth.
وبذلك انتهى هجوم السندويتش.
الآن دعونا نجيب على سؤال مهم تم ذكره أعلاه: كيف استطاع المهاجمون استخدام 1,090,000 USDC لتنفيذ هجوم بقيمة 18,000,000.
كيف نفذ المهاجم هجوم حوض بقيمة 18 مليون USDC
تمكن المهاجم من تنفيذ هجوم بمستوى 18 مليون دولار باستخدام رأس مال قدره 1.09 مليون USDC فقط، وذلك بفضل وجود آلية سحرية وخاصة في عالم blockchain - تبادل Uniswap V3 الفوري (Flash Swap).
4.1 ما هو تبادل البرق (Flash Swap)؟
ببساطة:
تسمح خدمة التبادل الفوري للمستخدمين بسحب الأصول من بركة Uniswap في نفس المعاملة، ثم سدادها بأصل آخر (أو نفس الأصل مع رسوم المعاملة).
تسمح Uniswap بهذا السلوك "استلام البضاعة أولاً ثم الدفع" طالما تم إتمام العملية بأكملها ضمن نفس المعاملة. يرجى ملاحظة أنه يجب أن يتم الانتهاء من ذلك ضمن نفس المعاملة. تم تصميم ذلك لضمان سلامة منصة Uniswap نفسها:
إقراض بدون مخاطر: يسمح Uniswap للمستخدمين بسحب الأموال مؤقتًا من المسبح بدون ضمان (مشابه للإقراض)، ولكن يجب سدادها على الفور عند انتهاء المعاملة.
الذرية (Atomicity): يجب أن تكون العملية بالكامل ذرية، إما أن تنجح تمامًا (إرجاع الأموال) أو تفشل تمامًا (تراجع المعاملة).
تم تصميم تبادل البرق لتحقيق فعالية أكبر في التحكيم على السلسلة (Arbitrage)، لكن للأسف تم استغلاله من قبل مهاجمي MEV ليصبح أداة للتلاعب في السوق.
4.2 كيف تساعد عملية التحويل الفوري؟
لننظر في الصورة للتعبير عن الرسم، خطوة بخطوة لفهم كيف تم تنفيذ تبادل البرق في هذا الهجوم، انظر الصورة أدناه.
استعار المهاجم F1 مبلغ 1,090,000 USDC من AAVE باستخدام 701 WETH الخاص به؛
F2 المهاجم يقدم طلب تبادل فوري، حيث يقوم أولاً بسحب 17.58 مليون USDT من حوض Uniswap (في هذه المرحلة لا حاجة للدفع مسبقاً) حساب المهاجم مؤقتاً زاد بمقدار 17.58 مليون USDT؛
ألقى المهاجم 1758 مليون USDT بسرعة في حوض Curve ، واستبدل 1755 مليون USDC. انخفض USDT في حساب المهاجم بمقدار 1758 مليون ، وزاد USDC بمقدار 1755 مليون. من خلال الصورة أدناه ، ستكتشف أن المهاجم اختار Curve لأن السيولة هنا وفيرة جداً ، حيث يوجد أكثر من 7054 مليون USDT و 5071 مليون USDC ، وانزلاق الأسعار منخفض نسبياً.
قامت مجموعة F4 المهاجمون بتحويل 17.55 مليون USDC التي حصلوا عليها من Curve، بالإضافة إلى 1.09 مليون USDC التي كانوا قد أعدوها مسبقًا (من قرض Aave)، ليصبح المجموع 18.64 مليون USDC، وسددوها دفعة واحدة إلى Uniswap، وتمت عملية التبادل الفوري.
بعد هذه الصفقة (الصفقة 1) ، انخفض رصيد حساب المهاجم بمقدار 1.09 مليون USDC ، لأن 18.64 مليون USDC الذي تم إعادته إلى Uniswap فقط 17.55 مليون USDC تم استبدالها من Curve ، بينما 1.09 مليون USDC المتبقية هي من أموال المهاجم الخاصة.
يجب أن تكون قد اكتشفت أن هذه المعاملة قد تسببت في خسارة المهاجمين بمبلغ 1.09 مليون. ولكن، المعاملة الثالثة التي تليها، والتي استخدمت أيضًا طريقة تبادل البرق، لم تسترجع فقط 1.09 مليون USDC، بل حققت أيضًا ربحًا يزيد عن 200 ألف.
دعونا نحلل خطوة بخطوة بناءً على بيانات الصفقة 3.
K1 المهاجم، سحب 1860 ألف USDC عبر تبادل البرق في Uniswap؛
قامت مجموعة K2 بالهجوم، من خلال استبدال جزء من 1730 مليون USDC الذي تم سحبه للتو من Uniswap، مقابل 1732 مليون USDT؛
أعاد مهاجم K1 مبلغ 17.32 مليون USDT الذي تم استبداله من Curve إلى Uniswap. اكتملت مبادلة البرق. تحتاج إلى ملاحظة أن المهاجم حصل على 17.32 مليون USDT مقابل 17.3 مليون USDC فقط من خلال K2. من بين ال 130 المتبقية (= 1860-1730) USDC ، 1.09 مليون لديهم أموالهم الخاصة ، والباقي 210000 USDC هو ربح هذا الهجوم.
أعاد مهاجم K3 رأس المال إلى AAVE ، وأخذ 701 WETH ، وتبادل 200,000 USDC مقابل 105 ETH ، وأرسل 100.558 ETH إلى المدقق كإكرامية (حوالي 200,000 دولار) ، تاركا أقل من 10,000 دولار في الأرباح.
قد تتفاجأ لماذا يرغب المهاجمون في منح المدققين أرباح تصل إلى 200000 دولار بسهولة؟
4.3 لماذا يجب إعطاء "بقشيش" بقيمة 200000 دولار؟
في الحقيقة، ليست هذه كرمًا، بل هي الشرط الضروري لنجاح هجوم MEV من نوع هجوم السندويتش:
جوهر النجاح في الهجوم هو التحكم الدقيق في ترتيب المعاملات، والشخص الذي يتحكم في ترتيب المعاملات هو المدقق (bobTheBuilder).
لا يساعد المدققون المهاجمين فقط على التأكد من أن معاملات الضحية تقع بين معاملات الهجوم، بل الأمر الأكثر أهمية هو أن المدققين يمكنهم ضمان عدم تمكن الروبوتات المتنافسة على MEV من تجاوز الطابور أو التدخل في إتمام الهجوم بسلاسة.
لذلك، يفضل المهاجم التضحية بمعظم الأرباح لضمان نجاح الهجوم، والاحتفاظ ببعض الأرباح لنفسه.
يجب الإشارة بشكل خاص إلى أن هجمات MEV لها أيضًا تكاليف، فهناك تكلفة في تبادل Uniswap الفوري، وهناك تكلفة في تداول Curve أيضًا، ولكن نظرًا لأن الرسوم منخفضة نسبيًا حوالي 0.01~0.05%، فإنها قد تكون غير ملحوظة مقارنة بالأرباح الناتجة عن الهجمات.
أخيرًا، أود أن أذكركم أن الدفاع ضد هجمات MEV بسيط للغاية، ما عليك سوى: تحديد مستوى تحمل الانزلاق، ولا تتجاوز 1٪؛ تنفيذ الصفقات الكبيرة على عدة دفعات. لذا، ليس عليك أن تتجنب التداول في DEX (البورصات اللامركزية) بسبب هذه المخاوف.
الخاتمة: التحذير والإلهام في الغابة المظلمة
إن حادثة هجوم MEV التي بلغت قيمتها 215000 دولار لا شك أنها تجسد مرة أخرى بشكل قاسي قانون "الغابة المظلمة" في عالم blockchain. إنها تكشف بشكل حي عن الصراع المعقد الذي يكمن في بيئة لا مركزية وغير مسموح بها، حيث يمكن استغلال الثغرات الميكانيكية لتحقيق الفوائد.
من منظور أعلى، فإن ظهور MEV هو تجسيد لتأثير السيف ذو الحدين لشفافية blockchain وقابليته للبرمجة.
من ناحية، جميع سجلات المعاملات متاحة للبحث، مما يجعل من الممكن تتبع وتحليل سلوكيات الهجوم؛
من ناحية أخرى، توفر المنطق المعقد للعقود الذكية واليقين في تنفيذ المعاملات فرصًا للمشاركين الأذكياء.
إنه ليس مجرد سلوك هاكر بسيط، بل هو فهم عميق واستخدام لآلية البلوكشين الأساسية، يختبر متانة تصميم البروتوكول، ويتحدى أيضًا وعي المشاركين بالمخاطر.
فهم MEV ، والتعرف على مخاطرها ، هو السبيل الأفضل للإبحار في هذا العالم الرقمي المليء بالفرص ولكنه يخفي أيضًا الأزمات. تذكر أنه في "غابة الظلام" الخاصة بالبلوك تشين ، لا يمكن تجنب أن تصبح الفريسة التالية المبتلعة إلا من خلال احترام القواعد وزيادة الوعي.
هذا أيضًا هو ما أود أن أحققه من خلال هذا المقال.