Monero View Key और Spend Key में अंतर समझें
Monero View Key और Spend Key में अंतर: पूरी जानकारी
अगर आपने कभी अपने चार्टर्ड अकाउंटेंट को Monero जमा का प्रमाण भेजने की कोशिश की है — बिना अपनी पूरी बचत सौंपे — तो आप पहले ही उस समस्या से रूबरू हो चुके हैं जिसका हल ये दो keys करती हैं। Bitcoin के विपरीत, जहाँ एक ही private key बैलेंस देखने से लेकर खर्च करने तक सब कुछ नियंत्रित करती है, Monero जानबूझकर अधिकार को view key और spend key के बीच विभाजित करता है। यही विभाजन एक privacy coin को माँग पर auditable बनाए रखता है, सार्वजनिक बैलेंस वाले donation पेज को संभव करता है, और उन हल्के mobile wallets को शक्ति देता है जो आपके फंड को कभी छूते भी नहीं। फिर भी ज़्यादातर नए उपयोगकर्ता दोनों को आपस में मिला देते हैं, गलत फील्ड में paste कर देते हैं, या मान लेते हैं कि एक share करने से दूसरी भी leak हो जाती है। 2026 में, जब FCMP++ testnet roadmap पर है और MoneroSwapper जैसे exchanges रोज़ हज़ारों no-KYC swap संभाल रहे हैं, यह key separation समझना अब किसी शैक्षणिक अभ्यास से कहीं अधिक है। यह एक साफ़ audit trail और एक खाली wallet के बीच का अंतर है। यह मार्गदर्शिका विस्तार से बताती है कि हर key क्या कर सकती है, क्या नहीं कर सकती, और Monero के cryptographic primitives इस जोड़ी को ऐसी क्षमता कैसे देते हैं जो Bitcoin का single-key मॉडल कभी हासिल नहीं कर सकता।
Monero दो Private Keys का इस्तेमाल क्यों करता है
Monero का account मॉडल CryptoNote से निकला है — 2013 का वह protocol जिसने cryptocurrency में ring signatures और one-time stealth addresses पेश किए। इन primitives को काम कराने के लिए wallet को दो बिल्कुल अलग काम करने पड़ते हैं: पूरे blockchain को scan करके अपने नाम पर आए outputs पहचानना, और उन outputs को खर्च करने की अनुमति देना। CryptoNote के लेखकों ने महसूस किया कि scanning की भूमिका और spending की भूमिका दो स्वतंत्र scalar values में बाँटी जा सकती है — दोनों एक 32-byte seed से निकलती हैं, मगर अपने सार्वजनिक प्रभाव में cryptographically असंबंधित रहती हैं।
नतीजा एक wallet पहचान है जो चार संख्याओं से बनी होती है — एक private spend key, एक private view key, और उनकी दो public counterparts — जो जुड़कर और base58-encoded होकर वह जाना-पहचाना 95-अक्षर वाला Monero address बनाते हैं। इस विभाजन के तीन ठोस फ़ायदे हैं:
- चयनात्मक पारदर्शिता: आप अपनी view key आयकर विभाग, exchange compliance टीम या किसी charity auditor को दे सकते हैं ताकि वे आने वाले funds की पुष्टि कर सकें — बिना उन्हें coins move करने की कोई शक्ति दिए।
- हल्के clients: mobile wallets और watch-only desktop nodes को बैलेंस दिखाने के लिए सिर्फ़ view key चाहिए, इसलिए spend key को किसी air-gapped मशीन पर cold storage में रखना रोज़मर्रा के इस्तेमाल के लिए व्यावहारिक हो जाता है।
- परतों में सुरक्षा: compromised view key transaction history उजागर करती है, मगर funds नहीं; चोरी हुए डिवाइस से रिकवरी अब एक financial नुक़सान नहीं, बल्कि एक privacy घटना बन जाती है।
Bitcoin के UTXO मॉडल में इनमें से कुछ भी third party पर भरोसा किए या zero-knowledge add-ons के बिना संभव नहीं। Monero इसे protocol में ही पकाता है, यही वजह है कि हर Monero wallet — आधिकारिक CLI से लेकर MoneroSwapper के hosted swap engine तक — दोनों keys को first-class objects के रूप में दिखाता है जिन्हें आप अलग-अलग export, import और audit कर सकते हैं।
Private View Key, गहराई से
Private view key एक 32-byte scalar है, जो monero-wallet-cli या Feather Wallet जैसे tools में 64 हेक्साडेसिमल अक्षरों के रूप में दिखती है। इसका एकमात्र cryptographic काम है हर उस transaction के sender और receiver के बीच shared secret की गणना करना जो wallet की हो सकती है। जब कोई आपको XMR भेजता है, sender आपकी public spend key, आपकी public view key और एक नई random transaction key का इस्तेमाल करके एक one-time stealth address बनाता है। नतीजे में निकला output network पर मौजूद हर पर्यवेक्षक को शोर जैसा दिखता है — सिवाय आपके, क्योंकि आपकी private view key आपको वही shared secret दोबारा बनाने और उस output को अपना मानने देती है।
View Key क्या कर सकती है
सिर्फ़ आपके public address और आपकी private view key के साथ, software chain को scan करके हर output से तीन जानकारियाँ decrypt कर सकता है: receiver का stealth address (साबित करता है कि output आपका है), राशि (RingCT commitment से decrypt होकर), और अगर कोई payment ID जुड़ा था तो वह भी। यह पूरी incoming transaction history बनाने के लिए काफ़ी है। दिल्ली या बेंगलुरु में बैठे व्यापारी इसका इस्तेमाल बिक्री पर नज़र रखने के लिए करते हैं, donation पेज अपनी view key publish करते हैं ताकि कोई भी real-time में कुल राशि सत्यापित कर सके, और tax software इसका उपयोग करके cost-basis रिपोर्ट बनाते हैं — बिना कभी spending अधिकार माँगे।
View Key क्या नहीं कर सकती
View key transaction sign नहीं कर सकती। यह key image नहीं बना सकती, यानी यह यह साबित नहीं कर सकती कि कोई output खर्च हो चुका है। view-only wallet में, बाहर जाने वाली transactions तब तक अदृश्य रहती हैं जब तक user offline spending wallet से एक signed key-image फ़ाइल import नहीं कर देता; उसके बाद बैलेंस अपने आप मेल खा जाता है। यह key separation का सबसे साफ़ प्रदर्शन है — view key पैसा आते देखती है, मगर उसके निकलते ही नज़र खो देती है, जब तक spend side key images share करके सहयोग न करे।
View Key से जुड़ी आम गलतियाँ
सबसे लगातार होने वाली ग़लती है view key को "restore wallet" फील्ड में paste करना जो असल में Mnemonic seed की उम्मीद कर रही होती है। Wallet इसे स्वीकार कर लेगा, ग़लत entropy से बिल्कुल अलग spend key बना देगा, और एक साफ़ मगर बेकार wallet पेश करेगा जो user के असली funds कभी नहीं देखेगा। दूसरी गलती है view key को किसी public पेज पर publish कर देना, यह समझे बिना कि यह स्थायी रूप से हर पिछली और आने वाली incoming transaction को एक वास्तविक पहचान से जोड़ देगी। View keys rotate नहीं होतीं; एक बार leak हुईं, तो हमेशा के लिए leak हो गईं। इन्हें ऐसे समझें जैसे आपके bank statement का read-only API token — auditors के लिए उपयोगी, मगर पीछा करने वालों के लिए विनाशकारी।
Private Spend Key, गहराई से
Private spend key दूसरी 32-byte scalar है, और यही वह है जो असल में coins को control करती है। इसी एक संख्या से wallet अपने पास मौजूद हर output के लिए key image निकालता है, हर CLSAG ring signature पर sign करता है, और वह Bulletproofs+ range proofs बनाता है जो दिखाते हैं कि राशियाँ ऋणात्मक नहीं हैं — बिना उन्हें उजागर किए। Spend key खोई, पैसा खोया। कोई recovery नहीं, कोई support डेस्क नहीं, कोई chain rollback नहीं।
Spend Key Key Images कैसे बनाती है
Wallet को मिले हर output के लिए Monero एक key image गणना करता है — एक deterministic hash जो output की one-time public key और wallet की private spend key, दोनों पर निर्भर करता है। चूँकि key image हर output के लिए अनोखी है मगर spend key के बिना बनाई नहीं जा सकती, यह Monero के double-spend रोकथाम तंत्र के रूप में काम करती है। जब कोई transaction broadcast होती है, validators जाँचते हैं कि उसकी कोई भी key image पहले chain पर नहीं आई है। चतुर बात यह है कि वही key image उस wallet तक वापस नहीं जोड़ी जा सकती जिसने उसे बनाया, क्योंकि ring signature असली signer को decoys के एक समूह के बीच छुपा देता है।
Spend Key और Mnemonic Seed
ज़्यादातर users कभी raw 64-hex spend key देखते ही नहीं। उन्हें दिखता है एक 25-शब्द Mnemonic seed (या नए wallets में 16-शब्द Polyseed) जो spend key के साथ-साथ एक checksum और birthday encode करता है। फिर view key spend key को Keccak-256 से hash करके और Ed25519 group order modulo से कम करके deterministically निकाली जाती है। यही derivation बताती है कि spend key (या उसके seed) का backup पूरे wallet को restore करने के लिए पर्याप्त है — view key अपने आप साथ निकल आती है।
Spend Key कभी share क्यों नहीं करनी
Spend key share करना कार्यात्मक रूप से किसी को आपका पूरा बैलेंस और आपकी पूरी transaction history एक साथ भेज देने के बराबर है। वे phishing साइटें जो "wallet verification key" या "full restore key" माँगती हैं, लगभग हमेशा spend key या seed के पीछे होती हैं। कोई भी वैध exchange, swap सेवा या audit फ़र्म कभी इसकी माँग नहीं करेगा। MoneroSwapper, उदाहरण के तौर पर, हर swap के लिए एक नया integrated address बनाता है और customer की spend key को कभी छूता तक नहीं; customer अपने ही wallet से deposit transaction पर sign करता है और broadcast करता है।
View Key बनाम Spend Key: साथ-साथ तुलना
नीचे दी गई तालिका व्यावहारिक अंतर निचोड़ कर रख देती है। इसे किसी भी value को किसी फील्ड, स्क्रीन या QR scanner में paste करने से पहले एक checklist की तरह इस्तेमाल करें।
| क्षमता | Private View Key | Private Spend Key |
|---|---|---|
| Incoming transactions देखना | हाँ | हाँ (derived view key के ज़रिये) |
| Outgoing transactions देखना | केवल imported key images के साथ | हाँ |
| राशि decrypt करना | हाँ | हाँ |
| Transaction पर sign और broadcast | नहीं | हाँ |
| Key images बनाना | नहीं | हाँ |
| दूसरी key निकालना | नहीं | हाँ (view key spend से निकलती है) |
| Auditor के साथ share करना सुरक्षित | हाँ | कभी नहीं |
| Leak होने पर जोखिम | Privacy खोई, funds नहीं | पूरी पूँजी खोई |
| Mnemonic seed में संगृहीत | Derived, संगृहीत नहीं | हाँ |
| Rotatable | नहीं | नहीं (नए wallet में funds हिलाने पड़ेंगे) |
"दूसरी key निकालना" वाली पंक्ति की असमरूपता पर ध्यान दें। Spend key view key बना सकती है, मगर इसके उल्टा नहीं। यही एकतरफ़ा संबंध view key को ऐसे संदर्भों में publish करने योग्य बनाता है जहाँ spend key विनाशकारी होगी।
View-Only Wallet कैसे बनाएँ, क़दम दर क़दम
इन keys के बारे में सोचने की सबसे आम वजह है watch-only wallet बनाना — उदाहरण के लिए, एक phone पर जो किसी air-gapped laptop पर रखे cold-storage बैलेंस की निगरानी करता है। यहाँ आधिकारिक monero-wallet-cli का इस्तेमाल करते हुए workflow है, हालाँकि Feather Wallet, Cake Wallet और MyMonero सभी GUI विकल्प देते हैं।
- Offline मशीन पर अपना पूरा wallet खोलें और prompt पर
viewkeyचलाएँ। 64-hex string कॉपी करें। फिरaddressचलाएँ और 95-अक्षर का primary address कॉपी करें। Spend key, seed या कुछ और export न करें। - दोनों strings को online device पर QR code या air-gapped USB से transfer करें। Spend key या seed को online मशीन पर कभी टाइप न करें।
- Online मशीन पर
monero-wallet-cli --generate-from-view-key <name>चलाएँ। पूछे जाने पर address और private view key paste करें। एक मज़बूत wallet password सेट करें। - उस chain height से wallet को sync होने दें जिस पर आपके funds पहली बार आए थे। आप incoming transactions को सही राशि के साथ आते देखेंगे। Outgoing transactions तब तक "(unknown sent)" दिखेंगी जब तक आप key images import नहीं करते।
- Outgoing balances मिलाने के लिए, समय-समय पर offline wallet पर
export_key_imagesचलाएँ और online परimport_key_images। इससे कोई spending शक्ति share नहीं होती — सिर्फ़ यह तथ्य कि कुछ outputs पहले ही खर्च हो चुके हैं।
View key इस सवाल का जवाब देती है कि "क्या आया?" Spend key इस सवाल का जवाब देती है कि "क्या जा सकता है?" अगर कोई सेवा आपसे दूसरा सवाल पूछती है, वहाँ से चले जाइए — कोई ईमानदार workflow इसकी माँग नहीं करता।
हर Key के लिए वास्तविक परिदृश्य
ठोस उदाहरण अंतर को पक्का करते हैं। एक छोटे open-source प्रोजेक्ट पर विचार कीजिए जो XMR दान स्वीकार करता है। Maintainers प्रोजेक्ट के transparency पेज पर अपना primary address और private view key publish कर देते हैं। कोई भी एक local view-only wallet चला सकता है, chain sync कर सकता है, और स्वतंत्र रूप से सत्यापित कर सकता है कि इस तिमाही में प्रोजेक्ट को कितना मिला। Maintainers spend key का विशेष नियंत्रण किसी hardware device पर रखते हैं, इसलिए न कोई दानदाता — और न ही प्रोजेक्ट छोड़ने वाला कोई भविष्य का maintainer — फंड को कभी ख़ाली नहीं कर सकता। यह क्लासिक donation-transparency पैटर्न है, और Monero Community Crowdfunding System वर्षों से ठीक यही इस्तेमाल कर रहा है।
एक अलग परिदृश्य: मुंबई की एक freelance पत्रकार, जो FEMA के तहत विदेशी आय रिपोर्टिंग नियमों में काम करती हैं, अपने tax advisor को दिखाना चाहती हैं कि उनकी सालाना XMR आय आयकर विभाग द्वारा निर्धारित रिपोर्टिंग सीमा से कम है। वे advisor के audit laptop पर अपने address और view key से एक view-only wallet बनाती हैं, उसे वर्तमान block तक sync होने देती हैं, और decrypted incoming राशियों का एक CSV export करती हैं। Advisor कुल देखता है; वे spending अधिकार रखती हैं। अगर रिश्ता ख़त्म होता है, वे funds को नए wallet में rotate कर देती हैं — मगर सिर्फ़ इसलिए कि वे साफ़ अलगाव चाहती हैं, इसलिए नहीं कि advisor कभी coins move कर सकता था।
तीसरा उदाहरण recovery से जुड़ा है। मान लीजिए किसी user का रोज़ इस्तेमाल होने वाला phone चोरी हो जाता है, और उस phone पर एक view-only wallet था जो किसी hardware-secured spend key से derive हुआ था। चोर को user की पूरी incoming transaction history मिल जाती है — एक वास्तविक privacy नुक़सान, ख़ासकर अगर user को पहचाने जा सकने वाले counterparties से बार-बार भुगतान मिलते हैं — मगर वह एक piconero तक नहीं छू सकता। User chain पर कुछ नहीं रद्द करता (Monero में revocation है ही नहीं) और इसके बजाय एक नए seed से derived एक नए address पर funds हिला देता है। पुरानी view key हमेशा के लिए उन transactions के लिए valid रहती है जो वह पहले ही देख चुकी थी, मगर नया wallet उसके लिए अदृश्य है।
तीनों परिदृश्यों में वही गुण लागू होता है: view key पैसा मिलने के ऐतिहासिक और वर्तमान सवालों का जवाब देती है; अकेली spend key इस सवाल का जवाब देती है कि पैसा आगे कहाँ जा सकता है। MoneroSwapper का swap flow इसी गुण पर टिकता है — customers ऐसे addresses पर XMR पाते हैं जिन पर उनका end-to-end नियंत्रण होता है, और किसी भी मोड़ पर platform ऐसी key नहीं माँगता जो उसे customer की ओर से खर्च करने दे।
FAQ
अगर किसी के पास सिर्फ़ मेरी view key है, क्या वह मेरा Monero चुरा सकता है?
नहीं। View key incoming transactions और राशियों में दृश्यता देती है, मगर यह signing, key-image generation या किसी भी ऐसी कार्रवाई की अनुमति नहीं देती जो funds हिलाए। Leaked view key एक privacy समस्या है — हर पिछली और भविष्य की जमा उसे रखने वाले को दिख जाएगी — मगर funds ख़ुद विशेष रूप से spend key के नियंत्रण में रहते हैं।
मेरा view-only wallet outgoing transactions क्यों नहीं देख पाता?
क्योंकि outgoing transactions key images मिलाकर पता चलती हैं, और key images केवल private spend key से बन सकती हैं। View-only wallet देखता है कि एक output मौजूद है, मगर यह नहीं बता सकता कि वह output बाद में खर्च हुआ है या नहीं। Spending wallet से एक signed key-image फ़ाइल import करना इस फ़ासले को पाटता है और बैलेंस मिला देता है।
क्या view key spend key से derive होती है, या वे स्वतंत्र हैं?
मानक Monero wallets में, view key को spend key से Keccak-256 से hash करके और परिणाम को Ed25519 group order modulo से कम करके deterministically derive किया जाता है। यही वजह है कि 25-शब्द mnemonic seed केवल spend key encode करता है — view key अपने आप साथ निकल आती है। कुछ उन्नत setups स्वतंत्र view keys का इस्तेमाल करते हैं, मगर हर consumer wallet derived रूप का प्रयोग करता है।
क्या मुझे दोनों keys का अलग-अलग backup लेना चाहिए?
Seed (या raw spend key) का backup पर्याप्त है, क्योंकि view key हमेशा उससे फिर से बनाई जा सकती है। हालाँकि, कई users view key की एक अलग प्रति किसी auditor के पहुँचने लायक जगह पर रखते हैं, ठीक इसलिए कि ऐसा करने से उनकी security स्थिति कमज़ोर नहीं होती। Seed को नकद की तरह और view key को read-only बैंक statement की तरह समझें।
अगर view key leak हो जाए तो क्या मैं उसे rotate कर सकता हूँ?
अकेले नहीं। View key गणितीय रूप से address से बंधी है, इसलिए उसे rotate करने का मतलब है एक नया wallet (नया seed, नई spend key, नया address) बनाना और funds को उस पार हिलाना। View-key leaks को उस wallet के जीवनकाल के लिए स्थायी privacy घटनाओं के रूप में योजना में रखें, और अगर exposure असहनीय हो जाए तो migration के लिए तैयार रहें।
क्या Ledger या Trezor जैसे hardware wallets spend key को अलग तरह से संभालते हैं?
हाँ। Monero app चलाने वाले Ledger या Trezor पर, spend key secure element को कभी नहीं छोड़ती। Host computer view key रखता है (ताकि वह chain scan कर सके) और unsigned transactions को device को भेजता है, जो उन्हें भीतर ही sign करता है। यह key separation का सबसे साफ़ भौतिक रूप है: view key वहाँ रहती है जहाँ सुविधा रहती है, और spend key वहाँ रहती है जहाँ सुरक्षा रहती है।
निष्कर्ष
View key और spend key एक ही रहस्य के दो हिस्से नहीं हैं — वे दो अलग रहस्य हैं जिनके दो अलग काम हैं, और protocol को इन्हें मिलाने से इनकार करने पर ही अपने सबसे उपयोगी गुण मिलते हैं। एक बार यह विभाजन समझ आ जाए, तो view-only wallets, audit workflows, donation पारदर्शिता और hardware-wallet वास्तुकला — सब कुछ चालाक हैक नहीं, बल्कि एक सोचे-समझे डिज़ाइन का स्वाभाविक नतीजा महसूस होने लगता है। अगर आप आज कोई नया wallet सेट कर रहे हैं, seed को offline लिखिए, ऐसे हर device के लिए view key निकालिए जिसे खर्च करने की ज़रूरत नहीं, और दोनों में से कोई value कभी किसी ऐसे फील्ड में paste मत कीजिए जिसे आप पूरी निश्चितता से पहचान न पाएँ। जब आप उस wallet के लिए XMR हासिल करने के लिए तैयार हों, MoneroSwapper प्रमुख assets से सीधे आपके नियंत्रण वाले address पर no-KYC swaps प्रदान करता है, और flow में किसी भी मोड़ पर किसी key के लिए कोई अनुरोध नहीं — और यह मार्गदर्शिका पढ़ने के बाद, यही वह व्यवहार है जिसकी आपको किसी भी इस्तेमाल लायक सेवा से उम्मीद करनी चाहिए।
🌍 इस भाषा में पढ़ें