İçeriğe geçin
buybitcoinsmart

Sözlük / Protokol ve güncellemeler

Anahtar yolu harcaması

Anahtar yolu harcaması nedir?
Anahtar yolu harcaması, bir Taproot çıktısını ayarlanmış çıktı anahtarı üzerindeki tek bir imzayla harcar; tam olarak tek öğeden oluşan bir tanık yayımlar ve alternatif scriptler hakkında hiçbir şey açığa çıkarmaz.

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

Bir Taproot çıktısı, anahtarı için imza atılarak ya da taahhüt edilmiş bir script açığa çıkarılarak boşaltılabilir ve sessiz olan yol anahtar yoludur. BIP-341 bu tanığı tam olarak tek öğede sabitler: varsayılan sighash altında 64 baytlık bir Schnorr imzası; bu da girdinin tamamını 230 ağırlık birimi, yani 57,5 vbyte yapar. Bir sahip için paylaşılan bir kasa ile tek kişilik bir ödeme o zaman zincir üstünde aynı görünür.

Nasıl çalışır

Anahtar yolu harcaması, çıktı anahtarı için imza atar; bu anahtar kimsenin seçtiği bir anahtar değildir: BIP-341 onu Q = P + int(t)G olarak kurar; burada P iç genel anahtar, t ise P ile script ağacının merkle kökünün birlikte etiketli hash'idir.

Dolayısıyla imza atmak, aynı kaydırmanın özel tarafa uygulanması demektir. Referans yordam, iç noktanın y koordinatı tek olduğunda önce gizli anahtarın işaretini değiştirir, çünkü taproot ayarlamaları (tweak) 32 baytlık yalnızca x anahtarlarına uygulanır, ardından t'yi eğrinin mertebesine göre modüler olarak ekler. Sonuç BIP-340 uyarınca imzalanır ve tanık yığınına tek başına gider.

Doğrulama, kriptografik bir test olmadan önce bir sayma testidir. Bir düğüm tanık programının 32 baytını okur, tanık yığını boşsa hemen başarısız olur ve iki veya daha fazla öğe varsa ve son öğe 0x50 ile başlıyorsa o öğeyi ek (annex) olarak ayırır. Tam olarak bir öğe kalırsa harcama bir anahtar yolu harcamasıdır ve o öğenin çıktı anahtarına karşı BIP-340 imzası olarak doğrulanması gerekir. Bu süreçte hiçbir şey düğüme bir script ağacının hiç taahhüt edilip edilmediğini söylemez.

SIGHASH_DEFAULT, yani 0x00 değeri, kastedildiğinde imza 64 bayttır ve tüm işlemi kapsar. Farklı bir sighash baytı eklendiğinde 65 bayta çıkar ve son konumunda 0x00 taşıyan 65 baytlık bir imza kasıtlı olarak reddedilir: buna izin vermek bir madenciye veya herhangi bir aktarım yapan düğüme 64 baytlık bir imzayı 65 bayta kadar doldurma imkanı verir ve bu, wtxid'yi ve gönderenin amaçladığı ücret oranını değiştirir.

İmzanın kapsadığı şey en fazla 206 baytlık bir mesajdır. İşlem sürümüne ve locktime'a, her girdinin outpoint, tutar, önceki scriptPubKey ve sıra numarası hash'lerine ve çıktılara taahhüt eder.

Boyut aritmetiği bundan çıkar. BIP-141 uyarınca işlem ağırlığı, temel boyutun üçle çarpımı artı toplam boyuttur ve sanal boyut, tam bir işlem için yukarı yuvarlanmış olarak bu ağırlığın dörde bölümüdür. Bir Taproot girdisi 41 temel bayt (36 baytlık bir outpoint, boş bir scriptSig için bir uzunluk baytı, dört baytlık bir sıra numarası) ve 66 tanık baytı (bir yığın sayısı, bir uzunluk öneki, imza) katkıda bulunur; bu da 41 çarpı 3 artı 107, yani 230 ağırlık birimi ve dolayısıyla 57,5 vbyte eder.

