52 / 736BIP125

Replace-by-Fee (RBF)

अपुष्ट लेनदेन को अधिक शुल्क वाले संस्करण से बदलना

Replace-by-Fee (RBF) से पुष्टि की प्रतीक्षा कर रहे Bitcoin लेनदेन को अधिक शुल्क वाले दूसरे लेनदेन से बदला जा सकता है। वॉलेट इसका उपयोग उस भुगतान के लिए कर सकता है जो अभी ब्लॉक में नहीं पहुँचा; पहले से पुष्ट भुगतान इससे वापस नहीं होता।

भुगतान भेज देना उसकी पुष्टि हो जाना नहीं है। माइनर के उसे ब्लॉक में शामिल करने तक नोड उसे अपने Mempool में रख सकते हैं। नोड वे प्रोग्राम हैं जो Bitcoin लेनदेन की जाँच करते हैं और उन्हें आगे भेजते हैं। Mempool हर नोड की लंबित लेनदेन की अपनी सूची है। कुछ शर्तों के तहत RBF नोड को उसकी जगह नया लेनदेन स्वीकार करने देता है, जो कम से कम एक वही UTXO खर्च करे—ऐसा आउटपुट जो अभी खर्च नहीं हुआ है। प्रतिस्थापन में वैध हस्ताक्षर होने चाहिए और उसे नेटवर्क पर भेजना होता है; सिर्फ अधिक शुल्क से जल्दी पुष्टि की गारंटी नहीं मिलती।

Anna ने 20,000 sat भेजे, लेकिन भुगतान अभी भी लंबित है। sat का अर्थ satoshi है, जो bitcoin की सबसे छोटी इकाई है। उसका वॉलेट RBF से शुल्क बढ़ाने का विकल्प देता है। एक सरल उदाहरण में मूल लेनदेन 50,000 sat खर्च करता है: प्राप्तकर्ता को 20,000 sat मिलते हैं, शुल्क 200 sat है और 29,800 sat बची हुई रकम के रूप में Anna को लौटते हैं। प्रतिस्थापन में प्राप्तकर्ता को वही 20,000 sat मिल सकते हैं, शुल्क बढ़कर 2,000 sat हो सकता है और Anna को 28,000 sat लौट सकते हैं। ये संख्याएँ तरीका समझाती हैं, मौजूदा शुल्क की सिफारिश नहीं हैं। हस्ताक्षर से पहले Anna पता, प्राप्तकर्ता की रकम और नया कुल शुल्क जाँचती है। वॉलेट आवश्यक इनपुट पर हस्ताक्षर करने में सक्षम होना चाहिए; हार्डवेयर वॉलेट को फिर जोड़ना पड़ सकता है। प्रतिस्थापन का नया txid होता है, यानी लेनदेन पहचानकर्ता, इसलिए प्राप्तकर्ता को नया ट्रैकिंग लिंक देना पड़ सकता है। शुल्क बढ़ाना, दूसरे UTXO से एक अलग दूसरा भुगतान बनाने जैसा नहीं है: दोनों स्वतंत्र भुगतान पुष्ट हो सकते हैं और आप दो बार भुगतान कर सकते हैं। [1] [2] [12]

वॉलेट पहली पुष्टि से पहले ही आने वाली रकम दिखा सकता है। इसे zero-conf कहते हैं: भुगतान दिख चुका है, लेकिन अभी ब्लॉक में नहीं है। दूसरा संस्करण पहले पुष्ट हो सकता है और दिख रही रकम गायब हो सकती है। इसलिए ‘RBF बंद है’ का लेबल भुगतान सुरक्षित होने का प्रमाण नहीं है। अपुष्ट भुगतान के बदले सामान देना सोच-समझकर व्यावसायिक जोखिम लेना है। ब्लॉक में शामिल होने के बाद RBF लेनदेन को बदल नहीं सकता। चेन के संभावित पुनर्गठन का जोखिम अलग है; इसी वजह से महत्वपूर्ण भुगतानों के लिए अधिक पुष्टियों की प्रतीक्षा की जाती है। [1]

RBF स्वयं मूल प्राप्तकर्ता को बनाए रखने की शर्त नहीं रखता। प्रतिस्थापन शुल्क बढ़ाकर उसी व्यक्ति को भुगतान कर सकता है या रकम कहीं और भेज सकता है। दोनों संस्करण एक ही UTXO खर्च करने की कोशिश करते हैं, इसलिए तकनीकी रूप से ये परस्पर-विरोधी प्रयास, यानी Double Spend हैं। केवल यह शब्द नहीं बताता कि धोखाधड़ी हुई है या नहीं। लेकिन हमलावर किसी और के भुगतान पर मनमाने ढंग से हस्ताक्षर नहीं कर सकता: प्रतिस्थापन को भी जरूरी हस्ताक्षरों समेत खर्च की शर्तें पूरी करनी होंगी। अगर वॉलेट खुद को भुगतान करने वाले प्रतिस्थापन को ‘रद्द करना’ कहता है, तो वह मूल लेनदेन से पहले पुष्टि पाने की कोशिश है, पक्की वापसी नहीं। [1]

