229 / 736JNP

Job Negotiation

साथ मिलकर माइनिंग, लेकिन ब्लॉक की सामग्री अपनी पसंद की

आन्ना एक पूल में माइनिंग करती है, यानी ऐसे समूह में जो काम का साझा हिसाब रखता और इनाम बाँटता है। लेकिन वह नहीं चाहती कि संचालक हमेशा उसकी लेनदेन सूची भी तय करे। मसलन, वह ऐसा वैध भुगतान शामिल करना चाहती है जो मिले हुए टेम्पलेट में छूट गया है। टेम्पलेट भावी ब्लॉक का मसौदा होता है। उसमें दूसरी जानकारियों के साथ यह भी तय होता है कि कौन-से लेनदेन शामिल किए जाएँगे। Job Negotiation इन दो बातों को अलग करता है: माइनर ब्लॉक की सामग्री सुझा सकता है और साझा इनाम व्यवस्था में भी बना रह सकता है। इसके लिए सॉफ़्टवेयर और दूसरे पक्ष का समर्थन चाहिए। अपनी पसंद का मतलब Bitcoin के नियमों को पार करने की छूट नहीं है।

Job Negotiation अपने बनाए माइनिंग कार्य पर माइनर और पूल के बीच सहमति है। Stratum V2 माइनिंग उपकरणों और पूल के बीच संचार के नियम तय करता है। उसका Job Declaration Protocol नामक हिस्सा अपने प्रस्तावों को संभालता है और टेम्पलेट व काम पहुँचाने वाली व्यवस्था के साथ काम करता है। उद्देश्य लेनदेन चुनने देना है, जबकि पूल काम दर्ज करता और इनाम देता रहे। असली बात प्रणाली की वास्तविक व्यवस्था है, केवल कनेक्शन का नाम नहीं।

आन्ना Stratum V2 पर आ जाती है, लेकिन लेनदेन सूची अभी भी पूल से मिलती है। यह विरोधाभास नहीं है। काम और परिणाम पहुँचाने वाला Mining Protocol, Job Declaration और Template Distribution के बिना भी चल सकता है। अंतिम हिस्सा ब्लॉक टेम्पलेट देता है, जबकि Job Declaration अपने प्रस्ताव संभालता है। आन्ना के चुनाव के लिए ये भूमिकाएँ भी जुड़ी होनी चाहिए और पूल को उनका समर्थन करना चाहिए। इसलिए आधुनिक संचार तरीका अकेले नहीं बताता कि Bitcoin नेटवर्क के ब्लॉक में क्या जाएगा, यह कौन तय करता है। [1] [4]

चुने गए भुगतान ब्लॉक को इतना नहीं भर सकते कि इनाम देने वाले coinbase लेनदेन के लिए जगह ही न बचे। इसलिए टेम्पलेट देने वाले Template Provider को ज़रूरी आरक्षित जगह पता होनी चाहिए। आन्ना की तरफ JDC, यानी Job Declarator Client नाम का प्रोग्राम चलता है। यह इस्तेमाल किए जाने वाले पूलों की ज़रूरतें पता करता है और CoinbaseOutputConstraints नाम के डेटा संदेश में टेम्पलेट देने वाले को भेजता है। डेटा के लिए जगह बचाने के साथ sigops के लिए भी गुंजाइश रखनी होती है। ये हस्ताक्षर जाँच की क्रियाएँ हैं, जिन्हें ब्लॉक की सीमा में गिना जाता है। वरना धन आवंटित करने वाले अतिरिक्त coinbase आउटपुट ब्लॉक की सीमा पार कर सकते हैं। लेनदेन खुद चुनते समय शुरू से पूरे परिणाम की वैधता का ध्यान रखना चाहिए। [3]

Full-Template मोड में JDC, DeclareMiningJob को JDS के पास भेजता है। JDS यानी Job Declarator Server पूल की तरफ या उसकी भरोसेमंद सेवा में होता है। संदेश में चुने गए लेनदेन के पहचानकर्ता होते हैं। सर्वर के पास कोई लेनदेन न हो तो वह ProvideMissingTransactions से उसका डेटा माँग सकता है। इस तरह आन्ना अपने चुनाव की जाँच के लिए जानकारी साझा करती है। घोषणा की पुष्टि और उसके बाद पूल द्वारा इस कस्टम कार्य की स्वीकृति दो अलग कदम हैं। पहला सफल संदेश पूरे समझौते के पूरा होने का संकेत नहीं है। [2]

