الانتقال إلى المحتوى

الهارد فورك والسوفت فورك: توافق القواعد والتفعيل وانقسام السلسلة

يصف الهارد فورك والسوفت فورك علاقتين مختلفتين بين قواعد الإجماع القديمة والجديدة. يجب تحليل مجموعات الكتل الصالحة والتفعيل وإنفاذ العقد وسلوك المنتجين والاستعداد التشغيلي ومخاطر إعادة التشغيل وأي انقسام فعلي للسلسلة كل على حدة.

آخر تحديث

لأغراض تعليمية فقط؛ لا يشكل ذلك نصيحة استثمارية أو توصية استثمارية. قد تؤدي الاستثمارات إلى خسائر.

الإجابة المباشرة

يصنف الهارد فورك والسوفت فورك تغيير قواعد الإجماع وفق كيفية حكم العقد المحدثة وغير المحدثة على الكتل. لتكن V_old مجموعة الكتل التي تقبلها القواعد القديمة وV_new المجموعة التي تقبلها القواعد الجديدة. يضيّق السوفت فورك نطاق الصلاحية بحيث V_new subset V_old: كل كتلة صالحة وفق القواعد الجديدة صالحة أيضاً وفق القديمة، لكن العقدة القديمة لا تنفذ القيد المضاف. يسمح الهارد فورك بكتلة واحدة جديدة صالحة على الأقل ترفضها العقدة القديمة: exists b: b in V_new and b not in V_old. قد تكون مجموعات قواعد الهارد فورك توسعاً أو غير قابلة للمقارنة؛ ولا تعني كلمة «هارد» مجرد كتلة أكبر أو ميزة أكثر جذرية.

التوافق غير متماثل. في سوفت فورك ناجح تستطيع العقد غير المحدثة البقاء على السلسلة نفسها لأنها تقبل كتل المعدنين أو المدققين المحدثين، لكنها قد تقبل شيئاً ترفضه العقد المحدثة فتقدم ضماناً أضعف. في الهارد فورك، متى أنشأ منتج محدث كتلة خارج المجموعة القديمة لا تستطيع العقد القديمة متابعتها. إذا واصل مشاركون ذوو وزن اقتصادي دعم مجموعتي القواعد فقد تنشأ شبكتان دائمتان؛ أما غياب الدعم الفعلي لأحد الجانبين فلا يوجب بقاء أصلين.

تصف التسميتان القواعد، لا شرعية الحوكمة أو الأمان أو الدعم الاقتصادي أو طريقة التفعيل. يمكن وصف اقتراح بأنه هارد فورك قبل تفعيله، وقد لا ينتج عن التغيير المفعّل انقسام دائم، كما قد يقسم عدم توافق عرضي في التنفيذ السلسلة من دون تصويت. تنسق إشارات المنتجين الاستعداد لكنها لا تجعل الكتلة التي ترفضها قواعد العقدة الكاملة صالحة لديها.

لا تخلط فورك الإجماع مع تفرع مؤقت يستخدم القواعد نفسها، أو إعادة تنظيم السلسلة، أو تفرع مستودع برمجي، أو تحديث تطبيق. السؤال التشغيلي هو أي شبكة ومجموعة قواعد وشرط تفعيل وتاريخ سلسلة ستعترف به كل عقدة ومحفظة ومنصة وأمين حفظ وأوراكل وعقد ذكي.