RBF लंबित लेनदेन को ही बदलता है। Child Pays for Parent (CPFP) मूल लेनदेन को बनाए रखता है और उसके किसी आउटपुट को खर्च करने वाला नया लेनदेन बनाता है। नए लेनदेन का शुल्क पाने के लिए माइनर को मूल लेनदेन भी शामिल करना पड़ता है, इसलिए वह दोनों की संयुक्त शुल्क दर देख सकता है। नए लेनदेन को चाइल्ड और मूल को पैरेंट कहते हैं। संबंधित आउटपुट खर्च कर सकने वाला व्यक्ति इसे बना सकता है, जैसे प्राप्तकर्ता या अपनी बची रकम का उपयोग करने वाला भेजने वाला। वॉलेट का समर्थन, जरूरी हस्ताक्षर और लेनदेन की निर्भरताएँ तय करती हैं कि क्या संभव है। CPFP मूल भुगतान को प्रतिस्थापित नहीं करता और पुष्टि का समय भी सुनिश्चित नहीं करता। [2]

Mempool पूरे Bitcoin की एक साझा कतार नहीं है। हर नोड की अपनी सूची और लंबित लेनदेन स्वीकार करने तथा आगे भेजने के नियम होते हैं। RBF इसी स्थानीय नीति का भाग है, ब्लॉक की वैधता तय करने वाले सर्वसम्मति नियमों का नहीं। इसलिए माइनर कोई वैध परस्पर-विरोधी लेनदेन चुन सकता है जिसे दूसरे नोड ने पहले रखा ही न हो। Full Node फिर पूरे ब्लॉक को Bitcoin के नियमों से जाँचता है; उसके mempool की पिछली पसंद परिणाम तय नहीं करती। एक नोड का प्रतिस्थापन स्वीकार करना, हर जगह स्वीकृति का वादा नहीं है। [1] [6]

उपयोगकर्ता के लिए दो अलग संख्याएँ जरूरी हैं: कुल कितना भुगतान होगा और लेनदेन के आकार के हिसाब से कितनी दर दी जा रही है। उदाहरण के लिए आकार 200 vB हो तो 200 sat का अर्थ 1 sat/vB है; उसी आकार पर 2,000 sat का अर्थ 10 sat/vB है। वर्चुअल बाइट, vB, लेनदेन के वजन से निकली आकार की इकाई है। लेनदेन दोबारा बनाने पर आकार बदल सकता है, इसलिए वॉलेट को दर की भी फिर से गणना करनी होगी। कुल शुल्क satoshi में राशि है; शुल्क दर प्रति वर्चुअल बाइट sat/vB में राशि है। Core 30 में एकल प्रतिस्थापन का शुल्क इतना होना चाहिए कि वह सभी हटाए गए लेनदेन के कुल शुल्क के साथ-साथ प्रतिस्थापन के आकार और incrementalrelayfee के आधार पर अतिरिक्त लागत भी कवर करे। उसकी दर सीधे विरोधी लेनदेन की दरों से अधिक होनी चाहिए। केवल दर बढ़ाना या satoshi जोड़ना पर्याप्त नहीं; Core 30 की सामान्य incrementalrelayfee 0.1 sat/vB है, पर नोड की सेटिंग अलग हो सकती है। [2] [9]

पहले लंबित भुगतान पर कोई अगला भुगतान पहले से निर्भर हो सकता है: कोई पहले, अभी अपुष्ट लेनदेन का आउटपुट खर्च कर रहा है। ऐसे अगले लेनदेन वंशज कहलाते हैं। पैरेंट हटने पर वे भी mempool में उपयोग योग्य नहीं रहते, इसलिए नोड को पूरे प्रभावित समूह पर विचार करना पड़ता है। मूल लेनदेन बदलने पर उसके आउटपुट खर्च करने वाले वंशज भी mempool से हट सकते हैं। इसलिए तुलना हमेशा केवल दो लेनदेन की नहीं होती। Core 30 में एकल प्रतिस्थापन के लिए सीधे विरोधी लेनदेन के वंशजों की गिनती, स्वयं लेनदेन सहित, जोड़कर 100 तक सीमित है; साझा वंशज एक से अधिक बार गिने जा सकते हैं। पैकेज शुल्क और संबंध प्रतिस्थापन की सफलता पर असर डालते हैं। [2]

