53 / 691CPFP

CPFP (Child Pays for Parent)

المعاملة التابعة تدفع عن المعاملة الأم

يزيد Child Pays for Parent (CPFP) حافز المُعدّن لتأكيد معاملة منخفضة الرسوم: تنفق معاملة جديدة مخرجًا منها وتدفع رسومًا كافية لرفع معدل الرسوم المشترك للمعاملات المترابطة.

لا يعدّل CPFP المعاملة الأم غير المؤكدة ولا يستبدلها. يضيف معاملة تابعة يمكن لرسومها أن تدعم اقتصاديًا إدراج الأم في كتلة. يجب أن تكون الأم مؤكدة سابقًا أو أن تسبق التابعة في الكتلة نفسها. تعتمد النتيجة على المعدل المشترك وإمكانية إنفاق مخرج للأم وسياسة العقدة واختيار المُعدّن.

يحافظ CPFP على المعاملة الأم منخفضة الرسوم وينفق مخرجها في معاملة تابعة ذات معدل رسوم أعلى. ما دامت الأم غير مؤكدة، يتطلب إدراج التابعة أيضًا الأم وسائر الأسلاف غير المؤكدة اللازمة. يمكن للمُعدّن تحصيل رسومها مجتمعة؛ ويمكنه كذلك تأكيد الأم وحدها من دون التابعة. [Bitcoin Core v31.0 — Package mempool acceptance] [Bitcoin Developer Guide — Transactions]

لزوج بسيط بلا أسلاف أخرى غير مؤكدة، اجمع رسوم الأم والتابعة بوحدة satoshi ثم اقسمها على مجموع حجميهما الافتراضيين بوحدة vB. النتيجة معدل بوحدة sat/vB وليست إجمالي الرسوم. لا تفيد زيادة رسوم التابعة إلا إذا كان المعدل المشترك منافسًا؛ وتغيّر الأسلاف الإضافية اللازمة الحساب. لا يعيد القبول المحلي للحزم احتساب المعاملات المقبولة مسبقًا في mempool، وقد يستخدم رسومًا معدّلة؛ لذلك لا يطابق المعدل المعروض دائمًا هذا الحساب المبسط للتعدين. [Bitcoin Core v31.0 — Package mempool acceptance]

يتطلب CPFP المعتاد القدرة على إنفاق مخرج واحد على الأقل من الأم. يستطيع المرسل استخدام مخرج الباقي، أي change؛ ويستطيع المستلم استخدام مخرج الدفعة المستلمة. يجب استيفاء شروط الإنفاق، بما فيها التوقيعات المطلوبة. مجرد عرض المخرج أو فحصه لا يمنح هذه الصلاحية. [Bitcoin Developer Guide — Transactions]

ينشئ RBF بديلًا متعارضًا يشترك مع المعاملة الأصلية في مدخل مُنفَق واحد على الأقل؛ وليس من الضروري تطابق مجموعة المدخلات كاملة. يحافظ CPFP على الأم ويضيف التابعة. يتطلب RBF استيفاء شروط مدخلات البديل، بينما يتطلب CPFP المعتاد استيفاء شروط إنفاق مخرج الأم. إنهما تغييران مختلفان في رسم علاقات المعاملات. [Bitcoin Core v31.0 — Package mempool acceptance]

يحدد الإجماع صلاحية المعاملات والكتل. تحدد سياسة mempool القبول والترحيل محليًا، وتحدد قواعد المُعدّن الاختيار لكتلة مرشحة. لا يغيّر CPFP الإجماع. قد تخالف حزمة جذابة اقتصاديًا السياسة المحلية، ولا يُلزم قبولها لدى عقدة واحدة العقد الأخرى أو المُعدّنين. [Bitcoin Core v31.0 — Package mempool acceptance] [Bitcoin Developer Guide — Transactions]

أضاف Bitcoin Core 26 واجهة RPC المسماة submitpackage وpackage CPFP: كان بإمكان التابعة مساعدة أم دون الحد الأدنى الديناميكي لمعدل رسوم mempool، لكن ليس حينها دون الحد الأدنى لمعدل رسوم الترحيل. هذا القيد ليس دائمًا. يسمح Core 31 في ترحيل الحزم المدعوم ذي أم واحدة وتابعة واحدة بأم دون minrelaytxfee، حتى برسوم صفرية، ويشمل ذلك معاملات خارج TRUC؛ ويجب أن تكون الأمهات الأخرى غير المؤكدة للتابعة موجودة مسبقًا في mempool. لا يزال القبول المحلي لا يضمن انتشارًا متماثلًا عبر الشبكة كلها. [Bitcoin Core 26.0 release notes] [Bitcoin Core 31.0 release notes]

