نظرت إلى الكود الذي كان خاطئا في Cetus الليلة الماضية ، وأول شيء كنت متشككا جدا بشأنه get_delta_b هو سبب تحويل هذه الوظيفة u256 إلى u64 ، مما تسبب في مشكلة اعتراض الدقة. بعد سؤال الذكاء الاصطناعي ، من المحتمل أنه عندما قام cetus بترحيل جميع صيغ uniswap v3 ، نظرا لأن uni يستخدم نقطة ثابتة ، يجب تحويله إلى رقم فاصل عائم دون اعتبار أمني دقيق. يصعب اكتشاف هذا النوع من منطق الأعمال ، الذي ينتمي إلى مستوى الخوارزمية ، في عمليات تدقيق التعليمات البرمجية ، ما لم يكن لدى مؤسسة التدقيق أيضا باحثون على دراية بكل من الخوارزميات والتعليمات البرمجية. إليك منطق سبب تحليل الذكاء الاصطناعي للتعليمات البرمجية بالطريقة التي يحلل بها:
بناء على تحليلي لقاعدة التعليمات البرمجية ، يمكنني الآن شرح سبب اختيار المؤلف لتنفيذها بهذه الطريقة
get_delta_b
الوظائف والأسباب المحتملة:
لماذا ينفذ مؤلف الوظيفة get_delta_b الطريقة
تحسين الأداء:) ويعالج قناع البت أنواع U256 مباشرة. من المرجح أن يؤدي ذلك إلى تحسين الأداء وتقليل النفقات الحسابية. في تطبيقات DeFi ، وخاصة سيناريوهات التداول عالية التردد ، يعد الأداء أمرا بالغ الأهمية.
يستخدم الكود المعلق عليه u256::get
,u256::SHRW
بينما يستخدم التنفيذ الحالي عمليات البت (>> 64
توفير رسوم الغاز: تحتاج العمليات على Sui blockchain إلى دفع رسوم الغاز ، وستستهلك العمليات الأكثر تعقيدا المزيد من الغاز. يمكن أن يؤدي تبسيط الرياضيات إلى تقليل تكاليف المعاملات ، خاصة بالنسبة للوظائف الأساسية AMM التي يتم تشغيلها بشكل متكرر.
انخفاض التبعيات: وظائف الوحدة النمطية ، والتنفيذ الحالي يقلل من الاستدعاءات إلى هذه الوظائف ، ربما لتقليل التبعيات على المكتبات الخارجية ، أو لتجنب المشكلات المتعلقة ببعض الوظائف الخارجية.
يستخدم الكود الموجود في التعليقات المزيد من u256
نقل الصلابة للنقل: فيما يتعلق بأسلوب الكود ، قد يكون هذا نقلا من كود Solidity الخاص ب Ethereum إلى لغة Sui's Move. يعد هذا الاستخدام لمعالجة البت والإخفاء أمرا شائعا في Solidity، خاصة في تطبيقات AMM مثل Uniswap V3.
التعامل مع رياضيات النقاط الثابتة: يجب معالجة نتيجة 256 بت الناتجة بشكل صحيح ، ويعد تحويل 64 بت إلى اليمين طريقة شائعة للحصول على موضع الفاصلة العشرية الصحيح.
غالبا ما تستخدم الرياضيات ذات النقاط الثابتة في AMMs للتعامل مع القيم العشرية. full_math_u128::full_mul
المشاكل المحتملة
ومع ذلك ، فإن هذا التنفيذ يقدم العديد من المشاكل:
ضعف قراءة الكود: يجعل استخدام الأقنعة المشفرة وعمليات الإزاحة من الصعب فهم الكود وتدقيقه.
عدم وجود التحقق من الحدود الكاملة: تفتقر عمليات البت وعمليات تحويل النوع إلى التحقق الشامل من الحدود ، مما قد يؤدي إلى سلوك غير متوقع في الحالات القصوى.
يتعايش التعليق على التعليمات البرمجية مع كود التنفيذ: يشير الاحتفاظ بالإصدارات القديمة من التعليمات البرمجية المعلقة إلى أن الكود قد يكون في حالة انتقالية أو لم يتم اختباره بشكل كاف ، وهو أمر خطير على التعليمات البرمجية الهامة التي تتعامل مع الأصول المالية.
مخاطر تجاوز عدد صحيح: عند التعامل مع القيم الكبيرة ، يمكن أن تؤدي عمليات البتات والتحويلات إلى تجاوز عدد صحيح ، وقد تفتقر التطبيقات المبسطة إلى آليات الحماية الكافية.
ملخص
من المحتمل أن يكون السبب الرئيسي للمؤلف لتنفيذ هذا الرمز هو تحسين الأداء وتقليل تكاليف الغاز ، أثناء التعامل مع حسابات الرياضيات ذات النقطة الثابتة في AMMs. ومع ذلك ، فإن هذا التحسين ، على حساب أمان التعليمات البرمجية وسهولة القراءة ، قد يوفر للمهاجمين ثغرات أمنية قابلة للاستغلال ، كما ترون من حادثة سرقة Cetus التي قدمتها.
في مشاريع DeFi ، يجب أن يكون للأمان الأسبقية دائما على تحسين الأداء ، خاصة بالنسبة للوظائف الأساسية التي تتعامل مع أصول المستخدم. من الأفضل استخدام وظائف المكتبة التي أثبتت جدواها ، وإضافة فحوصات شاملة للحدود ، وإجراء عمليات تدقيق أمنية مناسبة.
عرض الأصل26
61.21 ألف
المحتوى الوارد في هذه الصفحة مُقدَّم من أطراف ثالثة. وما لم يُذكَر خلاف ذلك، فإن OKX ليست مُؤلِّفة المقالة (المقالات) المذكورة ولا تُطالِب بأي حقوق نشر وتأليف للمواد. المحتوى مٌقدَّم لأغراض إعلامية ولا يُمثِّل آراء OKX، وليس الغرض منه أن يكون تأييدًا من أي نوع، ولا يجب اعتباره مشورة استثمارية أو التماسًا لشراء الأصول الرقمية أو بيعها. إلى الحد الذي يُستخدَم فيه الذكاء الاصطناعي التوليدي لتقديم مُلخصَّات أو معلومات أخرى، قد يكون هذا المحتوى الناتج عن الذكاء الاصطناعي غير دقيق أو غير مُتسِق. من فضلك اقرأ المقالة ذات الصِلة بهذا الشأن لمزيدٍ من التفاصيل والمعلومات. OKX ليست مسؤولة عن المحتوى الوارد في مواقع الأطراف الثالثة. والاحتفاظ بالأصول الرقمية، بما في ذلك العملات المستقرة ورموز NFT، فيه درجة عالية من المخاطر وهو عُرضة للتقلُّب الشديد. وعليك التفكير جيِّدًا فيما إذا كان تداوُل الأصول الرقمية أو الاحتفاظ بها مناسبًا لك في ظل ظروفك المالية.