Fundamentals ·

HD Cüzdanlar ve Türetme Yolları (BIP44)


Bir kripto para cüzdanı kurup 12 kelimelik tohum ifadesi aldığınızda, bu tek yedek size cüzdanın oluşturacağı her hesaba erişim verir --- Bitcoin, Ethereum, Solana ve desteklenen diğer tüm zincirlerde. Bunu mümkün kılan mekanizmaya HD cüzdan denir ve kullandığı adres sistemi türetme yolları tarafından yönetilir.

Bu rehber, HD cüzdanların tek bir tohumdan nasıl sınırsız anahtar ürettiğini, m/44'/60'/0'/0/0 gibi bir türetme yolunun gerçekte ne anlama geldiğini ve cüzdanlar veya blokzincirler arasında geçiş yaparken doğru yolun neden önemli olduğunu açıklar.

HD Cüzdan Nedir?

HD, Hiyerarşik Deterministik (Hierarchical Deterministic) anlamına gelir. Terim, 2012'de yayınlanan ve tek bir kökten kriptografik anahtar çiftleri ağacının nasıl türetileceğini tanımlayan BIP32 spesifikasyonundan gelir.

Hiyerarşik, anahtarların ağaç yapısında düzenlendiği anlamına gelir --- bir üst anahtar alt anahtarlar üretebilir ve bu alt anahtarlar da torun anahtarlar üretebilir. Ağaç gerektiği kadar derin dallanabilir.

Deterministik, sürecin tekrarlanabilir olduğu anlamına gelir. Aynı kök (ana tohum) verildiğinde, standarda uyan her cüzdanda her seferinde aynı anahtar ağacı üretilir.

HD cüzdanlardan önce, her yeni adres ayrı bir rastgele özel anahtarın üretilmesini ve yedeklenmesini gerektiriyordu. 100 adres oluşturduysanız, 100 yedeğe ihtiyacınız vardı. Birini kaçırırsanız, o fonlar gitmişti. HD cüzdanlar bu sorunu ortadan kaldırdı. Tohumu bir kez yedeklersiniz ve cüzdanın gelecekte türeteceği her anahtar zaten o yedek tarafından kapsanır.

Ağacın kökü bir BIP39 tohum ifadesinden gelir. Anımsatıcı, PBKDF2 aracılığıyla 512 bitlik ikili bir tohuma dönüştürülür (BIP39 Rehberi'nde açıklandığı gibi). Bu 512 bitlik tohum, ana özel anahtar (256 bit) ve ana zincir kodu (256 bit) olarak ikiye ayrılır. Birlikte, tüm ağacın büyüdüğü kökü oluştururlar.

m/44'/60'/0'/0/0 Anatomisi

Türetme yolu, ağaç içinde belirli bir anahtarı tanımlayan adrestir. Bilgisayardaki dosya yoluna benzer ve her bölüm hangi dalın izleneceğini söyler.

İlk Ethereum adresi için standart yol olan m/44'/60'/0'/0/0'ı çözümleyelim:

m / 44' / 60' / 0' / 0 / 0
│   │      │     │    │   │
│   │      │     │    │   └── Adres indeksi (0 = ilk adres)
│   │      │     │    └────── Değişim (0 = harici/alma, 1 = dahili/değişim)
│   │      │     └─────────── Hesap (0 = ilk hesap)
│   │      └───────────────── Coin türü (60 = Ethereum)
│   └──────────────────────── Amaç (44 = BIP44 standardı)
└──────────────────────────── Ana anahtar (ağacın kökü)

Her seviyenin açılımı:

m --- Ana anahtar. Her türetme yolu buradan başlar. Bu, tohumunuzdan doğrudan türetilen köktür.

44' --- Amaç. 44 sayısı, bu yolun çok hesaplı, çok coinli cüzdanlar için BIP44 standardını izlediğini gösterir. Apostrof ('), bunun "güçlendirilmiş" bir türetme olduğunu belirtir --- alt anahtar yalnızca üst açık anahtardan hesaplanamaz, özel anahtar gerektirir. Bu bir güvenlik önlemidir.

60' --- Coin türü. Her kripto paraya SLIP-44 tarafından bir numara atanır (aşağıda daha fazla bilgi). Ethereum 60'tır. Bitcoin 0'dır. Solana 501'dir. Bu seviye, tek bir tohumun anahtar çakışması olmadan birden fazla blokzincire hizmet etmesini sağlar.

0' --- Hesap indeksi. Bunu cüzdanınız içindeki ayrı cüzdanlar olarak düşünün. Hesap 0 varsayılandır. Hesap 1'i farklı bir amaç için kullanabilirsiniz --- örneğin tasarruf ile harcama. Çoğu kullanıcı hesap 0'ın ötesine geçmez.

0 --- Değişim seviyesi. Bitcoin'in UTXO modelinde, 0 harici (alma) adresleri, 1 dahili (değişim) adresleri anlamına gelir. Ethereum değişim adreslerini aynı şekilde kullanmaz, ancak seviye uyumluluk için korunmuştur.

