Sözlük / Adresler ve anahtarlar
P2WSH
Diğer adları: Pay-to-Witness-Script-Hash.
- P2WSH nedir?
- P2WSH, bitcoinleri bir tanık betiğine 32 baytlık SHA-256 taahhüdüyle kilitler; böylece sözleşmelere P2SH'ye göre çok daha fazla alan tanır ve betik açığa çıktığında betikte indirim sağlar.
Tanımlandığı belge: BIP-141.
"Pay to witness script hash", tek bir anahtardan daha karmaşık her şey için SegWit sürüm 0 çıktısıdır ve 62 karakterlik bir bc1q adresi olarak yazılır. Bitcoin Core, tanık betiği 3.600 bayta ulaşan ve tanığı 100 yığın öğesine kadar barındıran bir harcamayı aktarır; oysa bir P2SH kurtarma betiği 520 baytta durur. Bu ek alan, ciddi sözleşmelerin buraya taşınmasının nedenidir.
Nasıl çalışır
Bir P2WSH çıktısı, tanık sürümü 0 için 0x00 baytı ve ardından 32 baytlık bir itişten oluşur; toplam 34 bayt. Bu 32 bayt, serileştirilmiş tanık betiğinin düz bir SHA-256 değeridir; Bitcoin'in başka yerlerinde kullanılan bir SHA-256'nın RIPEMD-160 değeri değildir.
Bu tercih bilinçlidir. 160 bitlik bir taahhüt kabaca 80 bit çakışma direnci sunar; bu, bir karşı taraf betiğe ne gireceğini seçmeye yardım ettiğinde ve aynı hash'i paylaşan iki betik aramak için tarama yapabildiğinde rahatsız edicidir. 256 bitlik bir taahhüt bu endişeyi ortadan kaldırır. Tek anahtarlı P2WPKH daha kısa hash'i korur, çünkü anahtarı yalnızca tek bir taraf seçer ve bunun sonucunda adres 20 karakter daha kısa kalır.
Harcama sırasında argümanlar tanık yığınına itilir ve sonunda serileştirilmiş betik gelir. Bir düğüm bu son öğenin hash'ini hesaplar, taahhütle karşılaştırır ve ardından kalanla betiği çalıştırır. Bitcoin Core aktarım ilkesi sınırları policy.h dosyasında belirler: betik için 3.600 bayt, yığın için 100 öğe ve öğe başına 80 bayt.
Geçişi ücretler açıklar. Burada 2/3 çoklu imzalı bir harcama yaklaşık 104,5 vbyte tutar, çünkü hem imzalar hem de 105 baytlık betiğin tamamı tanıkta bayt başına bir ağırlık birimiyle taşınır. Aynı harcama politikası P2SH altında yaklaşık 297 vbyte tutar. OP_CHECKMULTISIG üzerindeki 20 anahtarlık mutabakat tavanına da ulaşılabilir, çünkü yirmi anahtar 700 baytın altında yer kaplar.
Nerede karşınıza çıkar
Her Lightning kanalı, 2/2 çoklu imzalı bir P2WSH çıktısına fonlanır; bu da az sayıda kişi adresi hiç yazsa da onu zincirdeki en yaygın betik türlerinden biri yapar. Kurumsal saklama, miniscript politikaları ve zaman kilidi içeren miras maddeleri de onu kullanır.
Bir blok gezgininde harcanmamış bir P2WSH çıktısı 62 karakterlik bir bc1q dizisidir ve başka hiçbir şey değildir. İki anahtarı da yirmi anahtarı da korusa aynı görünür ve koşullar ancak bitcoinler hareket ettiğinde ortaya çıkar.
Yedekler betiği içermek zorundadır. Bir kurtarma ifadesi anahtarları yeniden üretir, keyfi betikleri değil; bu yüzden tanımlayıcıyı ya da betiğin tam baytlarını kurtarma ifadesiyle birlikte saklayın ve adres gerçek para tutmadan önce bunlardan geri yükleme yapabildiğinizi doğrulayın.
P2WSH vs tanık betiği
P2WSH çıktıdır; tanık betiği ise onun taahhüt ettiği içeriktir. Çıktı yalnızca 32 baytlık hash tutar ve başka hiçbir şey tutmaz; dolayısıyla bağlı koşullar hakkında hiçbir bilgi vermez ve bir harcama onu yayımlayana kadar betiğin hiçbir parçası zincirde görünmez. Bunun sonucunda yükümlülük dengesizdir. Gönderici yalnızca adrese ihtiyaç duyar ve hiçbir şey anlamadan ödeme yapabilir. Alıcı ise betiğin tam baytlarına sonsuza kadar ihtiyaç duyar, çünkü onları kaybetmek, kaç özel anahtar sağ kalırsa kalsın bitcoinleri harcanamaz hale getirir.