İçeriğe geçin
buybitcoinsmart

Sözlük / Adresler ve anahtarlar

BIP-86 türetmesi

BIP-86 türetmesi nedir?
BIP-86 türetmesi tek anahtarlı Taproot hesaplarını m/86'/0'/0' yoluna yerleştirir, ardından türetilen her anahtarı kendi hash değeriyle ayarlar; böylece adres harcanamaz bir script yoluna bağlanır.

Tanımlandığı belge: BIP-86.

BIP-86, tek imzalayan için Taproot çıktıları tutan cüzdanları kapsar ve BIP-44 hesap düzenini amaç düzeyinde 86' ile yeniden kullanır. BIP-49 ve BIP-84 de ikinci bir adres adımı tanımlar, ancak yalnızca BIP-86 anahtarın kendisini değiştirir: adresinizdeki 32 baytlık değer, türettiğiniz anahtarın kendi hash değeriyle ayarlanmış hâlidir. Kurtarma ifadenizi yalnızca BIP-84 taraması yapan bir yazılıma girdiğinizde bc1p bakiyeniz sıfır görünür.

Nasıl çalışır

BIP-86 türetmesi iki adımda gerçekleşir ve yalnızca birincisi tanıdık olan anahtar ağacında aşağı iniş yoludur.

Birinci adım yoldur. Şablon m / purpose' / coin_type' / account' / change / address_index biçimindedir; amaç konumunda 86' bulunur ve altındaki her düzey değiştirilmeden kullanılır. Bu yüzden ilk Bitcoin hesabı m/86'/0'/0' yolunda, ilk alma anahtarı ise m/86'/0'/0'/0/0 yolunda yer alır.

İkinci adım, BIP-86 ile öncekilerin ayrıldığı yerdir. BIP-49 ve BIP-84 de ikinci bir adım tanımlar, ancak onlar türetilen anahtarı bir script içine sarar ve tanık yine yolun ürettiği anahtarı açığa çıkarır. BIP-86 türetilen anahtarı başka bir anahtarla değiştirir. Uyması gereken kural için BIP-341 metninden şunu aktarır: "If the spending conditions do not require a script path, the output key should commit to an unspendable script path instead of having no script path." Böylece türetilen anahtar lift_x aracılığıyla iç anahtar olarak okunur ve zincire ulaşan şey bu iç anahtar ile int(HashTapTweak(bytes(internal_key)))G toplamıdır. Sonuç, OP_1 arkasında tek bir 32 baytlık veri itmesidir; 0x5120 ve ardından ayarlanmış anahtar yazılır, harcamak için tanıkta boş bir scriptSig ile bir imza yeterlidir.

Yayımlanmış test vektörleri farkı gösterir. m/86'/0'/0'/0/0 yolunda kurtarma ifadesinden türetilen iç anahtar cc8a4bc64d897bddc5fbc2f670f7a8ba0b386779106cf1223c6fc5d7cd6fc115 iken ağın gördüğü anahtar a60869f0dbcf1dc659c9cecbaf8050135ea9e8cdc487053f1dc6880949dc684c olup bc1p5cyxnuxmeuwuvkwfem96lqzszd02n6xdcjrs20cac6yqjjwudpxqkedrcr olarak kodlanır. İkinci adımı atlayan bir uygulama bunun yerine ilk değeri yayımlar; böylece aynı kurtarma ifadesini geri yükleyen standarda uygun bir cüzdanın asla bulamayacağı, akla yatkın görünen adresler verir.

Belgeyi Ava Chow yazdı, belge 22 Haziran 2021 tarihinde atandı ve bugün Deployed statüsünü taşıyor.

Nerede karşınıza çıkar

BIP-86 türetmesi, hangi biçimi istediğinizi sormadan size bc1p adresi veren tek imzalı cüzdanların çoğunun arkasındadır. Bitcoin Core, 23.0 sürümünde tanımlayıcı (descriptor) cüzdanlarını varsayılan yaptı ve o sürümün sürüm notları, yeni oluşturulan bir tanımlayıcı cüzdanın otomatik üretilmiş bir tr() tanımlayıcısı içerdiğini, bunun da "which allows for creating single key Taproot receiving addresses" imkânı verdiğini söylüyor.