0 --- Adres indeksi. Yeni adresler üretmek için artırılan son sayıdır. İndeks 0 ilk adresiniz, indeks 1 ikinciniz, vb. Cüzdanınız her yeni alma adresi istediğinizde bu değeri artırır.

BIP44 ve SLIP-44 Coin Türleri

BIP44, yukarıda gösterilen türetme yolu yapısını standartlaştırdı. 2014'te yayınlandı ve BIP32'nin anahtar türetmesi üzerine beş seviyeli sabit bir hiyerarşi ile inşa edildi: amaç / coin türü / hesap / değişim / adres indeksi.

SLIP-44 (Satoshi Labs Improvement Proposal 44) coin türü numaralarının kaydını tutar. Her blokzincirine benzersiz bir tamsayı atanır, böylece aynı tohum farklı zincirler için tamamen farklı anahtarlar üretir. Bazı yaygın atamalar:

Coin Türü Blokzincir Varsayılan Yol
0 Bitcoin m/44'/0'/0'/0/0
2 Litecoin m/44'/2'/0'/0/0
60 Ethereum (ve EVM zincirleri) m/44'/60'/0'/0/0
144 XRP m/44'/144'/0'/0/0
195 Tron m/44'/195'/0'/0/0
501 Solana m/44'/501'/0'/0'
9006 Avalanche (C-Chain) m/44'/60'/0'/0/0

Avalanche C-Chain'in coin türü 60 (Ethereum'un türü) kullandığına dikkat edin; çünkü C-Chain EVM uyumludur ve aynı adres formatını paylaşır. Aynısı Polygon, Arbitrum, Optimism ve Base için de geçerlidir --- hepsi m/44'/60'/0'/0/0 kullanır, yani aynı Ethereum adresi tüm bu ağlarda geçerlidir.

Bu nedenle MetaMask'a Polygon veya Arbitrum eklediğinizde adresiniz Ethereum adresinizle aynıdır. Hepsi aynı yoldan türetilir. Ayrım ağ (chain ID) düzeyinde gerçekleşir, anahtar türetme düzeyinde değil.

Farklı Zincirler, Farklı Yollar

EVM zincirleri Ethereum'un yolunu paylaşırken, EVM dışı zincirler kendi konvansiyonlarını kullanır ve farklılıklar önemlidir.

Bitcoin Yolları

Bitcoin, her biri kendi türetme standardına sahip birkaç adres formatı üzerinden evrim geçirdi:

Standart Yol Adres Türü Önek
BIP44 m/44'/0'/0'/0/0 Legacy (P2PKH) 1...
BIP49 m/49'/0'/0'/0/0 Nested SegWit (P2SH-P2WPKH) 3...
BIP84 m/84'/0'/0'/0/0 Native SegWit (bech32) bc1q...
BIP86 m/86'/0'/0'/0/0 Taproot bc1p...

Modern Bitcoin cüzdanlarının çoğu varsayılan olarak BIP84 (Native SegWit) kullanır çünkü daha düşük işlem ücretleri sunar. Bir tohumu cüzdanda geri yüklerseniz ve fonlarınız görünmüyorsa, cüzdan yanlış türetme yolunu tarıyor olabilir. Cüzdan ayarlarında BIP84'ten BIP44'e (veya tersi) geçiş genellikle sorunu çözer.

Solana Yolları

