← المقالات

العقود الذكية: دراسة بنية آلة الإيثريوم (EVM) والتحديات الأمنية مثل هجمات إعادة الدخول في تطوير التمويل اللامركزي

2026-03-16

العقود الذكية: دراسة بنية آلة الإيثريوم (EVM) والتحديات الأمنية مثل هجمات إعادة الدخول في تطوير التمويل اللامركزي

هندسة آلة الإيثريوم (EVM) والتحديات الأمنية للعقود الذكية في التمويل اللامركزي

ربما تكون العقود الذكية، باعتبارها العمود الفقري للنظام البيئي اللامركزي (Web3)، أهم اختراع بعد البيتكوين نفسها. تعمل هذه التطبيقات ذاتية التنفيذ والتي تعمل على blockchain على تمكين المعاملات دون وسطاء. ولكن خلف ستار هذه الرموز السحرية، هناك بنية معقدة تسمى Ethereum Virtual Machine (EVM)، والتي يجب على كل مطور blockchain فهمها. في هذه المقالة، سنلقي نظرة فاحصة على بنية EVM والتحدي الأمني ​​الأكثر خطورة، ألا وهو هجمات إعادة الدخول.

ما هي العقود الذكية؟

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

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


بنية الآلة الافتراضية للإيثريوم (EVM)

لفهم كيفية تنفيذ العقود، نحتاج إلى التعرف على آلة الإيثريوم الافتراضية. EVM هي بيئة حوسبة محمية تعمل على جميع العقد في شبكة Ethereum.

1. بيئة معزولة ورمل

يعمل EVM كجهاز افتراضي معزول تمامًا عن نظام التشغيل المضيف وعمليات الشبكة الأخرى. يضمن هذا العزل أن تنفيذ عقد ذكي خبيث لا يمكن أن يعطل تشغيل شبكة إيثريوم بأكملها أو العقود الأخرى.

2. النموذج القائم على الحساب

على عكس Bitcoin الذي يستخدم نموذج UTXO، يعتمد EVM على الحسابات. يحتوي كل حساب على رصيد وعدد المعاملات (Nonce) ورمز العقد (Code) ومساحة التخزين (Storage). هذا النموذج يجعل تطوير العقود المعقدة أسهل بكثير.

3. الغاز وتكلفة التنفيذ

كل تعليمات يتم تنفيذها في EVM تستهلك طاقة. يتم قياس هذه الطاقة بوحدة الغاز. يجب على المستخدمين دفع الغاز لأداء وظائف العقد. تمنع هذه الآلية هجمات رفض الخدمة (DoS) والحلقات اللانهائية. إذا لم يكن الغاز كافيا، يتم إيقاف تنفيذ العقد، ولكن لا يتم تطبيق تغييرات الحالة.

4. كود البايت ورموز التشغيل

يجب ترجمة لغات البرمجة عالية المستوى مثل Solidity أو Vyper إلى لغة آلة EVM. ناتج هذه الترجمة هو bytecode، وهو عبارة عن مجموعة من التعليمات ذات المستوى المنخفض تسمى Opcode. يقوم EVM بتنفيذ أكواد التشغيل هذه واحدًا تلو الآخر لتغيير حالة الشبكة.


التحديات الأمنية في تطوير DeFi

تعتمد البروتوكولات المالية اللامركزية (DeFi) على العقود الذكية وتتعامل مع الأصول القيمة. وقد جعل هذا المتسللين يبحثون عن الأخطاء الأمنية بدافع كبير. تشمل بعض التحديات الأكثر شيوعًا ما يلي:

  • هجمات إعادة الدخول: ربما يكون الهجوم الأكثر شهرة في تاريخ الايثيريوم.
  • عدد صحيح تجاوز/تجاوز: على الرغم من أن الإصدارات الجديدة من Solidity قد حلت هذه المشكلة، إلا أنها لا تزال خطيرة في العقود القديمة.
  • الوصول غير المصرح به (التحكم في الوصول): الأخطاء التي تسمح للمتسلل بتنفيذ وظائف إدارية.
  • التشغيل الأمامي: التشغيل الأمامي في المعاملات التي تتم بواسطة عمال المناجم أو المزارع في MEV.

