كنت أظن في البداية أن تشغيل العقد في DuskVM يعتمد أساسًا على ما إذا كان كود Rust يمر بعملية الترجمة بنجاح، لكن بعد قراءة شرح DuskVM الخاص بـ @Dusk أدركت أن المواضع التي من السهل أن تتعطل فيها الأمور تقع فعليًا بالقرب من حدود الاستدعاء: يجب أن يَكشف العقد عن مساحة 64KB من argbuf، كما يجب أن يتلقى دالة الدخول المدخلات وفق صيغة fn foo(u32) -> u32 (أي تمرير طول الإدخال وإرجاع طول الإخراج)، ثم معالجة البيانات وإرجاع طول الإخراج. صحيح أن منطق الكود قد يكون صحيحًا، لكن ذلك لا يعني أن الاستدعاء الخارجي يمكنه تزويده بالمدخلات بالطريقة الصحيحة. هذا التصميم جعلني أُعيد النظر في كلفة التطوير: لا يقوم DuskVM بتحديد منطق الأعمال للمطورين، لكنه يسلّم حدود الذاكرة للمدخلات والمخرجات ليكون العقد هو المسؤول عنها. إن المدخلات التي يمررها المُستدعي ليست مجرد «معاملات قابلة للقراءة في أي وقت»، بل بيانات تم وضعها مسبقًا في المخزن المؤقت ويحدد طولها نطاق القراءة. فإذا لم تتطابق عملية التسلسل، أو تحقق الطول، أو كتابة الإخراج مرة أخرى في نقطة واحدة على الأقل، فقد لا يظهر الأمر كخطأ وظيفي واضح في الأعمال، بل قد لا يحصل الواجهة الأمامية إلا على مرة فشل واحدة من استدعاء العقد. أما سيناريوهات الضغط فهي محددة جدًا: في الاختبار المحلي، عندما تُستخدم تطبيقات الأصول مع تمرير رقم بسيط فقط، كل شيء يعمل بشكل طبيعي. لكن عند النشر، ومع استبدالها ببيانات أطول مثل الشهادات (credentials) أو الطلبات أو بيانات الصلاحيات، قد يستمر استدعاء العقد لكنه يقرأ بشكل غير كامل أو يعيد نتيجة مقصوصة. ما يراه المستخدم هو أن الحالة لم تُحدّث. وعلى المطور أن يعود لتفقد ABI وحدود المخزن المؤقت ومحرك البيانات المدفوع. ليست الكلفة على شكل «تكلفة مجردة لآلة افتراضية»، بل على شكل تكلفة حقيقية تقع على المستخدمين الذين ينتظرون النتيجة وعلى الفريق الذي يحافظ على التكامل. لذلك عندما أنظر إلى DuskVM الخاص بـ $DUSK لا أكون مهتمًا فقط بما إذا كان يمكنه تنفيذ Rust أو WASM، بل سأبحث أولاً فيما إذا كانت اختبارات العقد تغطي أطوال المعلمات وأطوال الإخراج ومدخلات الحدود. @Dusk كتب اتفاقية الاستدعاء بوضوح؛ كما أن الأداء وقابلية التحكم التي يقف خلفها يتضمنان مسؤولية ذاكرة أيضًا. بالنسبة لمطوري Dusk، ما يستحق التحقق فعلاً هو ما إذا كانت حدود العقد تظل قابلة للتوقع عندما تدخل إليه بيانات أعمال معقدة. #dusk


