لماذا يختلف أمن العقود الذكية عن أمن البرمجيات المعتادة؟

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

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

ما الثغرات الأكثر شيوعًا في العقود الذكية؟

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

إعادة الدخول

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

التحكم في الوصول

دوال حساسة يمكن لأي شخص استدعاؤها. تتيح دالة setFee العامة التي كتبها كوفي لأي شخص غريب تغيير الرسوم. يشرح Ethereum.org أنماطاً مثل دور المالك، والتحكم في الوصول القائم على الأدوار، والموافقة متعددة التوقيعات.

تجاوز سعة الأعداد الصحيحة وتجاوز حدها الأدنى

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

التلاعب بالأوراكل

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

أخطاء المنطق والتحقق من الصحة

قواعد لا تتوافق مع التصميم المقصود، أو مدخلات لا يجري التحقق منها مطلقًا، مثل مبلغ يساوي صفرًا أو عنوان غير متوقع.

كيف تختبر الفرق العقود الذكية وتدققها؟

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

1. اختبارات الوحدات والخصائص

اكتب اختبارات لكل دالة، بما في ذلك الحالات العدائية مثل مستقبِل يعيد استدعاء الدالة. يجرّب الاختبار العشوائي آلاف المدخلات العشوائية تلقائيًا.

2. التحليل الساكن

يذكر Ethereum.org أدوات مثل Slither وMythril وAderyn، تفحص الشيفرة بحثًا عن أنماط معروفة تنطوي على مخاطر.

3. اختبر الشبكات

انشر على شبكة اختبار عامة قبل النشر على الشبكة الرئيسية. يوصي Ethereum.org باستخدام Sepolia لتطوير التطبيقات والعقود؛ ومن المفترض ألا تكون لعملة إيثر على شبكة الاختبار أي قيمة حقيقية، لذا لا تترتب على الأخطاء أي تكلفة.

4. مراجعة الأقران والمكتبات المدقّقة

استخدم نظامًا لإدارة الإصدارات، ومراجعين مستقلين لكل تغيير، ومكتبات خضعت لمراجعة دقيقة مثل OpenZeppelin Contracts، بدلًا من كتابة آليات التحكم في الوصول من الصفر.

5. التدقيق ومكافآت اكتشاف الثغرات والمراقبة

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

كيف تبدو المراجعة الأمنية في صورتها الضعيفة وفي صورتها المحسّنة؟

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

المراجعة المحسّنة: إعادة الدخول: أصبحت الدالة withdraw تصفّر الرصيد قبل الإرسال، ويستخدم اختبارٌ عقدًا مستقبِلًا خبيثًا لمحاولة استدعاء الدالة مجددًا. التحكم في الوصول: اقتصر استخدام setFee على دور المالك من مكتبة خضعت للتدقيق، مع اختبار يؤكد فشل الاستدعاء من طرف غير مخوّل. المترجم: جرى تحديثه إلى إصدار حالي من سلسلة 0.8 لتفعيل فحوص تجاوز السعة. مصدر البيانات الخارجي: استُبدل السعر المستمد من مجمّع واحد بتغذية أسعار لامركزية، مع حد للتحقق من معقولية التحركات المفاجئة. الاختبارات: اختبارات وحدات، وجولة اختبار بمدخلات عشوائية، وجولة تحليل ساكن مع شرح كل نتيجة، ثم أسبوعان على شبكة سيبوليا مع زميل يحاول اكتشاف ما يعطّل العقد. حُجز تدقيق خارجي قبل قبول أي أموال حقيقية.

ما الأخطاء الشائعة في أمن العقود الذكية؟

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

أين يقع هذا الدرس ضمن Tosheo.ai؟

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

المصادر والنطاق

ethereum.org، أمن العقود الذكية (تم التحقق في 19 أكتوبر 2026) ↗

أبرز 10 مخاطر للعقود الذكية بحسب OWASP، 2025 (تم التحقق في 19 أكتوبر 2026) ↗

ethereum.org، الشبكات وشبكات الاختبار (تم التحقق في 19 أكتوبر 2026) ↗