Solana, secp256k1 yerine ed25519 kullanır, bu nedenle türetmesi yapısal olarak farklıdır. Standart yol m/44'/501'/0'/0' --- dört seviyenin de güçlendirilmiş olduğuna dikkat edin (' ile işaretli). Bazı Solana cüzdanları m/44'/501'/0' veya m/44'/501' kullanır ve belirli yol cüzdan uygulamasına göre değişir. Phantom ve Solflare farklı konvansiyonlar kullanır, bu da geçiş sırasında kafa karışıklığına neden olabilir. Ayrıntılı bilgi için Solana Cüzdan Oluşturma Rehberi'ne bakın.

XRP ve Tron

XRP coin türü 144 ile m/44'/144'/0'/0/0 yolunu kullanır. Tron coin türü 195 ile m/44'/195'/0'/0/0 kullanır. Her ikisi de Bitcoin ve Ethereum gibi secp256k1 kullanır, ancak adres kodlamaları farklıdır.

BIP84 vs BIP44: Bitcoin'de Neden Birden Fazla Standart Var

Bitcoin kullandıysanız, bazı adreslerin 1 ile, bazılarının 3 ile ve modernlerinin bc1q ile başladığını fark etmiş olabilirsiniz. Bu kozmetik değildir --- her format farklı bir türetme standardı ve script türüne karşılık gelir.

BIP44 (m/44'/0'/...) eski P2PKH adreslerini (1... formatı) üretir. Bu, BIP32 türevli orijinal Bitcoin yoluydu. Hala çalışır, ancak bu adresler işlem başına daha fazla blok alanı kullanır.

BIP49 (m/49'/0'/...) Nested SegWit P2SH adreslerini (3... formatı) üretir. Bunlar, eski cüzdanlarla geriye dönük uyumluluğu korurken SegWit'in ücret tasarrufunu sağlayan geçiş formatıydı.

BIP84 (m/84'/0'/...) bech32 kodlaması kullanan Native SegWit adreslerini (bc1q... formatı) üretir. Standart işlemler için en verimli formattır ve çoğu modern cüzdanın varsayılanıdır.

Kilit nokta, üç formatın da aynı tohum ifadesinden türetilebilmesidir. 12 kelimeniz değişmez. Değişen, türetme yolundaki amaç seviyesidir: 44, 49 veya 84. Üçünü de destekleyen bir cüzdan, fonlarınızı bulmak için her yolu tarar.

Bitcoin cüzdanı oluştururken veya geri yüklerken, cüzdanın varsayılan olarak hangi türetme standardını kullandığını her zaman kontrol edin. Beklenenden farklı bir adres formatı görüyorsanız, cüzdan muhtemelen farklı bir BIP standardı kullanıyordur. Bitcoin adres formatlarını ayrıntılı incelemek için Kripto Adres Formatları yazısına bakın.

Adım Adım Anahtar Türetimi

İşte tohum ifadesinden kullanılabilir bir Ethereum adresine kadar tam türetmenin çalışma şekli:

Adım 1: Anımsatıcıdan Tohuma

12 kelimelik anımsatıcınız 2.048 yineleme ve "mnemonic" tuzu (artı isteğe bağlı parola) ile PBKDF2-HMAC-SHA512 üzerinden işlenir. Çıktı 512 bitlik ikili bir tohumdur.

Adım 2: Tohumdan Ana Anahtara

512 bitlik tohum, "Bitcoin seed" anahtarıyla HMAC-SHA512 üzerinden işlenir (bu anahtar dizesi hedef blokzincirinden bağımsız olarak kullanılır). Sol 256 bit ana özel anahtar olur. Sağ 256 bit ana zincir kodu olur.

Adım 3: Ana Anahtardan Alt Anahtarlara

Ana anahtardan başlayarak, türetme yolunun her seviyesi bir alt anahtar türetme (CKD) fonksiyonu uygular. Güçlendirilmiş alt anahtarlar (' ile işaretli) için üst özel anahtar ve zincir kodu, alt indeksle birlikte HMAC-SHA512'ye beslenir. Sonuç yeni bir (alt) özel anahtar ve zincir kodudur.

Normal (güçlendirilmemiş) alt anahtarlar için özel anahtar yerine üst açık anahtar kullanılır. Bu, yalnızca izleme cüzdanlarını mümkün kılan şeydir --- özel anahtara sahip olmadan açık anahtarlar ve adresler türetebilirsiniz.

Adım 4: Özel Anahtardan Açık Anahtara

Türetmenin son seviyesinde, alt özel anahtar eliptik eğri çarpımıyla açık anahtara dönüştürülür. Ethereum için bu, secp256k1 eğrisini kullanır. İşlem: Public Key = Private Key * G, burada G eğrinin üreteç noktasıdır.

Adım 5: Açık Anahtardan Adrese

Açık anahtar, blokzincir adresini üretmek için hash'lenir. Ethereum için açık anahtar Keccak-256 ile hash'lenir ve son 20 bayt (40 onaltılık karakter) 0x önekiyle adres olur. Bitcoin için süreç SHA-256 ardından RIPEMD-160'ı içerir, sonra adres türüne bağlı olarak Base58Check veya bech32 kodlaması gelir.

Tüm bu süreci SafeSeed'in Ethereum Adres Oluşturucusu veya Bitcoin Adres Oluşturucusu ile eylem halinde görebilirsiniz; bunlar tohumdan adrese her adımı gösterir.

Bunun Pratik Önemi

Türetme yollarını anlamak sadece akademik değildir. İşte önemli olduğu somut durumlar:

  • Farklı yazılımda cüzdan geri yükleme. Ledger'dan Trezor'a veya MetaMask'tan farklı bir cüzdana geçiyorsanız, türetme yolunun eşleştiğinden emin olun. Aynı tohum artı farklı yol, farklı adresler ve görünürde kayıp fonlar demektir.
  • Birden fazla zincire erişim. Tohum ifadeniz zaten Polygon, Arbitrum ve diğer EVM zincirlerini kapsar --- hepsi Ethereum'un coin türü 60'ını kullanır. Ayrı yedek gerekmez.
  • Kayıp fonları teşhis etme. Bitcoin tohumu geri yükleyip bakiyenizi göremiyorsanız, cüzdan ayarlarında BIP44, BIP49 ve BIP84 yolları arasında geçiş yapmayı deneyin.
  • Belirli amaçlar için adres üretme. Hesap indeksini (üçüncü seviye) artırarak mantıksal olarak ayrı cüzdanlar oluşturabilirsiniz --- biri günlük harcama, biri uzun vadeli depolama için --- hepsi aynı tohum ifadesinden.

Türetme yolu sistemi, tek bir tohum ifadesini çok zincirli, çok hesaplı bir cüzdana dönüştüren şeydir. Modern kripto para kendi kendine saklama işlemini hem güçlü hem de taşınabilir kılan altyapı katmanıdır. Anladığınızda, cüzdanlar, zincirler ve adres formatları arasında güvenle geçiş yapabilirsiniz.