142 / 691SELECT

Coin Selection

اختيار UTXO للمعاملة

يحدد Coin Selection أي UTXO تنفقها المحفظة. ويؤثر في الرسوم الحالية والباقي والتكاليف المستقبلية والروابط بين سجلات المدفوعات.

Coin Selection هو إجراء المحفظة لاختيار UTXO لتمويل مخرجات المعاملة ورسومها. إنه قرار محلي، وليس قاعدة إجماع تفرض الخوارزمية نفسها على جميع المحافظ.

ينفق كل مدخل UTXO محددة بالكامل. الفرق بين مجموع المدخلات والمخرجات هو الرسوم؛ ويحتاج المبلغ المعاد إلى المرسل إلى مخرج مستقل. في مثال توضيحي، مدخل بقيمة 100000 sat ودفعة 60000 sat ورسوم 1000 sat تترك باقياً قدره 39000 sat. [Bitcoin Developer Guide — Transactions]

القيمة الاسمية وحدها لا تكفي: إضافة مدخل تكبّر المعاملة. تخصم القيمة الفعلية من UTXO تكلفة إنفاقها بمعدل الرسوم المختار. مدخل افتراضي بقيمة 10000 sat وحجم مقدر 68 vB عند 10 sat/vB يساهم بمقدار 9320 sat؛ وتظل الأجزاء الأخرى للمعاملة بحاجة إلى رسومها الخاصة. يعتمد الحجم الفعلي على السكربت والتوقيع. [Bitcoin Core — Coin selection implementation] [Bitcoin Core 29.0 — Transaction creation]

يبحث Branch-and-bound ‏(BnB) في تركيبات المدخلات لدفع بلا باقٍ. يسمح النطاق المستهدف بفائض يصل إلى تكلفة إنشاء الباقي وإنفاقه لاحقاً؛ ويذهب هذا الفائض إلى الرسوم. لا يشترط تطابقاً دقيقاً فقط. وقد لا يعثر البحث المحدود على حل أو على الحل الأمثل عالمياً. [Bitcoin Core — Coin selection implementation]

ينظر Bitcoin Core 29.0 في BnB وKnapsack وSingle Random Draw ‏(SRD)؛ ويشارك CoinGrinder عندما يتجاوز المعدل الفعلي ثلاثة أضعاف المعدل طويل الأجل. يقارن المرشحين باستخدام waste metric. ويتجاوز BnB عند خصم الرسوم من المخرجات. هذا وصف لإصدار محدد، لا لترتيب خوارزميات موحد في جميع المحافظ. [Bitcoin Core 29.0 — Transaction creation]

يقارن waste metric تكاليف المدخلات الآن وعند معدل طويل الأجل، مع تكلفة الباقي أو الفائض المخصص للرسوم. المعدل طويل الأجل افتراض وليس تنبؤاً. قد يقلل الدمج عدد المدخلات المستقبلية، لكنه يكلف رسوماً اليوم ويربط المخرجات المستخدمة؛ لذلك ليست أقل رسوم فورية الهدف الوحيد. [Bitcoin Core — Coin selection implementation] [Bitcoin Design — Coin selection and privacy]

إنفاق إيرادات مختلفة معاً يعطي المحللين قرينة على ترابطها، لا دليلاً على شخص واحد. يساعد Coin Control والتسميات في فصل سياقات الدفع. يصف BIP 329 نقل التسميات وبيانات قابلية الإنفاق؛ ولا يختار العملات بنفسه، وقد يكشف التصدير روابط حساسة. حتى غياب الباقي لا يضمن إخفاء الهوية. [BIP 329 — Wallet Labels Export Format] [Bitcoin Design — Coin selection and privacy]

يجب أن يراعي الاختيار قابلية الإنفاق والتأكيدات والمخرجات المقفلة وحدود المعاملة. في RPC walletcreatefundedpsbt من Core 29.0 يسمح include_unsafe أيضاً بمدخلات غير مؤكدة محفوفة بالمخاطر؛ وإذا اختفت معاملاتها فقد تصبح الدفعة المنشأة غير صالحة. وقد تتطلب المعاملات السابقة غير المؤكدة رسوماً إضافية. الرصيد الكبير وحده لا يضمن تركيبة مدخلات مناسبة. [Bitcoin Core 29.0 — Transaction creation] [Bitcoin Core 29.0 — walletcreatefundedpsbt RPC]

في walletcreatefundedpsbt من Core 29.0 يمكن تحديد المدخلات بواسطة txid وvout؛ ويتحكم add_inputs في إضافة غيرها. يستخدم fee_rate وحدة sat/vB، بينما يستخدم feeRate وحدة BTC/kvB. ملف PSBT الناتج تمهيد لمعالجة لاحقة، وليس دفعة مؤكدة. قبل التوقيع تُراجع الجهات المستلمة والرسوم الإجمالية والباقي الخاص بالمرسل؛ ولا يلغي الاختيار اليدوي هذه المسؤولية. [Bitcoin Core 29.0 — walletcreatefundedpsbt RPC]

للحصول على صورة أوضح، اقرأ هذا المدخل مع UTXO, Coin Control, مخرج الباقي, Fee Rate, PSBT, خصوصية Bitcoin. تشير إلى هذا المدخل أيضًا Watch-only Wallet, مخرج الباقي, Inventing Bitcoin.

DOC · 001Bitcoin Developer Guide — Transactionsتوثيق ↗DOC · 002Bitcoin Core — Coin selection implementationمصدر أولي ↗DOC · 003Bitcoin Core 29.0 — Transaction creationمصدر أولي ↗DOC · 004BIP 329 — Wallet Labels Export Formatمواصفة ↗DOC · 005Bitcoin Core 29.0 — walletcreatefundedpsbt RPCتوثيق ↗DOC · 006Bitcoin Design — Coin selection and privacyتوثيق ↗
المصادر أولًا · ليست نصيحة استثمارية