كود العقد منشور: 4 نقاط قبل اعتباره دليل أمان

هل نشر كود العقد الذكي يثبت أمانه؟ تعرّف إلى الفرق بين مطابقة المصدر والتدقيق، وكيف تفحص عنوان التنفيذ وصلاحيات الإدارة.

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

إنفوجرافيك: كود العقد منشور: 4 نقاط قبل اعتباره دليل أمان
ملخص بصري لأهم النقاط الواردة في المقالة.

1. النشر ليس المطابقة

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

2. المطابقة ليست تدقيقًا أمنيًا

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

3. مثال على فجوة في الهوية

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

4. ابن سجل تحقق مختصرًا

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

تطبيق عملي: في سجل التحقق، ضع ثلاثة حقول مستقلة: مصدر الكود المطابق، عنوان التنفيذ الحالي، ونطاق التدقيق. تحقق أحدها لا يثبت الباقيين، خاصة في عقد وسيط قابل للترقية.

ماذا تعني عبارة «كود العقد منشور»؟

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

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

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

قراءة دليل المطابقة خطوة بخطوة

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

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

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

كيف تقرأ تقرير تدقيق دون المبالغة في معناه؟

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

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

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

العقد الوسيط: لماذا قد يبقى العنوان ويتغير السلوك؟

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

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

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

الصلاحيات التي تستحق تفسيرًا واضحًا

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

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

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

نموذج سجل تحقق يمكن استخدامه

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

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

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

مراجعة المحتوى: 26 أكتوبر 2026.

تامر طعمه
تامر طعمه

صاحب موقع بتكوين، يشارك تجربته مع منصات التداول منذ 2016 ويقدّم شروحًا عربية عن العملات الرقمية والمحافظ والتكاليف. المحتوى تعليمي عام، ولا يمثل توصية استثمارية شخصية.

المقالات: 401