عدتُ عبر توثيق Dusk ( @Dusk ) في الليلة الماضية، وكلما تعمقتُ أكثر في آلية التوافق (consensus)، أصبحت حالات الفشل أكثر إثارة للاهتمام.
في البداية، بدا وضع الطوارئ وكأنه مجرد نسخة احتياطية بسيطة. لكن لماذا يحتاجه Dusk إذا كان البروتوكول العادي يمكنه بالفعل إعادة المحاولة لمرات فاشلة؟ يوضح التوثيق أنه بعد تكرار حالات الفشل، يمكن للبروتوكول الاستمرار في إبقاء التكرارات (iterations) مفتوحة حتى ينجح التوافق. وهذا جعلني أتساءل عن مقدار الأولوية للاتساق الحي (liveness) على حساب الكفاءة أثناء الظروف الشبكية القصوى.
ثم تأتي مسألة التفرع (fork). كيف يمكن لكتلتين مرشحتين بلوغ التوافق في الجولة نفسها؟ يستخدم Dusk أرقام التكرار (iteration numbers) والرجوع (fallback) لحل ذلك، لكن يمكن أن يتم التراجع عن كتلة ذات تكرار أعلى. وبالنسبة للتسوية المالية، يبدو أن هذا التفريق مهم.
كما لاحظت أيضًا بنية المكافآت. يحصل المُولِّدون (generators) على معظم مكافأة الكتلة، بينما يحصل المُصوِّتون (voters) على حصة منفصلة. وقد اتضح لي ذلك أكثر عندما فكرت في مشكلة الحوافز: ما الذي يمنع مُولِّدًا مستقبليًا من الاستفادة عندما تفشل التكرارات السابقة؟
يضيف نظام الأعطال طبقة أخرى. لماذا نفصل الأعطال البسيطة عن الأعطال الرئيسية؟ يبدو أن التعليق (suspension) والاقتطاع اللين (soft slashing) مصممان بطريقة مختلفة عن الاقتطاع القاسي (hard slashing) للسلوك الجاد مثل التصويت المزدوج أو الكتل غير الصالحة.
وأخيرًا، جعلتني Moonlight وPhoenix أعيد التفكير في طبقة المعاملات. لماذا نحافظ على نموذج شفاف قائم على الحسابات (account-based) ونموذج خصوصية قائم على UTXO في الوقت نفسه؟
هل يخلق هذا التصميم المزدوج مرونة مفيدة، أم أنه يزيد التعقيد؟ ومع نمو Dusk، أين قد يصبح من الأصعب الحفاظ على اللامركزية والأمان؟
@Dusk #dusk $DUSK
في البداية، بدا وضع الطوارئ وكأنه مجرد نسخة احتياطية بسيطة. لكن لماذا يحتاجه Dusk إذا كان البروتوكول العادي يمكنه بالفعل إعادة المحاولة لمرات فاشلة؟ يوضح التوثيق أنه بعد تكرار حالات الفشل، يمكن للبروتوكول الاستمرار في إبقاء التكرارات (iterations) مفتوحة حتى ينجح التوافق. وهذا جعلني أتساءل عن مقدار الأولوية للاتساق الحي (liveness) على حساب الكفاءة أثناء الظروف الشبكية القصوى.
ثم تأتي مسألة التفرع (fork). كيف يمكن لكتلتين مرشحتين بلوغ التوافق في الجولة نفسها؟ يستخدم Dusk أرقام التكرار (iteration numbers) والرجوع (fallback) لحل ذلك، لكن يمكن أن يتم التراجع عن كتلة ذات تكرار أعلى. وبالنسبة للتسوية المالية، يبدو أن هذا التفريق مهم.
كما لاحظت أيضًا بنية المكافآت. يحصل المُولِّدون (generators) على معظم مكافأة الكتلة، بينما يحصل المُصوِّتون (voters) على حصة منفصلة. وقد اتضح لي ذلك أكثر عندما فكرت في مشكلة الحوافز: ما الذي يمنع مُولِّدًا مستقبليًا من الاستفادة عندما تفشل التكرارات السابقة؟
يضيف نظام الأعطال طبقة أخرى. لماذا نفصل الأعطال البسيطة عن الأعطال الرئيسية؟ يبدو أن التعليق (suspension) والاقتطاع اللين (soft slashing) مصممان بطريقة مختلفة عن الاقتطاع القاسي (hard slashing) للسلوك الجاد مثل التصويت المزدوج أو الكتل غير الصالحة.
وأخيرًا، جعلتني Moonlight وPhoenix أعيد التفكير في طبقة المعاملات. لماذا نحافظ على نموذج شفاف قائم على الحسابات (account-based) ونموذج خصوصية قائم على UTXO في الوقت نفسه؟
هل يخلق هذا التصميم المزدوج مرونة مفيدة، أم أنه يزيد التعقيد؟ ومع نمو Dusk، أين قد يصبح من الأصعب الحفاظ على اللامركزية والأمان؟
@Dusk #dusk $DUSK