كيفية تحليل فورك البروتوكول

  1. ثبّت الهوية والنطاق. سجل chain وnetwork وclient version واقتراح التفعيل وكتلة التكوين أو نقطة التحقق النهائية وتجزئة الكتلة الحالية والطبقة المتأثرة. قد يعني الاسم نفسه قواعد مختلفة على شبكة اختبار أو رئيسية أو طبقة تنفيذ أو إجماع أو تطبيق.
  2. قارن صلاحية الإجماع. اسرد كل قاعدة متغيرة للكتل والمعاملات والتوقيعات وانتقالات الحالة والغاز والطوابع الزمنية والنهائية واختيار الفرع. صنف أمثلة في النسختين إلى valid أو invalid أو unknown؛ ولا تستنتج التوافق من ملاحظات الإصدار وحدها.
  3. أثبت علاقة المجموعتين. اختبر هل يبقى كل عنصر صالح جديد صالحاً بالقواعد القديمة. إن كان كذلك فقد يكون التغيير متوافقاً كسوفت فورك؛ وإذا وجدت كتلة واحدة صالحة جديداً وغير صالحة قديماً احتاجت تلك العقد إلى انتقال هارد فورك. اختبر أيضاً العناصر القديمة الصالحة التي تصبح غير صالحة.
  4. أعد إنتاج التفعيل. تحقق من الارتفاع والحقبة والوقت الوسيط وعتبة الإشارة وتأخير القفل وشرط الصعوبة الكلية أو محفز الحوكمة في المواصفة والكود المنشورين. الإشارة والقفل والتفعيل والإنفاذ حالات منفصلة.
  5. حدد سلوك المشاركين. قس وزن إنتاج الكتل المحدث وحدد العقد الكاملة والمرحلات والمحافظ والمنصات والأمناء والجسور ومصدري العملات المستقرة والأوراكل والعقود في كل جانب. معدل التجزئة أو الحصة وحدهما لا يحددان القبول الاقتصادي.
  6. تتبع الانقسام والمعاملات. اتبع تجزئات الآباء والصلاحية وفق القاعدتين. افحص سياسة التأكيد واختلاف مجمع الذاكرة والحماية من إعادة التشغيل وصيغ العناوين ومعرفات السلسلة ونطاقات التوقيع ومسارات السحب وإمكان تنفيذ المعاملة على الفرعين.
  7. ضع ضوابط التشغيل. أوقف التسوية أو مددها عند غموض النسب؛ حدّث وخذ نسخة احتياطية بتأن؛ طابق الأرصدة والالتزامات لكل فرع؛ اختبر التوقيع والاسترداد دون اتصال؛ ولا تستأنف إلا بعد تحقق معايير صريحة للسلسلة والعقدة والطرف المقابل والنهائية.

تفصل هذه الطريقة أربعة أحداث تُدمج غالباً في كلمة «فورك»: اقتراح قاعدة، وشرط تفعيلها، وانحراف سلسلة مرصود، ثم بقاء فرع أو أكثر اقتصادياً. لا يثبت أي منها التالي تلقائياً.

أمثلة محلولة

1. توافق مجموعات الصلاحية

افترض أن القواعد القديمة تقبل 100 شكل مرشح للكتلة والجديدة تقبل 80 فقط. إذا كانت هذه الأشكال 80 كلها داخل المجموعة القديمة فالعلاقة سوفت فورك؛ وترفض العقد المحدثة الأشكال القديمة المتبقية وعددها 20. توضح الأرقام مجموعات لا احتمالات أو عتبات تصويت.

افترض الآن أن القواعد الجديدة تقبل شكلاً ترفضه كل عقدة قديمة. حتى لو كانت أغلب الكتل الأخرى صالحة في القاعدتين، يكفي هذا المثال المضاد لكسر القبول المتوافق وجعل الانتقال هارد فورك. يعتمد استمرار الانقسام بعد ظهور الكتلة على المنتجين والمستخدمين والبنية الاقتصادية.

2. تفعيل BIP 34 ليس هو التعريف

ألزم BIP 34 كتابة ارتفاع الكتلة في معاملة coinbase واستخدم آلية استعداد متحركة. عند كون 750 of 1,000 من الكتل السابقة بالإصدار 2 أو أعلى رفضت العقد كتل الإصدار 2 غير الصالحة؛ وبعد 950 of 1,000 رفضت الإصدار 1. ويسجل BIP الكتلة 227,835 بوصفها آخر كتلة إصدار 1.

نسقت العتبات النشر لكنها لم تجعل التغيير سوفت فورك. جاء التوافق من تضييق العقد المحدثة لما تقبله مع استمرار العملاء القدماء في قبول الكتل المتوافقة. حدد BIP 9 لاحقاً حالات نشر وبتات إصدار منفصلة، مؤكداً اختلاف علاقة القواعد عن آلية التفعيل.

3. Segregated Witness بتصميم سوفت فورك

أدخل BIP 141 بيانات witness وأدرج التزام شجرتها عبر معاملة coinbase في بنية التزام الكتلة القائمة. قبلت العقد القديمة الكتل المتوافقة من دون فهم قواعد witness الجديدة أو التحقق منها، بينما نفذتها العقد المحدثة.

هذا قبول متوافق مع السابق وليس تحققاً مساوياً. قد ترى العقدة القديمة المخرجات المحكومة بالقواعد الجديدة أقل تقييداً؛ لذلك يحتاج من يعتمد خصائص الأمان الجديدة إلى تحقق محدث. عبارة «ما زال البرنامج القديم يعمل» ليست تحليلاً كاملاً للمخاطر.

4. DAO Fork في إيثريوم

توثق EIP-779 فورك DAO عند كتلة الشبكة الرئيسية 1,920,000. كان تغيير حالة غير اعتيادي نقل أرصدة من قائمة حسابات L إلى عقد WithdrawDAO مع إبقاء تعليمات EVM وصيغة المعاملة وبنية الكتلة بلا تغيير.

