Sözlük / Adresler ve anahtarlar
HD cüzdan
Diğer adları: HD protokolü, Hiyerarşik deterministik cüzdan, BIP32.
- HD cüzdan nedir?
- Bir HD cüzdan, ihtiyaç duyacağı tüm anahtarları tek bir rastgele tohumdan üretir ve bunları BIP-32 standardının 2012'de belirlediği ebeveyn ile çocuk ağacı biçiminde düzenler.
Tanımlandığı belge: BIP-32.
Bir tohum bir ana anahtar üretir, ana anahtar dalları üretir ve dallar kullandığınız her adresi üretir. BIP-32'ye 11 Şubat 2012'de numara verildi ve bugün dağıtılan neredeyse her donanım, mobil ve masaüstü cüzdan buna uyar. Bir karttaki on iki kelimenin, on yıldır kullandığınız bir cüzdanı geri getirebilmesinin nedeni budur.
Nasıl çalışır
Bir HD cüzdan, anahtarlı bir hash'i tekrar tekrar çalıştırarak tek bir sayıyı bir hiyerarşiye dönüştürür. Tohum, sabit "Bitcoin seed" anahtar dizesiyle HMAC-SHA512'ye girer ve 64 bayt üretir: soldaki 32 bayt ana özel anahtar, sağdaki 32 bayt ise ana zincir kodu olur. Bu çift, altındaki her şeyin köküdür.
Sonraki her adım bir anahtarı, zincir kodunu ve bir dizin numarasını alır, bunları aynı şekilde hash'ler ve kendi zincir kodu olan bir alt anahtar verir. Her düğümün 4.294.967.296 olası alt öğesi vardır ve bunlar iki yarıya ayrılır: 2.147.483.648 altındaki dizinler normaldir ve yalnızca genel taraftan hesaplanabilir; bu çizgideki ve üstündeki dizinler ise sertleştirilmiştir ve özel anahtar gerektirir. Adımı tekrarlamak bir ağaç kurar ve bu ağaçtaki bir konum türetme yolu olarak yazılır.
Tasarımı değerli kılan şey belirlenimliliktir. Aynı tohum, herhangi bir doğru uygulamaya verildiğinde sonsuza kadar tam olarak aynı anahtarları aynı sırayla üretir. Hiçbir anahtar saklanmaz, yalnızca yeniden hesaplanır; yedeğin her ödeme aldığınızda büyüyen bir dosya değil bir cümle olmasının nedeni budur.
Kelimeler ayrı bir katmandır ve iki katmanı karıştırmak kurtarma sorunlarının çoğuna yol açar. BIP-39, 2.048 kelimelik bir listeden alınan ifadenin tohum haline nasıl geldiğini tanımlar: ifade, "mnemonic" dizesi ve isteğe bağlı bir parola (passphrase) ile tuzlanarak HMAC-SHA512 aracılığıyla 2.048 iterasyon boyunca PBKDF2 üzerinden uzatılır. BIP-32 kelimeler hakkında hiçbir şey bilmez, BIP-39 ise ağaçlar hakkında hiçbir şey bilmez. İkisini bir gelenek birleştirir; iki cüzdanın sizin ifadeniz üzerinde anlaşıp adresleriniz üzerinde anlaşmaması bu yüzden mümkündür.
Bitcoin Core, 0.16.0 sürümünden beri yalnızca hiyerarşik belirlenimli cüzdanlar oluşturur. Bundan önce bir cüzdan, birbiriyle ilgisiz rastgele anahtarlardan oluşan bir havuz tutardı ve havuz yedeğin kapsadığının ötesine geçtiği anda yedek geçersiz hale gelirdi.
Bitcoin satın alırken bu neden önemli
Cüzdan kurulumu sırasında yazdığınız ifade, satın alacağınız her coini koruyan tek şeydir ve ağaç yapısı bu tespiti doğru kılan şeydir.
Bir kez yedek alın ve yedek eksiksiz kalır. Yüz yeni adrese yapılan yüz borsa çekimi, hepsi tek bir kökün alt soylarıdır; dolayısıyla sonradan yaptığınız hiçbir şey korumanız gereken şeyi büyütmez. Bu, ilk istemcinin çıkışından bu yana Bitcoin saklamadaki en büyük pratik iyileşmedir ve aynı zamanda bir kez fotoğrafı çekilen bir kurtarma ifadesinin kalıcı olarak ele geçirilmiş olmasının nedenidir: fotoğraf, henüz satın almadığınız coinleri de kapsar.
Taşınabilirlik ikinci kazançtır ve beraberinde bir tuzak getirir. Bir Trezor veya Ledger cihazına yazılan ifade Sparrow, Electrum veya BlueWallet içine geri yüklenir, çünkü hepsi aynı standardı uygular. Tuzak rotadadır. BIP-44 1 ile başlayan adresler üretir, BIP-49 3 üretir, BIP-84 bc1q üretir ve BIP-86 bc1p üretir; hepsi aynı kelimelerden. Varsayılan olarak farklı bir amaç kullanan bir yazılıma geri yüklerseniz bakiye sıfır görünür, coinler ise başka bir dalda el değmeden durur. Yedeğin yanına türetme yolunu yazıp başka hiçbir şey yazmamak bu paniği önler.
Boşluk sınırı (gap limit) bilinmesi gereken üçüncü şeydir. Geri yüklenen bir cüzdan, BIP-44 kapsamında 20 kullanılmamış adres boyunca ileriye doğru tarar ve sonra aramayı bırakır. Hiç yedeklemediğiniz bir cüzdanda Alma düğmesine kırk kez basıp son adresi kullanmak, boş bakiye bildiren bir geri yükleme üretmenin güvenilir bir yoludur.
m/84'/0'/0'/0/0 yolunu birer birer okumak
Bir türetme yolu posta adresi gibi çalışır ve her düzeyde daralır. Standart yerel SegWit yolunu soldan sağa okuyun.
- m, tohumunuzdan türetilen ana anahtardır.
- 84', bc1q ile başlayan yerel SegWit adresleri üreten BIP-84 amacını seçer. Kesme işareti düzeyi sertleştirilmiş olarak işaretler.
- 0' coin türüdür ve 0 Bitcoin ana ağını (mainnet) belirtir. Test ağı 1' olurdu.
- 0' hesaptır, dolayısıyla bir işletme için ayrı bir hesap 1' olurdu.
- 0 zincirdir: verdiğiniz adresler için 0, para üstü için 1.
- 0 adres dizinidir ve alınan her ödemeyle bir artar.
İlk üç düzey sertleştirilmiştir, son ikisi değildir; bu bilerek böyledir. Bu ayrım, hesap düzeyinde bir genişletilmiş genel anahtarın yalnızca izleme amaçlı bir cüzdana aktarılabilmesini sağlar; bu cüzdan daha sonra para alma ve para üstü adresleri üretebilir, ancak hiçbir zaman kardeş bir hesaba erişemez veya ana anahtara doğru geri tırmanamaz.
HD cüzdan vs kurtarma ifadesi
HD cüzdan bir türetme şemasıdır; kurtarma ifadesi ise başladığı sayıyı yazmanın bir yoludur. BIP-32 ağacı tanımlar ve 128 ile 512 bit arasındaki her tohumu kabul eder, 256 bit önerir. BIP-39 kelimeleri tanımlar. Electrum kendi uyumsuz ifade biçimini sunar ve yine de tamamen hiyerarşik belirlenimlidir; bu da iki katmanın gerçekten bağımsız olduğunu gösterir. Bu ayrım, bir yazılım BIP-39 kurtarmayı desteklediğini söylediğinde önemlidir: bu, kelimelerinizi okuma hakkında bir sözdür, sonrasında hangi dala bakacağı hakkında değil.
HD cüzdan vs türetme yolu
HD cüzdan ağaçtır; türetme yolu ise bu ağaçtan geçen bir rotadır. İnsanlar bir cüzdanı sanki bir ürün kategorisiymiş gibi “bir BIP-84 cüzdanı” diye tanımlar, oysa herhangi bir BIP-32 cüzdanı herhangi bir yolu izleyebilir ve güncel yazılımların çoğu tek bir tohumdan farklı amaçlara sahip birkaç hesabı rahatlıkla gösterir. Yolu, yedeğin yanına yazdığınız bir koordinat olarak görün, kurmuş olduğunuz uygulamanın bir özelliği olarak değil.