تحمي الحدود الذاكرة وCPU وسعة الاتصال. كانت إصدارات Core الأقدم تحد أعداد الأسلاف والتوابع وأحجامها؛ واستبدل Core 31 حدود mempool تلك بحدود العناقيد المترابطة. تبقى حدود الحزمة المستقلة: تحدد وثائق Core 31 حدًا أقصى قدره 25 معاملة ووزنًا إجماليًا قدره 404000 WU. الوزن ليس الحجم الافتراضي. قد تمنع بنية غير صحيحة أو تعارض أو مخالفة لقواعد المعيارية CPFP حتى مع رسوم كافية. [Bitcoin Core 31.0 release notes] [Bitcoin Core v31.0 — Package mempool acceptance]

يستخدم Bitcoin Core 31 نظام Cluster Mempool: يتكون العنقود من معاملات مرتبطة بعلاقات أم وتابعة في أي اتجاه. الحدود الافتراضية لكل عنقود هي 64 معاملة و101 kB من الحجم الافتراضي، ويمكن ضبطها. يراعي الترتيب مجموعات تُعدّن معًا تسمى chunks ومعدلات رسومها. أتاح CPFP carveout التاريخي استثناءً محدودًا من حد التوابع؛ وأزاله Core 31، فلا يمكن بهذه الطريقة تجاوز حد عدد معاملات العنقود. [Bitcoin Core 31.0 release notes] [Bitcoin Core v31.0 — Mempool terminology]

يمكن لمعدل مشترك منافس أن يزيد فرصة التأكيد، لكنه لا يحجز مساحة في الكتلة التالية. قد يتغير الطلب على مساحة الكتل وانتشار المعاملات واختيار كل مُعدّن. CPFP أداة لزيادة الحافز بالرسوم، وليس ضمانًا لموعد التأكيد. [Bitcoin Core v31.0 — Package mempool acceptance]

في Core 31، تعرض واجهة RPC المسماة getmempoolentry الرسوم وvsize والتبعيات وبيانات chunk؛ وتعرض getmempoolcluster العنقود المرتبط. تجري testmempoolaccept اختبارًا محليًا دون قبول أو بث؛ وعند اختبار عدة معاملات يجب أن تسبق الأسلاف التوابع وألا تتعارض المعاملات فيما بينها أو مع mempool. تقدّم submitpackage فعليًا حزمة مدعومة لقبولها في mempool وترحيلها، وليست مجرد اختبار. افحص نتائج كل معاملة والإصدار والإعداد؛ فلا تضمن أي نتيجة التعدين. [Bitcoin Core 31.0 release notes] [Bitcoin Core 31.0 — getmempoolentry RPC] [Bitcoin Core 31.0 — testmempoolaccept RPC] [Bitcoin Core 31.0 — submitpackage RPC] [Bitcoin Core v31.0 — Mempool RPC implementation]

للحصول على صورة أوضح، اقرأ هذا المدخل مع Replace-by-Fee (RBF), رسوم المعاملات, Fee Rate, Mempool, المعاملة, UTXO. تشير إلى هذا المدخل أيضًا مخرج الباقي, تأكيد, الإنفاق المزدوج, Fee Rate.

DOC · 001Bitcoin Core 26.0 release notesتوثيق ↗DOC · 002Bitcoin Core 31.0 release notesتوثيق ↗DOC · 003Bitcoin Core v31.0 — Package mempool acceptanceتوثيق ↗DOC · 004Bitcoin Core v31.0 — Mempool terminologyتوثيق ↗DOC · 005Bitcoin Developer Guide — Transactionsتوثيق ↗DOC · 006Bitcoin Core 31.0 — getmempoolentry RPCتوثيق ↗DOC · 007Bitcoin Core 31.0 — testmempoolaccept RPCتوثيق ↗DOC · 008Bitcoin Core 31.0 — submitpackage RPCتوثيق ↗DOC · 009Bitcoin Core v31.0 — Mempool RPC implementationمصدر أولي ↗
المصادر أولًا · ليست نصيحة استثمارية