← أحدث الأبحاث
💻 computer science

Formal Verification of Imperative First-Class Functions in Move

تقدم هذه الورقة امتداداً لـ Move Prover يتيح التحقق الرسمي من الدوال الأمرية من الدرجة الأولى في لغة Move عبر إدخال المحمولات السلوكية، وتسميات الحالة، واستراتيجية ترميز SMT التي تستفيد من الفصل الاستاتيكي للذاكرة في Move من أجل التحقق الفعال والاستدلال الآلي للمواصفات.

المؤلفون الأصليون: Wolfgang Grieskamp, Teng Zhang, Vineeth Kashyap, Jake Silverman

نُشر 2026-05-14
📖 5 دقيقة قراءة🧠 قراءة متعمّقة

المؤلفون الأصليون: Wolfgang Grieskamp, Teng Zhang, Vineeth Kashyap, Jake Silverman

البحث الأصلي مرخَّص بموجب CC BY 4.0 (http://creativecommons.org/licenses/by/4.0/). هذا شرح مولَّده بالذكاء الاصطناعي للبحث أدناه. لم يكتبه المؤلفون ولم يصادقوا عليه. وللتحقق من الدقة التقنية، يرجى الرجوع إلى البحث الأصلي. اقرأ إخلاء المسؤولية الكامل

إليك شرح للورقة البحثية باستخدام لغة بسيطة وتشبيهات إبداعية.

الصورة الكبيرة: مصنع "العقود الذكية"

تخيل أن Aptos عبارة عن مصنع عالي الأمان يبني أصولاً رقمية (مثل الأموال أو التذاكر) باستخدام لغة خاصة تسمى Move. وللتأكد من أن هذه الأصول لا تُسرق أو تتعطل، يستخدم المصنع روبوت فحص يسمى Move Prover (MVP). يقرأ هذا الروبوت المخططات (الكود) ويثبت رياضياً أن كل شيء سيعمل بشكل صحيح قبل أن يبدأ المصنع في العمل فعلياً.

لفترة طويلة، كان هذا الروبوت بارعاً في فحص التعليمات البسيطة. ولكن مؤخراً، أضاف المصنع ميزة جديدة ومعقدة: الدوال من الدرجة الأولى (First-Class Functions).

فكر في هذه الدوال الجديدة كأنها عصي سحرية.

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

هذا ما يسمى التوزيع الديناميكي (Dynamic Dispatch). إنه أمر قوي، لكنه يربك روبوت الفحص لأنه لا يستطيع رؤية المستقبل لمعرفة أي تعويذة محددة سيتم إلقاؤها.

المشكلة: معضلة "الصندوق الأسود"

تشرح الورقة كيف قام المؤلفون بترقية روبوت الفحص (MVP) للتعامل مع هذه العصي السحرية دون ذعر.

في السابق، إذا كانت الدالة عبارة عن "صندوق أسود" (متغير يحمل دالة)، كان على الروبوت التخمين أو فحص كل الاحتمالات الممكنة في وقت واحد، مما جعل الرياضيات تنفجر وجعل الروبوت بطيئاً.

قدم المؤلفون أداتين جديدتين لحل هذه المشكلة:

1. المسندات السلوكية (Behavioral Predicates): "بطاقة الضمان"

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

  • الطريقة القديمة: "أحتاج لمعرفة كيف تعمل عصا calculate_price هذه بالضبط، وصولاً إلى كل سطر في الكود، قبل أن أسمح لك باستخدامها."
  • الطريقة الجديدة: "لا يهمني كيف تعمل العصا من الداخل. أحتاج فقط لقراءة بطاقة الضمان الخاصة بها. تقول البطاقة: 'إذا أعطيتني 5 عملات، سأعيد لك 3 عملات، ولن أعطل أبداً'"

تسمي الورقة هذه بـ المسندات السلوكية. وهي تشبه عقداً يصف:

  • الشروط المسبقة (Pre-conditions): ما يجب أن يكون صحيحاً قبل التلويح بالعصا.
  • الشروط اللاحقة (Post-conditions): ما سيكون صحيحاً بعد التلويح بها.
  • شروط الإيقاف (Abort conditions): متى قد تنفجر العصا (تفشل).

هذا يسمح للروبوت بفحص وعد العصا دون الحاجة لمعرفة الوصفة السرية بداخلها.

2. تسميات الحالة (State Labels): "كاميرا تسجيل الوقت"

أحياناً تحدث سلسلة من الأحداث. تخيل خط إنتاج حيث يقوم روبوت بطلاء سيارة، ثم يقوم روبوت آخر بتركيب العجلات.

إذا كنت تريد إثبات أن السيارة آمنة، فأنت بحاجة لمعرفة حالة السيارة بعد الطلاء ولكن قبل تركيب العجلات.

قدم المؤلفون تسميات الحالة. فكر في هذه كأنها كاميرات تسجيل الوقت موضوعة في نقاط محددة من العملية.

  • الكاميرا أ (البداية): السيارة عبارة عن معدن خام.
  • الكاميرا ب (المنتصف): السيارة مطلية.
  • الكاميرا ج (النهاية): العجلات مركبة.

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

كيف يعمل الروبوت فعلياً (لوحة التبديل)

تصف الورقة كيف يترجم الروبوت هذه الأفكار إلى رياضيات (منطق SMT) يمكن للكمبيوتر حلها.

تخيل أن الروبوت لديه لوحة تبديل (Switchboard).

  1. السيناريو أ (عصا معروفة): إذا رأى الروبوت عصا محددة ومعروفة (مثل دالة product)، فإنه يقلب المفتاح إلى "الوضع المباشر". يتجاهل بطاقة الضمان ويتحقق فقط من الكود الفعلي لتلك العصا المحددة.
  2. السيناريو ب (عصا غير معروفة): إذا رأى الروبوت صندوقاً عاماً (متغيراً)، فإنه يقلب المفتاح إلى "الوضع المجرد". يتجاهل الكود تماماً ويعتمد فقط على بطاقة الضمان (المسندات السلوكية) لإثبات سلامة النظام.

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

"المفتش الآلي" (استنتاج المواصفات)

أروع جزء في الورقة هو أن الروبوت يمكنه الآن كتابة بطاقات الضمان الخاصة به.

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

  • المدخلات: قطعة كود فوضوية تحتوي على عصا سحرية.
  • إجراء الروبوت: "أرى أن هذا الكود يتحقق مما إذا كانت الرسوم موجودة. سأكتب بطاقة ضمان تقول: 'هذه العصا ستنفجر إذا كانت الرسوم مفقودة'."
  • النتيجة: الروبوت يفحص عمله الخاص. إذا تطابق الكود مع البطاقة، فإنه يجتاز الاختبار.

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

ملخص الإنجاز

تدعي الورقة أنها حلت مشكلة كبيرة في التحقق من العقود الذكية:

  1. جعلت استخدام "العصي السحرية" (الدوال) آمناً بطريقة تسمح بتخزينها، وتمريرها، وتغييرها ديناميكياً.
  2. أنشأت لغة جديدة (المسندات السلوكية + تسميات الحالة) تسمح للروبوت بالتحدث عن هذه العصي دون الحاجة لرؤية ما بداخلها.
  3. جعلت الروبوت أسرع وأذكى باستخدام نهج "لوحة التبديل" الذي يتنقل بين فحص الكود وفحص العقد.
  4. أتمتت الأعمال الورقية من خلال السماح للروبوت بإنشاء العقود اللازمة لك.

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

غارق في أبحاث مجالك؟

تصلك نشرة يومية بأحدث الأبحاث المطابقة لكلماتك البحثية المفتاحية — مع ملخصات تقنية، بلغتك.

جرّب Digest →