FIP-05: تعديل الصعوبة
المؤلف: Thiniboy
الحالة: نهائي
تاريخ الإنشاء: 18-07-2025
الملخص
اعتماد إعادة استهداف الصعوبة لكل كتلة بأسلوب Digishield، باستخدام المتوسط المتحرك الأسي (EMA) باتجاه الزمن المستهدف البالغ دقيقة واحدة بين الكتل. تعمل هذه الخوارزمية على تحسين الاستجابة لصدمات معدل التجزئة (hashrate) مع تقليل التذبذبات وتباين النتائج.
الدوافع
تسمح نوافذ إعادة الاستهداف الطويلة بحدوث تذبذبات يمكن استغلالها، وفترات طويلة تبتعد فيها الصعوبة عن الهدف المنشود. يستجيب المتوسط المتحرك الأسي (EMA) لكل كتلة بسرعة للتغييرات مع الحفاظ على الاستقرار.
المواصفات
- الزمن المستهدف بين الكتل T = 60 ثانية.
- عند كل كتلة n، يتم تحديث المتوسط المتحرك الأسي (EMA) للأزمنة المرصودة مع مقسم سعة (amplitude divisor) قدره 8 (وهو في الواقع متوسط متحرك أسي مرجح بـ 8 عينات).
- تطبيق تخميد (damping) محدود في كل خطوة لتقييد تأثير الزمن الفعلي في النطاق [0.75·T, 1.5·T].
- حساب الهدف التالي عن طريق تعديل الهدف السابق بنسبة الزمن المقيد إلى T، مع مراعاة حدود الإجماع.
- السماح بكتل ذات صعوبة دنيا عندما يتجاوز الزمن المرصود حدًا معينًا كمعامل للسلسلة (حيثما تم تمكين ذلك).
التنشيط (على الشبكة الرئيسية): الكتلة رقم 115,000.
الأسس المنطقية
يقلل المتوسط المتحرك الأسي (EMA) لكل كتلة من التأخير مقارنة بإعادة الاستهداف عبر نوافذ زمنية طويلة، بينما يمنع "التقييد" (clamp) ردود الفعل المبالغ فيها تجاه القيم الشاذة. وقد أثبتت مناهج مماثلة كفاءتها في سلاسل UTXO أخرى ضمن عائلة "Digishield".
التنفيذ المرجعي
تم تنفيذه في go-flokicoin وتم تمكينه عبر معاملات السلسلة. انظر الإصدار 0.25.7-beta وتغييرات الإجماع الواردة فيه.
المدخلات:
T := 60 ثانية (الزمن المستهدف)
Divisor := DigishieldAmplitudeDivisor (8 في Flokicoin)
ClampMin := 0.75 × T
ClampMax := 1.50 × T
prevTarget := آخر هدف للصعوبة (عدد صحيح)
actualSpan := timestamp_n - timestamp_{n-1}
الخوارزمية:
1. modulatedSpan ← T + (actualSpan - T) / Divisor
2. modulatedSpan ← clamp(modulatedSpan, ClampMin, ClampMax)
3. nextTarget ← prevTarget × modulatedSpan / T
4. nextTarget ← min(nextTarget, PowLimit)
النتيجة:
تحويل nextTarget مرة أخرى إلى بتات مضغوطة (bits) لترويسة الكتلة.
ملاحظة: عند تمكين ReduceMinDifficulty، تقوم قاعدة منفصلة بصب كتلة
ذات صعوبة دنيا إذا تجاوز actualSpan القيمة DigishieldLateBlockMultiple × T.
هذا الاختصار مستقل عن المتوسط المتحرك الأسي (EMA) لكل كتلة الموضح أعلاه.