Donanım çok farklı hızlarda yetişti. KeepKey incelememiz, bu cihazın Taproot çıktı desteğini Şubat 2025 tarihli 7.10.0 yazılımına tarihlendiriyor; yani ucuz bir imzalayıcı, 86' dalını size göstermeyeceği bir kurtarma ifadesini tutabilirken aynı sözcükleri okuyan başka bir yazılım o bitcoinleri normal biçimde harcar.

Şartname, sabit bir yolun neden hâlâ gerektiği konusunda alışılmadık derecede açık. Gerekçe bölümü, "there are now solutions which obviate the need for fixed derivation paths for specific script types" ifadesiyle tanımlayıcıları kastederek bunu kabul eder, ardından bunların sorunu neden çözmediğini açıklar: birçok yazılım cüzdanı ve donanım imzalayıcısı hâlâ yalnızca bir kurtarma ifadesini, yanında yol veya script türüne dair hiçbir kayıt olmadan yedekler. Tanımlayıcı bu bilgiyi taşır; bir sözcük listesi taşımaz, bu yüzden onun yerine 86 sayısı taşır.

BIP-86 türetmesi vs P2TR

BIP-86 türetmesi bir P2TR çıktısını doldurmanın tek bir tarifidir, o çıktının tanımı değildir. P2TR, tanık sürümü 1'dir ve herhangi bir 32 baytlık çıktı anahtarını kabul eder; buna MuSig2 altında birkaç imzalayandan birleştirilmiş bir anahtar ve gerçekten kullanılabilir scriptlerden oluşan bir ağaca bağlanan bir anahtar da dahildir. BIP-86 bu alanın en dar durumunu kapsar: tek imzalayan, tek kurtarma ifadesi ve anahtarın arkasında hiçbir şeyin saklanmaması için bilerek harcanamaz bırakılmış bir script yolu. BIP-86'nın ürettiği her adres bir P2TR çıktısıdır ve P2TR'nin ifade edebildiklerinin çoğu tamamen onun kapsamı dışındadır; bu yüzden Taproot desteği duyuran bir cüzdan, aynı adres biçimini taşıyan çok imzalı veya zaman kilidiyle sınırlanmış bir dalı yine de reddedebilir.

Karıştırılmaması gerekenler

Sık sorulan sorular

Taproot adresleri hangi türetme yolunu kullanır?

Tek imzalı Taproot hesapları m/86'/0'/0' yolunda bulunur; alma adresleri için altında 0, para üstü için 1 yer alır. Bu daldaki adresler bc1p ile başlar. BIP-44, BIP-49 ve BIP-84 aynı beş düzeyli yol biçimini kullanır ve değişen şey en üstteki amaç numarasıdır.

m/86'/0'/0'/0/0 yolundaki anahtar adresimdeki anahtar mı?

Hayır. BIP-86, türetilen bu anahtarı bir adrese dönüşmeden önce kendi hash değeriyle ayarlar, bu yüzden zincirdeki değer cüzdanınızın türettiği değer değildir. Şartnamenin test vektörleri aynı yol için ikisini de yayımlar: iç anahtar cc8a4bc64d897bddc5fbc2f670f7a8ba0b386779106cf1223c6fc5d7cd6fc115 ve çıktı anahtarı a60869f0dbcf1dc659c9cecbaf8050135ea9e8cdc487053f1dc6880949dc684c.

Cüzdanım çıktı tanımlayıcıları kullanıyorsa hâlâ BIP-86 kullanmam gerekiyor mu?

Tanımlayıcı yedeklemenizle birlikte taşınıyorsa gerekmez, çünkü tr() tanımlayıcısı script türünü ve yolu doğrudan kaydeder. BIP-86, şartnamenin adlandırdığı yaygın durum için vardır: yedeğin yalnızca bir kurtarma ifadesi olduğu durum, ki çoğu donanım imzalayıcısı hâlâ bu şekilde çalışır.

Sıradaki okuma

İlgili terimler

Daha fazlası: Adresler ve anahtarlar

Bu sayfayı İngilizce okuyun