FairDonation

توزيع عادل قائم على المجموعات على BSC

الورقة البيضاء

وصف تقني دقيق لبروتوكول FairDonation، مبني مباشرة على شيفرة العقد الذكي المنشور — بلا أي وعود تسويقية خارج ما هو مبرمج فعليًا.

1. الملخّص

FairDonation عقد ذكي على BNB Smart Chain يستقبل تبرعات BNB، ويوزّعها بالتساوي على مجموعة مستفيدين نشطة، بشرط تحقق عتبتين في آن واحد: رصيد كافٍ في العقد، وعدد كافٍ من المستفيدين في المجموعة النشطة. العضوية والإزالة والتطهير كلها تخضع لتصويت جماعي بين "مشرفين" (Supervisors) يعيّنهم مالك العقد.

2. الأدوار في النظام

الدورالصلاحيات
المالك (Owner)تعيين/إزالة مشرفين، إنشاء وتفعيل المجموعات، إضافة مستفيد مباشرة، ضبط العتبات، تحديد محفظة الدعم التطويري
المشرف (Supervisor)اقتراح مستفيدين، التصويت على القبول/الإزالة/التطهير، تنفيذ التوزيع خلال نافذة زمنية محددة
المتبرع (Donor)إرسال BNB للعقد عبر donateBNB() أو التحويل المباشر
المستفيد (Beneficiary)عضو في مجموعة نشطة، يستلم حصته التلقائية عند التوزيع

3. الثوابت والعتبات (كما في الكود)

0.001 BNBالحد الأدنى للتبرع
3.333 BNBعتبة الأموال الافتراضية
200عتبة الأعضاء الافتراضية
1 يوممهلة التوزيع الافتراضية
3 / 3 / 5عتبات موافقة: قبول / إزالة / تطهير
200الحد الأقصى لأعضاء المجموعة الواحدة

عتبتا الأموال وعدد الأعضاء وفترة الانتظار قابلة للتعديل من المالك فقط عبر setFundsThreshold وsetMembersThreshold وsetDistributionDelay، وكل تعديل يصدر حدثًا (Event) علنيًا.

4. دورة حياة المستفيد

  1. الترشّح: إما ترشّح ذاتي عبر applyForBeneficiary()، أو اقتراح من مشرف عبر proposeApplicant().
  2. التصويت: يحتاج الطلب 3 موافقات من مشرفين مختلفين (لا يمكن للمقترح أو المتقدّم نفسه التصويت لصالح طلبه).
  3. القبول التلقائي: عند بلوغ العتبة، يُضاف المتقدم فورًا للمجموعة النشطة ضمن نفس المعاملة.
  4. الإزالة: تتطلب طلب إزالة من مشرف + 3 موافقات مستقلة قبل التنفيذ.
  5. تطهير مجموعة كاملة: عملية استثنائية تتطلب 5 موافقات تتضمن إلزاميًا موافقة المالك، وتُفرغ المجموعة بالكامل.

5. آلية التوزيع

التوزيع يُنفَّذ عبر executeDistribution() ولا يعمل إلا إذا: الرصيد المتاح ≥ عتبة الأموال، وعدد أعضاء المجموعة النشطة ≥ عتبة الأعضاء. حصة كل مستفيد = عتبة الأموال ÷ عدد الأعضاء، وتُرسل للجميع في نفس المعاملة.

الفترةمن يملك صلاحية التنفيذ
أول 24 ساعة بعد تحقق الشروطالمالك فقط
24–48 ساعةالمالك أو أي مشرف
بعد 48 ساعةأي شخص (لمنع تعطيل التوزيع)
إذا فشل تحويل حصة أحد المستفيدين (مثلًا عقد لا يستقبل BNB)، يُحفظ المبلغ له في failedPayouts ويستطيع سحبه بنفسه لاحقًا عبر withdrawFailedPayout() — لا تضيع أي أموال.

6. الدعم التطويري (اختياري)

بمعزل عن مسار التوزيع الرئيسي، يوجد مسار منفصل للتبرع المباشر لدعم تطوير المشروع (BNB أو أي رمز ERC-20)، عبر donateNativeToDevelopment() وdonateToDevelopment()، يذهب مباشرة لمحفظة التطوير المحددة من المالك ولا يدخل في حساب عتبات التوزيع للمستفيدين.

7. حدود معروفة وموثّقة في الكود

8. الشيفرة المصدرية

الكود بأكمله علني وموثّق. راجعه بنفسه قبل التبرع بأي مبلغ:

الشبكةBNB Smart Chain (BSC)
عنوان العقد0xAB4Cb629038346fD0Dab5B8B4E6809eb7C2ca82F
الترخيصMIT