İçeriğe geçin
buybitcoinsmart

Sözlük / Geliştirici başvuru kaynağı

Descriptor sağlama toplamı

Descriptor sağlama toplamı nedir?
Descriptor sağlama toplamı, bir çıktı descriptor'ında kare işaretinden sonra gelen sekiz karakterlik koddur; bir cüzdan yanlış anahtarları içe aktarmadan önce yazım ve kopyalama hatalarını yakalayan bir BCH kodudur.

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

Kod, bir descriptor'ın sonunda, tek bir kare işaretinden sonra, bech32 ile aynı 32 karakterlik alfabede yer alır. BIP-380, üç simgeye veya daha azına dokunan herhangi bir hatanın 49.154 karaktere kadar olan bir descriptor'da yakalanacağını garanti eder ve rastgele bir hata kabaca bir trilyonda bir kez fark edilmeden geçer. Bu kontrol olmadan, bir multisig yedeğindeki tek bir yanlış karakter, sizi hiçbir şey tutmayan adresleri izlerken bırakır.

Nasıl çalışır

Descriptor sağlama toplamı, descriptor metni üzerinden hesaplanan bir BCH kodudur, metnin bir hash'i değildir ve hata garantilerini sağlayan da budur. BIP-380, 95 karakterlik bir giriş alfabesi tanımlar ve bunu üç gruba ayırır; kendi koruması olmayan karakterleri ilk gruba koyar: rakamlar, köşeli parantezler, eğik çizgiler, joker yıldız işareti ve a'dan h'ye küçük harfler, yani onaltılık kodlanmış anahtarların ve türetme yollarının düştüğü yer. Spesifikasyonun metni bunu 32'lik üç grup olarak adlandırır, oysa referans kodu 32, 32 ve 31 kullanır.

Her karakter, kendi grubu içindeki konumu olan bir simgeye katkıda bulunur ve her üç simgeden sonra, üç grup numarasının birleşimini taşıyan dördüncü bir simge eklenir; böylece üç karakter dört simgeye genişler. Bir karakteri yalnızca kendi grubu içinde kaydıran ya da yalnızca hangi grupta durduğunu değiştiren bir değişiklik tam olarak bir simgeyi bozar. Bu yüzden bir büyük küçük harf hatası tam olarak tek simge hatası sayılır ve bu yüzden tek bir büyük harfle yazılmış karakter her zaman yakalanır.

Garantiler dize uzadıkça basamak basamak azalır. Tek simge hatası her zaman yakalanır; iki veya üç hata 49.154 karaktere kadar, dört hata 507 karaktere kadar ve beş hata 77 karaktere kadar her zaman yakalanır, kod ise yakalanmayan beş simge hatasını 387 karaktere kadar en aza indirecek şekilde ayarlanmıştır. Bitcoin Core yazılımının descriptors.md dosyası dört hata sınırını 507 yerine 501 karakter olarak aktarır ve kalan riski kabaca bir trilyonda bir olarak verir. O belgedeki tek anahtarlı descriptor 140 karakter tutar, yani her sınırın içindedir; belgedeki 2/3 çok yollu örneği ise 439 karakter tutar, yani beş simgelik pencereyi aşar ve dört simgelik pencerenin içinde kalır.

Genişletilmiş anahtarlar zaten kendilerini korur. BIP-380, bir xpub'un ilk grubun dışına taştığını ve kendi sağlama toplamı mekanizmasını taşıdığını belirtir, böylece bir anahtar ifadesi iki kez korunmuş olur.

Nerede görülür

BIP-380 test vektörleri, bir descriptor sağlama toplamının işini yaptığını izlemenin en kısa yoludur. Geçerli dize raw(deadbeef)#89f8spxm'dir ve spesifikasyonun reddettiği neredeyse doğru örnekler arasında sağlama toplamının olmaması, çıplak bir kare işareti, dokuz karakterlik bir sağlama toplamı, yedi karakterlik bir sağlama toplamı, eski sağlama toplamı değiştirilmeden bırakılmış raw(deedbeef) ve giriş alfabesinin dışında bir karakter kullanan bir yük bulunur.

