الليلة الماضية (2024.2.23) uni سحبت السوق في لحظة، وارتفع السعر من 7 إلى 7 دولارات أمريكية في لحظة. 11USD.
تسمح اتفاقية الإقراض المركب للمستخدمين برهن عملات أخرى (مثل الدولار الأمريكي) لاقتراض يوني. في غضون فترة زمنية قصيرة بعد هذا السحب الفوري لليوني، لم يتم تحديث comالجنيه في الوقت المناسب< يؤدي سعر SPAN lang="en-US">uni إلى الاتفاق على أنه يمكن استخدام الضمانات ذات قيمة uni منخفضة لاقتراض uni.
تم اكتشاف ذلك من خلال عدد قليل جدًا من الأشخاص، الذين اقترضوا مبلغًا كبيرًا من اليوني مقابل usdc ثم باعته Drop uni وحوّله إلى usdc، وبعد ذلك ستجد أن مبلغ usdc الذي حصل عليه هو في الواقع أكبر من مبلغ usdc الذي رهنهالمركب الكمية.
دعني أحلل بعناية هذا الهجوم على اتفاقية الإقراض. مصدر البيانات هو https://bad-debt.riskdao.org/.
العناوين الأربعة التالية مفيدة للهجمات
0x6980a47bee930a4584b09ee79ebe46484fbdbdd0
0x5968ada261a84e19a6c85830e655647752585ed4
0x49bc3cec1fb7978746f742a4e485d0d601831cea
0x2f99f ب 66ea797e7fa2d07262402ab38bd5e53b12 p>
الآن تحقق من أرصدة هذه العناوين الأربعة على debank، ستجد ذلكمجمعفي هذه الاتفاقية هذه العناوين الأربعة عليها دين ولكن الضمانات تكاد تكون معدومة، وذلك على النحو التالي:
تظهر لقطة الشاشة هذه أن العنوان 0x2f99fb66ea797e7fa2d07262402ab38bd5e53b12 رهن 1.1503Dai و0.051715usdc في المجمع، لكنه اقترض 28702.7973uni.
الضمانات تقريبًا0< span lang="zh-CN">، لكن قيمة المقترضuni تصل إلى 330,000 ش. في هذه الحالة، هذا العنوان بالتأكيد لن يسدد ديون الجامعة.
العناوين الثلاثة الأخرى هي نفسها، ولم يستخدموا أي ضمانات تقريبًا واقترضوا مئات الآلاف من العملات المعدنية.
استعارت هذه العناوين الأربعة إجمالي 55,565.9001uni، وهي محسوبة حاليًا على أنها 12U، والقيمة الإجمالية هي 55565.9*12=666790.8 دولارًا أمريكيًا، وخسارة قدرها 660,000 وحدة. .
لماذا يحدث أنه يمكنك استخدام ما يقرب من 0< /span>الضمانات، ولكن هل يمكنك اقتراض وبيع مئات الآلاف من العملات المعدنية؟
منطق الهجوم بأكمله كما يلي:
1.لنفترض أنهT0في ذلك الوقت، كان سعر uni في السوق7U/uni,مركبخلاصة أسعار uni عادية وأيضًا7U/uni
2.ثم عندT1النقطة الزمنية،uniارتفع السعر في السوق فجأة، ليصل على الفور إلى 11U/uni11U/ يوني. لكنمركبريبيرuniيوجد خطأ في موجز الأسعار، ولا يزال عند 7U/uni >.
3.ثم اكتشف شخص ما了مركبنعمuniكان موجز الأسعار خاطئًا، وتعهدت على الفور بـ 20عشرة ألف تمتد>usdcادخلمجمع< /span>تُستخدم كضمان وتُقترض uniالعملات المعدنية، وفقًا إلى سعر تغذية com< /span>بالجنيه ( 7u/uni< /span>، و85% الإقراض معدل)، يمكنك اقتراض 20*0.85=170,000 وحدة من الوحدات، 170000/7=24285.7143 وحدة، أي أنه يمكنك اقتراض 24,000 وحدة.
4.ثم قم بتغيير هذا 2.4عشرة آلافيونيبيعه في السوق (مثلuniswap v3) و استبدله بـ usdc، نظرًا لأن السعر في السوق هو 11U/uni، فيمكن بيعه مقابل 2.4*11=26.4 wUsdc، وهو ما يزيد بمقدار 64000 دولار أمريكي عن الضمان، وهذا هو الربح.
المعاملة التالية https://etherscan.io/tx/0xaee0f8d1235584a3212f233b655f87b89f22f1d4890782447c4ef742b37af58d يمكنها رؤية المنطق أعلاه بوضوح شديد
< p style= "text-align:center">
لقد استلمته مرهونًا 193020 دولارًا أمريكيًا، وأقرض 19748 uni، وباع uni إلى ETH ثم ETH إلى usdc، وحصل أخيرًا على 195461 دولارًا أمريكيًا، وهو ما كان 195461-193020 = 2441 دولارًا أمريكيًا أكثر من الضمانات.
5.إلخ.< span lang="en-US">المركبتغيير الصحيحuniبعد أن يتم تغذية سعر العملة في الاتفاقية، سيتم بالتأكيد تصفية هذه الديون، ولن تكون التصفية نظيفة. حتى لو أخذ المصفي جميع الضمانات، سيظل مبلغ كبير من الديون الموحدة غادر. هذا هو الديون المعدومة.
مركبلماذا يظهر uniخلاصة الأسعار خاطئة؟
حاليًاالمركببدأ التصويت لإصلاح هذاالخلل.
لأنمركبيعتمد تحديد سعر uniالتأمين المزدوج، يستخدم المرء chainlinkOracle قم بتغذية السعر، واستخدم أيضًا Uniswap TWAP (متوسط السعر المرجح بالوقت). لكنني لم أتحقق من الاختيار المحدد بين خلاصتي السعر. لكن انطلاقا من النتائج الحالية، يجب أن يكون كلاهما طبيعيا في نفس الوقت حتى يغذي المركب الأسعار بشكل طبيعي.
عندما ارتفع سعر uni فجأة، كانت تغذية أسعار chainlink طبيعية، ولكن كانت هناك مشكلة في سعر UniswapTWAP. أعطى بروتوكول Compound حصلت على السعر الخاطئ. ص>