Sözlük / Adresler ve anahtarlar
BIP-49 türetmesi
- BIP-49 türetmesi nedir?
- BIP-49 türetmesi, iç içe SegWit hesaplarını m/49'/0'/0' yolunda kendi dalına yerleştirir; böylece bu hesapları okuyamayan bir cüzdan yanlış bir bakiye yerine hiçbir şey göstermez.
Tanımlandığı belge: BIP-49.
BIP-49, anahtar ağacının ilk sertleştirilmiş düzeyini, yani 49', adresleri P2SH içine sarılmış P2WPKH olan hesaplara ayırır. 19 Mayıs 2016 tarihinde atandı ve sonradan kendi genişletilmiş anahtar sürüm baytlarını kazandı: ypub için 0x049d7cb2, yprv için 0x049d7878. Cüzdanınız ypub ile başlayan bir hesap anahtarı dışa aktarıyorsa, bir geri yüklemenin araması gereken dal odur.
Nasıl çalışır
BIP-49 iki soruyu netleştirir: bir BIP-32 ağacının hangi dalı sarılmış SegWit anahtarlarını tutar ve bir adres o daldaki bir anahtardan nasıl kurulur.
Dal, BIP-44 tarafından zaten kullanılan beş düzeyli şablonu, m / purpose' / coin_type' / account' / change / address_index, ödünç alır ve tam olarak tek bir sayıyı değiştirir. Amaç, 44' yerine 49' olur. Para türü, hesap, zincir ve dizin, BIP-44 tarafından verilen anlamlarını korur.
Adresle ilgili kısım mekaniktir: sıkıştırılmış genel anahtarın hash'i alınır, 20 baytlık sonuç 22 baytlık bir redeem script içine sarılır ve ardından çıktının taahhüt ettiği şeyi elde etmek için bu script'in hash'i alınır. Şartname iki parçayı scriptSig: 0x160014{20-byte-key-hash} ve scriptPubKey: 0xA914{20-byte-script-hash}87 olarak yazar.
İlginç olan, yazarın reddettiği seçenektir. Weigl iki yaklaşımı sıralar: elinizdeki hesabı koruyup sarılmış SegWit adreslerini aynı genel anahtarlara bağlamak veya yeni bir amaç altında ayrı hesaplar oluşturmak. İlki, bir sorun çıkana kadar daha kullanıcı dostudur ve sonra, şartnamenin sözleriyle, hesap "might show up but also it might miss some UTXOs". BIP-49 ayrı hesapları tam da bu seçenek "fails in a more visible way" olduğu için seçti. Boş bir ekran, makul görünen yanlış bir sayıdan daha iyi bir hata mesajıdır.
Serileştirme de sonunda aynı muameleyi gördü: bu daldaki genişletilmiş genel anahtarlar 0x049d7cb2 sürüm baytlarını kullanır ve base58 kodlamasıyla ypub önekine ulaşır; yprv için 0x049d7878, testnet'te ise upub ve uprv kullanılır.
Nerede görülür
BIP-49, xpub yerine ypub ile başlayan bir genişletilmiş anahtar olarak ve bir cüzdanın yerel hesabın yanında listelediği sarılmış SegWit hesabı olarak görünür. Bu sitenin 3,7 puan verdiği Mycelium, yerel ve sarılmış SegWit hesaplarını tek bir uygulamada taşır; bu iki düzen SLIP-0132 tarafından zpub ve ypub altında kayıtlıdır.
ypub öneki sonradan eklenmiş bir düzenlemeydi ve bu geçmiş hâlâ kendini gösterir. Amaç düzeyini 2014 yılında icat eden BIP-43, uygulayıcılara her amaç için 0x0488B21E ve xpub önekini korumalarını söyledi. BIP-49 başta bu şekilde yayımlandı ve sürüm baytlarını düzgün biçimde kaydetmek için 8 Şubat 2018 tarihinde oluşturulan SLIP-0132, sonucu açıkça anlatır: değişmeyen önek "unsustainable user confusion" (sürdürülemez kullanıcı karışıklığı) durumuna yol açtı, çünkü ya kullanıcı bir xpub'un hangi daldan geldiğini hatırlamak zorundaydı ya da alıcı araç her iki adres alanını taramak zorundaydı. Önek bir ipucudur, bir garanti değil. Bir genişletilmiş anahtarı bir blok gezginine yapıştırdığınızda araç 1 ile başlayan adresler türetirken cüzdanınız 3 ile başlayan adresler gösteriyorsa, elinizde eski öneki taşıyan bir BIP-49 anahtarı var demektir ve araca yol elle bildirilmelidir.
Şartname, bir aracı karşı kontrol etmeye değer bir testnet vektörü içerir: on bir kez tekrarlanan abandon ifadesinin ardından about, hesap kökü m/49'/1'/0', ilk alım adresi 2Mww8dCYPUpKHofjgcXcBCEGmniw9CoaiD2.
BIP-49 türetmesi vs iç içe SegWit
BIP-49 türetmesi anahtarlarla ilgili bir kuraldır, iç içe SegWit ise zincirin gördüğü bir desendir; ikisi genellikle birlikte gider ama hiçbiri diğerini gerektirmez. Bir çıktı, taahhüt ettiği script nedeniyle iç içe SegWit'tir ve içinde anahtarı hangi yolun ürettiğine dair hiçbir kayıt yoktur. Bir cüzdan bunu içe aktarılmış bir özel anahtardan veya BIP-49'un reddettiği, hâlihazırda bir BIP-44 hesabında duran genel anahtarlardan ikinci bir P2SH adresi türeten yaklaşımdan kurabilir. Bu nedenle bitcoinlerinizin 3 ile başlayan adreslerde olduğunu bilmek, nereden geri yükleme yapacağınızı söylemez; hesap yolunun kurtarma ifadesi yedeğinin yanında notlarınızda yer almasının nedeni budur.