Bitcoin Core sağlama toplamını dışarı verirken yazdırır ve içeri alırken talep eder. Bir descriptor döndüren her RPC bu sekiz karakteri ekler, oysa yalnızca bazıları girişte bir sağlama toplamı ister; bunlar arasında deriveaddresses ve importdescriptors da vardır. Elle yazdığınız ya da düzenlediğiniz bir satır için getdescriptorinfo doğru sağlama toplamını döndürür.

Sağlama toplamı ayrıştırma için isteğe bağlı kalır ve BIP-380 uygulamaların sağlama toplamı olmadan gelen descriptor'ları reddetmesine izin verir. Bir multisig düzenini bir koordinatör, yedek bir makine ve bir kâğıt yaprağı arasında taşırken onu bekleyin: geri kalanın sağlam ulaştığını doğrulayan tek parça o sekiz karakterdir.

Descriptor sağlama toplamı vs bech32

bech32 sağlama toplamı bir adresi korur, descriptor sağlama toplamı ise bir cüzdan tanımını korur ve işin içindeki boyutlar tasarım farkını açıklar. BIP-173 bir bech32 dizesini 90 karakterle sınırlar ve veri bölümünün son altı karakterini, aynı 32 simgelik alfabe üzerinden sağlama toplamına ayırır. Bir descriptor'da böyle bir sınır yoktur ve köşeli parantezleri, virgülleri, tırnakları ve boşlukları da kapsaması gerekir, bu yüzden BIP-380 metni aralara bir grup simgesi eklenmiş konum simgelerine genişletir ve sekiz karakter ayırır.

Her ikisi de bu sonucu aynı alfabede yazar, qpzry9x8gf2tvdw0s3jn54khce6mua7l, kafa karışıklığı da burada başlar. Başarısız olan şey farklıdır. Sağlama toplamını geçemeyen bir bech32 adresine ödeme yapılamaz; sağlama toplamını geçemeyen bir descriptor ise geri yüklenemeyen bir cüzdandır.

Karıştırılmaması gerekenler

Sık sorulan sorular

Yanlış sağlama toplamı olan bir descriptor'ı içe aktarırsam ne olur?

Bitcoin Core, sağlama toplamı isteyen RPC'lerde (bunlar arasında importdescriptors ve deriveaddresses de vardır) descriptor'ı doğrudan reddeder, bu yüzden hiçbir şey içe aktarılmaz. Reddetmenin amacı da budur: bu olmasaydı, tek bir yanlış yazılmış karakter size geçerli görünen ama bitcoinlerinizin hiçbirini tutmayan adresleri izleyen bir cüzdan verirdi.

Kare işaretinden sonraki sekiz karakteri doğrudan silebilir miyim?

BIP-380 sağlama toplamını ayrıştırma için isteğe bağlı kılar, ancak aynı zamanda yazılımın sağlama toplamı olmadan gelen herhangi bir descriptor'ı reddetmesine izin verir ve Bitcoin Core bazı RPC'lerde tam olarak bunu yapar. Her yedekte sağlama toplamını descriptor ile birlikte saklayın, çünkü satırın geri kalanının sağlam ulaştığını kanıtlayan tek parça odur.

Elle yazdığım bir descriptor'ın sağlama toplamını nasıl hesaplarım?

Dizeyi Bitcoin Core getdescriptorinfo RPC çağrısından geçirin; bu çağrı, dize için doğru sekiz karakteri döndürür. BIP-380 ayrıca referans uygulama descsum_create'i da yayımlar, bunu kendiniz hesaplamayı tercih ederseniz.

Sıradaki okuma

İlgili terimler

Daha fazlası: Geliştirici başvuru kaynağı

Bu sayfayı İngilizce okuyun