45 / 691REORG

Reorg

إعادة تنظيم السلسلة

تستبدل إعادة تنظيم السلسلة الطرف النشط من بلوكتشين العقدة بفرع صالح آخر ذي proof of work تراكمي أكبر؛ تُفصل كتل الطرف القديم ويُوصل الفرع الفائز.

Reorg هو تغيير محلي في chainstate، وليس تغييرًا لقواعد إجماع Bitcoin. تطبق Full Node قواعد التحقق الخاصة بها وتفعّل الفرع ذي أعلى chainwork تراكمي الذي يجتازها. وإذا تفرع قبل الطرف الحالي، تتراجع العقدة عن تغييرات UTXO للكتل المفصولة، وتطبق الفرع البديل، وتعيد تقييم المعاملات المتأثرة بالنسبة إلى mempool.

لا يختار Bitcoin Core مجرد الفرع الأعلى أو الأكثر شعبية. يجب أن تستوفي السلسلة المرشحة قواعد إجماع العقدة عند التفعيل؛ فزيادة chainwork لا تجعل كتلة غير صالحة صالحة. يختار FindMostWorkChain المرشح ذي أكبر عمل الذي لم تُعرف عدم صلاحيته. هذا لا يعني اكتمال التحقق بعد: تُجرى فحوص إضافية عند توصيل الكتل في ActivateBestChain. وتُستبعد الفروع المعروفة بعدم صلاحيتها. [Bitcoin Core v29.0 — chain activation and mempool reconciliation]

نقطة التفرع هي آخر كتلة مشتركة بين السلسلة النشطة الحالية والفرع البديل. يُوصف عمق Reorg عادة بعدد كتل الطرف النشط التي يجب فصلها للعودة إلى ذلك السلف المشترك. تستبدل إعادة التنظيم بعمق كتلة واحدة الطرف الحالي، بينما تتراجع إعادة التنظيم الأعمق عن عدة كتل مؤكدة. ويتحدد العمق من منظور العقدة المعنية. [Bitcoin Core v29.0 — chain activation and mempool reconciliation]

يتراجع DisconnectTip ومنطق التحقق المرتبط به عن آثار الكتل المفصولة بترتيب عكسي. تُستعاد UTXO التي أُنفقت، وتفقد المخرجات التي أنشأتها الكتلة المُزالة حالة التأكيد. لذلك يحتفظ Bitcoin Core ببيانات التراجع، كي يتمكن من إعادة بناء مجموعة UTXO بدقة عند نقطة التفرع. [Bitcoin Core v29.0 — chain activation and mempool reconciliation]

بعد التراجع، يوصل ConnectTip كتل الفرع ذي chainwork الأكبر بالترتيب الأمامي. ويُعاد التحقق من كل معاملة مقابل مجموعة UTXO المعاد بناؤها والقواعد السارية عند الارتفاع المعني. وتكون النتيجة chainstate مطابقًا لتاريخ محدد واحد، لا مزيجًا من معاملات الفرعين. [Bitcoin Core v29.0 — chain activation and mempool reconciliation]

ليس من الضروري أن تختفي معاملات الكتل المفصولة. يحاول Bitcoin Core إعادة المعاملات المؤهلة غير coinbase إلى mempool. قد تكون بعضها في الفرع الجديد بالفعل، أو تتعارض مع معاملات أخرى، أو تفقد مدخلات، أو لم تعد تستوفي شروط الوقت أو سياسة mempool. لذلك يجب أن تراعي المحفظة أن Reorg قد يلغي تأكيدًا سابقًا. [Bitcoin Core v29.0 — chain activation and mempool reconciliation]

