يمكن لعقد غروب (Dusk) أن يحتفظ بالرصيد الصحيح لـDUSK بينما يقرأ مراقب الخزينة لدي فجأة شيئًا فارغًا بعد “ترقية” API.
الفخ ليس في العقد. الفخ في شكل الاستجابة.
في مسار /on/ القديم: كان route /status يُرجع كائنًا تحتوي فيه خانة balance. أما المسار البديل فيستعلم contract_balance عبر عقد Transfer الخاص بـDusk، وتكون الاستجابة هي قيمة الرصيد كعدد قياسي بحد ذاته.
لذلك إذا قمت بترحيل نقطة النهاية لكن تركت المحلل (parser) دون تغيير، فستختفي response.balance. يمكن لبديل مثل undefined → 0 أن يجعل عقدًا ممولًا يبدو فارغًا، رغم أن رصيد السلسلة لم يتحرك على السلسلة.
هذا النوع من أخطاء الصيانة أتوقع أن ينجو من فحوصات الصحة الأساسية. يجيب Rusk. تكتمل الطلبية بنجاح. يوجد العقد. الخطأ فقط في التفسير.
سأثبت رصيد عقد معروف في اختبار الترحيل وقارن بين القيم القديمة والجديدة قبل تحويل قراءات الإنتاج. ليس فقط HTTP 200. ليس فقط JSON صالح. يجب أن يبقى نفس العدد الصحيح من LUX عبر حدود الـparser.
إذا كان يمكن لخزينة Dusk أن تحتفظ بالأموال بشكل صحيح بينما تُظهر برمجي صفرًا، فهذا يعني أن ترحيل الـAPI قد غيّر الحالة المالية التي يعتقد مشغّلِي أنها موجودة.
#dusk $DUSK @Dusk
الفخ ليس في العقد. الفخ في شكل الاستجابة.
في مسار /on/ القديم: كان route /status يُرجع كائنًا تحتوي فيه خانة balance. أما المسار البديل فيستعلم contract_balance عبر عقد Transfer الخاص بـDusk، وتكون الاستجابة هي قيمة الرصيد كعدد قياسي بحد ذاته.
لذلك إذا قمت بترحيل نقطة النهاية لكن تركت المحلل (parser) دون تغيير، فستختفي response.balance. يمكن لبديل مثل undefined → 0 أن يجعل عقدًا ممولًا يبدو فارغًا، رغم أن رصيد السلسلة لم يتحرك على السلسلة.
هذا النوع من أخطاء الصيانة أتوقع أن ينجو من فحوصات الصحة الأساسية. يجيب Rusk. تكتمل الطلبية بنجاح. يوجد العقد. الخطأ فقط في التفسير.
سأثبت رصيد عقد معروف في اختبار الترحيل وقارن بين القيم القديمة والجديدة قبل تحويل قراءات الإنتاج. ليس فقط HTTP 200. ليس فقط JSON صالح. يجب أن يبقى نفس العدد الصحيح من LUX عبر حدود الـparser.
إذا كان يمكن لخزينة Dusk أن تحتفظ بالأموال بشكل صحيح بينما تُظهر برمجي صفرًا، فهذا يعني أن ترحيل الـAPI قد غيّر الحالة المالية التي يعتقد مشغّلِي أنها موجودة.
#dusk $DUSK @Dusk