BIP-341 içindeki bir öneri cüzdan geliştiricilerini hazırlıksız yakalar. Hiç script içermeyen bir çıktı bile, iç anahtarı olduğu gibi yayımlamak yerine, iç anahtarın tek başına etiketli hash'i olarak hesaplanan bir ayarlamaya taahhüt etmelidir. Şartname nedenini açıkça yazar: iki taraf anahtarlarını paylaşılan bir çıktı anahtarına eklediğinde, taraflardan biri sessizce yalnızca kendisinin harcayabileceği bir script yolunu gizleyen bir ayarlama katabilir ve diğerinin bunu fark etmesinin hiçbir yolu yoktur.

Bitcoin satın alırken bu neden önemli

Taproot'un imza mesajı, bir donanım cüzdanının takılı olduğu bilgisayara güvenmeden ücretinizi hesaplayabilmesinin nedenidir.

BIP-143 yani SegWit sürüm 0 kuralları altında mesaj, imzalanan girdinin harcadığı tutarı ve başka hiçbir şeyi kapsıyordu. Üç girdili bir işlemin tek girdisini imzalayan bir cihaza diğer iki tutarın verilmesi gerekiyordu ve bunları kontrol edemiyordu; ele geçirilmiş bir ana makinenin, ekranın gösterdiğinden çok daha fazla ücreti imzalatmak için kullandığı açık budur. BIP-341, işlemin harcadığı her girdinin tutarlarına ve hepsinin önceki scriptPubKey'lerine taahhüt eder, böylece imzalayan bunları kendisi toplayabilir. Bu yükseltme script yolu harcamalarını da kapsar, ancak anahtar yolu, 41 cüzdan incelememizdeki cihazların sahiplerinin çoğunun bununla karşılaşacağı yerdir.

Cüzdanınızın, bunlardan herhangi biri uygulanmadan önce anahtarları türetebilmesi gerekir ve bu incelemelerde tablo dengesizdir. KeepKey, 7.10.0 ürün yazılımında Şubat 2025'te Taproot çıktı desteği ekledi. MetaMask ürününün kendi duyurusu Taproot'u hâlâ daha sonra gelecek bir şey olarak listeliyor, bu yüzden Bitcoin desteğinin geri kalanı ne olursa olsun size bir bc1p alma adresi veremez.

Ücretler girdi başına küçük bir farkla anahtar yoluna yönelir ve bu, okuyucuların çoğunun satın aldığı yönde birikir. BIP-143'ün kendi test vektöründeki imzalı P2WPKH girdisi, 71 baytlık bir imza ve 33 baytlık bir anahtar taşır; yığın sayısı ve uzunluk önekleri sayıldığında 107 tanık baytı eder, bu da 271 ağırlık birimi, yani 67,75 vbyte demektir. Bir anahtar yolu girdisi buna karşı 10,25 vbyte tasarruf eder, bu yüzden 30 ayrı küçük alım biriktirmiş ve sonra bunları birleştiren bir tasarrufçu o tek işlemden yaklaşık 307 vbyte kısar.

Gizliliğin gerçekte ne satın aldığı konusunda net olun. Harcama politikanızı gizlemek geçmişinizi gizlemek değildir: bitcoinleriniz bu sitenin incelediği 63 borsadan birinden geldiyse, o platform kimlik belgelerinizi ve para çekme adresini zaten tutuyor ve hiçbir imza biçimi buna dokunmaz. Gizli kalan, bu bitcoinlerin tek bir anahtarla mı yoksa bir avukatın kurtarma dalını içeren bir eşik grubuyla mı korunduğudur ve bir adresi hedef almaya değer kılan ikinci bilgi budur.

taproot_sign_key üzerinden adım adım

taproot_sign_key, BIP-341'in tam olarak bu tanığı üretmek için yayımladığı referans yordamdır ve tamamı dokuz satır Python'dur.

Bir script ağacı, iç gizli anahtar, bir sighash türü ve BIP-340'ın istediği yardımcı rastgeleliği alır. Script ağacı boşsa ayarlama girdisini boş bir bayt dizisine ayarlar; aksi halde bu girdi, ağaç yardımcı işlevinin döndürdüğü merkle köküdür. İç gizli anahtarı bu değerle ayarlar, sighash'ı imzalar, hash türü baytını yalnızca tür sıfır değilse ekler ve tek öğe içeren bir liste döndürür. O öğe tanığın tamamıdır.

