BIP-44 Derivation Paths: वॉलेट कैसे एड्रेस जनरेट करते हैं
जब आप एक क्रिप्टोकरेंसी वॉलेट सेट अप करते हैं और यह एक seed phrase जनरेट करता है, तो उस एकल seed को दर्जनों विभिन्न blockchains में हजारों एड्रेस प्रोड्यूस करने की आवश्यकता होती है — प्रत्येक का अपना private key, public key और एड्रेस फॉर्मेट होता है। BIP-44 एक संगठनात्मक संरचना परिभाषित करता है जो यह संभव बनाता है: एकल root से निकाली गई keys का एक hierarchical tree, standardized path notation के साथ जो यह सुनिश्चित करता है कि वॉलेट interoperable रहें।
Derivation paths को समझना आवश्यक है उन सभी के लिए जिन्हें एक अलग वॉलेट में फंड recover करने, multi-coin portfolios को manage करने, या seed phrase restore करने के बाद "missing" balances को troubleshoot करने की आवश्यकता है।
कुंजी व्युत्पत्ति पदानुक्रम
BIP-32: आधार
BIP-44, BIP-32 (Hierarchical Deterministic Wallets) पर निर्मित है, जो एक एकल master key से key pairs का एक unlimited tree निकालने के लिए एक विधि परिभाषित करता है। BIP-32 ने दो मौलिक अवधारणाएं पेश कीं:
Child key derivation — किसी भी extended key (एक private या public key chain code के साथ मिलकर) से, आप विभिन्न indices पर child keys को derive कर सकते हैं। प्रत्येक child बदले में अपने स्वयं के children को derive कर सकता है, एक tree बना सकता है।
Hardened बनाम normal derivation — Normal derivation एक parent public key से child public keys को derive करने की अनुमति देता है (watch-only wallets के लिए उपयोगी)। Hardened derivation को parent private key की आवश्यकता है और branches के बीच stronger security isolation प्रदान करता है। Hardened indices को परंपरागत रूप से एक apostrophe के साथ लिखा जाता है (उदाहरण के लिए, 44')।
BIP-43: Purpose फील्ड
BIP-43 ने derivation tree के पहले स्तर को "purpose" को इंगित करने के लिए convention स्थापित किया — अनिवार्य रूप से BIP standard का पालन किया जा रहा है। BIP-44 purpose 44' का उपयोग करता है, BIP-49 49' का उपयोग करता है (SegWit-compatible P2SH addresses के लिए), BIP-84 84' का उपयोग करता है (native SegWit के लिए), और BIP-86 86' का उपयोग करता है (Taproot के लिए)।
BIP-44: पूर्ण पथ
BIP-44 एक five-level derivation path परिभाषित करता है:
m / purpose' / coin_type' / account' / change / address_index
प्रत्येक स्तर का एक विशिष्ट अर्थ है:
| स्तर | फील्ड | Hardened | विवरण |
|---|---|---|---|
| 1 | Purpose | हाँ (44') | Derivation standard को पहचानता है |
| 2 | Coin Type | हाँ | Cryptocurrency को पहचानता है |
| 3 | Account | हाँ | Funds को logical accounts में अलग करता है |
| 4 | Change | नहीं (0 या 1) | External (0) या internal change (1) |
| 5 | Address Index | नहीं (0, 1, 2...) | Sequential address number |
Purpose (44')
Purpose फील्ड BIP-44 standard derivation के लिए हमेशा 44' होता है। अन्य common values:
49'— BIP-49 (P2SH-wrapped SegWit)84'— BIP-84 (Native SegWit / Bech32)86'— BIP-86 (Taproot / P2TR)
ये विभिन्न address types को परिभाषित करते हैं और उनके संबंधित BIPs में समझाए गए हैं।
Coin Type
Coin type पहचानता है कि निकाली गई keys किस cryptocurrency से संबंधित हैं। Registered coin types में शामिल हैं:
| Coin | Coin Type | Path Prefix |
|---|---|---|
| Bitcoin | 0' | m/44'/0' |
| Bitcoin Testnet | 1' | m/44'/1' |
| Litecoin | 2' | m/44'/2' |
| Dogecoin | 3' | m/44'/3' |
| Ethereum | 60' | m/44'/60' |
| Ethereum Classic | 61' | m/44'/61' |
| Cosmos | 118' | m/44'/118' |
| Solana | 501' | m/44'/501' |
| Cardano | 1815' | m/44'/1815' |
| Polkadot | 354' | m/44'/354' |
Coin types की पूर्ण registry SLIP-44 में maintained है और इसमें 1,000 से अधिक entries हैं।
Account
Account level users को एक ही वॉलेट के भीतर separate logical accounts बनाने की अनुमति देता है, कई bank accounts रखने के समान। Account 0' default है:
m/44'/0'/0'— Bitcoin Account 0m/44'/0'/1'— Bitcoin Account 1m/44'/60'/0'— Ethereum Account 0
Accounts hardened derivation का उपयोग करते हैं, जिसका अर्थ है कि एक account के extended public key को जानने से दूसरे account की keys का पता नहीं चलता है। यह accounts के बीच privacy isolation प्रदान करता है।
Change
Change level के बीच अंतर करता है:
- 0 (External chain) — अन्य को payment प्राप्त करने के लिए दिए गए एड्रेस।
- 1 (Internal chain) — वॉलेट द्वारा internally change को अपने आप को वापस भेजने के लिए उपयोग किए जाने वाले एड्रेस।
Bitcoin के UTXO model में, जब आप एक transaction output spend करते हैं, तो पूरे output को consume किया जाना चाहिए। यदि आप एक 1 BTC output से 0.5 BTC भेज रहे हैं, तो शेष 0.5 BTC को एक change address भेजा जाता है जो आपके वॉलेट द्वारा नियंत्रित होता है। Change chain इन एड्रेसों को संगठनात्मक और privacy उद्देश्यों के लिए receiving addresses से अलग रखता है।
Ethereum और अन्य account-based blockchains change chain का उसी तरह उपयोग नहीं करते हैं, क्योंकि उनके पास UTXO model नहीं है। Ethereum wallets आमतौर पर केवल external chain (change = 0) का उपयोग करते हैं।
Address Index
Address index एक chain के भीतर एड्रेस की sequential संख्या है। Wallets हर बार जब एक नया एड्रेस जनरेट किया जाता है तो इस counter को increment करते हैं:
m/44'/0'/0'/0/0— पहला receiving एड्रेसm/44'/0'/0'/0/1— दूसरा receiving एड्रेसm/44'/0'/0'/0/2— तीसरा receiving एड्रेसm/44'/0'/0'/1/0— पहला change एड्रेसm/44'/0'/0'/1/1— दूसरा change एड्रेस
प्रमुख क्रिप्टोकरेंसी के लिए Derivation Paths
Bitcoin
Bitcoin विभिन्न derivation paths का उपयोग करता है जो विभिन्न address types से मेल खाते हैं:
| Standard | Path | Address Type | Prefix | उदाहरण |
|---|---|---|---|---|
| BIP-44 | m/44'/0'/0' | Legacy (P2PKH) | 1... | 1A1zP1eP5QGefi2DMPTfTL5SLmv7DivfNa |
| BIP-49 | m/49'/0'/0' | SegWit-compat (P2SH-P2WPKH) | 3... | 3J98t1WpEZ73CNmQviecrnyiWrnqRhWNLy |
| BIP-84 | m/84'/0'/0' | Native SegWit (P2WPKH) | bc1q... | bc1qw508d6qejxtdg4y5r3zarvary0c5xw7kv8f3t4 |
| BIP-86 | m/86'/0'/0' | Taproot (P2TR) | bc1p... | bc1p5d7rjq7g6rdk2yhzks9smlaqtedr4dekq08ge8ztwac72sfr9rusxg3297 |
Recovery के लिए महत्वपूर्ण: यदि आप एक seed phrase को एक नए वॉलेट में restore करते हैं और अपना balance नहीं देखते हैं, तो वॉलेट एक अलग derivation path को scan कर रहा हो सकता है जिसका उपयोग आपके मूल वॉलेट ने किया था। Legacy, SegWit और Taproot address types के बीच toggle करने का प्रयास करें, या मैन्युअल रूप से derivation path को specify करें।
Ethereum
Ethereum आमतौर पर एकल derivation path का उपयोग करता है:
m/44'/60'/0'/0/0 — पहला account
m/44'/60'/0'/0/1 — दूसरा account (कुछ wallets)
हालांकि, कुछ wallets (जैसे Ledger Live) account level पर कई accounts को derive करते हैं:
m/44'/60'/0'/0/0 — Account 0
m/44'/60'/1'/0/0 — Account 1
m/44'/60'/2'/0/0 — Account 2
जबकि अन्य (जैसे MetaMask) address index को increment करते हैं:
m/44'/60'/0'/0/0 — Account 1
m/44'/60'/0'/0/1 — Account 2
m/44'/60'/0'/0/2 — Account 3
यह inconsistency recovery के दौरान भ्रम पैदा कर सकता है। हमेशा नोट करें कि आपके seed phrase को किस wallet software ने बनाया है।
Solana
Solana Ed25519 (secp256k1 से एक अलग elliptic curve) का उपयोग करता है path के साथ:
m/44'/501'/0' — Phantom, Solflare
m/44'/501'/0'/0' — कुछ implementations
Cardano
Cardano एक अलग key derivation scheme (Ed25519-BIP32 / CIP-1852) का उपयोग करता है path के साथ:
m/1852'/1815'/0'/0/0 — पहला payment एड्रेस
m/1852'/1815'/0'/2/0 — पहली staking key
Purpose field 44' के बजाय 1852' (CIP-1852, Ada Lovelace के जन्म वर्ष के बाद नामित) पर ध्यान दें।
Hardened बनाम Normal Derivation
Hardened और normal derivation के बीच अंतर को समझना security के लिए महत्वपूर्ण है।
Normal (Non-Hardened) Derivation
- Indices 0 से 2^31 - 1 का उपयोग करता है।
- Child public keys को parent extended public key से बिना parent private key के derive किया जा सकता है।
- लाभ: Watch-only wallets को सक्षम बनाता है (उदाहरण के लिए, एक server केवल xpub का उपयोग करके नए receiving addresses जनरेट कर सकता है, कभी private keys hold किए बिना)।
- जोखिम: यदि कोई attacker को child private key AND parent extended public key दोनों मिलते हैं, तो वे parent private key और सभी sibling private keys की गणना कर सकते हैं।
Hardened Derivation
- Indices 2^31 से 2^32 - 1 का उपयोग करता है (0' से 2^31 - 1' के रूप में लिखा जाता है)।
- Child keys को derive करने के लिए parent extended private key की आवश्यकता है।
- लाभ: एक child key को compromise करने से parent या siblings को compromise नहीं करता है।
- जोखिम: अकेले parent extended public key से child public keys को derive नहीं कर सकते हैं (इस level पर no watch-only functionality)।
BIP-44 पहले तीन Levels के लिए Hardened Derivation का उपयोग क्यों करता है
Purpose, coin type और account सभी hardened (44'/0'/0') हैं क्योंकि:
- एक एड्रेस private key (non-hardened level 5 पर) को compromise करने से account को compromise नहीं करना चाहिए।
- Accounts एक दूसरे से isolated होने चाहिए।
- विभिन्न coins एक दूसरे से isolated होने चाहिए।
Change और address index levels non-hardened (0/0) हैं ताकि watch-only wallets मास्टर private key के बिना receiving addresses जनरेट कर सकें।
Gap Limit
Wallets एक infinite संख्या में एड्रेस को scan नहीं करते हैं। BIP-44 specification एक "gap limit" की अवधारणा introduce करती है — consecutive unused addresses की संख्या जिसे एक wallet scan करेगा stopping से पहले। Standard gap limit 20 है।
यदि आपने addresses 0 से 25 generate किए हैं, लेकिन केवल addresses 0, 5, 10 और 25 को कभी funds प्राप्त हुए हैं, तो wallet करेगा:
- Address 0 को scan करें — transactions हैं, जारी रखें।
- Addresses 1–4 को scan करें — unused हैं, लेकिन gap limit के भीतर हैं।
- Address 5 को scan करें — transactions हैं, gap counter reset करें।
- जब तक यह 20 consecutive addresses को बिना transactions के encounter न करे तब तक जारी रखें।
समस्या: यदि आपने gap limit से परे कई addresses generate किए हैं (merchant payment processors के साथ common), तो wallet restoration सभी funds को नहीं पा सकता है। आप recovery के दौरान wallet settings में gap limit को increase करने की आवश्यकता हो सकती है।
SafeSeed Key Derivation Tool का उपयोग करके BIP-44 derivation paths को interactively explore करें। एक seed phrase दर्ज करें (एक test phrase का उपयोग करें, आपका real नहीं) और देखें कि कैसे विभिन्न derivation paths अलग-अलग coins के लिए अलग एड्रेस produce करते हैं। सभी processing आपके browser में होती है।
Extended Keys: xpub, ypub, zpub
Extended keys key material को derivation path के बारे में metadata के साथ encode करते हैं:
| Prefix | Standard | Address Type | Network |
|---|---|---|---|
| xpub / xprv | BIP-44 | Legacy (P2PKH) | Mainnet |
| ypub / yprv | BIP-49 | SegWit-compat (P2SH-P2WPKH) | Mainnet |
| zpub / zprv | BIP-84 | Native SegWit (P2WPKH) | Mainnet |
| tpub / tprv | BIP-44 | Legacy (P2PKH) | Testnet |
Prefix wallet software को बताता है कि कौन से address type को derive करना है। यदि आप एक xpub को export करते हैं और इसे एक wallet में import करते हैं जो zpub की अपेक्षा करता है, तो आप अलग (incorrect) एड्रेस देखेंगे।
Extended Public Key Privacy Warning
एक xpub (या ypub/zpub) को साझा करने से recipient को अनुमति देता है:
- सभी past और future receiving addresses को derive करने के लिए।
- आपकी complete transaction history और balance को track करने के लिए।
- आपके एड्रेस को link करने के लिए, प्रति transaction एक नया एड्रेस का उपयोग करने के privacy लाभों को नष्ट करते हुए।
Extended public keys को कभी share न करें सिवाय उन parties के साथ जिन पर आप अपनी financial privacy के साथ पूरी तरह विश्वास करते हैं (उदाहरण के लिए, आपका accountant, आपके अपने server पर एक watch-only wallet)।
सामान्य Derivation Path समस्याएं
"मैंने अपना seed phrase restore किया है लेकिन मेरा balance zero दिखाता है"
यह सबसे common derivation path issue है। संभावित कारण:
- गलत एड्रेस प्रकार — आपने SegWit addresses (BIP-84,
m/84'/0'/0') का उपयोग किया है लेकिन नया wallet Legacy paths (BIP-44,m/44'/0'/0') को scan कर रहा है। एड्रेस प्रकारों को switch करें। - गलत coin type — कुछ wallets ने पहले implementations में सभी coins के लिए coin type 0 का उपयोग किया है।
- गलत account — आपने account 1 या उच्चतर का उपयोग किया हो सकता है।
- Gap limit — आपके used addresses default gap limit 20 से परे थे।
- Custom derivation path — कुछ wallets non-standard paths का उपयोग करते हैं।
"मेरे दो wallets एक ही seed phrase से अलग एड्रेस दिखाते हैं"
यदि दो wallets एक ही seed phrase से अलग एड्रेस generate करते हैं, तो वे विभिन्न derivation paths या एड्रेस प्रकारों का उपयोग कर रहे हैं। दोनों wallets में derivation settings को check करें।
Recovery Checklist
जब seed phrase से एक wallet को restore किया जाए:
- Verify करें कि wallet BIP-39 को support करता है।
- सही एड्रेस प्रकार (Legacy, SegWit या Taproot) को select करें।
- Check करें कि derivation path मूल wallet से matches करता है।
- यदि आपने कई addresses का उपयोग किया है तो gap limit को increase करें।
- सभी accounts को check करें (केवल account 0 नहीं) यदि आपने कई accounts create किए हैं।
उन्नत: Custom Derivation Paths
कुछ advanced use cases के लिए custom derivation paths की आवश्यकता है:
- Multi-signature setups — BIP-48 multisig wallets के लिए derivation paths define करता है:
m/48'/0'/0'/2'(native SegWit multisig के लिए)। - Lightning Network — कुछ Lightning implementations channel keys के लिए custom derivation paths का उपयोग करते हैं।
- Privacy wallets — Wasabi और अन्य privacy-focused wallets विशिष्ट paths का उपयोग कर सकते हैं।
हमेशा उन derivation paths को document करें जिनका आप उपयोग करते हैं। यदि आप exact path को reconstruct नहीं कर सकते हैं, तो आप funds को recover नहीं कर सकते हैं।
FAQ
क्रिप्टोकरेंसी में derivation path क्या है?
एक derivation path एक structured notation है जो यह specify करता है कि एक hierarchical deterministic (HD) wallet में एक master seed से एक विशेष key या एड्रेस को कैसे derive किया जाए। यह format m/purpose'/coin_type'/account'/change/address_index का अनुसरण करता है, जहां प्रत्येक स्तर derivation tree में एक विशिष्ट key तक narrow down करता है।
विभिन्न क्रिप्टोकरेंसी विभिन्न coin types का उपयोग क्यों करते हैं?
विभिन्न coin types सुनिश्चित करते हैं कि एक ही seed phrase प्रत्येक blockchain के लिए अलग, unrelated keys produce करता है। यह accidental cross-chain interference को रोकता है और यह सुनिश्चित करता है कि एक chain पर keys को compromise करने से दूसरे chain पर keys को प्रभावित नहीं करता है।
क्या मैं Bitcoin और Ethereum दोनों के लिए एक ही seed phrase का उपयोग कर सकता हूँ?
हाँ। एक ही BIP-39 seed phrase Bitcoin और Ethereum दोनों (और कई अन्य cryptocurrencies) के लिए keys को derive कर सकता है। वे विभिन्न derivation paths का उपयोग करते हैं — Bitcoin m/44'/0'/0' पर और Ethereum m/44'/60'/0' पर — इसलिए निकाली गई keys और एड्रेस पूरी तरह से independent हैं।
Derivation paths में apostrophe (') का मतलब क्या है?
Apostrophe hardened derivation को indicate करता है। Hardened derivation को parent private key की आवश्यकता है और stronger security isolation प्रदान करता है: एक child key को compromise करने से parent या sibling keys का पता नहीं चलता है। Non-hardened levels (apostrophe के बिना) एक parent public key से child public key derivation को allow करते हैं।
मेरे seed phrase को restore करने के बाद मेरे वॉलेट में zero balance क्यों है?
सबसे common कारण एक derivation path mismatch है। आपके original wallet ने एक अलग एड्रेस प्रकार (Legacy बनाम SegWit बनाम Taproot) का उपयोग किया हो सकता है, जिनमें से प्रत्येक एक अलग derivation path का उपयोग करता है। Recovery wallet में एड्रेस प्रकारों को switch करने का प्रयास करें, या मैन्युअल रूप से अपने original wallet द्वारा उपयोग किए गए derivation path को specify करें।
Gap limit क्या है और यह क्यों महत्वपूर्ण है?
Gap limit consecutive unused addresses की संख्या है जिसे एक wallet stopping से पहले scan करता है। BIP-44 standard इसे 20 पर set करता है। यदि आपने कई addresses generate किए हैं (उदाहरण के लिए, एक merchant payments को accept करने के लिए), तो कुछ funded addresses gap limit से परे हो सकते हैं और recovery के दौरान invisible हो सकते हैं। Gap limit को wallet settings में increase करें उन्हें खोजने के लिए।
क्या सभी wallets BIP-44 का उपयोग करते हैं?
अधिकांश modern wallets BIP-44 या इसके successors (BIP-49, BIP-84, BIP-86) को support करते हैं। हालांकि, कुछ wallets proprietary derivation paths का उपयोग करते हैं। Electrum, उदाहरण के लिए, अपना स्वयं का mnemonic और derivation scheme का उपयोग करता है। हमेशा document करें कि आपके seed phrase को किस wallet ने create किया है और यह कौन से derivation paths का उपयोग करता है।