नोड को यह भी रोकना होता है कि कोई लगातार प्रतिस्थापन की गणना कराकर उसे व्यस्त कर दे। यह DoS से सुरक्षा है, यानी सेवा की उपलब्धता पर हमले से बचाव। UTXO पुराने लेनदेन का खर्च न हुआ आउटपुट है; नए लेनदेन का इनपुट उसी का संदर्भ देता है। नीचे खास तौर पर Bitcoin Core 30 के नियम हैं, Bitcoin का कोई न बदलने वाला कानून नहीं। Bitcoin Core 30 की एकल प्रतिस्थापन नीति नए अपुष्ट इनपुट और हटाए जाने वाले लेनदेन की संख्या भी सीमित करती है। केवल वही UTXO खर्च करना पर्याप्त नहीं; नोड द्वारा स्वीकार किए जाने वाले लेनदेन के रूपों से जुड़े स्थानीय नियम (standardness), प्रसारण के नियम और वैधता की शर्तें पूरी करनी होती हैं। सीमाएँ प्रोसेसिंग क्षमता, मेमोरी और बैंडविड्थ बचाती हैं। पैकेज प्रतिस्थापन के नियम नोड संस्करण के अनुसार अलग परखने चाहिए। Core 31 ने Cluster Mempool के साथ यह नीति बदली: आपस में जुड़ी अपुष्ट ट्रांज़ैक्शन का आकलन समूहों में किया जाता है। प्रतिस्थापन को feerate diagram बेहतर करना होता है। यह चित्र जमा होती फ़ीस की तुलना ट्रांज़ैक्शन द्वारा क्रमशः इस्तेमाल की गई जगह से करता है। पर्याप्त कुल फ़ीस और प्रतिस्थापन को आगे भेजने की अतिरिक्त फ़ीस जैसी दूसरी शर्तें भी लागू रहती हैं। इसलिए ऊपर बताए Core 30 के नियम नई रिलीज़ पर अपने-आप लागू न मानें; अपने नोड के नियम जाँचें। [2] [13]

कुछ वॉलेट अब भी RBF स्विच क्यों दिखाते हैं? मूल opt-in RBF नीति अपनाने वाले नोड पहले से ऐसा संकेत माँगते थे जो प्रतिस्थापन की अनुमति दे। Bitcoin Core 24 ने इस शर्त के बिना full-RBF सेट करने दिया, Core 28 ने इसे डिफ़ॉल्ट रूप से चालू किया और Core 29 ने mempoolfullrbf स्विच हटा दिया। आगे दिए BIP125 विवरण मूल संकेत व्यवस्था समझाते हैं, आज के सभी नोड का सार्वभौमिक नियम नहीं। BIP125 में कम से कम एक इनपुट का nSequence, 0xfffffffe से कम हो तो स्पष्ट opt-in संकेत है। इसमें अपुष्ट पूर्वज से संकेत विरासत में मिलने का वर्णन भी है। यह ऐतिहासिक नीति है, सर्वसम्मति की शर्त नहीं। Full-RBF बिना संकेत के भी प्रतिस्थापन परखता है; संकेत न होने से भुगतान अपरिवर्तनीय नहीं हो जाता। [1] [3] [4] [5] [6]

यह भाग अपने नोड का उपयोग करने वालों के लिए है। RPC सॉफ्टवेयर से जानकारी माँगने या उसे नियंत्रित करने के आदेश हैं; शुल्क बढ़ाने का बटन इस्तेमाल करने के लिए इन्हें जानना जरूरी नहीं। getmempoolentry उस नोड के mempool में मौजूद लेनदेन की स्थिति दिखाता है। testmempoolaccept एक हस्ताक्षरित प्रतिस्थापन उम्मीदवार को नोड के वर्तमान mempool और नियमों पर जाँचता है, उसे प्रसारित नहीं करता। परिणाम दूसरे नोड की स्वीकृति या माइनिंग का वादा नहीं है। Core 28 ने mempoolfullrbf की सामान्य सेटिंग से full-RBF चालू किया; Core 29 ने विकल्प हटाया। getmempoolinfo शुल्क पैरामीटर बताता है, लेकिन Core 30 में fullrbf फ़ील्ड अप्रचलित चिह्नित है; संस्करण और वास्तविक कॉन्फ़िगरेशन हमेशा जाँचें। [5] [6] [7] [8] [10] [11]

पूरी तस्वीर के लिए इस प्रविष्टि के साथ यह भी पढ़ें Transaction Fees, Mempool, CPFP (Child Pays for Parent), दोहरा खर्च, पुष्टि, Fee Rate. इस प्रविष्टि का उल्लेख यहाँ भी है Change Address, पुष्टि, दोहरा खर्च, Fee Rate.

DOC · 001BIP 125 — Opt-in Full Replace-by-Fee Signalingविनिर्देश DOC · 002Bitcoin Core v30.0 — Mempool replacement policyदस्तावेज़ DOC · 003Bitcoin Core 0.12.0 release notesदस्तावेज़ DOC · 004Bitcoin Core 24.0.1 release notesदस्तावेज़ DOC · 005Bitcoin Core 28.0 release notesदस्तावेज़ DOC · 006Bitcoin Core 29.0 release notesदस्तावेज़ DOC · 007Bitcoin Core getmempoolinfo RPCदस्तावेज़ DOC · 008Bitcoin Core testmempoolaccept RPCदस्तावेज़ DOC · 009Bitcoin Core 30.0 release notesदस्तावेज़ DOC · 010Bitcoin Core getmempoolentry RPCदस्तावेज़ DOC · 011Bitcoin Core v30.0 — Mempool RPC implementationप्राथमिक स्रोत DOC · 012Bitcoin Core 30.0 — bumpfee RPCदस्तावेज़ DOC · 013Bitcoin Core v31.0 — Mempool replacement policyदस्तावेज़
समीक्षा की गई: स्रोत पहले · यह निवेश सलाह नहीं है