Sözlük / Geliştirici başvuru kaynağı
Nokta fonksiyonu
- Nokta fonksiyonu nedir?
- Nokta fonksiyonu, özel anahtarı secp256k1 üretici noktasını bu sayıyla çarparak genel anahtara dönüştürür ve her Bitcoin adresinin üzerine kurulduğu tek yönlü adım budur.
Tanımlandığı belge: BIP-32.
BIP32 bu işleme point(p) adını verir, çünkü hiyerarşik anahtar türetimi neredeyse her satırında ona atıfta bulunur. Eğrinin sabit üreticisini 256 bitlik bir gizli değerle çarpın; sonuç, güvenle yayımlayabileceğiniz bir koordinat çiftidir. Gizli değeri bu çiftten geri elde etmek, 78 hanelik bir uzayda ayrık logaritma çözmek anlamına gelir. Cüzdanınız fonksiyonu her adres için bir kez çalıştırır ve hiçbir zaman tersine çalıştırmak zorunda kalmaz.
Nasıl çalışır
Nokta fonksiyonu, iki girdisinden biri sonsuza dek sabitlenmiş eliptik eğri çarpımıdır.
Bitcoin, y kare eşittir x küp artı 7 denklemiyle büyük bir asal cisim üzerinde tanımlanan ve NIST yerine SEC 2 belgesinde standartlaştırılan secp256k1 eğrisini kullanır. Eğri, her uygulamanın koduna sabitlediği bir üretici noktası G ve değeri 2 üzeri 256'nın hemen altında kalan bir grup mertebesi n ile birlikte gelir. Özel anahtar, 1 ile n eksi 1 arasındaki herhangi bir tam sayıdır. Fonksiyon, ikiye katlama ve toplama merdiveni kullanarak G'yi bu sayı kadar kendisine ekler; bu işlem evrenin yaşı kadar değil, bir milisaniyeden çok daha kısa sürede biter.
Güvenlik varsayımının tamamı ters yöndedir. Elde edilen nokta verildiğinde, yayımlanmış hiçbir yöntem çarpanı grup büyüklüğünün kabaca karekökünden daha hızlı geri elde edemez; bu da işi yaklaşık 2 üzeri 128 işleme çıkarır. Bir adres yeniden kullanılsa, yayımlansa ya da on yıllarca elde tutulsa da bu değişmez.
Hiyerarşik cüzdanları mümkün kılan tek bir özellik vardır. Nokta çarpımı toplama üzerine dağılır, yani a artı b'nin noktası, a'nın noktasıyla b'nin noktasının toplamına eşittir. Bir özel anahtara bir tweak eklediğinizde, eşleşen genel anahtar o tweak'in noktası kadar kayar; bu tutarı anahtarı elinde tutmayan herkes hesaplayabilir. Sertleştirilmemiş BIP32 türetimi de buna dayanır; bir script ağacı taahhüdüyle kayan dahili anahtar olan Taproot çıktı anahtarı da öyle.
Nerede görürsünüz
Nokta fonksiyonu, bir cüzdan size yeni bir para alma adresi gösterdiğinde her seferinde çalışır.
Genişletilmiş bir genel anahtarın tek başına işe yaramasının nedeni de budur. Bir xpub'ı çevrimiçi bir mağazaya ya da yalnızca izleme yapan bir telefona verin; o makine, üzerinde hiçbir yerde özel anahtar olmadan, bir genel anahtara tweak uygulayarak her ödeme için yeni bir adres üretebilir. Donanım cüzdanları da aynı asimetriden diğer taraftan yararlanır: gizli değer çipten hiç çıkmaz ve kablodan yalnızca sonuçtaki nokta geri gelir.
Bu özelliğin keskin bir kenarı vardır. İlişki toplamsal ve kamuya açık olduğundan, bir genişletilmiş genel anahtar ile sızdırılmış tek bir sertleştirilmemiş alt özel anahtarın birleşimi, herkesin üst özel anahtarı ve onunla birlikte tüm dalı geri elde etmesini sağlar. Hesap düzeyinde türetimin sertleştirilmesinin ve sızdırılmış bir xpub'ın derhal hırsızlık değil, bir gizlilik felaketi sayılmasının nedeni budur.
Nokta fonksiyonu vs sıkıştırılmış genel anahtar
Nokta fonksiyonu matematiksel bir nesne üretir; sıkıştırılmış genel anahtar bu nesneyi yazmanın bir yoludur. Bir nokta, her biri 32 bayt olan bir koordinat çiftidir. Sıkıştırılmış biçim y koordinatını atar ve çift mi tek mi olduğunu kaydeden bir baytlık öneki korur; bu da 33 bayt eder. Sıkıştırılmamış biçim her iki koordinatı 65 bayt boyunca açıkça yazar. Taproot'un yalnızca x biçimi 32 baytı korur ve hiç önek kullanmaz. Hepsi aynı noktayı tanımlar, ancak her kodlamanın özeti farklı bir adrese gider; bu yüzden yanlış sıkıştırma bayrağıyla eski bir anahtarı içe aktarmak sıfır bakiye gösterirken bitcoinler öbür adreste dokunulmadan durur.