Sözlük / Adresler ve anahtarlar
P2SH adresi
Diğer adları: Pay-to-Script-Hash, P2SH çıktısı.
- P2SH adresi nedir?
- P2SH adresi 3 ile başlar ve bir kullanım betiğinin hash değerine bağlanır; böylece harcama koşulları biri betiği açığa çıkarana kadar gizli kalır.
Tanımlandığı belge: BIP-16.
Pay to script hash, BIP-16 ile geldi, 1 Nisan 2012 tarihinde 173.805 numaralı bloktan itibaren yürürlüğe girdi ve karmaşıklığın maliyetini kimin taşıdığını değiştirdi. Ondan önce göndericinin sözleşmenin tamamını çıktıya yazması gerekiyordu. Ondan sonra gönderici 23 bayt yazar ve betiği daha sonra açığa çıkarmanın bedelini alıcı öder; bu yüzden 3 ile başlayan bir adres beş anahtarlı bir kasayı ya da sıradan tek anahtarlı bir cüzdanı gizleyebilir.
Nasıl çalışır
Çıktı betiği kısadır ve her P2SH adresi için aynıdır: OP_HASH160, ardından 20 baytlık bir hash ve OP_EQUAL, toplam 23 bayt. Hash, yalnızca alıcının bildiği bir kullanım betiğine bağlanır.
Harcama iki aşamada gerçekleşir. scriptSig, kullanım betiğinin ihtiyaç duyduğu argümanları, son öğe olarak da serileştirilmiş kullanım betiğinin kendisini sağlar. Bir düğüm bu son öğenin hash değerini hesaplar, bağlanılan değerle karşılaştırır ve eşleşirlerse betiğin serileştirmesini çözer ve yığında kalan her şeye karşı çalıştırır. İki aşamanın da başarılı olması gerekir.
Sığabilecekleri iki sınır belirler. Kullanım betiği tek bir yığın öğesidir, dolayısıyla Bitcoin Core tarafından MAX_SCRIPT_ELEMENT_SIZE olarak tanımlanan 520 baytlık push sınırını aşamaz. Aktarım politikası her P2SH girdi için 15 imza işlemi şeklinde ikinci bir tavan ekler. Birlikte, düzenlemeyi betik dilinin genel olarak izin verdiğinin, yani 10.000 baytlık bir betik sınırının, çok altında tutarlar.
Adresin kendisi 0x05 sürüm baytıyla Base58Check biçimindedir; bu, baştaki 3 rakamını ve 34 karakterlik bir dizi üretir. BIP-13 bu biçimi, BIP-16 içindeki mutabakat kuralından ayrı olarak tanımladı.
Nerede görülür
Bir seçeneği "native" demeden "SegWit" olarak tanımlayan borsa para çekme formları genellikle 3 ile başlayan bir adresi kasteder. 2018 yılından önce kurulmuş çok imzalı kasalar bunları kullanır. Bir betiğe ihtiyaç duyan ama sıradan bir cüzdanın ödeyebileceği bir adres isteyen atomik takaslar ve hashli zaman kilidi sözleşmeleri de bunları kullanır.
Tasarımın sonucu belirsizliktir ve bu belirsizlik tamdır. Harcanmamış bir 3 çıktısı yalnızca bir hash açığa çıkarır, dolayısıyla bir blok gezgini içinde sarmalanmış tek bir anahtar mı yoksa kurumsal bir yeter sayı düzenlemesi mi bulunduğunu size söyleyemez, gönderici de söyleyemez. Bilgi yalnızca harcama işleminde ortaya çıkar.
Bu belirsizlik gerçek bir kayıp biçimi taşır. P2SH çıktısındaki coinleri kurtarmak için yalnızca özel anahtarlar değil, kullanım betiği gerekir. Tek başına bir kurtarma ifadesi rastgele bir betiği yeniden oluşturmaz, dolayısıyla standart bir cüzdan türetmesinden daha ayrıntılı her P2SH düzenlemesi bir tanımlayıcı olarak ya da betiğin baytlarının kendisi olarak yedeklenmelidir. Bazı kişiler tüm anahtarlara sahipken ve hiç betik yokken coin kaybetti.
P2SH adresi vs P2SH çok imza
P2SH çok imza, bir P2SH adresinin içine koyabileceğiniz şeylerden biridir, biçimin eşanlamlısı değildir. Adres bir kaptır ve içinde saklanan kullanım betiği m-of-n çok imzalı bir düzenleme, iç içe geçmiş bir SegWit anahtar hash'i, zaman kilitli bir kurtarma maddesi ya da kimsenin daha önce hiç yazmadığı bir betik olabilir. 3 ile başlayan bir adresi “çok imzalı bir adres” olarak okumak sıkça yanlış çıkan bir tahmindir, çünkü sarmalanmış SegWit, 2017 yılından sonraki birkaç yıl boyunca 3 rakamını varsayılan tek anahtarlı biçim haline getirdi ve milyonlarca sıradan cüzdanı o önekin arkasında bıraktı.