لأغراض تعليمية فقط؛ لا يشكل ذلك نصيحة استثمارية أو توصية استثمارية. قد تؤدي الاستثمارات إلى خسائر.
الإجابة المباشرة
الإيقاف الطارئ أداة تحكم في العقد الذكي تمنع إجراءات مختارة بينما يحقق المشغلون في حادث أو يحتوونه. لا يثبت وحده ضياع الأموال، ولا يجعلها قابلة للاسترداد، ولا يوقف كل وظائف البروتوكول. يحدد الرمز المنشور ما إذا كانت الإيداعات والسحوبات والاقتراض والسداد والتصفية والمبادلات والتحويلات والسك والترقيات متأثرة.
توفر أداة OpenZeppelin المسماة Pausable حالة الإيقاف والمعدلين whenNotPaused وwhenPaused والحدثين Paused(account) وUnpaused(account). ويجب على البروتوكول ربط هذه الفحوص بوظائف محددة وحماية مداخل الإيقاف والاستئناف. وقد تستخدم البروتوكولات المخصصة أعلاماً متعددة أو تجميداً لكل سوق أو حدوداً أو آلة حالات.
تعامل مع الإيقاف كأداة استجابة وكصلاحية مميزة. تحقق من العقد والسلسلة بدقة، والحالة الحالية، والمعاملة المشغلة، والمتصل، وأصحاب الأدوار، والوظائف المتاحة، والمحاسبة أثناء الإيقاف، وشروط إعادة الفتح. زر الموقع المعطل ليس دليلاً موثوقاً على السلسلة.
آلية العمل
- يُكتشف محفز. قد تكتشف المراقبة أو فرق التطوير أو المدققون أو المستخدمون عيباً برمجياً أو فشل أوراكل أو تغيراً شاذاً في الرصيد أو هجوماً على الحوكمة أو اضطراباً في السوق.
- يرسل حساب مخول معاملة. قد يكون مالكاً أو حارساً أو محفظة متعددة التوقيع أو دور وصول أو منفذ حوكمة أو عقداً آخر. الأسماء ليست صلاحيات؛ افحص مسار التفويض المنشور وأي مسؤول للوكيل.
- يغير العقد حالته. قد يمنع مفتاح عام كل الوظائف المحمية، بينما توقف الضوابط الدقيقة سوقاً أو إجراءً واحداً. تستمر الوظائف التي لا تحتوي الفحص المعني.
- تقدم الحالة والأحداث أدلة. اقرأ متغير الإيقاف أو دالة القراءة العامة ومدخلات المعاملة وإيصالها والأحداث ووقت الكتلة والمتصل. تعيد الأحداث بناء التاريخ، لكن التخزين الحالي يحدد الحالة الراهنة.
- قد تستمر المحاسبة. قد تستمر مؤشرات الفائدة والتمويل والمكافآت وتحديثات الأوراكل وصفوف السحب ومؤقتات التصفية أو تتجمد أو تلحق لاحقاً. لا يوجد سلوك موحد.
- تتواصل الاستجابة والمعالجة. يمكن للمشغلين التحقيق والتواصل وإلغاء الأدوار وتغيير المعلمات وترقية الرمز وتمويل العجز أو توفير سحب طارئ. يحتاج كل إجراء إلى صلاحية وتحقق مستقلين.
- إعادة الفتح إجراء مميز مستقل. تحقق ممن يستطيع الاستئناف، وما إذا كان هناك قفل زمني أو تصويت، وما تغير في الرمز والإعدادات، وما تغطيه الاختبارات أو التدقيقات، وما إذا ظلت الموافقات أو العقود القديمة خطرة.
استخدم مستكشف الكتل والمصدر أو الرمز الثنائي المتحقق منه لإنشاء مصفوفة: الإجراء وعنوان العقد وشرط الإيقاف والتوفر الحالي والمتصل المخول والأثر في الأرصدة أو الديون. طابق الإعلانات عبر النطاق المعتاد ومنتدى الحوكمة والحسابات الرسمية، ولا تعتمد على رد أو إعلان يظهر أثناء الحادث.
مثال
افترض أن بروتوكول إقراض اكتشف ابتعاد أوراكل الضمان 30% عن السوق المرجعي. يوقف الحارس الاقتراض الجديد والتصفية، لكنه يسمح بالسداد وإضافة الضمان. يحد ذلك من التعرض الجديد ويتجنب التصفية بالسعر المتنازع عليه، لكنه لا يثبت توقف السحب أو تراكم الفائدة أو كل الأسواق الأخرى.
على المستخدم التحقق من معاملة الحارس وعنوان السوق وأعلام الإيقاف وحالة الأوراكل والاحتياطيات ومؤشر الدين والإشعار الرسمي. إذا عرضت الواجهة فقط «البروتوكول متوقف»، فلا تكشف الرسالة مصفوفة الوظائف كاملة.
إذا ركبت الحوكمة لاحقاً أوراكل جديداً وأعادت فتح السوق، فتحقق من تغييرات التنفيذ والمعلمات ونطاق التدقيق ومتصل الاستئناف والحالة بعد المعاملة. إعادة الفتح لا تثبت عودة السيولة أو الملاءة أو عمق السوق الطبيعي.
المخاطر
- صلاحية مفرطة. قد يستطيع مفتاح الإيقاف أيضاً ترقية الرمز أو تغيير الأوراكل أو سك الأصول أو نقل الاحتياطيات أو منح الأدوار. اذكر كل صلاحية ولا تفترض أن الحارس لا يفعل سوى الإيقاف.
- موقعون مخترقون أو غير متاحين. قد يوقف مفتاح مسروق الخدمة عمداً؛ وقد يمنع موقعو المحفظة متعددة التوقيع غير المتاحين أو المرتبطون تشغيلياً إيقافاً أو استئنافاً سريعاً.
- مسارات تجاوز خفية. قد يتجاوز مسؤول وكيل أو وحدة أو مدخل بديل أو منفذ عبر السلاسل أو وظيفة غير محمية أداة التحكم المعلنة.
- خروج محظور والتزامات مستمرة. قد تتوقف السحوبات بينما تتغير الفائدة والتمويل وموقع الصف أو التزامات أخرى. اقرأ قواعد المحاسبة قبل التصرف.
- استئناف غير آمن. قد يُلغى الإيقاف قبل التحقق الكامل من السبب وهوية النشر وإعداد الأوراكل والاحتياطيات والتكاملات التابعة.
- تصيد أثناء الحوادث. قد تطلب صفحات «استرداد» أو «ترحيل» مزيفة عبارة الاسترداد أو المفتاح الخاص أو توقيعاً أو موافقة غير محدودة. لا تكشف أسرار المحفظة وتحقق من كل عنوان وموافقة بصورة مستقلة.
- ثقة زائفة. يقلل الإيقاف فقط المسارات التي يحميها فعلاً. ليس إثبات ملاءة أو تدقيقاً أو تأميناً أو ضماناً لاستعادة الخسائر.
قبل التفاعل مجدداً، احفظ معاملة الحادث وإعلانه، وقارن الرمز المتحقق منه بالوكيل والتنفيذ الحيين، وافحص تغييرات الأدوار والأقفال الزمنية، وألغ الموافقات القديمة عند اللزوم، واختبر الإجراءات الضرورية بمبلغ يمكنك تحمل خسارته. قد تتجاوز المكالمات المباشرة واجهة معطلة لكنها تتجاوز فحوص السلامة أيضاً؛ لا تجربها دون فهم calldata والحالة.
مفاهيم خاطئة شائعة
- «الإيقاف يعني ضياع كل الأصول». قد يكون احترازياً؛ تحقق من الأرصدة والالتزامات والاحتياطيات والوظائف المتأثرة.
- «تعطيل الواجهة يعني استحالة استخدام العقد». توفر الواجهة وحالة العقد منفصلان. لا تستخدم مكالمات مباشرة إلا إذا استطعت التحقق من الهدف والوظيفة والمعطيات والنتائج.
- «لا يستطيع الحارس إلا الإيقاف». لا تحمل التسمية مجموعة صلاحيات قياسية. اقرأ الأدوار والمالكين والوحدات وسلطة الترقية على السلسلة.
- «يتوقف الزمن أثناء الإيقاف». قد تستمر المحاسبة الاقتصادية والصفوف أو تستأنف بالتغييرات المتراكمة.
- «الاستئناف يعني أن الإصلاح اكتمل وأصبح آمناً». إعادة الفتح انتقال حالة فقط؛ ما زالت المعالجة والتدقيق والملاءة والموافقات والسيولة تحتاج تحققاً مستقلاً.
مواضيع ذات صلة
المصادر
- واجهة Pausable - OpenZeppelin Documentation (تاريخ الاطلاع: 2026-08-21)
- التحكم في الوصول - OpenZeppelin Documentation (تاريخ الاطلاع: 2026-08-21)
- اعتبارات الأمان - Solidity Documentation (تاريخ الاطلاع: 2026-08-21)
- أمان Ethereum ومنع الاحتيال - Ethereum.org (تاريخ الاطلاع: 2026-08-21)