BIP-44 Türetim Yolları: Cüzdanlar Adresleri Nasıl Üretir?
Bir kripto para cüzdanı kurup bir seed phrase oluşturduğunuzda, bu tek seed'in onlarca farklı blockchain üzerinde binlerce adres üretmesi gerekir; her birinin kendi private key, public key ve adres formatı vardır. BIP-44 bunu mümkün kılan organizasyon yapısını tanımlar: tek bir kökten türetilen hiyerarşik bir anahtar ağacı ve cüzdanların birlikte çalışabilir kalmasını sağlayan standart bir yol gösterimi.
Türetim yollarını anlamak; varlıklarını farklı bir cüzdanda kurtarması gereken, çoklu coin portföyü yöneten veya bir seed phrase geri yüklendikten sonra görünen "kayıp" bakiyeleri çözmesi gereken herkes için kritiktir.
Anahtar Türetim Hiyerarşisi
BIP-32: Temel
BIP-44, BIP-32 (Hierarchical Deterministic Wallets) üzerine kuruludur; BIP-32 tek bir master key'den sınırsız bir key pair ağacı türetme yöntemini tanımlar. BIP-32 iki temel kavram sundu:
Child key türetimi — Herhangi bir extended key'den (chain code ile birleştirilmiş bir private veya public key) farklı indekslerde child key'ler türetebilirsiniz. Her child kendi child'larını türeterek bir ağaç oluşturabilir.
Hardened ve normal türetim — Normal türetim, parent public key'den child public key türetilmesine izin verir (watch-only cüzdanlar için kullanışlıdır). Hardened türetim parent private key gerektirir ve dallar arasında daha güçlü güvenlik izolasyonu sağlar. Hardened indeksler geleneksel olarak kesme işareti ile yazılır (ör. 44').
BIP-43: Purpose Alanı
BIP-43, türetim ağacının ilk seviyesinin "purpose" değerini, yani takip edilen BIP standardını belirtmesi kuralını getirdi. BIP-44 44' purpose kullanır, BIP-49 49' kullanır (SegWit uyumlu P2SH adresleri için), BIP-84 84' kullanır (native SegWit), BIP-86 ise 86' kullanır (Taproot).
BIP-44: Tam Yol
BIP-44 beş seviyeli bir türetim yolu tanımlar:
m / purpose' / coin_type' / account' / change / address_index
Her seviyenin belirli bir anlamı vardır:
| Seviye | Alan | Hardened | Açıklama |
|---|---|---|---|
| 1 | Purpose | Evet (44') | Türetim standardını belirtir |
| 2 | Coin Type | Evet | Kripto parayı belirtir |
| 3 | Account | Evet | Fonları mantıksal hesaplara ayırır |
| 4 | Change | Hayır (0 veya 1) | Dış (0) veya iç change (1) |
| 5 | Address Index | Hayır (0, 1, 2...) | Sıralı adres numarası |
Purpose (44')
Purpose alanı BIP-44 standart türetimi için her zaman 44' olur. Diğer yaygın değerler:
49'— BIP-49 (P2SH-wrapped SegWit)84'— BIP-84 (Native SegWit / Bech32)86'— BIP-86 (Taproot / P2TR)
Bunlar farklı address types tanımlar ve ilgili BIP'lerde açıklanır.
Coin Type
Coin type, türetilen anahtarların hangi kripto paraya ait olduğunu belirtir. Kayıtlı coin type örnekleri:
| Coin | Coin Type | Yol Öneki |
|---|---|---|
| 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 type'ların tam kaydı SLIP-44 içinde tutulur ve 1.000'den fazla giriş içerir.
Account
Account seviyesi, aynı cüzdan içinde ayrı mantıksal hesaplar oluşturmanıza izin verir; birden çok banka hesabı kullanmaya benzer. Varsayılan hesap 0' değeridir:
m/44'/0'/0'— Bitcoin Account 0m/44'/0'/1'— Bitcoin Account 1m/44'/60'/0'— Ethereum Account 0
Hesaplar hardened türetim kullanır; bu da bir hesabın extended public key'ini bilmenin başka bir hesabın anahtarlarını açığa çıkarmayacağı anlamına gelir. Bu, hesaplar arasında gizlilik izolasyonu sağlar.
Change
Change seviyesi şu ayrımı yapar:
- 0 (External chain) — Ödeme almak için başkalarıyla paylaşılan adresler.
- 1 (Internal chain) — Cüzdanın change'i kendinize döndürmek için dahili kullandığı adresler.
Bitcoin'in UTXO modelinde, bir transaction output harcadığınızda output'un tamamı tüketilmelidir. 1 BTC'lik bir output'tan 0.5 BTC gönderiyorsanız kalan 0.5 BTC, cüzdanınızın kontrol ettiği bir change adresine gider. Change chain, organizasyon ve gizlilik için bu adresleri alım adreslerinden ayrı tutar.
Ethereum ve diğer account tabanlı blockchain'ler UTXO modeline sahip olmadıkları için change chain'i aynı şekilde kullanmaz. Ethereum cüzdanları genellikle yalnızca external chain kullanır (change = 0).
Address Index
Address index, bir chain içindeki adresin sıralı numarasıdır. Cüzdanlar her yeni adres üretildiğinde bu sayacı artırır:
m/44'/0'/0'/0/0— İlk alım adresim/44'/0'/0'/0/1— İkinci alım adresim/44'/0'/0'/0/2— Üçüncü alım adresim/44'/0'/0'/1/0— İlk change adresim/44'/0'/0'/1/1— İkinci change adresi
Büyük Kripto Paralar İçin Türetim Yolları
Bitcoin
Bitcoin, farklı address types ile eşleşen birden fazla türetim yolu kullanır:
| Standard | Yol | Adres Türü | Önek | Örnek |
|---|---|---|---|---|
| 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 |
Kurtarma için önemli: Bir seed phrase'i yeni bir cüzdanda geri yüklediğinizde bakiyenizi göremiyorsanız, cüzdan orijinal cüzdanınızdan farklı bir türetim yolunu tarıyor olabilir. Legacy, SegWit ve Taproot adres türleri arasında geçiş yapmayı deneyin veya türetim yolunu manuel belirtin.
Ethereum
Ethereum genellikle tek bir türetim yolu kullanır:
m/44'/60'/0'/0/0 — İlk hesap
m/44'/60'/0'/0/1 — İkinci hesap (bazı cüzdanlar)
Ancak bazı cüzdanlar (Ledger Live gibi) birden fazla hesabı account seviyesinde türetir:
m/44'/60'/0'/0/0 — Hesap 0
m/44'/60'/1'/0/0 — Hesap 1
m/44'/60'/2'/0/0 — Hesap 2
Diğerleri (MetaMask gibi) ise address index'i artırır:
m/44'/60'/0'/0/0 — Hesap 1
m/44'/60'/0'/0/1 — Hesap 2
m/44'/60'/0'/0/2 — Hesap 3
Bu tutarsızlık kurtarma sırasında karışıklığa yol açabilir. Seed phrase'inizi hangi cüzdan yazılımının oluşturduğunu her zaman not edin.
Solana
Solana, şu yol ile Ed25519 (secp256k1'den farklı bir eliptik eğri) kullanır:
m/44'/501'/0' — Phantom, Solflare
m/44'/501'/0'/0' — Bazı implementasyonlar
Cardano
Cardano, şu yol ile farklı bir anahtar türetim şeması (Ed25519-BIP32 / CIP-1852) kullanır:
m/1852'/1815'/0'/0/0 — İlk ödeme adresi
m/1852'/1815'/0'/2/0 — İlk staking key
44' yerine 1852' (CIP-1852, Ada Lovelace'in doğum yılına atıfla adlandırılmıştır) purpose alanına dikkat edin.
Hardened ve Normal Türetim
Güvenlik açısından hardened ve normal türetim arasındaki farkı anlamak kritiktir.
Normal (Non-Hardened) Türetim
- 0 ile 2^31 - 1 arasındaki indeksleri kullanır.
- Parent private key olmadan, parent extended public key'den child public key'ler türetilebilir.
- Avantaj: Watch-only cüzdanları mümkün kılar (ör. bir sunucu private key tutmadan yalnızca xpub ile yeni alım adresleri üretebilir).
- Risk: Bir saldırgan hem bir child private key'i hem de parent extended public key'i ele geçirirse, parent private key'i ve tüm sibling private key'leri hesaplayabilir.
Hardened Türetim
- 2^31 ile 2^32 - 1 arasındaki indeksleri kullanır (
0'ile2^31 - 1'şeklinde yazılır). - Child key türetimi için parent extended private key gerekir.
- Avantaj: Bir child key'in ele geçirilmesi parent veya sibling'leri tehlikeye atmaz.
- Risk: Yalnızca parent extended public key ile child public key türetilemez (bu seviyede watch-only işlevi yoktur).
BIP-44 Neden İlk Üç Seviyede Hardened Türetim Kullanır
Purpose, coin type ve account seviyeleri hardened'dır (44'/0'/0'), çünkü:
- Bir adres private key'inin (non-hardened 5. seviye) ele geçirilmesi hesabı tehlikeye atmamalıdır.
- Hesaplar birbirinden izole olmalıdır.
- Farklı coin'ler birbirinden izole olmalıdır.
Change ve address index seviyeleri, watch-only cüzdanların master private key olmadan alım adresi üretebilmesi için non-hardened'dır (0/0).
Gap Limit
Cüzdanlar sonsuz sayıda adres taramaz. BIP-44 spesifikasyonu "gap limit" kavramını getirir: cüzdanın durmadan önce tarayacağı art arda kullanılmamış adres sayısı. Standart gap limit 20'dir.
0'dan 25'e kadar adres ürettiğinizi, fakat sadece 0, 5, 10 ve 25'in fon aldığını varsayalım; cüzdan:
- Adres 0'ı tarar — transaction var, devam eder.
- Adres 1–4'ü tarar — kullanılmamış, ama gap limit içinde.
- Adres 5'i tarar — transaction var, gap sayacı sıfırlanır.
- Art arda transaction olmayan 20 adresle karşılaşana kadar devam eder.
Sorun: Gap limit'in çok ötesinde çok sayıda adres ürettiyseniz (merchant ödeme işlemcilerinde yaygındır), cüzdan geri yükleme tüm fonlarınızı bulamayabilir. Kurtarma sırasında cüzdan ayarlarından gap limit'i artırmanız gerekebilir.
BIP-44 türetim yollarını etkileşimli olarak incelemek için SafeSeed Key Derivation Tool kullanın. Bir seed phrase girin (gerçek olanı değil, test ifadesi kullanın) ve farklı türetim yollarının farklı coin'ler için nasıl farklı adresler ürettiğini görün. Tüm işlem tarayıcınızda gerçekleşir.
Extended Keys: xpub, ypub, zpub
Extended key'ler, anahtar verisini türetim yoluna ilişkin metadata ile birlikte kodlar:
| Prefix | Standard | Adres Türü | Ağ |
|---|---|---|---|
| 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 |
Önek, cüzdan yazılımına hangi adres türünü türeteceğini söyler. Bir xpub dışa aktarıp zpub bekleyen bir cüzdana içe aktarırsanız farklı (yanlış) adresler görürsünüz.
Extended Public Key Gizlilik Uyarısı
Bir xpub (veya ypub/zpub) paylaşmak, alıcıya şunları yapma imkanı verir:
- Geçmiş ve gelecekteki tüm alım adreslerini türetmek.
- Tüm işlem geçmişinizi ve bakiyenizi izlemek.
- Adreslerinizi birbirine bağlayarak işlem başına yeni adres kullanmanın gizlilik faydasını yok etmek.
Extended public key'leri, finansal gizliliğinize tamamen güvendiğiniz taraflar dışında kimseyle paylaşmayın (ör. muhasebeciniz veya kendi sunucunuzdaki bir watch-only cüzdan).
Yaygın Türetim Yolu Sorunları
"Seed phrase'imi geri yükledim ama bakiyem sıfır görünüyor"
Bu en yaygın türetim yolu problemidir. Olası nedenler:
- Yanlış adres türü — SegWit adresleri kullandınız (BIP-84,
m/84'/0'/0') ama yeni cüzdan Legacy yolları tarıyor (BIP-44,m/44'/0'/0'). Adres türünü değiştirin. - Yanlış coin type — Bazı cüzdanlar eski implementasyonlarda tüm coin'ler için coin type 0 kullanıyordu.
- Yanlış account — Account 1 veya daha üstünü kullanmış olabilirsiniz.
- Gap limit — Kullandığınız adresler varsayılan 20 gap limit'inin ötesindeydi.
- Özel türetim yolu — Bazı cüzdanlar standart dışı yollar kullanır.
"Aynı seed phrase ile iki cüzdanım farklı adres gösteriyor"
İki cüzdan aynı seed phrase'den farklı adres üretiyorsa, farklı türetim yolları veya adres türleri kullanıyorlardır. Her iki cüzdandaki türetim ayarlarını kontrol edin.
Kurtarma Kontrol Listesi
Bir cüzdanı seed phrase'den geri yüklerken:
- Cüzdanın BIP-39 desteklediğini doğrulayın.
- Doğru adres türünü seçin (Legacy, SegWit veya Taproot).
- Türetim yolunun orijinal cüzdanla eşleştiğini kontrol edin.
- Çok sayıda adres kullandıysanız gap limit'i artırın.
- Birden çok hesap oluşturduysanız tüm hesapları kontrol edin (yalnızca account 0 değil).
İleri Seviye: Özel Türetim Yolları
Bazı ileri seviye kullanım senaryoları özel türetim yolları gerektirir:
- Multi-signature kurulumları — BIP-48, multisig cüzdanlar için türetim yollarını tanımlar:
m/48'/0'/0'/2'(native SegWit multisig için). - Lightning Network — Bazı Lightning implementasyonları channel key'ler için özel türetim yolları kullanır.
- Gizlilik cüzdanları — Wasabi ve diğer gizlilik odaklı cüzdanlar belirli yollar kullanabilir.
Kullandığınız türetim yollarını her zaman belgelendirin. Tam yolu yeniden oluşturamıyorsanız fonları kurtaramazsınız.
SSS
Kripto parada türetim yolu nedir?
Türetim yolu, hiyerarşik deterministik (HD) cüzdanda bir master seed'den belirli bir anahtarın veya adresin nasıl türetileceğini belirten yapılandırılmış bir gösterimdir. m/purpose'/coin_type'/account'/change/address_index biçimini izler; her seviye türetim ağacında daha spesifik bir anahtara iner.
Farklı kripto paralar neden farklı coin type kullanır?
Farklı coin type değerleri, aynı seed phrase'in her blockchain için ayrı ve ilişkisiz anahtarlar üretmesini sağlar. Bu, zincirler arası yanlış etkileşimi önler ve bir zincirde anahtarların ele geçirilmesinin diğer zincirleri etkilememesini sağlar.
Bitcoin ve Ethereum için aynı seed phrase'i kullanabilir miyim?
Evet. Aynı BIP-39 seed phrase hem Bitcoin hem Ethereum (ve birçok başka kripto para) için anahtar türetebilir. Farklı türetim yolları kullanırlar: Bitcoin m/44'/0'/0', Ethereum m/44'/60'/0'; bu nedenle türetilen anahtarlar ve adresler tamamen bağımsızdır.
Türetim yollarındaki kesme işareti (') ne anlama gelir?
Kesme işareti hardened türetimi gösterir. Hardened türetim parent private key gerektirir ve daha güçlü güvenlik izolasyonu sağlar: bir child key'in ele geçirilmesi parent veya sibling key'leri açığa çıkarmaz. Non-hardened seviyeler (kesme işareti olmayanlar), parent public key'den child public key türetimine izin verir.
Seed phrase geri yükledikten sonra cüzdanım neden sıfır bakiye gösteriyor?
En yaygın neden türetim yolu uyumsuzluğudur. Orijinal cüzdanınız farklı bir adres türü kullanmış olabilir (Legacy vs. SegWit vs. Taproot) ve her biri farklı türetim yolu kullanır. Kurtarma cüzdanında adres türünü değiştirin veya orijinal cüzdanın kullandığı türetim yolunu manuel belirtin.
Gap limit nedir ve neden önemlidir?
Gap limit, cüzdanın daha fazla adres kullanılmadığını varsaymadan önce taradığı art arda kullanılmamış adres sayısıdır. BIP-44 standardı bunu 20 olarak belirler. Çok sayıda adres ürettiyseniz (ör. ödeme kabul eden bir merchant için), fonlanmış bazı adresler gap limit'in ötesinde kalabilir ve kurtarma sırasında görünmeyebilir. Bulmak için cüzdan ayarlarında gap limit'i artırın.
Tüm cüzdanlar BIP-44 kullanır mı?
Modern cüzdanların çoğu BIP-44 veya devam standartlarını (BIP-49, BIP-84, BIP-86) destekler. Ancak bazı cüzdanlar özel türetim yolları kullanır. Örneğin Electrum kendi mnemonic ve türetim şemasını kullanır. Seed phrase'inizi hangi cüzdanın oluşturduğunu ve hangi türetim yollarını kullandığını mutlaka belgelendirin.