131 / 736PKG

Package Relay

نقل المعاملات المترابطة معاً

لماذا لا تكفي أحياناً زيادة الرسوم لتحريك دفعة عالقة؟ يساعد Package Relay العُقد على النظر في معاملة لاحقة يمكن أن تغطي رسوم إدراج المعاملتين في كتلة.

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

تنتظر آنا دفعة بعملة bitcoin. اختار المرسل رسوماً منخفضة، ثم زاد الطلب على مساحة الكتل. تجمع الكتلة معاملات في دفعة تُضاف إلى السجل المشترك. العقدة برنامج يتحقق من المعاملات والكتل ويتواصل مع المشاركين الآخرين في الشبكة. لذلك ترفض بعض العُقد إدخال المعاملة إلى mempool الخاص بها، أي مجموعتها المحلية من المعاملات غير المؤكدة. تريد آنا إضافة رسوم بمعاملة لاحقة، لكن هذه المعاملة تنفق عملات لا تعرف العقدة الرافضة بعد كيف وصلت. يساعد Package Relay على سد هذه الفجوة: يوصل المعلومات المترابطة اللازمة كي لا تضطر العقدة إلى تقييم المعاملة الأولى منخفضة الرسوم وحدها. [1] [6]

تُسمّى المعاملة الأولى الأب، والمعاملة التي تنفق مخرجها الابن. والمخرج مبلغ محدد يمكن إنفاقه عند استيفاء شروطه. تستطيع آنا إنشاء الابن إن كانت قادرة على استيفاء شروط إنفاق أحد مخارج الأب. مثلاً، يمكنها نقل العملات المستلمة إلى عنوان آخر تملكه، وتخصيص جزء منها للرسوم. هذا هو CPFP (Child Pays for Parent): قد تساعد رسوم الابن الأعلى على تأكيد المعاملتين. يساعد Package Relay في النقل والتقييم، لكنه لا يدفع الرسوم ولا يوقّع شيئاً ولا يمنح حق إنفاق عملات الآخرين. [1] [5]

لنفترض أن حجم الأب 200 vB ورسومه 200 sat، وحجم الابن 100 vB ورسومه 1300 sat. تقيس وحدة vByte، ورمزها vB، الحجم الافتراضي للمعاملة المستخدم عادة لحساب الرسوم؛ أما sat فهي وحدة صغيرة من bitcoin. المجموع 1500 sat مقابل 300 vB، أي 5 sat/vB. هذا ليس المتوسط البسيط للمعدلين المنفصلين 1 و13 sat/vB. نفترض هاتين المعاملتين اللتين لم تُقبلا بعد فقط، دون أسلاف آخرين غير مؤكدين أو تعديلات محلية للرسوم. لا تعيد العقدة احتساب المعاملات المقبولة سابقاً؛ لذا يهم تحديد الاعتماديات التي يجري تقييمها بدقة. [5] [3]

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

المحفظة تطبيق أو جهاز لاستقبال البيتكوين وإرساله. وصول البيانات يعني أن العقدة حصلت عليها. والقبول يعني أنها أضافت المعاملات إلى mempool وفق قواعدها. أما التأكيد فيتطلب الإدراج في كتلة. لكل عقدة mempool خاص بها؛ نجاح الإرسال إلى إحداها لا يخبرنا بقرار جارتها. في Bitcoin Core 28.0، قد يتجاوز المعدل المشترك الحد الأدنى المتغير عند ازدحام mempool، لكنه لا يلغي عموماً الحد الأدنى المنفصل للترحيل. توجد في هذه النسخة حالة استثنائية تخص TRUC Transactions، وهي معاملات ذات قيود خاصة. لذلك لا يستطيع ابن مرتفع الرسوم إنقاذ أي أب مهما كانت حالته. [2] [5] [8]

يصف BIP 331 الذي أعدته Gloria Zhao التفاوض على الدعم ورسائل طلب معلومات الأسلاف والمعاملات نفسها. وهو مقترح أوسع نطاقاً. أما Bitcoin Core 28.0 فوثّق اقتراناً محدوداً لأب واحد مع ابن واحد عبر بروتوكول الشبكة الموجود. وكانت واجهة البرمجة المحلية RPC قادرة أيضاً على قبول ابن له عدة آباء مستقلين، لكن ذلك لم يعنِ دعماً مماثلاً للنقل بين العُقد. تتعلق هذه التفاصيل بتلك النسخة؛ وعند استخدام نسخة أخرى يجب التحقق من وثائقها وقدرات العقدة المقابلة. [1] [2]

يسلّم الأمر submitpackage في Bitcoin Core 28.0 حزمة معدّة إلى العقدة المحلية. ويتوقع ابناً وآباءه غير المؤكدين، دون اعتماد الآباء بعضهم على بعض، مع وضع الابن أخيراً. ينبغي قراءة package_msg مع النتائج الفردية في tx-results. قد تقبل العقدة جزءاً من الحزمة: فالخطأ لا يلغي تلقائياً كل ما سبق قبوله. وحتى النجاح العام لا يثبت الانتشار في الشبكة أو التأكيد. ليس الأمر خدمة عامة لتسريع المدفوعات؛ بل يحتاج إلى معاملات مبنية بصورة صحيحة، لا إلى عناوين فحسب. [3]

في بيئة اختبار منفصلة، يفحص testmempoolaccept القبول دون بث المعاملات. إذا فشلت معاملة أخرى، قد تغيب نتيجة allowed لأن المعاملة المعنية لم تُتحقق بالكامل. كما أن شروط الاختبار وsubmitpackage ليست متطابقة تماماً. سجّل النسخة والإعدادات والاعتماديات والأحجام والرسوم، وراقب القبول لدى عقدة أخرى بصورة منفصلة. وتظل معاملات Lightning Network الحساسة للمواعيد بحاجة إلى استجابة في الوقت المناسب: لا يزيل Package Relay وحده الازدحام أو عدم انتظام الكتل أو pinning، أي استخدام قواعد mempool عمداً لعرقلة رفع الرسوم. [4] [2] [1]

للحصول على صورة أوضح، اقرأ هذا المدخل مع Mempool, CPFP (Child Pays for Parent), Fee Rate, Replace-by-Fee (RBF), Lightning Network, vByte. تشير إلى هذا المدخل أيضًا CPFP (Child Pays for Parent), Gloria Zhao, Cluster Mempool, TRUC Transactions.

DOC · 001BIP 331 — Ancestor Package Relayمواصفة DOC · 002Bitcoin Core 28.0 — release notesتوثيق DOC · 003Bitcoin Core 28.0 — submitpackageتوثيق DOC · 004Bitcoin Core 28.0 — testmempoolacceptتوثيق DOC · 005Bitcoin Core v28.0 — Package mempool acceptanceتوثيق DOC · 006Bitcoin Developer Guide — Block Chainتوثيق DOC · 007Bitcoin Developer Reference — Transactionsتوثيق DOC · 008Bitcoin Developer Guide — Walletsتوثيق
تمت المراجعة: المصادر أولًا · ليست نصيحة استثمارية