Witness — поле елементів стека для окремих входів. Його значення визначають версія й умова виходу, що витрачається; це не обов'язково окремо виконуваний скрипт.
Кожен вхід має власний список елементів у серіалізації witness. Перевірка підпису використовує повідомлення, визначене відповідною версією скрипту; сама наявність даних не доводить чинності. [BIP 141 — Segregated Witness] [BIP 143 — SegWit signature hashing]
txid обчислюють із початкової серіалізації без witness. wtxid охоплює повну серіалізацію з witness; для транзакції без witness ідентифікатори збігаються. [BIP 141 — Segregated Witness]
Witness program — версійна умова у виході, що витрачається. Witness надає пізніша транзакція витрачання; це не те саме поле й не резервна копія набору UTXO. [BIP 141 — Segregated Witness]
Нативний SegWit версії 0 вимагає порожнього scriptSig. В обгортці P2SH scriptSig поміщає witness program у стек; докази витрачання залишаються у witness. [BIP 141 — Segregated Witness]
P2WPKH надає підпис і публічний ключ. У P2WSH останній елемент — witnessScript, хеш якого має відповідати програмі; попередні елементи утворюють початковий стек. [BIP 141 — Segregated Witness] [BIP 143 — SegWit signature hashing]
Після вилучення annex, якщо він є, Taproot розрізняє один елемент підпису для ключового шляху та скриптовий шлях зі скриптом і контрольним блоком. Правила версії 0 не можна механічно переносити на версію 1. [BIP 341 — Taproot]
BIP 141 зобов'язує до witness через дерево wtxid і зобов'язання в coinbase. Coinbase має нульовий wtxid у цьому дереві; зобов'язання поєднує корінь із зарезервованим значенням на 32 байти. [BIP 141 — Segregated Witness]
Зміна лише witness не змінює txid. Відокремлення не гарантує незмінності всіх інших полів чи комбінацій входів; змінений доказ також має пройти перевірку. [BIP 141 — Segregated Witness] [Bitcoin Core — Segregated Witness benefits]
Байти, додані серіалізацією witness, дають 1 WU проти 4 WU за базовий байт. Full Node усе ще потребує їх для відповідної перевірки; це не безкоштовні дані поза ланцюгом. [BIP 141 — Segregated Witness] [Bitcoin Core v29.0 — Script interpreter]
Witness може публічно розкрити підпис, публічний ключ або використану гілку скрипту. Це не зашифроване сховище, воно не призначене для приватних ключів і не замінює Seed Phrase чи резервну копію гаманця. [BIP 341 — Taproot] [Bitcoin Developer Reference — Transactions]
Для повної картини прочитайте також SegWit, Block weight, Bitcoin Script, Taproot. На цю статтю також посилаються Virtual byte (vbyte), Block weight.