ما هو العقد الذكي، ولماذا لا يمكن تغيير قواعده بأثر رجعي؟
إخلاء المسؤولية: هذه المقالة للأغراض التعليمية فقط. إنها ليست نصيحة مالية أو قانونية أو استثمارية.
غالبًا ما يوصف العقد الذكي بأنه "اتفاقية رقمية". وهذا تشبيه مفيد، ولكنه ليس الصورة الكاملة. وبشكل أكثر دقة، العقد الذكي هو برنامج منتشر على blockchain يقوم بتخزين البيانات وتنفيذ التعليمات المحددة مسبقًا.
مثلًا، يمكنه السماح بتحويل بعد استيفاء شرط فقط، أو تتبع المشاركين، أو تحديث سجل بعد عملية ناجحة. وعندما يرسل شخص معاملة، تنفذ الشبكة الشفرة وتسجل النتيجة.
هناك قيدان مهمان منذ البداية:
- لا تعني كلمة «ذكي» أن البرنامج يستطيع التفكير أو الحكم على النوايا.
- لا تمنح كلمة «عقد» الشفرة تلقائيًا الوضع القانوني لاتفاقية.
ينفذ العقد الذكي ما تسمح به شفرته تمامًا. وإذا احتوى المنطق على خطأ أو وظيفة إدارية غير آمنة أو افتراض معيب، فلن تصححه البلوكشين تلقائيًا.
النقاط الرئيسية
- العقد الذكي شفرة وبيانات مخزنة في عنوان على البلوكشين.
- تنفذ الشبكة وظائفه وفق قواعد محددة مسبقًا.
- لا يمكن ببساطة تعديل عملية مؤكدة بعد وقوعها.
- صُممت بعض العقود بمعلمات قابلة للتعديل أو منطق قابل للترقية.
- ينبغي للمستخدمين فحص عنوان العقد وأدواره وصلاحياته وآلية ترقيته أيضًا.
طريقة مبسطة لفهم العقود الذكية
تخيّل خزانة تخزين آلية.
- تنص قاعدتها على: «لا يجوز للمستلم فتح الخزانة إلا بعد تاريخ محدد».
- يودع المرسل أصلًا.
- يحاول المستلم فتحها مبكرًا، فترفض الآلة.
- عند حلول التاريخ، ينجح الطلب نفسه إذا استوفيت جميع الشروط الأخرى.
الفرق أن العقد الذكي لا ينفذه خادم شركة واحدة. تعالج شبكة البلوكشين التعليمة وتتوصل إلى نتيجة مشتركة وتسجلها.
لا يعني ذلك أن العقد يعرف تلقائيًا ما إذا كانت شحنة قد سُلّمت، أو ما حالة الطقس، أو ما سعر الصرف المناسب. تعمل سلسلة الكتل بصورة موثوقة بالبيانات المتاحة لها. أما معلومات العالم الخارجي فتحتاج إلى مصادر إضافية تسمى غالبًا oracles، وعندئذ تعتمد النتيجة على تلك المصادر أيضًا.
الشفرة والحالة والمعاملات
للعقد الذكي ثلاثة أبعاد مفيدة:
- الكود: وظائفها والشيكات المتاحة.
- الدولة: بياناته الحالية، مثل الأرصدة والحالات وقيم التكوين.
- تاريخ المعاملات: تسلسل العمليات التي غيرت تلك الحالة.
لا تغير قراءة البيانات العامة الحالة عادةً. أما الإجراء الذي يغير شيئًا، مثل تحويل رمز أو تسجيل مشاركة، فيتطلب معاملة. يوقعها المستخدم وتعالجها الشبكة وتُفرض عليها رسوم عادةً.
بعد إدراج المعاملة وبلوغها النهائية، تصبح جزءًا من سجل السلسلة. وقد تغير معاملة لاحقة الحالة الحالية إذا سمحت الشفرة، لكنها لا تعيد كتابة السجل السابق. ويظل الحدثان ظاهرين.
ماذا تعني فعليًا عبارة «لا يمكن تغييره بأثر رجعي»
لنفترض أن عقدًا يسجل تحويل 100 رمز من العنوان A إلى العنوان B. بعد التأكيد، لا يستطيع المسؤول فتح تلك الكتلة واستبدال 100 بـ 10 كما لو أن العملية الأصلية لم تحدث. كما لا يستطيع تغيير المستلم سرًا في المعاملة المؤكدة بالفعل.
إذا كان الرمز يتضمن وظيفة استرداد الأموال أو الإلغاء أو التعويض، فإن استخدامه ينشئ صفقة جديدة. سيُظهر blockchain الإجراء الأصلي والاستجابة اللاحقة.
لهذا يمكن لسجل الشبكة دعم التحقق المستقل: يستطيع مراقبون مختلفون الاستعلام من الشبكة وفحص تسلسل الأحداث نفسه.
يظل من غير الدقيق القول إن البلوكشين «لا يمكن أن تتغير تحت أي ظرف». فللشبكات نماذجها الخاصة للنهائية وتظل عرضة لأعطال البروتوكول أو الهجمات. النقطة العملية أضيق: في التشغيل المعتاد، لا يستطيع مستخدم أو مسؤول تطبيق تعديل سجل بلوكشين مؤكَّد كما يعدل صفًا في قاعدة بيانات خاصة.
هل يعني ذلك أن العقد لا يمكن أن يتغير أبدًا؟
ليس دائمًا. هنا كثيرًا ما يُساء فهم عبارة «عقد غير قابل للتغيير».
1. عقد غير قابل للترقية
تستمر الشفرة المنشورة في العمل وفق منطقها الأصلي. يمكن للمطورين نشر عقد جديد في عنوان جديد، لكن العنوان القديم وسجله يظلان موجودين. ويتعين على المستخدمين الانتقال عمدًا إلى الإصدار الجديد.
2. عقد ذو معلمات قابلة للتعديل
قد تتضمن الشفرة وظائف إدارية تغير حدًا أو توقف عملية أو تدير قائمة سماح أو تحدث مستلم الرسوم. وتظل هذه الوظائف بحاجة إلى معاملات جديدة، ولا تستطيع ممارسة إلا الصلاحيات الموجودة في الشفرة.
لا يعيد ذلك كتابة الماضي، لكنه قد يغيّر قواعد العمليات المستقبلية.
3. بنية قابلة للترقية
يستخدم أحد التصاميم الشائعة عقد وكيل. يظل عنوان الوكيل ثابتًا بينما يمرر الاستدعاءات إلى عقد تنفيذ منفصل. وإذا كانت الحوكمة قادرة على تغيير ذلك التنفيذ، فقد يتغير السلوك المستقبلي عند عنوان الوكيل.
يعني ذلك أن «العنوان لم يتغير» لا تعني بالضرورة أن «المنطق لم يتغير قط». وتطرح المراجعة الدقيقة الأسئلة التالية:
- هل العنوان عقد وكيل؟
- من يستطيع ترقية التنفيذ؟
- هل يكفي توقيع واحد، أم يلزم عدة توقيعات؟
- هل توجد مهلة زمنية؟
- هل يمكن إيقاف العمليات مؤقتًا؟
- ما المعايير التي يستطيع المسؤولون تغييرها؟
مثال: تغيير حد
تخيّل عقدًا بحد يومي يبلغ 1,000 وحدة.
- يُكمل مستخدم يوم الاثنين عملية بقيمة 800 وحدة.
- يغيّر عنوان مخول يوم الثلاثاء الحد إلى 500 عبر معاملة جديدة.
- لا تختفي عملية يوم الاثنين ولا تتحول إلى سجل مختلف.
- بدءًا من يوم الثلاثاء، يطبق العقد حد 500 وحدة إذا كان هذا ما ينص عليه منطقه.
يمكن لمستكشف الكتل عرض المعاملتين، لكن فهم آثارهما يتطلب أيضًا معرفة الوظائف التي جرى استدعاؤها والصلاحيات التي تملكها تلك الوظائف.
ما الذي تثبته سلسلة الكتل وما الذي لا تثبته
يمكن للبلوكشين العامة أن تساعد في التحقق من:
- العناوين المشاركة؛
- وقت المعاملة وحالتها؛
- الأصول والمبالغ المحوّلة؛
- الدالة المستدعاة، عندما تُفك البيانات بصورة صحيحة؛
- الأحداث وتسلسل العمليات؛
- شفرة المصدر، عندما يكون قد تم التحقق من مطابقتها لـ bytecode المنشور.
النشر على blockchain يفعل لا في حد ذاته ضمان:
- غياب الأخطاء أو الثغرات؛
- مطوّرون نزيهون؛
- الاستدامة الاقتصادية؛
- دقة البيانات الخارجية؛
- غياب صلاحيات المسؤول؛
- الحماية القانونية؛
- الاسترداد بعد تحويل غير صحيح.
تعني الشفافية إمكانية فحص الأدلة، ولا تعني أن كل ما هو ظاهر آمن.
قائمة تحقق عملية قبل التفاعل
- تحقق من العنوان. احصل عليه من مصدر رسمي للمشروع وقارنه بعناية.
- التحقق من الشبكة. قد يوجد نفس تنسيق العنوان عبر العديد من شبكات EVM.
- تحقق من التحقق من المصدر. الكود المصدري المنشور يجعل التحليل أسهل، ولكنه ليس تدقيقًا أمنيًا.
- ابحث عن الوكلاء والترقيات. تحديد سلطة التنفيذ والترقية.
- مراجعة صلاحيات المسؤول. ابحث عن وظائف المالك والمسؤول والإيقاف المؤقت والترقية والرسوم والتحكم في الوصول.
- مراجعة الموافقات الرمزية. قبل الموافقة، تأكد من الرمز المميز والمنفق والبدل.
- ابدأ صغيرًا. بالنسبة للتفاعل الأول، فكر في مبلغ اختبار صغير مع احتساب الرسوم.
لماذا يهم توقيع المستخدم
لا يحصل العقد الذكي تلقائيًا على وصول إلى المحفظة كلها. فهو يتلقى استدعاءً محددًا ولا يستطيع استخدام سوى الصلاحيات الممنوحة له.
لكن التوقيع قد يفوض ما هو أكثر من تحويل بسيط. فقد يوافق على إنفاق الرموز أو يمنح مخصصًا غير محدود أو يبادل الأصول أو ينقل NFT أو يطلق سلسلة معقدة من الاستدعاءات.
إذا لم تستطع المحفظة شرح الطلب بوضوح، يواجه المستخدم خطر «التوقيع الأعمى». ولا ينبغي الموافقة على معاملة لمجرد أن الرابط ورد من محادثة مألوفة أو أن الموقع يشبه الموقع الرسمي.
الخلاصة
العقد الذكي ليس وعدًا ولا ضمانًا سحريًا للعدالة، بل برنامج ينفذ قواعد مشفّرة ويترك سجلًا قابلًا للتحقق.
لا يمكن تحرير العملية المؤكدة بهدوء بعد حدوثها. ومع ذلك، قد تكون المعلمات أو المنطق المستقبلي قابلة للتغيير إذا تم تصميم البنية بهذه الطريقة. وبالتالي فإن السؤال الأكثر فائدة ليس فقط "هل هناك عقد ذكي؟" ولكن أيضًا: "ما الذي يسمح به كوده، ومن يمكنه التأثير على كيفية عمله في المستقبل؟"