معاملة coinbase استثناء: لا تعود إلى mempool بعد الفصل. وفق قواعد الإجماع، يمكن إنفاق مخرج coinbase المنشأ عند الارتفاع h لأول مرة في الكتلة h + 100. عندما يكون الطرف عند h + 99، تكون لكتلة المصدر 100 تأكيد، ويسمح شرط النضج بإدراج معاملة الإنفاق في الكتلة التالية. إذا أزال Reorg الكتلة التي تتضمن coinbase، تختفي مكافأتها من chainstate النشط. وقد تصبح المعاملات التابعة التي اعتمدت على التاريخ المُزال غير صالحة أيضًا. [Bitcoin Core v29.0 — chain activation and mempool reconciliation] [Bitcoin Core v29.0 — coinbase maturity validation] [Bitcoin Core v29.0 — confirmation depth]

يشمل عدد التأكيدات الكتلة التي تحتوي على المعاملة وجميع الكتل اللاحقة في السلسلة النشطة الحالية للعقدة المعنية. وللمعاملة الموجودة في الطرف الحالي تأكيد واحد. تزيد كل كتلة إضافية عادة العمل اللازم لاستبدال التاريخ، لكن لا يحقق أي عدد محدود من التأكيدات نهائية مطلقة رياضيًا. لذلك تختار منصات التداول والتجار عتبة التأكيد وفق قيمة الدفعة ونموذج المخاطر. [Bitcoin Core v29.0 — confirmation depth] [Bitcoin whitepaper — Sections 5 and 11]

قد يحدث Reorg قصير طبيعيًا عندما يجد معدّنان كتلًا متنافسة في وقت متقارب جدًا، وتتبع أجزاء الشبكة أطرافًا مختلفة مؤقتًا؛ ثم يخرج الفرع ذو chainwork الأقل من السلسلة النشطة. يستخدم هجوم Double Spend الآلية نفسها عمدًا. يظل الإجراء التقني لاختيار السلسلة واحدًا، بينما يختلف السبب والهدف الاقتصادي. [Bitcoin Developer Guide — Block Chain] [Bitcoin whitepaper — Sections 5 and 11]

يحدث Reorg ضمن مجموعة قواعد واحدة: تختار العقدة بين الفروع التي تعتبرها صالحة. أما Hard Fork فيغيّر قواعد الصلاحية بحيث قد يختلف البرنامج القديم والجديد بشأن صلاحية الكتلة أصلًا. لذا فإن إعادة التنظيم لا تغيّر الإجماع بحد ذاتها. [Bitcoin Developer Guide — Block Chain]

في Bitcoin Core v29.0، الخطوات واضحة: يجد FindMostWorkChain المرشح ذي أعلى chainwork الذي لم تُعرف عدم صلاحيته، وقد يفصل ActivateBestChainStep الطرف الحالي، ويتحقق ConnectTip من الكتل البديلة ويوصلها، ويعيد MaybeUpdateMempoolForReorg فحص معاملات الكتل المفصولة. قد يكشف التفعيل عدم صلاحية المرشح ويواصل البحث عن فرع آخر. تتطلب إعادة التنظيم الكبيرة معالجة عدد أكبر من الكتل المفصولة والموصولة، ولذلك قد تطيل تنفيذ ActivateBestChain. [Bitcoin Core v29.0 — chain activation and mempool reconciliation]

للحصول على صورة أوضح، اقرأ هذا المدخل مع تأكيد, Proof of Work, Stale Block, الإنفاق المزدوج, Full Node, UTXO. تشير إلى هذا المدخل أيضًا تأكيد, الإنفاق المزدوج, معاملة كوينبيس, Soft Fork.

DOC · 001Bitcoin Core v29.0 — chain activation and mempool reconciliationمصدر أولي ↗DOC · 002Bitcoin Core v29.0 — coinbase maturity validationمصدر أولي ↗DOC · 003Bitcoin Core v29.0 — confirmation depthمصدر أولي ↗DOC · 004Bitcoin Developer Guide — Block Chainتوثيق ↗DOC · 005Bitcoin whitepaper — Sections 5 and 11مصدر أولي ↗
المصادر أولًا · ليست نصيحة استثمارية