İki ayrıntı dikkati hak eder. Boş dal, göründüğü gibi ayarlanmamış durum değildir, çünkü boş bir bayt dizisi vermek ayarlamayı iç anahtarın tek başına etiketli hash'i olarak bırakır; bu da tam olarak şartnamenin script içermeyen bir çıktı için önerdiği harcanamaz taahhüttür. Ve rastgelelik argümanı Taproot'a değil BIP-340'a aittir: anahtar ayarlandıktan sonra sonuç sıradan bir Schnorr imzasıdır, bu yüzden anahtar yolu harcamalarının toplu doğrulanması için özel bir işlem gerekmez.

Anahtar yolu harcaması vs P2TR

P2TR çıktı türüdür ve anahtar yolu harcaması bunu boşaltmanın iki yolundan biridir. Bir Bitcoin, daha sonra onu hangi yol boşaltırsa boşaltsın P2TR parası olarak kalır. Ayrım, biri size Taproot adreslerinin gizli olduğunu söylediğinde önemlidir: bir adrese Bitcoin almak her iki durumda da 32 baytlık bir anahtar ve başka hiçbir şey yayımlamaz, oysa insanların kastettiği gizlilik harcama anında, ve yalnızca anahtar yolunun seçilmesi durumunda gelir.

Anahtar yolu harcaması vs MuSig2

MuSig2, anahtar yolu harcamasının gerektirdiği imzayı üretmenin bir yoludur, bunun bir şartı değildir. Tek anahtarla imza atan tek bir sahip, her ödeme yaptığında bir anahtar yolu harcaması yapar ve ortada hiçbir birleştirme protokolü yoktur. İkisi karıştırılır çünkü birleştirme ilginç durumdur: MuSig2 birkaç tarafın tek bir anahtara ve tek bir imzaya ulaşmasını sağlar, böylece ödemeleri öğle yemeği parasını ödeyen biriyle aynı yolu ve aynı 57,5 vbyte'ı kullanır. Tersi de olur, çünkü birleştirilmiş bir anahtar bir script yaprağının içinde yer alabilir; orada onu harcamak, MuSig2 kullanan bir script yolu harcamasıdır.

Karıştırılmaması gerekenler

Sık sorulan sorular

Anahtar yolu harcaması, çıktının arkasında hiç script olmadığını kanıtlar mı?

Hayır. Bir düğüm tek bir imza görür ve bir script ağacının taahhüt edilip edilmediğini anlayamaz; tasarımın bütün amacı da budur. BIP-341 daha ileri gider ve hiç script olmayan çıktılarda bile anahtarın ayarlanmasını önerir, çünkü bir çıktı anahtarı birkaç tarafın anahtarlarının bir toplamı olduğunda, aksi halde taraflardan biri gizli bir script yolu ekleyip parayı tek başına harcayabilir.

Anahtar yolu harcaması, script yolu harcamasından daha mı ucuz?

Evet, genellikle de geniş bir farkla. Anahtar yolu girdisi 64 baytlık tek bir imza taşır ve toplamda 57,5 vbyte tutar; script yolu harcaması ise kullandığı yaprak script'ini artı ağacın her seviyesi için 32 bayt daha büyüyen 33 baytlık bir kontrol bloğunu yayımlamak zorundadır.

Cüzdanımın anahtar yolu harcaması yapıp yapmadığını nasıl anlarım?

Taproot adreslerini hiç türetip türetmediğine bakın. Size bir bc1p adresi verip oradan tek bir imzayla harcıyorsa, bu bir anahtar yolu harcamasıdır. Destek hâlâ düzensizdir: KeepKey, Şubat 2025'te 7.10.0 ürün yazılımında Taproot çıktıları ekledi, MetaMask ise Taproot'un henüz gelmediğini söylüyor.

Sıradaki okuma

İlgili terimler

Daha fazlası: Protokol ve güncellemeler

Bu sayfayı İngilizce okuyun