127 / 691WIT

Witness data

Witness data містять докази для витрачання входів SegWit. Вони є частиною транзакції, хоча початковий розрахунок txid їх не враховує.

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.

DOC · 001BIP 141 — Segregated WitnessСпецифікація ↗DOC · 002BIP 143 — SegWit signature hashingСпецифікація ↗DOC · 003BIP 341 — TaprootСпецифікація ↗DOC · 004Bitcoin Developer Reference — TransactionsДокументація ↗DOC · 005Bitcoin Core v29.0 — Script interpreterДокументація ↗DOC · 006Bitcoin Core — Segregated Witness benefitsДокументація ↗
Спочатку джерела · Не інвестиційна порада