إرشادات لتدقيق بروتوكولات Staking

إرشادات لتدقيق بروتوكولات Staking

وقت القراءة: 6 دقائق

في هذه المدونة ، حددنا مفهوم بروتوكولات تكديس السيولة وإرشادات التدقيق لبروتوكولات Staking. تغطي الإرشادات مجموعة من النقاط الضعيفة مثل آليات السحب ، وأخطاء التقريب ، والمكالمات الخارجية ، ومنطق الرسوم ، والحلقات ، والهياكل ، ومدة التخزين ، وما إلى ذلك. ستكون مشاركة المدونة هذه مرجعًا مفيدًا لمراجعة بروتوكولات Staking ويمكن أن تساعدك في تحديد الأخطاء المحتملة .

ما هو السيولة Staking؟

يتيح تجميع السيولة للمستخدمين المشاركة في حيازاتهم من العملات المشفرة وكسب المكافآت دون التضحية بالسيولة. بدلاً من قفل عملاتهم المعدنية لفترة محددة ، يمكن للمستخدمين الحصول على رمز سائل يمثل أصولهم المقيدة. يمكن تداول هذا الرمز المميز أو استخدامه مثل أي عملة مشفرة أخرى ، مما يسمح للمستخدمين باستخدام أصولهم كما يحلو لهم مع الاستمرار في كسب مكافآت Staking.

إرشادات لتدقيق بروتوكولات التوقيع المساحي وذكاء بيانات PlatoBlockchain. البحث العمودي. منظمة العفو الدولية.

على سبيل المثال ، لديك 100 ETH تريد مشاركتها في شبكة Ethereum. بدلاً من قفل ETH الخاص بك لفترة محددة ، يمكنك استخدام خدمة تخزين السيولة مثل Lido لمشاركة ETH الخاصة بك والحصول على رمز سائل يسمى stETH في المقابل. مع StETH ، لا يزال بإمكانك تداول أو استخدام ETH الخاص بك أثناء ربح مكافآت Staking.

لنبدأ بتدقيق عقود Staking:

فحص جميع مواصفات التدقيق المتاحة قبل البدء برمز العقد. يمكن أن يكون في شكل ورقة بيضاء أو ملفات README أو أي شيء آخر. ستمنحك هذه فكرة عما سيحتوي عليه رمز العقد.

عند الاطلاع على مستند مواصفات التدقيق لعقد التخزين المؤقت ، ابحث عن هذه النقاط:

  • أنواع الرسوم وحساباتها.
  • آلية المكافآت للرموز المجمعة
  • صلاحيات المالك
  • هل العقد يحمل ETH؟
  • ما هي الرموز المميزة التي سيحملها العقد؟
  • العقد الأصلي الذي تم تشعبه منه

تأكد من مطابقة المواصفات للرمز. ابدأ بالرسوم والرموز ، متبوعًا بالتحقق من سلطة المالك. تأكد من أن جميع قيم المكافآت والرسوم متوافقة مع الوثائق.

الأماكن المعرضة للخطر للبحث عنها؟

1. آلية سحب المكافأة:

تحقق من تنفيذ آلية مكافآت الرمز المميز بشكل صحيح وأن المكافآت موزعة بشكل عادل ومتناسب على جميع الرواد. يمكن للمشاريع توزيع المكافآت بطريقتين: إما تلقائيًا ، على أساس دوري ، أو بناءً على طلب المستخدمين أنفسهم. يمكن تنفيذ وظيفة السحب وتخصيصها وفقًا لمنطق عمل البروتوكول.
فيما يلي بعض نقاط التفتيش:

  • تحقق مما إذا كان أي مستخدم قادرًا على سحب أكثر من المكافأة + المبلغ المربوط.
  • تحقق من وجود تجاوز / تدفق في حساب المبلغ
  • تحقق مما إذا كانت بعض المعلمات يمكن أن يكون لها تأثير سلبي على المكافآت أثناء الحساب.
  • إذا تم استخدام block.timestamp أو block.number في هذه الوظيفة. تحقق مما إذا كان يمكن استغلالها بأي شكل من الأشكال.

