Stratum V1 Bitcoin के सामूहिक खनन का संचार प्रोटोकॉल है। पूल लगातार खुले रहने वाले कनेक्शन से काम भेजता है और मशीनें परिणाम लौटाती हैं। प्रोटोकॉल खुद न पुरस्कार की रकम तय करता है, न Bitcoin ब्लॉक की वैधता के नियम।
ईवा ने Bitcoin खनन के लिए बनी विशेष मशीन ASIC चालू की और उसे एक पूल से जोड़ा। पूल उन माइनरों के काम का समन्वय करता है जो अगला ब्लॉक खोज रहे हैं। ब्लॉक लेन-देन का एक समूह है जिसे Bitcoin के इतिहास में जोड़ा जाता है। लेकिन गणना की क्षमता भर काफी नहीं है। मशीन को काम मिलना चाहिए और पूल को पता चलना चाहिए कि ईवा ने कितना योगदान दिया। Stratum V1 यह बातचीत संभालता है। पूल अगले ब्लॉक की खोज के लिए काम भेजता है; मशीन गणना करके बीच के परिणाम लौटाती है। फोन पर बातचीत की भाषा की तरह, प्रोटोकॉल दोनों पक्षों को एक-दूसरे की बात समझने देता है। वह काम की कीमत नहीं तय करता। इसके लिए पूल के अलग भुगतान नियम हैं, जबकि मिले हुए ब्लॉक की वैधता Bitcoin नोड जाँचते हैं। [4] [2]
मशीनें तेज़ हुईं तो पुराना getwork तरीका कम उपयोगी होने लगा। वह थोड़ी-थोड़ी मात्रा में काम देता था, इसलिए उपकरण को बार-बार और काम माँगना पड़ता था। Marek Palatinus ने 11 सितंबर 2012 को नया प्रस्ताव रखा। Stratum कनेक्शन खुला रखता है, ताकि पूल अगले अनुरोध का इंतज़ार किए बिना बदला हुआ काम भेज सके। इससे संचार का अतिरिक्त बोझ घटता है। यह खनन के हर दूसरे हिस्से की जगह नहीं लेता: पूल अब भी BIP 22 में वर्णित getblocktemplate के जरिए Bitcoin नोड से ब्लॉक का मसौदा ले सकता है। [11] [3] [5]
मशीन का नियंत्रण सॉफ्टवेयर आम तौर पर पहले mining.subscribe भेजकर काम लेने का अनुरोध करता है। उसे कनेक्शन की जानकारी और अपनी गणनाओं को अलग पहचानने के लिए डेटा मिलता है। फिर mining.authorize मशीन को खाते से जोड़ता है। यहाँ worker किसी कर्मचारी को नहीं, उपकरण या कनेक्शन के पहचान-नाम को कहते हैं। ईवा एक खाते की कई मशीनों को अलग पहचान सकती है। संदेश में भेजा गया पासवर्ड अपने आप सर्वर की असलियत नहीं जाँचता और संचार को एन्क्रिप्ट भी नहीं करता। इसलिए सफल लॉगिन सुरक्षित कनेक्शन का प्रमाण नहीं है। [2] [13]
mining.notify में job_id से पहचाना जाने वाला नया काम आता है। उसमें पिछले ब्लॉक का संदर्भ, लेनदेन से जुड़ा डेटा, समय और ब्लॉक हेडर की दूसरी जानकारी होती है। हेडर उस ब्लॉक की जानकारी का संक्षिप्त समूह है। clean_jobs संकेत महत्वपूर्ण है। true का मतलब पुराने काम छोड़ना है; false में नया काम अपनाते हुए पिछले काम को जारी रखा जा सकता है। इसलिए हर नया संदेश चल रहे सभी परिणामों को अपने आप अनुपयोगी नहीं बनाता। दिया गया काम भी अभी गणना के लिए एक प्रस्ताव है, पहले से वैध ब्लॉक नहीं। [2] [13]
यह तकनीकी हिस्सा है; सामान्य कनेक्शन के लिए हर फ़ील्ड याद रखना ज़रूरी नहीं। पूल coinbase लेनदेन के दो हिस्से देता है। यह वह लेनदेन है जिससे ब्लॉक का पुरस्कार दिया जाता है, इसी नाम का एक्सचेंज नहीं। सॉफ्टवेयर इनके बीच पूल से मिला extranonce1 और अपना extranonce2 जोड़ता है, जिससे काम के और रूप बनते हैं। उस लेनदेन और मिले हुए Merkle branches, यानी लेनदेन के पेड़ जैसे सारांश के बीच के मानों, से Merkle root निकालता है। पिछले ब्लॉक के संदर्भ, संस्करण, समय और hash के लिए तय सीमा के संक्षिप्त रूप के साथ यह 80 बाइट के हेडर का आधार बनता है। ASIC बार-बार उसका hash, यानी संख्यात्मक पहचान-छाप, निकालता है और नए प्रयासों के लिए nonce नाम की संख्या बदलता है। [2] [4] [13] [14]
पूरा ब्लॉक मिलना दुर्लभ है। इसलिए पूल परिणाम की एक आसान सीमा तय करता है, जिसे target कहते हैं। उसे पूरा करने वाला परिणाम mining share है, यानी किए गए काम का प्रमाण। अधिकांश shares Bitcoin नेटवर्क की अधिक कठिन सीमा पूरी नहीं करते; कभी कोई उसे भी पूरा कर सकता है और वैध ब्लॉक बनाने में मदद कर सकता है। mining.set_difficulty और स्वचालित समायोजन vardiff shares की कठिनाई बदलते हैं, ताकि परिणाम न बहुत बार आएँ, न बहुत कम। वे नेटवर्क की कठिनाई नहीं बदलते। कठिन शर्त पूरी करने के लिए औसतन अधिक गणनाएँ चाहिए, इसलिए काम मापते समय ऐसे परिणाम को अधिक महत्व दिया जाता है। अधिक कठिन shares की कम संख्या अपने आप कम भुगतान नहीं है; उनका भार और पूल के भुगतान नियम भी मायने रखते हैं। [2] [4] [13]
मशीन mining.submit में worker की पहचान, job_id, extranonce2, nTime (हेडर में दर्ज समय) और nonce भेजती है। पूल परिणाम फिर बनाकर जाँचता है। duplicate उसी काम को दोबारा भेजना है, low difficulty अपर्याप्त परिणाम है, और stale ऐसे पुराने कार्य का परिणाम है जिसे अब स्वीकार नहीं किया जा रहा। इसलिए ईवा मशीन की गति के साथ अस्वीकृत परिणामों और कनेक्शन की देरी को भी देखती है। स्वीकार किया गया share भी अभी वॉलेट में भुगतान नहीं है: Stratum काम पहुँचाता है, जबकि पुरस्कार जोड़ने और भेजने के नियम अलग हैं। [2] [13]
2018 का BIP 310 बताता है कि mining.configure से अतिरिक्त क्षमताओं पर सहमति कैसे बने। 17 अक्टूबर 2026 को जाँचे गए दस्तावेज़ की स्थिति अब भी Draft, यानी मसौदा, थी। Version-rolling हेडर के संस्करण में केवल सहमत बिट बदलने देता है; सहमति के बाद mining.submit में छठा फ़ील्ड जुड़ता है। यह Bitcoin के नियम मनमाने ढंग से बदलने की अनुमति नहीं है। minimum-difficulty और subscribe-extranonce क्रमशः shares की माँगी गई न्यूनतम कठिनाई और नए extranonce मानों की सूचना से जुड़े हैं। क्षमताओं पर सहमति कार्यक्रमों के बीच गलतफहमी रोकती है, लेकिन खुद एन्क्रिप्शन नहीं देती। [6]
V1 अक्सर बिना एन्क्रिप्शन वाले TCP पर चलता है। अतिरिक्त सुरक्षा न हो तो संचार के रास्ते में मौजूद कोई व्यक्ति संदेश पढ़ या बदल सकता है और काम को दूसरी ओर मोड़ने की कोशिश कर सकता है। 2017 के अध्ययन Hardening Stratum ने इन जोखिमों को व्यावहारिक रूप से जाँचा। यह मशीन और पूल के बीच कनेक्शन की बात है, Bitcoin को तोड़ने की नहीं। आम व्यवस्था में ब्लॉक के लेनदेन भी पूल चुनता है। मशीन ईवा की है, इसका मतलब यह नहीं कि वही उसके ब्लॉक की सामग्री चुनती है। नियम तोड़ने वाला ब्लॉक बड़े पूल ने बनाया हो, तब भी Bitcoin नोड उसे अस्वीकार करेंगे। [7] [4]
Stratum V2 अधिक छोटे बाइनरी संदेश और क्रिप्टोग्राफी से सुरक्षित कनेक्शन देता है। उसका अलग भाग Job Declaration खनिक को अपने चुने लेनदेन प्रस्तावित करने दे सकता है, बशर्ते दोनों पक्ष उसका समर्थन करें और इस्तेमाल करें। V1/V2 अनुवादक या केवल V2 का लेबल इस क्षमता का प्रमाण नहीं है। ईवा को फर्मवेयर का समर्थन, सर्वर का सही पता, कनेक्शन की सुरक्षा, अस्वीकृत परिणाम और बैकअप कनेक्शन जाँचने चाहिए। V1 की मूल बात सरल है: काम पहुँचाना, गणना का प्रमाण देना और इन दोनों को ब्लॉक की सामग्री चुनने तथा भुगतान से अलग समझना। [8] [12] [10]
पूरी तस्वीर के लिए इस प्रविष्टि के साथ यह भी पढ़ें Bitcoin, माइनिंग, Mining Pool, Braiins, Braiins Pool, Marek ‘Slush’ Palatinus. इस प्रविष्टि का उल्लेख यहाँ भी है Mining Pool, Marek ‘Slush’ Palatinus, Braiins, Braiins Pool.