
المؤلف: Toly ، Solana Labs المفصل المصدر: X ،@Aeyakovenko الترجمة: Shan Ouba ، Bit Chain Vision Realm
في Solana ، تعد منظمة الولاية تخزينًا مسطحًا للمفتاح ، ويقوم البرنامج بتنفيذ قيمة التحديث في هذه الحالة ، بما في ذلك إجراءات التصويت الرئيسية للإجماع.الغرض الرئيسي من التنفيذ غير المتزامن هو السماح لإجراءات التصويت بالعمل بشكل مستقل عن جميع البرامج الأخرى.من أجل تحقيق هذا الهدف دائمًا ، نحتاج إلى ضمان العديد من المبادئ الرئيسية.
مجال التنفيذ
مجال التنفيذ هو مجموعة من الإجراءات ومفاتيح التشغيل والقيم ، والتي تكون مستقلة عن بعضها البعض أثناء التنفيذ.يمكن تشغيل مجال التنفيذ على مؤشرات الترابط والرسم المختلفة ، ويتم إكماله في أوقات مختلفة على الأجهزة المختلفة.الشيء المهم هو أن مجال تنفيذ واحد (على سبيل المثال ، المجال أ) لا يمكنه قراءة أو كتابة أي قيمة في مجال آخر (على سبيل المثال ، المجال ب).ومع ذلك ، يمكن مشاركة المجال في حالة متسقة أثناء تنفيذ أي مجال.مطلوب بروتوكول لمزامنة الحالة بين الحقل وتعزيز حركة المفتاح والقيمة.
يحدد شخص دفع رسوم المعاملات مجال تنفيذ المعاملة.
المجال الرئيسي: VED و UED
في سولانا ، نركز بشكل أساسي على مجالين: مجال تنفيذ التصويت (VED) ومجال تنفيذ المستخدم (UED).الهدف من ذلك هو تمكين التحقق من التصويت قبل تنفيذ جميع برامج المستخدم.
مكون VED
-
برنامج النظام: للنقل
-
متغير نظام برنامج التصويت: متغير نظام برنامج التصويت للتصويت
-
التصويت: إجراء التصويت الأساسي.هذا البرنامج ثابت ومتسق ، ويجب أن يكون متاحًا في UED و VED.
-
سلطة التصويت: حساب مع الحق في التصويت
-
دفع رسوم التصويت: الحسابات التي تدفع الرسوم ذات الصلة للتصويت
-
صندوق دافع التكلفة: يمكن استخدامها لنقل SOL إلى حساب VED المحدث
-
يتم وضع جميع الحسابات الأخرى في UED
حساب حالة VED
في حدود وداعا بين N-1 و N ، احسب حالة VED لمجال N+1 عند وقت التشغيل.يجب إكمال هذا الحساب قبل الحقبة ن.يجب أن تبدأ حسابات UED بعد اكتمال ERA N-1.
المعيار في حالة VED
-
حساب التصويت: حزمة من أكثر من 5000 SOL والدولة النشطة.
-
دافع التكلفة وأذونات التصويت ، وصناديق دافع النفقات: مرتبط بحساب التصويت أعلاه.
-
تم إنشاء حساب التصويت الذي تم إنشاؤه حديثًا في البداية على أنه نشط.يجب على المستخدمين تفعيل هذه الحسابات.يمكن للمستخدمين إيقاف الحساب ، وسيتم إزالة الحساب من حالة VED في عصر N+1.
نقل الأموال في VED
يمكن استخدام حسابات الأموال المعلنة في حساب التصويت لنقل الأموال في VED.بعد تحديث تكلفة الدفع في حساب التصويت ، سيظل صندوق دافع المصاريف الحالي نشطًا قبل نهاية الحقبة التالية.بمجرد إعادة تفعيل VED المعتمدة ، سيدخل صندوق دفع التكلفة الجديد إلى حالة VED ويمكن استخدامه لإضافة SOL إضافية إلى دفع التكلفة.سيدخل صندوق دفع التكلفة القديم إلى حالة UED ، بحيث يمكن تحويل الأموال إلى الحساب في UED.
على الرغم من أنه يمكن دمجه مع دافع المصاريف ، من أجل تقليل عدد التوقيعات المستخدمة لكل تصويت ، يتم تعيين دفع التكلفة عادةً على نفس القيمة مثل أذونات التصويت. و ued.
مجال التنفيذ العالمي
الطريقة أعلاه مستهدفة للغاية لإجراءات التصويت.يمكن ترقية هذه الطريقة إلى مجال التنفيذ لأي رقم.تتبع الحساب مجال التنفيذ الذي يتم تعيينه ، تمامًا مثل برنامج إدارة نظام التشغيل يتتبع VMID في الصفحة الفعلية.لهذا المشروع المحدد ، يكون جزء صغير من التعيين مفيدًا:
-
rx-uppe: اقرأ وتنفيذ في UED
-
rx-uppe-ved: اقرأ وتنفيذ في ued و ved
-
rw-ved: اقرأ واكتب في VED
-
RW-uppe: اقرأ واكتب في ued
نظرًا لأن الحساب لا يمكنه القراءة والكتابة في نفس الوقت في مجالات متعددة ، فإن التعيين الآخر غير صالح.
-
برنامج: لا يمكن تعيينه إلا على أنه Rx-uppe أو Rx-upped ، أي ، قابل للقراءة وقابل للتنفيذ في المستخدمين أو المجالين ، ولكن لا يمكن كتابته.أي معاملة تتضمن البرنامج يجب أن تفشل.
-
حساب: لا يمكن تعيين الخريطة أو RW سوى.
لقطة النظام تكوين برنامج التصويت وبرنامج النظام إلى Rx-uppe-ved.يوفر برنامج النظام حساب نظام وحساب برنامج التصويت للواجهات VED والهاتف المحمول من VED.لا يزال التحديث الفعلي يتطلب حقبة كاملة للتفعيل.
فقط عندما يكون برنامج المالك في المجال الهدف ، يمكن إعادة حساب الحساب بين المجالات.لذلك ، يمكن أن تتحرك فقط حسابات برنامج التصويت وبرنامج النظام بين VED و UED.
بعد استخدام الطريقة العامة ، لا يلزم وجود حساب صناديق دفع تكلفة صريحة.يمكن للمطورين إعادة رسم أي حساب نظام بين VED و UED لنقل الأموال بين المجالات.
حساب تجزئة VED
بعد تلقي الكتلة ، تنفذ العقدة جميع المعاملات.العملية كما يلي:
-
ينطوي التنفيذ على المعاملات التي تنطوي على حسابات VED.
-
معاملة دفع تكلفة VED ولكن فشل حساب مختلط.
-
تخطي جميع المعاملات الأخرى.
يتم استخدام تحديث حالة VED الذي تم إنشاؤه لحساب تجزئة البنك ، أي تجزئة VED.يمكن للتحقق الآن التصويت مع Ved Hash بدلاً من تجزئة البنك القديم.إذا كان هناك تحديث تجزئة UED منذ آخر تصويت للشوكة ، فسيتم تضمين التجزئة والفتحة في التصويت.
حساب تجزئة UED
بعد تلقي الكتلة ، تقوم العقدة بمعالجة جميع المعاملات:
-
تعتبر الحسابات التي ليست في VED جزءًا من UED.
-
ينطوي التنفيذ على المعاملات التي تنطوي على حسابات UED.
-
المعاملة التي تحتوي على مدفوعات نفقات UED ولكن فشل حساب مختلط.
-
تخطي جميع المعاملات الأخرى.
يتم استخدام تحديث حالة UED الذي تم إنشاؤه لحساب تجزئة البنك ، تجزئة UED.
ذروة
الجنس النهائي لا يزال دون تغيير.
رمز حالة تنفيذ المعاملة
لا يجوز اكتشاف الآثار الجانبية للتنفيذ غير المتزامن على الفور عند التصويت.إذا قدمت 1/3 أو أكثر من أجهزة التحقق من تجزئة UED مختلفة ، فيجب على جميع العقد أن تتوقف عن التأكيد والتصويت وتحذير المشغلين.
للحصول على رمز الحالة ، يجب أن يسمح طلب API RPC للمستخدمين بتحديد التعهد الذي لوحظه نفس مراقبة تجزئة UED.يمكن التعبير عن حالة التنفيذ على أنها ExecutionStatus (توقيع ، تعهد = x) ، حيث يمكن أن تكون x 0 أو قيمة افتراضية معينة.في إعدادات العقد والعملاء المتعددة ، تكون قيمة X مقبولة بالنسبة إلى 0 ، مما يجعل المستخدمين ثقة غير مؤكدة ومستحيلة.
غير محدد هو الفشل الوحيد الذي يجب اكتشافه قبل إرجاع رمز الحالة للمعاملات المؤكدة للمستخدم.
زعيم ولوكي جيل
يجب أن يكون القادة قادرين على بدء إنشاء كتل فور الانتهاء من VED.هذا يعني أن القائد سيكون لديه جزء من الدولة والمعلومات غير المكتملة لأي دفع تكلفة ued.
-
يقوم القادة بتنفيذ مجال VED فقط للكتل التي أنشأوها
-
يجب أن يتخطى تحميل UED دفع التكلفة غير الصالح
التنشيط الوظيفي لإجراءات التصويت
يجب تصميم برنامج التصويت عندما يجوز لتصويت VED عبور حدود الحقبة عند تنشيط الوظيفة ، ويدير وقت المعاملات الأخرى التي تكون على اتصال مع برنامج التصويت في UED.
جائزة
فقط في حسابات التصويت في VED يجب مكافأة.
يعاقب
جميع حسابات التصويت هي خطر التعرض للعقاب سواء كانت في ولاية نشطة أو VED.
تحديث الساعة العالمية
يتم تحديث متغير نظام الساعة عن طريق التصويت.يجب استخدام الطريقة البديلة.على العكس من ذلك ، يمكن لكل زعيم كتلة نقل الساعة إلى الأمام لمدة ثانية واحدة.ما لا يقل عن 40 ٪ من الشبكة تتطلب ضارة ، ويمكن أن تنمو الساعات بشكل أسرع من الوقت الفعلي.يمكن أن تتحرك الساعة أيضًا إلى الأمام لمدة 400 مللي ثانية.على افتراض انجراف 50 مللي ثانية ، فإن 12.5 ٪ فقط من القادة بحاجة إلى ضبط الساعة للحفاظ على التزامن.