2. منطق الرسوم:

إذا كان الإيداع والسحب يخضعان لبعض الرسوم ، فتأكد من أنه لا يمكن لمستخدم واحد تجاوز الرسوم. بالإضافة إلى ذلك ، كن يقظًا لأي مشكلات محتملة في تجاوز أو نقص التدفق. فقط المسؤول أو المالك يجب أن يكون مفوضًا لتغيير إعدادات الرسوم. تحقق أيضًا من إنشاء حد أقصى للرسوم ، مما يمنع المسؤول من تعيينه بمبلغ مرتفع للغاية.

3. آلية حرق / سك عملة LP:

تحقق مما إذا كانت آليات السك والحرق قد تم تنفيذها بشكل صحيح. يجب أن تعكس وظيفة الحرق جميع تغييرات الحالة التي يتم إجراؤها بواسطة وظيفة النعناع. بالإضافة إلى ذلك ، من الضروري التحقق من أن المستخدمين يتلقون المقدار المناسب من الرموز المميزة أثناء الحصة الأولى ، عندما يكون المجمع فارغًا.

يمكن التحقق رياضيًا من منطق وظائف السك والحرق للكشف عن أي ثغرة خفية. أيضًا ، يجب ألا يتجاوز إجمالي المعروض من الرموز المميزة LP المسكوكة الأصول المقيدة.

4. أخطاء التقريب:

على الرغم من أن بعض أخطاء التقريب الطفيفة لا يمكن تجنبها عادةً وليست مصدر قلق ، إلا أنها يمكن أن تنمو بشكل كبير عندما يكون من الممكن مضاعفتها. ابحث عن حالات الحافة حيث يمكن للمرء أن يستفيد من تقريب الأخطاء عن طريق التكديس المتكرر وإلغاء التثبيت.

لتحديد ما إذا كانت أخطاء التقريب يمكن أن تتراكم إلى مبلغ كبير خلال فترة زمنية ممتدة ، يمكننا حساب نطاق أخطاء التقريب المحتملة رياضيًا.

5. مدة Staking:

تأكد من أن حسابات مدة التخزين في العقد تتوافق مع منطق الأعمال المحدد. تحقق من أن المستخدمين لا يمكنهم استرداد المكافآت قبل انتهاء مدة التخزين بتجاوز عمليات التحقق من المدة. تحقق أيضًا مما إذا كان يمكن للمهاجم استغلال مدة التخزين للحصول على المزيد من المكافآت.

6. المكالمات الخارجية ومعالجة الرموز:

ستكون معظم المكالمات الخارجية على عقود الرمز المميز. لذلك ، يجب علينا تحديد أنواع الرموز المميزة التي سيتعامل معها عقد Staking. من الضروري فحص المكالمات الخارجية بحثًا عن أي أخطاء وهجمات عودة. يمكن أن تشكل الرموز المميزة الانكماشية أو الرموز المميزة ذات رسوم التحويل ، مثل Safemoon ، مشكلة إذا لم يتم تنفيذ منطقها بشكل صحيح.

7. فحوصات التلاعب في الأسعار:

يعد التلاعب في السعر عن طريق قرض سريع أحد أكثر الاختراقات شيوعًا في مشاريع DeFi. قد تكون هناك مواقف حيث يمكن للجهات الفاعلة الخبيثة استخدام القروض السريعة للتلاعب بالأسعار أثناء التخزين أو إلغاء تثبيت كمية كبيرة من الرموز المميزة. قم بمراجعة وظائف Staking and unstaking بعناية لتجنب سيناريوهات الحالة المتطورة التي قد تؤدي إلى هجمات التلاعب بالأسعار القائمة على القروض السريعة وفقدان أموال المستخدمين الآخرين.