حسبت العقد التي طبقت الانتقال والعقد التي رفضته حالتين مختلفتين بعد الحد. يبين المثال أن الهارد فورك لا يتطلب كتلة أكبر أو تعليمة جديدة؛ تكفي قاعدة انتقال حالة لمرة واحدة، وقد يحافظ دعم التاريخين على شبكتين منفصلتين.

المخاطر وأخطاء المراجعة

أخطاء التصنيف والمواصفات

  • تسمية كل رأس منافس مؤقت هارد فورك مع أن جميع العقد تستخدم القواعد نفسها ويحل اختيار الفرع العادي المشكلة.
  • تعريف كل تخفيف للقواعد كهارد فورك وكل تقييد كسوفت فورك من دون اختبار مجموعات الكتل الفعلية.
  • مساواة القبول المتوافق بأمان كامل؛ فالعقد القديمة لا تنفذ قيود السوفت فورك الجديدة.
  • استنتاج سلوك الإجماع من اسم أو خريطة طريق أو ملاحظة إصدار أو فرع مستودع بدلاً من الكود والمعلمات المنشورة.
  • خلط تحديثات الشبكة الرئيسية والاختبار والتنفيذ والإجماع والجسور وRollup والتطبيقات.
  • افتراض أن الاقتراح وإصدار العميل وعتبة الإشارة والقفل والتفعيل حدث واحد.
  • اعتبار إشارة المنتجين تصويتاً ملزماً للمستخدمين والمنصات والأمناء والعقد الكاملة.

مخاطر الانقسام والمعاملات

  • افتراض أن التفعيل يضمن الانقسام أو أن الانقسام يضمن أصلين سائلين ومستدامين.
  • استخدام الارتفاع وحده مع إمكان وجود كتل مختلفة في الارتفاع نفسه؛ يجب فحص التجزئة والنسب.
  • الإرسال أثناء الانقسام بلا فحص حماية إعادة التشغيل ومعرفات السلسلة ونطاقات التوقيع والبناء الخاص بكل فرع.
  • اعتماد إيداع على فرع وتسوية الالتزام أو السحب على الآخر.
  • الاعتماد على مستكشف أو RPC أو تسمية أمين واحد مع احتمال اتباع المزودين قواعد مختلفة أو تأخرهم.
  • تجاهل إعادة التنظيم وتعطل النهائية وانقسام النظراء وتعدين الأقلية ومخالفة المدقق أو غياب البيانات.
  • افتراض دعم المصدر نفسه لرمز أو عقد أو رصيد عملة مستقرة أو سعر أوراكل أو مطالبة جسر على الفرعين.

مخاطر الحوكمة والتشغيل

  • عرض توافق البروتوكول دليلاً على الشرعية أو اللامركزية أو الأمان أو الدعم الاقتصادي.
  • تحديث عقد الإنتاج بلا ملفات تنفيذية قابلة لإعادة البناء ونسخ احتياطية وحدود رجوع واختبار ترحيل وفحص مستقل للتجزئة.
  • افتراض أمان الرجوع دائماً بعد إدخال بيانات حالة أو صيغ محفظة أو شروط عقوبة جديدة.
  • نقل مفاتيح خاصة أو «المطالبة بعملات الفورك» ببرنامج غير موثوق قد يكشف الأسرار أو يعيد التوقيعات.
  • اعتبار رصيد اللقطة قابلاً للصرف فوراً بلا فحص النضج والقفل وحالة العقد وسياسة الحفظ.
  • إصدار أحكام ضريبية أو محاسبية أو تقييمية قبل تحديد الملكية والسيطرة والسيولة والقواعد المحلية.

مفاهيم شائعة خاطئة

  • الهارد فورك ينشئ دائماً عملة جديدة. يحتاج الأصل الثاني إلى إنتاج مستمر ومستخدمين وبنية تحتية وسوق؛ وكثير من الترقيات تستقر على تاريخ واحد.
  • السوفت فورك بلا مخاطر لأن العقد القديمة تعمل. قد تتبع السلسلة لكنها لا تنفذ القاعدة المضافة ويكون تحققها أضعف.
  • تستطيع أغلبية التجزئة أو الحصة تغيير أي قاعدة وحدها. ترفض العقد الكاملة الكتل غير الصالحة وفق قواعدها؛ ولا يعمل الوزن إلا بين الكتل المقبولة.
  • هارد يعني مثيراً للخلاف وسوفت يعني إجماعاً كاملاً. تصنف التسميتان التوافق، لا الإجماع الاجتماعي أو جودة الحوكمة أو الخلاف.
  • كل فورك يظهره المستكشف ترقية بروتوكول. تحدث كتل متنافسة بالقواعد نفسها وإعادة تنظيم بلا تغيير لقواعد الإجماع.

موضوعات ذات صلة

المصادر

التنقل

ابحث في الويكي...