تقنيات حماية من تجاوز الأعداد في العقود الذكية Rust

robot
إنشاء الملخص قيد التقدم

ثغرة تجاوز العدد الصحيح وطرق الحماية منها

تجاوز عدد صحيح هو مشكلة شائعة في البرمجة. في معظم لغات البرمجة، يتم تخزين القيم العددية الصحيحة في ذاكرة ذات طول ثابت. يمكن تقسيم الأعداد الصحيحة إلى أعداد غير سالبة وأعداد سالبة، والفرق يكمن في ما إذا كانت أعلى بت تستخدم كبت للتعبير عن السالب أو الموجب. على سبيل المثال، يمكن لذاكرة بحجم 32 بت تخزين أعداد صحيحة غير سالبة من 0 إلى 4,294,967,295 (uint32)، أو أعداد صحيحة سالبة من -2,147,483,648 إلى 2,147,483,647 (int32).

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

تعريف تجاوز السعة العددية

تنقسم زيادة الأعداد الصحيحة إلى حالتين: زيادة ( overflow ) وانخفاض ( underflow ).

  1. تجاوز الحد: نتيجة تتجاوز القيمة القصوى لنوع البيانات الصحيح. على سبيل المثال، 0xFFFFFFFF للuint32 عند إضافة 1 ستصبح 0x00000000.

  2. تحت السقوط: النتيجة أقل من الحد الأدنى لنوع العدد الصحيح. على سبيل المثال، 0 من نوع uint32 ناقص 1 سيتحول إلى 0xFFFFFFFF.

!

تقنيات الحماية

في Rust يمكن اتخاذ التدابير التالية لمنع تجاوز سعة الأعداد الصحيحة:

  1. قم بتكوين Cargo.toml لتمكين فحص تجاوزات الأعداد الصحيحة في وضع الإصدار:

تومل [الملف الشخصي.الإصدار] فحوصات تجاوز الفائض = صحيح panic = 'إلغاء'

  1. استخدام حزمة uint لدعم الأعداد الأكبر:

صدأ استخدم uint::construct_uint;

construct_uint! { بنية الحانة U1024(16) ؛ }

  1. استخدام دوال الرياضيات الآمنة مثل checked_*:

صدأ دع النتيجة = x.checked_add(y).expect("تجاوز الإضافة");

  1. استخدم دوال تحويل مثل as_u128() للكشف عن الفيضانات:

صدأ دع amount_u256 = U256 ::from(u128::MAX) + 1 ؛ دع amount_u128 = amount_u256.as_u128(); سيؤدي إلى الذعر

!

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

!

شاهد النسخة الأصلية
قد تحتوي هذه الصفحة على محتوى من جهات خارجية، يتم تقديمه لأغراض إعلامية فقط (وليس كإقرارات/ضمانات)، ولا ينبغي اعتباره موافقة على آرائه من قبل Gate، ولا بمثابة نصيحة مالية أو مهنية. انظر إلى إخلاء المسؤولية للحصول على التفاصيل.
  • أعجبني
  • 4
  • مشاركة
تعليق
0/400
GasDevourervip
· 07-20 17:20
احذر من الغش في المشاريع!
شاهد النسخة الأصليةرد0
SchrodingerAirdropvip
· 07-19 14:45
المؤلف محق، لماذا لا نتعلم لغة روست معًا؟
شاهد النسخة الأصليةرد0
liquiditea_sippervip
· 07-17 23:42
واجب إجراء فحص الفائض!
شاهد النسخة الأصليةرد0
TokenCreatorOPvip
· 07-17 23:24
أه، من لم يقع في فخ التسرب هذا؟~
شاهد النسخة الأصليةرد0
  • تثبيت