8. بعض الشيكات الإضافية:

  • الحلقات: إذا كان منطق العقد يتضمن تكرار الحلقات فوق المصفوفات ، فمن المهم التأكد من عدم تجاوز حد غاز الكتلة. يمكن أن يحدث هذا عندما يكون حجم المصفوفة كبيرًا جدًا ، لذلك يجب عليك التحقق من الوظائف التي يمكن أن تزيد من حجم المصفوفة وما إذا كان بإمكان أي مستخدم استغلالها للتسبب في هجوم DoS. ألق نظرة على هذا تقرير.
  • الهياكل: تستخدم عقود التخزين المؤقت نوع البنية لتخزين بيانات المستخدم أو تجميع البيانات. عند التصريح عن بنية أو الوصول إليها داخل دالة ، من المهم تحديد استخدام "ذاكرة" أو "تخزين". قد يساعدنا ذلك في توفير بعض الغاز. لمزيد من المعلومات ، يرجى الرجوع لهذه المادة.
  • تشغيل الأمامي: ابحث عن أي سيناريوهات حيث يمكن للجهات الخبيثة تشغيل أي معاملة لصالحها.
  • رؤية الوظيفة / فحوصات التحكم في الوصول: يمكن لأي شخص الوصول إلى أي وظيفة تم الإعلان عنها على أنها خارجية أو عامة. لذلك ، من المهم ضمان عدم قدرة أي وظيفة عامة على القيام بأي إجراءات حساسة. من الأهمية بمكان التحقق من أن بروتوكول التخزين قد نفذ ضوابط مناسبة لمنع الوصول غير المصرح به إلى كل من العملات المكدسة والبنية التحتية للنظام.
  • مخاطر المركزية: من المهم عدم إعطاء المالك صلاحيات مفرطة. إذا تم اختراق عنوان المسؤول ، فقد يتسبب ذلك في تلف كبير في البروتوكول. تحقق من أن امتيازات المالك أو المسؤول مناسبة وتأكد من أن البروتوكول يحتوي على خطة للتعامل مع المواقف التي يتم فيها تسريب المفاتيح الخاصة للمسؤول.
  • معالجة ETH / WETH: غالبًا ما تتضمن العقود منطقًا محددًا للتعامل مع ETH. على سبيل المثال ، عندما msg.value> 0 ، قد يحول العقد ETH إلى WETH مع السماح باستلام WETH مباشرة. عندما يحدد المستخدم WETH كعملة ولكنه يرسل ETH مع المكالمة ، يمكن أن يؤدي ذلك إلى كسر بعض الثوابت ويؤدي إلى سلوك غير صحيح.

لقد ناقشنا حتى الآن بروتوكولات تكديس السيولة وإرشادات التدقيق لمثل هذه البروتوكولات. باختصار ، يتيح وضع السيولة للمستخدمين كسب مكافآت Staking دون التضحية بالسيولة. لقد حددنا النقاط الضعيفة في عقود التخزين التي يجب على المدققين الانتباه إليها ، مثل آليات السحب ، ومنطق الرسوم ، وآلية سك / حرق رمز LP ، وأخطاء التقريب ، ومدة التخزين ، والمكالمات الخارجية ، وفحوصات التلاعب بالأسعار. 

نوصي المدققين بفحص وثائق مواصفات التدقيق ، ومطابقة المواصفات مع الكود ، والتحقق من الرسوم والتحقق من صحة الرموز. نوصي أيضًا بإجراء فحوصات إضافية مثل التكرار الحلقي فوق المصفوفات ، وتحديد الذاكرة أو التخزين لبيانات نوع البنية ، وسيناريوهات التشغيل الأمامي. ستكون هذه الإرشادات مفيدة لتدقيق بروتوكولات Staking وتساعد في تحديد الأخطاء المحتملة.


11 المشاهدات

الطابع الزمني:

اكثر من كويلهاش