وفي ما يلي، سوف نتعرف على أخطرها.


ما هو هجوم إعادة الدخول؟

يعد هجوم إعادة الدخول أحد أنواع الثغرات الأمنية حيث يستدعي عقد ضار وظائف تقوم باسترداد الأصول قبل تحديث الحالة الداخلية لعقد الضحية.

آلية أداء هجوم إعادة الدخول

لفهم ذلك بشكل أفضل، فكر في سيناريو بنك DeFi:

  1. المستخدم (عقد ضار) يطلب سحب 100 إيثر.
  2. عقد بنكي يتحقق من رصيد المستخدم (على سبيل المثال، لديه 100 إيثر).
  3. عقد بنكي يرسل 100 إيثر إلى عنوان المستخدم.
  4. ملاحظة أساسية: في إيثريوم، عند إرسال الأثير إلى عقد، إذا كان هذا العقد يحتوي على وظيفة تسمى "الاحتياطي"، فسيتم تنفيذه تلقائيًا.
  5. يستدعي العقد الضار وظيفة السحب مرة أخرى في وظيفة `الاحتياطي' الخاصة بها.
  6. عقد البنك لأنه لم يقم بعد بتخفيض رصيد المستخدم في قاعدة البيانات الخاصة به (هذه الخطوة تتم عادة بعد الإرسال)، فهو يسمح بالسحب مرة أخرى.
  7. تتكرر هذه الحلقة حتى ينفد الغاز أو يفرغ رصيد البنك.

نموذج التعليمات البرمجية الضعيفة (الصلابة)

// هذا الكود مخصص لأغراض التدريب فقط وهو عرضة للاختراق
سحب الدالة (مبلغ uint) عام {
    تتطلب(الأرصدة[msg.sender] >= المبلغ);

// أرسل الأثير قبل تحديث المخزون (خطير!)
    (تم إرسال منطقي،) = msg.sender.call{value: المبلغ}("");
    يتطلب (أرسل، "فشل في إرسال الأثير")؛

    // تحديث المخزون بعد الإرسال (التسبب في هجوم إعادة الدخول)
    الأرصدة[msg.sender] -= المبلغ؛
}

حلول للتعامل مع إعادة الدخول

لمنع هذه الهجمات، يجب على المطورين اتباع نمط الفحص-التأثيرات-التفاعلات:

  1. الفحوصات: أولاً، تحقق من الشروط.
  2. التأثيرات: تحديث الحالة الداخلية للعقد (تقليل الرصيد).
  3. التفاعلات: تفاعل أخيرًا مع العالم الخارجي (أرسل الأموال).

كما أن استخدام معدل nonReentrant في مكتبة OpenZeppelin هو المعيار الذهبي لمنع هذه الهجمات.


الخلاصة: الأمن هو الأولوية الأولى في تطوير blockchain

لقد أتاح تطوير العقود الذكية على آلة الإيثريوم الافتراضية (EVM) فرصًا فريدة لإنشاء تطبيقات لامركزية. لكن البنية المعقدة لـ EVM والطبيعة غير القابلة للتغيير لـ blockchain تقلل من هامش الخطأ إلى الصفر.

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

الأسئلة المتداولة (العقود الذكية وآلة الإيثيريوم (EVM))

هل جهاز Ethereum الظاهري (EVM) مخصص لـ Ethereum فقط؟
لا تستخدم العديد من سلاسل الكتل الأخرى مثل Binance Smart Chain (BSC) وPolkadata (Moonbeam) وAvalanche (Avalanche C-Chain) جهازًا افتراضيًا متوافقًا مع Ethereum حتى يتمكن المطورون من نقل تطبيقاتهم اللامركزية بسهولة.

كيف تم اكتشاف هجوم Reentrancy؟
وأشهر مثال على هذا الهجوم هو اختراق DAO في عام 2016، والذي أدى إلى انقسام الايثيريوم إلى ETH وETC. في الآونة الأخيرة، كانت البورصة اللامركزية Uniswap الإصدار 2 هدفًا لهذا النوع من الهجوم.

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