Coinbase-only मोड में JDC लेनदेन का समूह नहीं बताता और DeclareMiningJob इस्तेमाल नहीं होता। पूल दी गई coinbase देखकर आय का अनुमान लगाता है। इससे आन्ना का चुनाव पूल से निजी रहता है, पर यह अपने आप छिपे लेनदेन की वैधता या उनकी असली फ़ीस का प्रमाण नहीं है। विनिर्देश यह जोखिम स्पष्ट रूप से बताता है। कम जानकारी साझा करने से जाँचने की क्षमता भी बदलती है; मोड का नाम इस बात की गारंटी नहीं कि इनाम की सभी शर्तें ठीक से साबित हुई हैं। यह गोपनीयता माइनिंग के दौरान प्रस्ताव तक सीमित है। आन्ना वैध ब्लॉक खोजकर नेटवर्क पर प्रसारित कर दे, तो उसमें शामिल लेनदेन दिखाई देने लगते हैं। [2]

तकनीकी बातचीत में कई मिलते-जुलते पहचान-चिह्न आते हैं। JDS, mining_job_token देता है, जिसका क्लाइंट SetCustomMiningJob में संदर्भ देता है। पूल काम स्वीकार करता है तो अपने job_id के साथ SetCustomMiningJob.Success लौटाता है। टोकन प्रस्ताव की बातचीत जोड़ता है, जबकि job_id परिणाम जमा करते समय काम पहचानता है। यह आवेदन संख्या और मंज़ूर काम के आदेश की संख्या जैसा अंतर है। दोनों को मिलाने पर पूल परिणाम को सही स्वीकार किए गए काम से नहीं जोड़ पाएगा। [1]

हर नेटवर्क कदम का इंतज़ार करने से उपकरण बिना वजह रुकेंगे। ज़रूरी टोकन और टेम्पलेट मिल जाने पर क्लाइंट SetCustomMiningJob.Success से पहले आशावादी माइनिंग शुरू कर सकता है। मिले हुए shares, पूल के लक्ष्य के अनुसार काम दिखाने वाले आंशिक परिणाम, पुष्टि तक संभालकर रखे जाते हैं। काम स्वीकार होने के बाद उन्हें मिले पहचानकर्ता के साथ भेजा जा सकता है। इसलिए चलती हुई मशीन अभी यह साबित नहीं करती कि पूल ने काम स्वीकार या दर्ज कर लिया है। गणना शुरू करना और उसके इनाम पर सहमति अलग समय पर होते हैं। [1] [2]

आन्ना को SetCustomMiningJob.Error मिले या उचित समय में जवाब न आए तो विनिर्देश दूसरे पूल या अकेले माइनिंग का सुझाव देता है। इसलिए टिके रहने की क्षमता काम करने वाले fallback, यानी पहले से तैयार वैकल्पिक रास्ते, पर निर्भर है। यदि प्रोग्राम चुपचाप अस्वीकार करने वाले पूल का मूल टेम्पलेट अपना ले, तो चलना जारी रह सकता है, लेकिन आन्ना का चुनाव खो जाएगा। इसलिए जानना ज़रूरी है कि अस्वीकृति पर प्रणाली वास्तव में क्या करती है। प्रोटोकॉल में लिखी क्षमता यह प्रमाण नहीं कि हर सेवा उसे देती है। [1] [4]

आन्ना लेनदेन चुनना और साझा इनाम भी पाना चाहती है। इसलिए उसके JDC को इनाम की शर्तें पूरी करने के लिए coinbase में पूल के तय आउटपुट को राशि देनी होगी। आय का कुछ हिस्सा कहीं और भेजने पर पूल उस काम का इनाम उसी अनुपात में घटा सकता है। Job Declaration माइनर को अपने आप सीधा भुगतान नहीं करता और सेवा की हिसाब-किताब की शर्तें नहीं मिटाता। मुख्य बदलाव यह है कि ब्लॉक की सामग्री कौन सुझा सकता है; उसकी वैधता और आय बाँटने के नियम अलग से देखने चाहिए। [2]

पूरी तस्वीर के लिए इस प्रविष्टि के साथ यह भी पढ़ें Stratum V2, getblocktemplate, Mining Pool, Block Template, Bitcoin. इस प्रविष्टि का उल्लेख यहाँ भी है Stratum V2, Mining Pool Centralization.

DOC · 001Stratum V2 — Mining Protocol and Custom Jobsविनिर्देश DOC · 002Stratum V2 — Job Declaration Protocolविनिर्देश DOC · 003Stratum V2 — Template Distribution Protocolविनिर्देश DOC · 004SRI — Pool and miner application rolesप्राथमिक स्रोत
समीक्षा की गई: स्रोत पहले · यह निवेश सलाह नहीं है