Sözlük / Protokol ve güncellemeler
Witness verisi
Diğer adları: Witness.
- Witness verisi nedir?
- Witness verisi, bir SegWit işleminin ayrı bir bölümde taşıdığı imza malzemesidir; bayt başına bir ağırlık birimine indirilir ve txid'nin tamamen dışında tutulur.
Tanımlandığı belge: BIP-144.
Her girdi kendi witness'ını alır: bir öğe yığını, çoğu zaman bir imza ve bir genel anahtar. Bu bölüm çıktılardan sonra gelir; yazılıma işlemin daha yeni biçimde olduğunu söyleyen iki baytlık bir işaretçi ve bayrağın arkasında yer alır. 2017 yükseltmesinden önceki yazılımı çalıştıran bir düğüm bunu hiç istemez ve hiç görmez.
Nasıl çalışır
Witness verisinin bir işlemin bayt düzeninde kendine ait bir yeri vardır ve bu yer BIP-144 ile tanımlanır.
Daha yeni biçimdeki serileştirilmiş bir işlem şöyle okunur: sürüm, işaretçi baytı 0x00, bayrak baytı 0x01, girdiler, çıktılar, ardından aynı sırayla her girdi için bir witness yığını ve en sonda locktime. Uyumluluk hilesi tam da işaretçide bulunur, çünkü eski ayrıştırıcıda sıfır değeri sıfır girdi anlamına gelirdi, ki bu anlamsızdır; böylece yeni biçimi alan eski yazılım bunun kendisi için olmadığını hemen anlar ve eski eşlere bu veri hiçbir zaman gönderilmez.
Bundan iki tanımlayıcı çıkar. txid, işaretçi, bayrak ve witness'lar çıkarılmış işlemin çift SHA-256 değeridir; bir witness'ın içindeki hiçbir şeyin bunu değiştirememesinin nedeni budur. wtxid ise bunun yerine tam serileştirmenin hash'ini alır. Her blok, wtxid değerlerinin merkle köküne bir coinbase çıktısı içinde bağlanır; bu, betiği en az 38 bayt olan ve dört baytlık 0xaa21a9ed etiketiyle başlayan bir OP_RETURN çıktısıdır, böylece veri daha eski taahhüdün dışında yaşasa da korunur.
İndirim maliyette görünür. Witness'ın dışındaki her şey bayt başına dört ağırlık birimi, içindeki her şey ise bir ağırlık birimi olarak ücretlendirilir; blok başına üst sınır 4.000.000 ağırlık birimidir. Ağırlığı dörde böldüğünüzde sanal baytı elde edersiniz; ücret oranlarının belirtildiği birim de budur.
Nerede görürsünüz
Bir blok gezgininde herhangi bir işlemi açın; boyut, sanal boyut ve ağırlık yan yana yazılır. Birbirlerini tutmadıklarında aradaki fark witness verisidir. Hiç witness'ı olmayan bir ödeme, boyutu vsize değerine eşit görünür; bir Taproot ödemesi ise ham boyutunun ancak dörtte biri kadar bir vsize gösterebilir.
Modern bir gezginde tek bir girdiyi genişlettiğinizde yığının kendisini görürsünüz. bc1q ile başlayan bir ödeme için bu iki öğedir: yaklaşık 71 veya 72 baytlık bir imza ve 33 baytlık sıkıştırılmış bir genel anahtar. Taproot anahtar yolu harcamasında ise tam olarak 64 baytlık tek bir öğedir. Daha yeni çıktı türlerinden harcamanın daha ucuz olmasının tek nedeni bu sayıdır.
Bu alan ayrıca donanım cüzdanınızın işlediği dosyalarda da görünür. Kısmen imzalanmış bir Bitcoin işleminde her girdi için bir witness UTXO kaydı ve bir nihai witness kaydı bulunur; çoklu imzalı bir işlem imza toplarken bir koordinatör uygulamasının ileri geri aktardığı şey budur.
Witness verisi vs witness script
Witness verisi yığının tamamıdır; witness script ise onun içindeki tek bir öğedir. Bir P2WSH harcamasında yığındaki son öğe, çıktının hash'ine bağlandığı scripttir ve ondan önceki her şey bu scripti karşılamak için vardır. Bu ilişki daha eski deseni birebir kopyalar; orada da redeem script bir P2SH imza scriptinin son öğesidir. Yani her witness script witness verisidir, oysa witness verisinin çoğu, her sıradan tek anahtar harcaması dahil, hiç witness script içermez.