تتطلب كل جولة من الإجماع إضافة كتلة جديدة، لكن تقول الورقة البيضاء إن هذه الجولة ليست عملية تتم مرة واحدة كاملة، بل على عدة تكرارات؛ وكل تكرار يتضمن ثلاث خطوات. تسمي الورقة البيضاء هذه الخطوات الثلاثة: Proposal وValidation وRatification.
الخطوة الأولى: Proposal. تقوم خوارزمية DS باختيار provisioner عشوائيًا ليكون مُنشئ الكتلة، ومسؤوليته توليد كتلة مرشحة وبثّها إلى الشبكة بأكملها. إذا لم يتم إنشاء الكتلة المرشحة أو استلامها ضمن مهلة زمنية محددة، فإن هذه الخطوة تُخرج NIL وتنتقل مباشرة إلى الخطوة التالية—لكن لا توجد كتلة مرشحة بيدنا؛ فماذا سنصوّت لاحقًا؟ الإجابة هي عدم التصويت على ورقة فارغة، بل التصويت بـ NoCandidate، أي "لا توجد كتلة مرشحة يمكن التحقق منها". $DUSK
الخطوة الثانية: Validation. تقوم خوارزمية DS باختيار مجموعة من أعضاء لجنة التصويت عشوائيًا للتحقق من الكتلة المرشحة من الخطوة السابقة. إذا كانت الكتلة المرشحة صالحة، تُصوّت Valid؛ وإذا كانت غير صالحة، تُصوّت Invalid؛ وإذا لم توجد كتلة مرشحة، تُصوّت NoCandidate. يجب على لجنة التصويت تحقيق أغلبية مطلقة قدرها 2/3 للوصول إلى quorum. وإذا لم يتحقق ذلك ضمن المهلة، فسيُخرج NoQuorum. ناتج هذه الخطوة هو ValidationResult، ويتضمن نوع التصويت الذي تم به الوصول إلى quorum وتوقيعات التجميع لجميع المصوتين. @Dusk
الخطوة الثالثة: Ratification. يتم اختيار لجنة تصويت جديدة للتحقق من نتيجة Validation. إذا كانت الخطوة السابقة قد حققت quorum من نوع Valid، فإنهم يؤكدون هذه النتيجة؛ أما إذا كانت الخطوة السابقة NoQuorum أو فشلًا، فإنهم يصوّتون NoQuorum. تضمن هذه الخطوة ألا تكون نتيجة التحقق مجرد قرار بأيدي قلة من الأشخاص، بل معتمدة من المزيد من الـprovisioner.
إذا خرجت Ratification بـ Success، تُقبل الكتلة المرشحة رسميًا ككتلة جديدة وتُنهي هذه الجولة. وإذا خرجت Fail أو unknown، يتم الانتقال إلى التكرار التالي، مع إعادة اختيار مُنشئ الكتلة وإعادة التصويت. تنص الورقة البيضاء على أن الحد الأقصى لعدد التكرارات تحدده معلمة عالمية، والمُعدة حاليًا هي 50. وإذا فشلت 16 مرة متتالية من التكرارات، يدخل البروتوكول في وضع الطوارئ (زاوية 10).
الفكرة الأساسية وراء تصميم الخطوات الثلاث هي الموازنة (التوازن) — إذ يمكن لمُنشئ الكتلة أن يولّد الكتلة المرشحة فقط ولا يحق له التصويت؛ ويمكن للجنة التحقق أن تتحقق فقط ولا يحق لها التأكيد؛ ويمكن للجنة التأكيد أن تؤكد نتيجة التحقق فقط ولا يحق لها إعادة التحقق. لا يمكن لأي دور بمفرده أن يقرر مصير كتلة واحدة. #dusk
الخطوة الأولى: Proposal. تقوم خوارزمية DS باختيار provisioner عشوائيًا ليكون مُنشئ الكتلة، ومسؤوليته توليد كتلة مرشحة وبثّها إلى الشبكة بأكملها. إذا لم يتم إنشاء الكتلة المرشحة أو استلامها ضمن مهلة زمنية محددة، فإن هذه الخطوة تُخرج NIL وتنتقل مباشرة إلى الخطوة التالية—لكن لا توجد كتلة مرشحة بيدنا؛ فماذا سنصوّت لاحقًا؟ الإجابة هي عدم التصويت على ورقة فارغة، بل التصويت بـ NoCandidate، أي "لا توجد كتلة مرشحة يمكن التحقق منها". $DUSK
الخطوة الثانية: Validation. تقوم خوارزمية DS باختيار مجموعة من أعضاء لجنة التصويت عشوائيًا للتحقق من الكتلة المرشحة من الخطوة السابقة. إذا كانت الكتلة المرشحة صالحة، تُصوّت Valid؛ وإذا كانت غير صالحة، تُصوّت Invalid؛ وإذا لم توجد كتلة مرشحة، تُصوّت NoCandidate. يجب على لجنة التصويت تحقيق أغلبية مطلقة قدرها 2/3 للوصول إلى quorum. وإذا لم يتحقق ذلك ضمن المهلة، فسيُخرج NoQuorum. ناتج هذه الخطوة هو ValidationResult، ويتضمن نوع التصويت الذي تم به الوصول إلى quorum وتوقيعات التجميع لجميع المصوتين. @Dusk
الخطوة الثالثة: Ratification. يتم اختيار لجنة تصويت جديدة للتحقق من نتيجة Validation. إذا كانت الخطوة السابقة قد حققت quorum من نوع Valid، فإنهم يؤكدون هذه النتيجة؛ أما إذا كانت الخطوة السابقة NoQuorum أو فشلًا، فإنهم يصوّتون NoQuorum. تضمن هذه الخطوة ألا تكون نتيجة التحقق مجرد قرار بأيدي قلة من الأشخاص، بل معتمدة من المزيد من الـprovisioner.
إذا خرجت Ratification بـ Success، تُقبل الكتلة المرشحة رسميًا ككتلة جديدة وتُنهي هذه الجولة. وإذا خرجت Fail أو unknown، يتم الانتقال إلى التكرار التالي، مع إعادة اختيار مُنشئ الكتلة وإعادة التصويت. تنص الورقة البيضاء على أن الحد الأقصى لعدد التكرارات تحدده معلمة عالمية، والمُعدة حاليًا هي 50. وإذا فشلت 16 مرة متتالية من التكرارات، يدخل البروتوكول في وضع الطوارئ (زاوية 10).
الفكرة الأساسية وراء تصميم الخطوات الثلاث هي الموازنة (التوازن) — إذ يمكن لمُنشئ الكتلة أن يولّد الكتلة المرشحة فقط ولا يحق له التصويت؛ ويمكن للجنة التحقق أن تتحقق فقط ولا يحق لها التأكيد؛ ويمكن للجنة التأكيد أن تؤكد نتيجة التحقق فقط ولا يحق لها إعادة التحقق. لا يمكن لأي دور بمفرده أن يقرر مصير كتلة واحدة. #dusk