From 5491adc896809e641ec34fcddb3f68bcbc3ddd66 Mon Sep 17 00:00:00 2001 From: Murch Date: Tue, 19 Apr 2022 17:19:35 -0400 Subject: [PATCH 01/10] Add transaction terminology bip --- bip-tx-terminology.mediawiki | 351 +++++++++++++++++++++++++++++++++ bip-tx-terminology/scripts.png | Bin 0 -> 94465 bytes 2 files changed, 351 insertions(+) create mode 100644 bip-tx-terminology.mediawiki create mode 100644 bip-tx-terminology/scripts.png diff --git a/bip-tx-terminology.mediawiki b/bip-tx-terminology.mediawiki new file mode 100644 index 0000000000..8a9d208cab --- /dev/null +++ b/bip-tx-terminology.mediawiki @@ -0,0 +1,351 @@ +
+  BIP: ?
+  Title: Terminology of Transaction Components
+  Authors: Murch 
+  Status: Draft
+  Type: Informational
+  Assigned: ?
+  License: BSD-3-Clause
+  Discussion: 2023-04-05: https://gnusha.org/pi/bitcoindev/6bb373cc-bee0-13a3-a510-b65d4faa867f@murch.one/#t
+              2023-03-22–…: https://github.com/murchandamus/bips/pull/1
+
+ +== Introduction== + +===Abstract=== + +This document describes terminology for referring to scripts, transaction parts, and serialization artifacts in the context of transactions. + +===Copyright=== + +This document is licensed under the 3-clause BSD license. + +===Motivation=== + +In the past decade, in many discussions about building transactions, leveraging new output types, and explaining the inner workings of inputs, we noticed that terminology to refer to the components of transactions and functions that scripts fulfill in transactions includes a broad spectrum of competing jargon. +In this document, we describe a set of terms that can be used to refer to transaction components by their function or their context. +The terms are not entirely consistent in themselves since many are already firmly established. +Instead of striving for consistency, we try to relate terms to each other, explore the origins of terms, and fill in the blanks. +The hope is that this terminology could be used in technical writing about Bitcoin as well as future BIPs. + +===Objects and their Serialization=== + +We treat the objects of the Bitcoin protocol (e.g. transactions, blocks) as distinct from their serialization. +We distinguish parts and concrete properties of transactions (labeled [Component]) such as fields and scripts as well as composites thereof from serialization artifacts (labeled [Artifact]) which only appear in the serialization format. +For example, version and lock time are fields that can be set during transaction creation and therefore components of a transaction, while the input counter is a serialization artifact resulting from how the input list of the transaction is represented in the transfer format. +Likewise, the input script is a transaction component, but the length indicator of the input script is a serialization artifact, and a witness stack is a component, but the marker and flag appearing in a segwit transaction’s header are serialization artifacts. + +We also introduce some umbrella terms, concepts, and ideas that are useful to describe aspects of transactions (labeled [Concept]). + +===Reader Guidance=== + +- If the distinction between components and serialization artifacts is not readily clear, perusing the below example of a [[#example-anatomy-of-a-serialized-transaction|transaction’s anatomy]] may help foster an intuitive sense. +- An visual overview of how different output types make use of the different components can be found in the table [[#usage-in-context-of-txo-creation-and-spending|"Usage in context of TXO creation and spending"]]. +- The term definitions are sorted alphabetically. If a term is unfamiliar, it is probably defined below in the same list! + +==Definition of Terms== + + + +; amount +: [Component] The count of satoshis assigned to an output. +: Synonym: nValue, value + +; annex +: [Component] A witness item reserved for future extensions, currently unused (see [[https://github.com/bitcoin/bips/blob/master/bip-0341.mediawiki#cite_note-5|BIP341]]). + +; bare output script +: [Component] A condition script that is directly defined in the output script field. Used to specify all types of bare outputs including Pay to Pubkey (P2PK), Pay to Public Key Hash (P2PKH), Pay to Multisig (P2MS) outputs, and arbitrary scripts. + +; coinbase +: [Component] The coinbase field takes the place of the input script in a coinbase transaction (named after this field), since coinbase transactions do not spend a previous transaction output (TXO). + +; CompactSize +: [Concept] A variable-length integer encoding used in the transaction serialization to express input and output count. +: Synonym: VarInt (do not use, see [[compactsize|Rationale]]) + +; condition script +: [Concept] Umbrella term for scripts that encode the actual spending conditions that must be fulfilled to spend a TXO. Condition scripts may be preceded by one or more forwarding scripts. An output script will either directly contain a condition script in the case of a bare output, or commit to one or multiple condition scripts for other output types. For P2TR both the taproot internal key and each leaf script in the script tree are considered condition scripts. At the time of writing, there are five distinct condition scripts: taproot output key, leaf script, witness script, redeem script (only non-segwit P2SH), and bare output script (P2PK, P2PKH, P2MS, and arbitrary scripts). + +; control block +: [Component] The proof of existence for a leaf script. Appears as a witness item in witness stacks for P2TR scriptpath inputs, but does not get evaluated by the condition script. Only consists of the taproot internal key for script trees with a single leaf script, otherwise provides the taproot internal key as well as a taproot branch in the form of the hashing partners for the used leaf script. + +; flag +: [Artifact] A serialization artifact indicating features used by the transaction. As of writing, the only allowed value is 01 which indicates that the transaction serialization has a witness structure (see [[https://github.com/bitcoin/bips/blob/master/bip-0144.mediawiki|BIP144]]). + +; forwarding script +: [Concept] A collective term for scripts that redirect input validation to another script or data structure. Witness programs and P2SH Programs are forwarding scripts. Forwarding scripts make use of script templates that imply additional evaluation steps beyond the explicitly expressed conditions. In the case of P2SH, the output script itself only explicitly specifies that the redeem script must be the preimage of the hash in the output script, but the template prescribes that the redeem script must additionally be satisfied. For witness programs, the output script is even less verbose with more implied meaning. + +; input +: See '''transaction input'''. + +; input counter +: [Artifact] The length of the transaction input list (see [[https://github.com/bitcoin/bips/blob/master/bip-0144.mediawiki|BIP144]]). +: Synonym: txin_count + +; input index +: [Concept] The position of an input in a transaction’s input list. + +; input script +: [Component] The Bitcoin code base used Hungarian notation when it was published. This transaction field appearing in transaction inputs was named for containing the signature and being of the type script. Today, this field is better understood as the input script which is used to satisfy spending conditions for non-segwit outputs, redirects validation to the witness stack for wrapped segwit outputs, and is empty for native segwit outputs. The input script may contain an actual script when spending a bare output script, but may only contain push operations for any output type since P2SH. +: Synonyms: scriptSig, unlocking script (see [[locking_unlocking|Rationale]]) + +; leaf script +: [Component] A condition script used for spending P2TR outputs via the scriptpath. The leaf script appears as a witness item. + +; leaf version +: [Component] The version of Script used in a leaf script. At the time of writing, only Tapscript is defined. + +; lock time +: [Component] Part of the transaction header. Lock time specifies a time (in blockheight or UNIX time) before which a transaction cannot be included in a block if any input’s sequence number indicates non-finality. The lock time can also indicate a relative spending lock in combination with OP_CHECKSEQUENCEVERIFY. Serialized as the four-byte nLockTime integer field. +: Synonym: nLockTime, lock_time + +; marker +: [Artifact] 1-byte serialization artifact indicating that a type of extended serialization is being used for this transaction. Must always be 00 (see [[https://github.com/bitcoin/bips/blob/master/bip-0144.mediawiki|BIP144]]). (Note: Non-segwit nodes will only accept stripped segwit transactions, because the marker appears at the position where non-segwit nodes expect the input counter. The input counter may not be zero, so a complete (non-stripped) segwit transaction appears invalid to a non-segwit node.) + +; outpoint +: [Component] Identifies the transaction output (TXO) being spent by a transaction input. Consists of a txid and output index. The txid is serialized in little-endian but displayed in big-endian. +: Synonym: prevout + +; output +: See '''transaction output'''. + +; output counter +: [Artifact] The length of the transaction output list, (see [[https://github.com/bitcoin/bips/blob/master/bip-0144.mediawiki|BIP144]]). +: Synonym: txout_count + +; output index +: [Component] Part of an outpoint. The position of the output in a transaction’s output list that created the identified TXO. +: Synonym: vout_index, sometimes abbreviated as vout + +; output script +: [Component] Must be present in each transaction output. Contains either a condition script or a forwarding script. Originally, the Bitcoin code base used Hungarian notation. This field was presumably named scriptPubKey as it was of the type script and because it fulfilled the role of a public key. While the first standard output type, Pay to Public Key, only contained the public key in this field, the use of this field had evolved beyond that even when Bitcoin was published, since the field could already contain more complicated bare scripts. Today, this field is referred to as the output script. +: Synonyms: scriptPubKey, locking script (see [[locking_unlocking|Rationale]]) + +; P2SH program +: [Concept] A script template that forwards input validation to the redeem script. P2SH programs are a type of forwarding script. + +; redeem script +: [Component] The condition script used in spending P2SH outputs. Is provided in the input script along with script arguments to satisfy it. The input script of wrapped segwit inputs is not a redeem script but a witness program. +: Synonyms: redeemScript, redemption script + +; Script +: [Concept] The original variant of the Bitcoin Script language used in bare output scripts, P2SH redeems scripts, and P2WSH witness scripts. Signature processing opcodes in Script expect DER-encoded ECDSA signatures. Capitalized Script refers to the language, whereas lowercase script refers to a script. + +; script arguments +: [Concept] Arguments presented to satisfy a condition script, e.g. signatures and public keys. + +; script tree +: [Concept] The Merkle tree composed from the collection of leaf scripts committed to by a P2TR output. + +; scriptCode +: [Concept] A value calculated from the input script and output script excluding malleable elements that is used to commit to an input in the transaction data hashed to create the message that is signed by a signature. + +; scriptPubKey +: See '''output script'''. + +; scriptSig +: See '''input script'''. + +; sequence +: [Component] The sequence number appearing in each transaction input. Serialized as the four-byte nSequence integer field. If any input’s sequence number is less than the maximum allowed value, a transaction is non-final. + +; signature +: [Component] A script argument that proves a key owner’s consent to a transaction. Composed of an r-value, an s-value, and a sighash flag. ECDSA and Schnorr signatures use different serialization schemes for signatures. The length indicator preceding the signature is a serialization artifact that is not part of the signature. If the default signature hash type SIGHASH_ALL is used, the sighash flag may be omitted for Schnorr signatures. + +; sighash flag +: [Component] Part of the signature. A one-byte field that indicates which parts of the transaction a signature commits to. + +; taproot branch +: [Component] Part of a control block that specifies the hashing partners necessary to prove the existence of a leaf script in a script tree. + +; taproot internal key +: [Component] The untweaked public key before it is tweaked with the Merkle root of the script tree to create the taproot output key. Appears as part of a control block for a scriptpath P2TR input. +: Synonym: inner key + +; taproot output key +: [Component] The public key present in the witness program of a P2TR output script composed by tweaking the inner key with the script tree’s Merkle root. + +; Tapscript +: [Concept] The variant of the Script language used in P2TR leaf scripts (see [[https://github.com/bitcoin/bips/blob/master/bip-0342.mediawiki|BIP342]]). Signature processing opcodes in Tapscript expect Schnorr signatures. + +; transaction header +: [Concept] Collective term for the serialization artifacts and transaction fields that appear only once in the transaction serialization regardless of lengths of the input and output lists: transaction version, marker (segwit only), flag (segwit only), input counter, output counter, and lock time. + +; transaction identifier (txid) +: [Component] Identifies the transaction that created a TXO in an outpoint. Result of hashing a transaction without its witness structure. The txid is serialized in little-endian but displayed in big-endian. + +; transaction input +: [Component] An element of the transaction input list that consists of an outpoint, an input script, and a sequence. The outpoint identifies the TXO that is being spent. The input script can have various content depending on the type of output being spent. The input script has length 0 for native segwit inputs. In segwit transactions, every input must be accompanied by a witness stack. The witness stack is not part of the transaction input. +: Synonym: input, txin + +; transaction input list +: [Concept] The enumeration of all transaction inputs of a transaction. +: Synonym: inputs, vin, txins, tx_ins + +; transaction output (TXO) +: [Component] A transaction component that consists of an amount and an output script. Adds a new unspent transaction output (UTXO) to the UTXO set that is uniquely identified by an outpoint. +: Synonym: output, txout + +; transaction output list +: [Concept] The enumeration of all transaction outputs of a transaction. +: Synonym: outputs, vout, txouts, tx_outs + +; unspent transaction output (UTXO) +: [Concept] An entry in Bitcoin’s ledger of spendable funds, the UTXO set. UTXOs get created by transaction outputs and spent by transaction inputs. UTXOs are uniquely identifiedThere have been two instances in which UTXOs with existing outpoints were recreated, see [[https://github.com/bitcoin/bips/blob/master/bip-0030.mediawiki|BIP30]] by an outpoint. The UTXO model with its uniquely-identifiable discrete portions of funds is instrumental to Bitcoin’s solution of the doublespend problem. +: Synonym: coin (whitepaper) + +; version +: [Component] Part of the transaction header that specifies the transaction version. Serializes as the four-byte nVersion integer field. +: Synonym: nVersion + +; witness item +: [Component] An element of a witness stack. Witness items are: witness script (P2WSH only), script arguments, leaf script (P2TR scriptpath only), control block (P2TR scriptpath only), annex (P2TR only). +: Synonyms: witness element, witness stack element ([[https://github.com/bitcoin/bips/blob/master/bip-0341.mediawiki|BIP341]]) + +; witness program +: [Concept] A script template that forwards input validation to the witness stack. Witness programs are a type of forwarding script. Witness programs appear in the output script for native segwit outputs and in the input script for wrapped segwit inputs. + +; witness structure +: [Concept] The part of the serialized transaction that contains the witness stacks for each input. Transactions without segwit inputs are serialized without a witness structure. +: Synonym: script_witnesses (BIP144), witness (BIP141, underdefined without more context, as "witness" is used for both witness structure and witness stack) + +; witness script +: [Component] A witness item that provides the condition script used to spend P2WSH outputs. Appears in the witness stack. + +; witness stack +: [Component] The pre-built stack of witness items that is consumed in validation of the input’s condition script. Witness stacks are not scripts, but may include witness items that are scripts. While there is a witness stack for each input, the witness stack is not part of the input. A witness stack can contain witness items that will not be added to the stack, such as the control block. The witness stack may contain condition scripts, specifically it will contain a witness script for P2WSH inputs, and a leaf script for a P2TR scriptpath spend. Every transaction input is accompanied by a witness stack, but the witness stack of non-segwit inputs is empty, i.e. consists just of the serialization artifact of a witness item count of 0. +: Synonym: input witness, witness (underdefined without more context, as "witness" is used for both witness structure and witness stack including in BIP141), script witness (BIP144) + +; witness transaction identifier (wtxid) +: [Concept] Result of hashing a complete transaction including its witness structure. Used in transaction propagation and to construct a witness commitment. + +; witness version +: [Component] The version of a witness program. + +===Usage in context of TXO creation and spending=== + +{| class="wikitable" +! Output Type !! Output Script !! Output Script content !! Input Script !! Witness Stack +|- +| Bare¹ (e.g. P2PK) || Bare Output Script || Various (e.g. OP_CHECKSIG) || Various (e.g. ) || rowspan="2" | [ ] +|- +| P2SH || rowspan="3" | P2SH Program || rowspan="3" | OP_HASH160 OP_EQUAL || Script Arguments, Redeem Script +|- +| P2SH-P2WPKH || rowspan="2" | Witness Program || [, ] +|- +| P2SH-P2WSH || […Script Arguments, Witness Script] +|- +| P2WPKH || rowspan="4" | Witness Program || OP_0 || rowspan="4" | NULL || [, ] +|- +| P2WSH || OP_0 || […Script Arguments, Witness Script] +|- +| P2TR Keypath || rowspan="2" | OP_1 || [] +|- +| P2TR Scriptpath || […Script Arguments, Leaf Script, Control Block, (Opt: Annex)] +|} + +¹ Bare outputs include P2PK, P2PKH, P2MS, and any other arbitrary scripts that are fully defined in the output script. + +===Example: Anatomy of a serialized transaction=== + +In this section we dissect a serialized transaction. Each sub-level in the list repeats a subset of the transaction’s serialization to label the included parts. The goal is to provide a map from a serialized transaction back to our definitions above. We use the first ever P2TR transaction with a keypath and a scriptpath input 37777defed8717c581b4c0509329550e344bdc14ac38f71fc050096887e535c8. + +* Raw '''Transaction''' 020000000001027bc0bba407bc67178f100e352bf6e047fae4cbf960d783586cb5e430b3b700e70000000000feffffff7bc0bba407bc67178f100e352bf6e047fae4cbf960d783586cb5e430b3b700e70100000000feffffff01b4ba0e0000000000160014173fd310e9db2c7e9550ce0f03f1e6c01d833aa90140134896c42cd95680b048845847c8054756861ffab7d4abab72f6508d67d1ec0c590287ec2161dd7884983286e1cd56ce65c08a24ee0476ede92678a93b1b180c03407b5d614a4610bf9196775791fcc589597ca066dcd10048e004cd4c7341bb4bb90cee4705192f3f7db524e8067a5222c7f09baf29ef6b805b8327ecd1e5ab83ca2220f5b059b9a72298ccbefff59d9b943f7e0fc91d8a3b944a95e7b6390cc99eb5f4ac41c0d9dfdf0fe3c83e9870095d67fff59a8056dad28c6dfb944bb71cf64b90ace9a7776b22a1185fb2dc9524f6b178e2693189bf01655d7f38f043923668dc5af45bffd30a00 +** First part of '''Transaction Header''' +*** '''Transaction Version''' 02000000: integer field, here indicating version 2 +*** '''Marker''' 00: serialization artifact indicating extended serialization +*** '''Flag''' 01: serialization artifact indicating presence of a witness structure +** '''Transaction Input List''' +*** Length of '''Transaction Input List''' 02: serialization artifact, CompactSize here indicating 2 inputs, considered part of the transaction header +*** First '''Input''' +**** '''Outpoint''' +***** '''Transaction Identifier (txid)''' 7bc0bba407bc67178f100e352bf6e047fae4cbf960d783586cb5e430b3b700e7: txhash indicating that the spent TXO was created by the transaction e700b7b330e4b56c5883d760f9cbe4fa47e0f62b350e108f1767bc07a4bbc07bTxids are the result of hashing the content of a transaction. The result of a hash is a sequence of bytes. Hashes are defined by the standards as being big-endian and cryptography libraries deal with hashes in that form: Bitcoin also stores and transfers txids in big-endian. Bitcoin sometimes considers hashes to be little-endian integers instead of strings (in the context of block hashes and proof of work calculations), which is presumably why Bitcoin _displays_ hashes, including txids, in little-endian.. +***** '''Output Index''' 00000000: position of the TXO on transaction output list of e700b7b33…a4bbc07b +**** '''Input Script''' +***** Length of '''Input Script''' 00: serialization artifact indicating the length of the input script. Since this input spends a native segwit output, the input script is empty (length 0). +**** '''Sequence''' feffffff: transaction field encoding MAX-1, which indicates that the transaction uses lock time but does not signal replaceability +*** Second '''Input''' +**** '''Outpoint''' +***** '''Transaction Identifier (txid)''' 7bc0bba407bc67178f100e352bf6e047fae4cbf960d783586cb5e430b3b700e7: indicating that the spent TXO was created by transaction e700b7b33…a4bbc07b +***** '''Output Index''' 01000000: the output position, the TXO was the second position on the transaction output list of e700…c07b +**** '''Input Script''' +***** Length of '''Input Script''' 00: serialization artifact indicating the length of the input script. Since this input spends a native segwit output, the input script is empty (length 0). +**** '''Sequence''' feffffff: transaction field encoding MAX-1, which indicates that the transaction uses lock time but does not signal replaceability +** '''Transaction Output List''' +*** Length of '''Transaction Output List''' 01: serialization artifact, CompactSize here indicating 1 output, considered part of the Transaction Header +*** First '''Output''' +**** '''Amount''' b4ba0e0000000000: field defining that 965300 satoshis are assigned to this output +**** '''Output Script''' +***** Length of the '''Output Script''' 16: serialization artifact, here instructing the interpreter to read 22 bytes +***** '''Witness Version''' 00: indicates a native segwit v0 output +***** Length of the '''Witness Program''' 14: serialization artifact indicating a 20-byte witness program +***** '''Witness Program''' 173fd310e9db2c7e9550ce0f03f1e6c01d833aa9: a public key hash since a 20-byte v0 witness program indicates a P2WPKH output) +** '''Witness Structure''' +*** First '''Witness Stack''': The witness data corresponding to the first input. (Note that the count of witness stacks is implicitly provided by the input counter, since each input must have a witness stack.) +**** Item count for the first '''Witness Stack''' 01: serialization artifact. A single witness item indicates a keypath spend. +**** First '''Witness Item''' +***** Length of the first '''Witness Item''' 40: serialization artifact, 64 bytes indicate a Schnorr signatureNote that the ECDSA signatures used by pre-taproot inputs are larger and vary in size. Only the Schnorr signatures introduced with Tapscript have always a fixed size of 64 bytes (or 65 bytes with a non-default sighash flag) +***** '''Signature''' 134896c42cd95680b048845847c8054756861ffab7d4abab72f6508d67d1ec0c590287ec2161dd7884983286e1cd56ce65c08a24ee0476ede92678a93b1b180c: The first witness item here is a script argument for the corresponding condition script. In this case, we see the signature corresponding to the P2TR keypath spend. +*** Second '''Witness Stack''': The witness data corresponding to the second input. +**** Item count for the second '''Witness Stack''' 03: serialization artifact, two or more Witness Items indicate a scriptpath spend. +**** First '''Witness Item''' +***** '''Length of the first Witness Item''' 40: 64 bytes indicate a signature +***** '''Signature''' 7b5d614a4610bf9196775791fcc589597ca066dcd10048e004cd4c7341bb4bb90cee4705192f3f7db524e8067a5222c7f09baf29ef6b805b8327ecd1e5ab83ca: script argument used as an input to the condition script +**** '''Second Witness Item''' +***** Length of the second '''Witness Item''' 22: serialization artifact instructing to read 34 bytes +***** '''Leaf Script''' 20f5b059b9a72298ccbefff59d9b943f7e0fc91d8a3b944a95e7b6390cc99eb5f4ac: the condition scripts for the P2TR scriptpath spend +**** Third '''Witness Item''' +***** Length of the third '''Witness Item''' 41: serialization artifact, the length indicates the depth of the control block and how many hashing partners are necessary to prove the membership of the leaf script +***** '''Leaf Version''' c0: indicates the version of Script used in this leaf script, here Tapscript +***** '''Inner key''' d9dfdf0fe3c83e9870095d67fff59a8056dad28c6dfb944bb71cf64b90ace9a7: The taproot internal key which was tweaked with the Merkle root of the script tree to result in the public key committed to in the TXO’s witness program being spent +***** '''Taproot Branch''' 776b22a1185fb2dc9524f6b178e2693189bf01655d7f38f043923668dc5af45b: The hashing partners necessary to connect the leaf script to the Merkle root of the script tree. +** '''Transaction Header''' (cont.) +*** '''Lock Time''' ffd30a00: the 4-byte lock time field, little-endian for 709631 + +==Rationale== + +; Amount vs Value +: Amount underscores that we are referring to a count of satoshis rather than subjective value. As Bitcoin transactions (and code altogether) are littered with “values”, we prefer “amount” as being less ambiguous. + +; CompactSize vs VarInt +: The Bitcoin Core codebase uses the term CompactSize for a “variable-length integer encoding used in Bitcoin Core’s serialization framework” that has outside of Bitcoin Core also been referred to as VarIntAlso see Bitcoin Stack Exchange: [[What is the different between CompactSize and VarInt encoding?|https://bitcoin.stackexchange.com/a/114585/5406]]. Since the Bitcoin Core codebase uses another type of variable-length integer encoding called VarInt in the context of database interaction, we prefer using CompactSize in the context of transaction serialization. This approach is also preferred by some technical writers working on widely read technical resources concerned with Bitcoin. + +; Forwarding and condition script in the context of P2TR keypath spends +: The terminology is open to interpretation in the context of P2TR keypath spends. When spending a P2TR output per the keypath, the signer uses the private key corresponding to the taproot internal key and tweaks the resulting signature with the Merkle root of the script tree. Looking at the process under the hood, we should consider the taproot output key a forwarding script that commits to multiple condition scripts: the taproot internal key and all leaf scripts. However, looking at the serialization, this means that a P2TR keypath input is an exception in that it does not explicitly reveal its condition script, since the taproot internal key does not appear in the transaction serialization. Alternatively, the taproot output key could be interpreted as being both the condition script in the case of a keypath spend and a forwarding script in the case of a scriptpath spend. + +; Witness +: We have seen “witness” used to refer to both the witness data of a single input or the entirety of a transaction’s witness data. We use Witness Stack to refer to the witness data of a single Transaction Input, and Witness Structure when talking about all witness data of a transaction. + +; Forwarding Scripts and Condition Scripts +: We introduce these two new terms to distinguish two types of functions for “scripts”. The condition scripts encode the actual spending conditions, while forwarding scripts commit the spender to providing another script down the line. [[File:bip-tx-terminology/scripts.png|framed|center|alt=An overview of forwarding and condition scripts|Figure 1]] + +; Flag +: While the Flag currently only indicates the presence of a Witness Structure, it could perhaps also indicate the presence of other extended serialization formats in the future, therefore, it’s only flag, not “witness flag”. + +; P2SH Program +: We introduce the term P2SH Program to refer to the commitment in an Output Script that forwards execution to the input script corresponding to witness programs. + +; Witness Item vs Witness Element +: BIP341 refers to parts of the witness stack as “witness elements” and “witness stack elements”, but BIP144 speaks of “item count”. We prefer witness item to refer to parts of a witness stack. + +; Witness Section vs Witness Structure +: While witness section and witness structure are both used, we prefer the use of witness structure as introduced in BIP144. + +; Witness Stack +: While BIP144 refers to witness stacks as “script witnesses”, they are not scripts. Strictly speaking, they’re also not stacks, because some witness items that appear in witness stacks are not added to the stack that’s evaluated with the condition script, such as control blocks. We still prefer witness stack as it is well-established. + +; Locking Script and Unlocking Script +: Some popular works refer to scriptPubKey and scriptSig as “locking script” and “unlocking script” respectively. We do not recommend the use of these terms since they conflate the transaction component with the function these scripts had for some of the earlier output types. We introduce a set of new terms to decouple the position of the '''output script''' and '''input script''' from the function of locking and unlocking, and to underscore the evolution of output types from executable scripts to templates with additional implied meaning.—As output types have evolved over the years, we have departed from them relying on fully specified executable scripts, but rather imbued certain templates with additional constraints. For example a P2SH program interpreted as written only checks that the redeem script revealed in the input script matches the pre-image in the output script, but the implied meaning of the P2SH program additionally requires the redeem script to be evaluated satisfactorily. Later with wrapped P2WSH, we didn’t even require the witness script to contain all the arguments with push operations directly in a script but rather provide them as separate items akin to a pre-built stack. We refer to these stand-alone witness items as '''script arguments'''. With native segwit outputs finally, the input script is empty altogether, and no longer plays any role in “unlocking” the funds at all. + +; Locking Script vs Output Script + Forwarding Script + Condition Script +: The scriptPubKey has also sometimes been referred to as “locking script”, especially before the activation of the segwit soft fork. However, this term is ambiguous in that it refers to the function of the output script but appears as the label for the field at the same time. This document introduces new terms to distinguish the transaction component from the abstract function it takes. We use '''output script''' when we refer to the scriptPubKey field in the transaction, and speak of either a '''condition script''' or '''forwarding script''' when we refer to the function the output script fulfills in a particular output. + +==Acknowledgements== + +Thanks to Pieter Wuille for the discussions that led to this proposal. +Thanks to Otto Allmendinger, Matthew Zipkin, Larry Ruane, Stacie Waleyko, Dave Harding, Lloyd Fournier, Vojtěch Strnad, Armin Sabouri, Kostas Karasavvas, Sebastian Falbesoner, Ishaana Misra, AJ Towns, dpc, Matt Corallo, and John Moffett for feedback on this proposal. + +==Notes== + + diff --git a/bip-tx-terminology/scripts.png b/bip-tx-terminology/scripts.png new file mode 100644 index 0000000000000000000000000000000000000000..90765650c82c629d79341d65f52dc8da96d53854 GIT binary patch literal 94465 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%0D{`~ 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 D<=bIz literal 0 HcmV?d00001 From be997fe9aaa184b154e4bf1437e172a62ab6d3b9 Mon Sep 17 00:00:00 2001 From: Murch Date: Wed, 10 Jun 2026 12:45:14 -0700 Subject: [PATCH 02/10] Fix compactsize link --- bip-tx-terminology.mediawiki | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/bip-tx-terminology.mediawiki b/bip-tx-terminology.mediawiki index 8a9d208cab..bf15be0c4d 100644 --- a/bip-tx-terminology.mediawiki +++ b/bip-tx-terminology.mediawiki @@ -62,7 +62,7 @@ We also introduce some umbrella terms, concepts, and ideas that are useful to de ; CompactSize : [Concept] A variable-length integer encoding used in the transaction serialization to express input and output count. -: Synonym: VarInt (do not use, see [[compactsize|Rationale]]) +: Synonym: VarInt (do not use, see [[#compactsize|Rationale]]) ; condition script : [Concept] Umbrella term for scripts that encode the actual spending conditions that must be fulfilled to spend a TXO. Condition scripts may be preceded by one or more forwarding scripts. An output script will either directly contain a condition script in the case of a bare output, or commit to one or multiple condition scripts for other output types. For P2TR both the taproot internal key and each leaf script in the script tree are considered condition scripts. At the time of writing, there are five distinct condition scripts: taproot output key, leaf script, witness script, redeem script (only non-segwit P2SH), and bare output script (P2PK, P2PKH, P2MS, and arbitrary scripts). From a5d8bbb5a28b075a7f8178d607a1553ab1229cba Mon Sep 17 00:00:00 2001 From: Murch Date: Wed, 10 Jun 2026 12:45:44 -0700 Subject: [PATCH 03/10] Split keypath and scriptpath to two words --- bip-tx-terminology.mediawiki | 28 ++++++++++++++-------------- 1 file changed, 14 insertions(+), 14 deletions(-) diff --git a/bip-tx-terminology.mediawiki b/bip-tx-terminology.mediawiki index bf15be0c4d..4a405817cf 100644 --- a/bip-tx-terminology.mediawiki +++ b/bip-tx-terminology.mediawiki @@ -68,7 +68,7 @@ We also introduce some umbrella terms, concepts, and ideas that are useful to de : [Concept] Umbrella term for scripts that encode the actual spending conditions that must be fulfilled to spend a TXO. Condition scripts may be preceded by one or more forwarding scripts. An output script will either directly contain a condition script in the case of a bare output, or commit to one or multiple condition scripts for other output types. For P2TR both the taproot internal key and each leaf script in the script tree are considered condition scripts. At the time of writing, there are five distinct condition scripts: taproot output key, leaf script, witness script, redeem script (only non-segwit P2SH), and bare output script (P2PK, P2PKH, P2MS, and arbitrary scripts). ; control block -: [Component] The proof of existence for a leaf script. Appears as a witness item in witness stacks for P2TR scriptpath inputs, but does not get evaluated by the condition script. Only consists of the taproot internal key for script trees with a single leaf script, otherwise provides the taproot internal key as well as a taproot branch in the form of the hashing partners for the used leaf script. +: [Component] The proof of existence for a leaf script. Appears as a witness item in witness stacks for P2TR script path inputs, but does not get evaluated by the condition script. Only consists of the taproot internal key for script trees with a single leaf script, otherwise provides the taproot internal key as well as a taproot branch in the form of the hashing partners for the used leaf script. ; flag : [Artifact] A serialization artifact indicating features used by the transaction. As of writing, the only allowed value is 01 which indicates that the transaction serialization has a witness structure (see [[https://github.com/bitcoin/bips/blob/master/bip-0144.mediawiki|BIP144]]). @@ -91,7 +91,7 @@ We also introduce some umbrella terms, concepts, and ideas that are useful to de : Synonyms: scriptSig, unlocking script (see [[locking_unlocking|Rationale]]) ; leaf script -: [Component] A condition script used for spending P2TR outputs via the scriptpath. The leaf script appears as a witness item. +: [Component] A condition script used for spending P2TR outputs via the script path. The leaf script appears as a witness item. ; leaf version : [Component] The version of Script used in a leaf script. At the time of writing, only Tapscript is defined. @@ -160,7 +160,7 @@ We also introduce some umbrella terms, concepts, and ideas that are useful to de : [Component] Part of a control block that specifies the hashing partners necessary to prove the existence of a leaf script in a script tree. ; taproot internal key -: [Component] The untweaked public key before it is tweaked with the Merkle root of the script tree to create the taproot output key. Appears as part of a control block for a scriptpath P2TR input. +: [Component] The untweaked public key before it is tweaked with the Merkle root of the script tree to create the taproot output key. Appears as part of a control block for a script path P2TR input. : Synonym: inner key ; taproot output key @@ -200,7 +200,7 @@ We also introduce some umbrella terms, concepts, and ideas that are useful to de : Synonym: nVersion ; witness item -: [Component] An element of a witness stack. Witness items are: witness script (P2WSH only), script arguments, leaf script (P2TR scriptpath only), control block (P2TR scriptpath only), annex (P2TR only). +: [Component] An element of a witness stack. Witness items are: witness script (P2WSH only), script arguments, leaf script (P2TR script path only), control block (P2TR script path only), annex (P2TR only). : Synonyms: witness element, witness stack element ([[https://github.com/bitcoin/bips/blob/master/bip-0341.mediawiki|BIP341]]) ; witness program @@ -214,7 +214,7 @@ We also introduce some umbrella terms, concepts, and ideas that are useful to de : [Component] A witness item that provides the condition script used to spend P2WSH outputs. Appears in the witness stack. ; witness stack -: [Component] The pre-built stack of witness items that is consumed in validation of the input’s condition script. Witness stacks are not scripts, but may include witness items that are scripts. While there is a witness stack for each input, the witness stack is not part of the input. A witness stack can contain witness items that will not be added to the stack, such as the control block. The witness stack may contain condition scripts, specifically it will contain a witness script for P2WSH inputs, and a leaf script for a P2TR scriptpath spend. Every transaction input is accompanied by a witness stack, but the witness stack of non-segwit inputs is empty, i.e. consists just of the serialization artifact of a witness item count of 0. +: [Component] The pre-built stack of witness items that is consumed in validation of the input’s condition script. Witness stacks are not scripts, but may include witness items that are scripts. While there is a witness stack for each input, the witness stack is not part of the input. A witness stack can contain witness items that will not be added to the stack, such as the control block. The witness stack may contain condition scripts, specifically it will contain a witness script for P2WSH inputs, and a leaf script for a P2TR script path spend. Every transaction input is accompanied by a witness stack, but the witness stack of non-segwit inputs is empty, i.e. consists just of the serialization artifact of a witness item count of 0. : Synonym: input witness, witness (underdefined without more context, as "witness" is used for both witness structure and witness stack including in BIP141), script witness (BIP144) ; witness transaction identifier (wtxid) @@ -240,16 +240,16 @@ We also introduce some umbrella terms, concepts, and ideas that are useful to de |- | P2WSH || OP_0 || […Script Arguments, Witness Script] |- -| P2TR Keypath || rowspan="2" | OP_1 || [] +| P2TR Key Path || rowspan="2" | OP_1 || [] |- -| P2TR Scriptpath || […Script Arguments, Leaf Script, Control Block, (Opt: Annex)] +| P2TR Script Path || […Script Arguments, Leaf Script, Control Block, (Opt: Annex)] |} ¹ Bare outputs include P2PK, P2PKH, P2MS, and any other arbitrary scripts that are fully defined in the output script. ===Example: Anatomy of a serialized transaction=== -In this section we dissect a serialized transaction. Each sub-level in the list repeats a subset of the transaction’s serialization to label the included parts. The goal is to provide a map from a serialized transaction back to our definitions above. We use the first ever P2TR transaction with a keypath and a scriptpath input 37777defed8717c581b4c0509329550e344bdc14ac38f71fc050096887e535c8. +In this section we dissect a serialized transaction. Each sub-level in the list repeats a subset of the transaction’s serialization to label the included parts. The goal is to provide a map from a serialized transaction back to our definitions above. We use the first ever P2TR transaction with a key path and a script path input 37777defed8717c581b4c0509329550e344bdc14ac38f71fc050096887e535c8. * Raw '''Transaction''' 020000000001027bc0bba407bc67178f100e352bf6e047fae4cbf960d783586cb5e430b3b700e70000000000feffffff7bc0bba407bc67178f100e352bf6e047fae4cbf960d783586cb5e430b3b700e70100000000feffffff01b4ba0e0000000000160014173fd310e9db2c7e9550ce0f03f1e6c01d833aa90140134896c42cd95680b048845847c8054756861ffab7d4abab72f6508d67d1ec0c590287ec2161dd7884983286e1cd56ce65c08a24ee0476ede92678a93b1b180c03407b5d614a4610bf9196775791fcc589597ca066dcd10048e004cd4c7341bb4bb90cee4705192f3f7db524e8067a5222c7f09baf29ef6b805b8327ecd1e5ab83ca2220f5b059b9a72298ccbefff59d9b943f7e0fc91d8a3b944a95e7b6390cc99eb5f4ac41c0d9dfdf0fe3c83e9870095d67fff59a8056dad28c6dfb944bb71cf64b90ace9a7776b22a1185fb2dc9524f6b178e2693189bf01655d7f38f043923668dc5af45bffd30a00 ** First part of '''Transaction Header''' @@ -283,18 +283,18 @@ In this section we dissect a serialized transaction. Each sub-level in the list ***** '''Witness Program''' 173fd310e9db2c7e9550ce0f03f1e6c01d833aa9: a public key hash since a 20-byte v0 witness program indicates a P2WPKH output) ** '''Witness Structure''' *** First '''Witness Stack''': The witness data corresponding to the first input. (Note that the count of witness stacks is implicitly provided by the input counter, since each input must have a witness stack.) -**** Item count for the first '''Witness Stack''' 01: serialization artifact. A single witness item indicates a keypath spend. +**** Item count for the first '''Witness Stack''' 01: serialization artifact. A single witness item indicates a key path spend. **** First '''Witness Item''' ***** Length of the first '''Witness Item''' 40: serialization artifact, 64 bytes indicate a Schnorr signatureNote that the ECDSA signatures used by pre-taproot inputs are larger and vary in size. Only the Schnorr signatures introduced with Tapscript have always a fixed size of 64 bytes (or 65 bytes with a non-default sighash flag) -***** '''Signature''' 134896c42cd95680b048845847c8054756861ffab7d4abab72f6508d67d1ec0c590287ec2161dd7884983286e1cd56ce65c08a24ee0476ede92678a93b1b180c: The first witness item here is a script argument for the corresponding condition script. In this case, we see the signature corresponding to the P2TR keypath spend. +***** '''Signature''' 134896c42cd95680b048845847c8054756861ffab7d4abab72f6508d67d1ec0c590287ec2161dd7884983286e1cd56ce65c08a24ee0476ede92678a93b1b180c: The first witness item here is a script argument for the corresponding condition script. In this case, we see the signature corresponding to the P2TR key path spend. *** Second '''Witness Stack''': The witness data corresponding to the second input. -**** Item count for the second '''Witness Stack''' 03: serialization artifact, two or more Witness Items indicate a scriptpath spend. +**** Item count for the second '''Witness Stack''' 03: serialization artifact, two or more Witness Items indicate a script path spend. **** First '''Witness Item''' ***** '''Length of the first Witness Item''' 40: 64 bytes indicate a signature ***** '''Signature''' 7b5d614a4610bf9196775791fcc589597ca066dcd10048e004cd4c7341bb4bb90cee4705192f3f7db524e8067a5222c7f09baf29ef6b805b8327ecd1e5ab83ca: script argument used as an input to the condition script **** '''Second Witness Item''' ***** Length of the second '''Witness Item''' 22: serialization artifact instructing to read 34 bytes -***** '''Leaf Script''' 20f5b059b9a72298ccbefff59d9b943f7e0fc91d8a3b944a95e7b6390cc99eb5f4ac: the condition scripts for the P2TR scriptpath spend +***** '''Leaf Script''' 20f5b059b9a72298ccbefff59d9b943f7e0fc91d8a3b944a95e7b6390cc99eb5f4ac: the condition scripts for the P2TR script path spend **** Third '''Witness Item''' ***** Length of the third '''Witness Item''' 41: serialization artifact, the length indicates the depth of the control block and how many hashing partners are necessary to prove the membership of the leaf script ***** '''Leaf Version''' c0: indicates the version of Script used in this leaf script, here Tapscript @@ -311,8 +311,8 @@ In this section we dissect a serialized transaction. Each sub-level in the list ; CompactSize vs VarInt : The Bitcoin Core codebase uses the term CompactSize for a “variable-length integer encoding used in Bitcoin Core’s serialization framework” that has outside of Bitcoin Core also been referred to as VarIntAlso see Bitcoin Stack Exchange: [[What is the different between CompactSize and VarInt encoding?|https://bitcoin.stackexchange.com/a/114585/5406]]. Since the Bitcoin Core codebase uses another type of variable-length integer encoding called VarInt in the context of database interaction, we prefer using CompactSize in the context of transaction serialization. This approach is also preferred by some technical writers working on widely read technical resources concerned with Bitcoin. -; Forwarding and condition script in the context of P2TR keypath spends -: The terminology is open to interpretation in the context of P2TR keypath spends. When spending a P2TR output per the keypath, the signer uses the private key corresponding to the taproot internal key and tweaks the resulting signature with the Merkle root of the script tree. Looking at the process under the hood, we should consider the taproot output key a forwarding script that commits to multiple condition scripts: the taproot internal key and all leaf scripts. However, looking at the serialization, this means that a P2TR keypath input is an exception in that it does not explicitly reveal its condition script, since the taproot internal key does not appear in the transaction serialization. Alternatively, the taproot output key could be interpreted as being both the condition script in the case of a keypath spend and a forwarding script in the case of a scriptpath spend. +; Forwarding and condition script in the context of P2TR key path spends +: The terminology is open to interpretation in the context of P2TR key path spends. When spending a P2TR output per the key path, the signer uses the private key corresponding to the taproot internal key and tweaks the resulting signature with the Merkle root of the script tree. Looking at the process under the hood, we should consider the taproot output key a forwarding script that commits to multiple condition scripts: the taproot internal key and all leaf scripts. However, looking at the serialization, this means that a P2TR key path input is an exception in that it does not explicitly reveal its condition script, since the taproot internal key does not appear in the transaction serialization. Alternatively, the taproot output key could be interpreted as being both the condition script in the case of a key path spend and a forwarding script in the case of a script path spend. ; Witness : We have seen “witness” used to refer to both the witness data of a single input or the entirety of a transaction’s witness data. We use Witness Stack to refer to the witness data of a single Transaction Input, and Witness Structure when talking about all witness data of a transaction. From 1f9b42b53824fbe5110b935bb37db2cc72055896 Mon Sep 17 00:00:00 2001 From: Murch Date: Wed, 10 Jun 2026 15:51:29 -0700 Subject: [PATCH 04/10] Address vostrnad Review --- bip-tx-terminology.mediawiki | 39 ++++++++++++++++++------------------ 1 file changed, 20 insertions(+), 19 deletions(-) diff --git a/bip-tx-terminology.mediawiki b/bip-tx-terminology.mediawiki index 4a405817cf..cd9bcd2189 100644 --- a/bip-tx-terminology.mediawiki +++ b/bip-tx-terminology.mediawiki @@ -32,7 +32,7 @@ The hope is that this terminology could be used in technical writing about Bitco We treat the objects of the Bitcoin protocol (e.g. transactions, blocks) as distinct from their serialization. We distinguish parts and concrete properties of transactions (labeled [Component]) such as fields and scripts as well as composites thereof from serialization artifacts (labeled [Artifact]) which only appear in the serialization format. -For example, version and lock time are fields that can be set during transaction creation and therefore components of a transaction, while the input counter is a serialization artifact resulting from how the input list of the transaction is represented in the transfer format. +For example, version and locktime are fields that can be set during transaction creation and therefore components of a transaction, while the input counter is a serialization artifact resulting from how the input list of the transaction is represented in the transfer format. Likewise, the input script is a transaction component, but the length indicator of the input script is a serialization artifact, and a witness stack is a component, but the marker and flag appearing in a segwit transaction’s header are serialization artifacts. We also introduce some umbrella terms, concepts, and ideas that are useful to describe aspects of transactions (labeled [Concept]). @@ -87,17 +87,17 @@ We also introduce some umbrella terms, concepts, and ideas that are useful to de : [Concept] The position of an input in a transaction’s input list. ; input script -: [Component] The Bitcoin code base used Hungarian notation when it was published. This transaction field appearing in transaction inputs was named for containing the signature and being of the type script. Today, this field is better understood as the input script which is used to satisfy spending conditions for non-segwit outputs, redirects validation to the witness stack for wrapped segwit outputs, and is empty for native segwit outputs. The input script may contain an actual script when spending a bare output script, but may only contain push operations for any output type since P2SH. +: [Component] The Bitcoin code base used Hungarian notation when it was published. This transaction field appearing in transaction inputs was named scripSig for containing the signature and being of the type script. Today, this field is better understood as the input script which is used to satisfy spending conditions for non-segwit outputs, redirects validation to the witness stack for wrapped segwit outputs, and is empty for native segwit outputs. The input script may contain an actual script when spending a bare output script, but may only contain push operations for any output type since P2SH. : Synonyms: scriptSig, unlocking script (see [[locking_unlocking|Rationale]]) ; leaf script : [Component] A condition script used for spending P2TR outputs via the script path. The leaf script appears as a witness item. ; leaf version -: [Component] The version of Script used in a leaf script. At the time of writing, only Tapscript is defined. +: [Component] The version of Script used in a leaf script. At the time of writing, only Tapscript is defined. The leaf version is part of the control block. -; lock time -: [Component] Part of the transaction header. Lock time specifies a time (in blockheight or UNIX time) before which a transaction cannot be included in a block if any input’s sequence number indicates non-finality. The lock time can also indicate a relative spending lock in combination with OP_CHECKSEQUENCEVERIFY. Serialized as the four-byte nLockTime integer field. +; locktime +: [Component] Part of the transaction header. Locktime specifies a time (in blockheight or UNIX time) before which a transaction cannot be included in a block if any input’s sequence number indicates non-finality. The locktime can also indicate a relative spending lock in combination with OP_CHECKSEQUENCEVERIFY. Serialized as the four-byte nLockTime integer field. : Synonym: nLockTime, lock_time ; marker @@ -119,21 +119,22 @@ We also introduce some umbrella terms, concepts, and ideas that are useful to de : Synonym: vout_index, sometimes abbreviated as vout ; output script -: [Component] Must be present in each transaction output. Contains either a condition script or a forwarding script. Originally, the Bitcoin code base used Hungarian notation. This field was presumably named scriptPubKey as it was of the type script and because it fulfilled the role of a public key. While the first standard output type, Pay to Public Key, only contained the public key in this field, the use of this field had evolved beyond that even when Bitcoin was published, since the field could already contain more complicated bare scripts. Today, this field is referred to as the output script. +: [Component] Contains either a condition script or a forwarding script. Originally, the Bitcoin code base used Hungarian notation. This field was presumably named scriptPubKey as it was of the type script and because it fulfilled the role of a public key. While the first standard output type, Pay to Public Key, only contained the public key in this field, the use of this field had evolved beyond that even when Bitcoin was published, since the field could already contain more complicated bare scripts. Today, this field is referred to as the output script. : Synonyms: scriptPubKey, locking script (see [[locking_unlocking|Rationale]]) ; P2SH program : [Concept] A script template that forwards input validation to the redeem script. P2SH programs are a type of forwarding script. ; redeem script -: [Component] The condition script used in spending P2SH outputs. Is provided in the input script along with script arguments to satisfy it. The input script of wrapped segwit inputs is not a redeem script but a witness program. +: [Component] The condition script used in spending P2SH outputs. The redeem script appears as the last push in the input script, usually preceded by script arguments to satisfy the redeem script. In the case of wrapped segwit inputs, the input script consists only of the redeem script which contains a witness program forwarding evaluation to the witness stack. : Synonyms: redeemScript, redemption script ; Script -: [Concept] The original variant of the Bitcoin Script language used in bare output scripts, P2SH redeems scripts, and P2WSH witness scripts. Signature processing opcodes in Script expect DER-encoded ECDSA signatures. Capitalized Script refers to the language, whereas lowercase script refers to a script. +: [Concept] The original Bitcoin Script language used in bare output scripts, P2SH redeems scripts, and P2WSH witness scripts. Signature processing opcodes in Script expect DER-encoded ECDSA signatures. Capitalized Script refers to the language, whereas lowercase script refers to a script. +: Synonyms: "legacy Script" as opposed to "Tapscript" ; script arguments -: [Concept] Arguments presented to satisfy a condition script, e.g. signatures and public keys. +: [Concept] Arguments presented to satisfy a condition script, e.g. signatures and public keys. In P2SH the script arguments are used to form the initial stack before script evaluation. In P2SH-P2WSH, P2WSH, and P2TR, the script arguments are the initial stack. ; script tree : [Concept] The Merkle tree composed from the collection of leaf scripts committed to by a P2TR output. @@ -151,7 +152,7 @@ We also introduce some umbrella terms, concepts, and ideas that are useful to de : [Component] The sequence number appearing in each transaction input. Serialized as the four-byte nSequence integer field. If any input’s sequence number is less than the maximum allowed value, a transaction is non-final. ; signature -: [Component] A script argument that proves a key owner’s consent to a transaction. Composed of an r-value, an s-value, and a sighash flag. ECDSA and Schnorr signatures use different serialization schemes for signatures. The length indicator preceding the signature is a serialization artifact that is not part of the signature. If the default signature hash type SIGHASH_ALL is used, the sighash flag may be omitted for Schnorr signatures. +: [Component] A script argument that proves a key owner’s consent to a transaction. Existing Bitcoin signatures Composed of an r-value, an s-value, and a sighash flag. ECDSA and Schnorr signatures use different serialization schemes. The length indicator preceding a signature in a witness stack is a serialization artifact that is not part of the signature. For legacy Script, the push opcode specifying a length is not part of the signature. Schnorr signatures may omit the sighash flag to indicate use of SIGHASH_DEFAULT which behaves like SIGHASH_ALL. ; sighash flag : [Component] Part of the signature. A one-byte field that indicates which parts of the transaction a signature commits to. @@ -167,10 +168,10 @@ We also introduce some umbrella terms, concepts, and ideas that are useful to de : [Component] The public key present in the witness program of a P2TR output script composed by tweaking the inner key with the script tree’s Merkle root. ; Tapscript -: [Concept] The variant of the Script language used in P2TR leaf scripts (see [[https://github.com/bitcoin/bips/blob/master/bip-0342.mediawiki|BIP342]]). Signature processing opcodes in Tapscript expect Schnorr signatures. +: [Concept] A variant of the Script language used in P2TR leaf scripts (see [[https://github.com/bitcoin/bips/blob/master/bip-0342.mediawiki|BIP342]]). Signature processing opcodes in Tapscript expect Schnorr signatures. ; transaction header -: [Concept] Collective term for the serialization artifacts and transaction fields that appear only once in the transaction serialization regardless of lengths of the input and output lists: transaction version, marker (segwit only), flag (segwit only), input counter, output counter, and lock time. +: [Concept] Collective term for the serialization artifacts and transaction fields that appear only once in the transaction serialization regardless of lengths of the input and output lists: transaction version, marker (segwit only), flag (segwit only), input counter, output counter, and locktime. ; transaction identifier (txid) : [Component] Identifies the transaction that created a TXO in an outpoint. Result of hashing a transaction without its witness structure. The txid is serialized in little-endian but displayed in big-endian. @@ -184,7 +185,7 @@ We also introduce some umbrella terms, concepts, and ideas that are useful to de : Synonym: inputs, vin, txins, tx_ins ; transaction output (TXO) -: [Component] A transaction component that consists of an amount and an output script. Adds a new unspent transaction output (UTXO) to the UTXO set that is uniquely identified by an outpoint. +: [Component] A transaction component that consists of an amount and an output script. Adds a new unspent transaction output (UTXO) to the UTXO set that is uniquelyWell… usually uniquely. There have been two transactions that were repeated which created duplicate UTXOs (see BIP30). identified by an outpoint. : Synonym: output, txout ; transaction output list @@ -192,7 +193,7 @@ We also introduce some umbrella terms, concepts, and ideas that are useful to de : Synonym: outputs, vout, txouts, tx_outs ; unspent transaction output (UTXO) -: [Concept] An entry in Bitcoin’s ledger of spendable funds, the UTXO set. UTXOs get created by transaction outputs and spent by transaction inputs. UTXOs are uniquely identifiedThere have been two instances in which UTXOs with existing outpoints were recreated, see [[https://github.com/bitcoin/bips/blob/master/bip-0030.mediawiki|BIP30]] by an outpoint. The UTXO model with its uniquely-identifiable discrete portions of funds is instrumental to Bitcoin’s solution of the doublespend problem. +: [Concept] An entry in Bitcoin’s ledger of spendable funds, the UTXO set. UTXOs get created by transaction outputs and spent by transaction inputs. UTXOs are uniquely identifiedThere have been two instances in which UTXOs with existing outpoints were recreated, see [[https://github.com/bitcoin/bips/blob/master/bip-0030.mediawiki|BIP30]] by an outpoint. The UTXO model with its uniquely-identifiable discrete portions of funds is instrumental to Bitcoin’s solution of the double-spending problem. : Synonym: coin (whitepaper) ; version @@ -200,7 +201,7 @@ We also introduce some umbrella terms, concepts, and ideas that are useful to de : Synonym: nVersion ; witness item -: [Component] An element of a witness stack. Witness items are: witness script (P2WSH only), script arguments, leaf script (P2TR script path only), control block (P2TR script path only), annex (P2TR only). +: [Component] An element of a witness stack. At the time of writing, witness items are: witness script (P2WSH only), script arguments, leaf script (P2TR script path only), control block (P2TR script path only), annex (P2TR only). : Synonyms: witness element, witness stack element ([[https://github.com/bitcoin/bips/blob/master/bip-0341.mediawiki|BIP341]]) ; witness program @@ -214,7 +215,7 @@ We also introduce some umbrella terms, concepts, and ideas that are useful to de : [Component] A witness item that provides the condition script used to spend P2WSH outputs. Appears in the witness stack. ; witness stack -: [Component] The pre-built stack of witness items that is consumed in validation of the input’s condition script. Witness stacks are not scripts, but may include witness items that are scripts. While there is a witness stack for each input, the witness stack is not part of the input. A witness stack can contain witness items that will not be added to the stack, such as the control block. The witness stack may contain condition scripts, specifically it will contain a witness script for P2WSH inputs, and a leaf script for a P2TR script path spend. Every transaction input is accompanied by a witness stack, but the witness stack of non-segwit inputs is empty, i.e. consists just of the serialization artifact of a witness item count of 0. +: [Component] The pre-built stack of witness items that is consumed in validation of the input’s condition script. Witness stacks are not scripts, but may include witness items that are scripts. The witness stack is logically part of the input. A witness stack can contain witness items that will not be added to the stack, such as the control block. The witness stack may contain condition scripts, specifically it will contain a witness script for P2WSH inputs, and a leaf script for a P2TR script path spend. Every transaction input has a witness stack, but the witness stack of non-segwit inputs is empty, i.e. consists just of the serialization artifact of a witness item count of 0. If a transaction does not have any segwit inputs, witness data is omitted from the transaction serialization. : Synonym: input witness, witness (underdefined without more context, as "witness" is used for both witness structure and witness stack including in BIP141), script witness (BIP144) ; witness transaction identifier (wtxid) @@ -264,14 +265,14 @@ In this section we dissect a serialized transaction. Each sub-level in the list ***** '''Output Index''' 00000000: position of the TXO on transaction output list of e700b7b33…a4bbc07b **** '''Input Script''' ***** Length of '''Input Script''' 00: serialization artifact indicating the length of the input script. Since this input spends a native segwit output, the input script is empty (length 0). -**** '''Sequence''' feffffff: transaction field encoding MAX-1, which indicates that the transaction uses lock time but does not signal replaceability +**** '''Sequence''' feffffff: transaction field encoding MAX-1, which indicates that the transaction uses locktime but does not signal replaceability *** Second '''Input''' **** '''Outpoint''' ***** '''Transaction Identifier (txid)''' 7bc0bba407bc67178f100e352bf6e047fae4cbf960d783586cb5e430b3b700e7: indicating that the spent TXO was created by transaction e700b7b33…a4bbc07b ***** '''Output Index''' 01000000: the output position, the TXO was the second position on the transaction output list of e700…c07b **** '''Input Script''' ***** Length of '''Input Script''' 00: serialization artifact indicating the length of the input script. Since this input spends a native segwit output, the input script is empty (length 0). -**** '''Sequence''' feffffff: transaction field encoding MAX-1, which indicates that the transaction uses lock time but does not signal replaceability +**** '''Sequence''' feffffff: transaction field encoding MAX-1, which indicates that the transaction uses locktime but does not signal replaceability ** '''Transaction Output List''' *** Length of '''Transaction Output List''' 01: serialization artifact, CompactSize here indicating 1 output, considered part of the Transaction Header *** First '''Output''' @@ -301,7 +302,7 @@ In this section we dissect a serialized transaction. Each sub-level in the list ***** '''Inner key''' d9dfdf0fe3c83e9870095d67fff59a8056dad28c6dfb944bb71cf64b90ace9a7: The taproot internal key which was tweaked with the Merkle root of the script tree to result in the public key committed to in the TXO’s witness program being spent ***** '''Taproot Branch''' 776b22a1185fb2dc9524f6b178e2693189bf01655d7f38f043923668dc5af45b: The hashing partners necessary to connect the leaf script to the Merkle root of the script tree. ** '''Transaction Header''' (cont.) -*** '''Lock Time''' ffd30a00: the 4-byte lock time field, little-endian for 709631 +*** '''Locktime''' ffd30a00: the 4-byte locktime field, little-endian for 709631 ==Rationale== From 99a59aa3bc60900e77cb3a8f5705d699c91dbc5f Mon Sep 17 00:00:00 2001 From: Murch Date: Wed, 10 Jun 2026 16:00:16 -0700 Subject: [PATCH 05/10] Use shorter lines outside of lists --- bip-tx-terminology.mediawiki | 46 +++++++++++++++++++++++------------- 1 file changed, 30 insertions(+), 16 deletions(-) diff --git a/bip-tx-terminology.mediawiki b/bip-tx-terminology.mediawiki index cd9bcd2189..df427f7902 100644 --- a/bip-tx-terminology.mediawiki +++ b/bip-tx-terminology.mediawiki @@ -14,7 +14,8 @@ ===Abstract=== -This document describes terminology for referring to scripts, transaction parts, and serialization artifacts in the context of transactions. +This document describes terminology for referring to scripts, transaction parts, and serialization +artifacts in the context of transactions. ===Copyright=== @@ -22,26 +23,36 @@ This document is licensed under the 3-clause BSD license. ===Motivation=== -In the past decade, in many discussions about building transactions, leveraging new output types, and explaining the inner workings of inputs, we noticed that terminology to refer to the components of transactions and functions that scripts fulfill in transactions includes a broad spectrum of competing jargon. -In this document, we describe a set of terms that can be used to refer to transaction components by their function or their context. -The terms are not entirely consistent in themselves since many are already firmly established. -Instead of striving for consistency, we try to relate terms to each other, explore the origins of terms, and fill in the blanks. -The hope is that this terminology could be used in technical writing about Bitcoin as well as future BIPs. +In the past decade, in many discussions about building transactions, leveraging new output types, +and explaining the inner workings of inputs, we noticed that terminology to refer to the components +of transactions and functions that scripts fulfill in transactions includes a broad spectrum of +competing jargon. In this document, we describe a set of terms that can be used to refer to +transaction components by their function or their context. The terms are not entirely consistent in +themselves since many are already firmly established. Instead of striving for consistency, we try to +relate terms to each other, explore the origins of terms, and fill in the blanks. The hope is that +this terminology could be used in technical writing about Bitcoin as well as future BIPs. ===Objects and their Serialization=== -We treat the objects of the Bitcoin protocol (e.g. transactions, blocks) as distinct from their serialization. -We distinguish parts and concrete properties of transactions (labeled [Component]) such as fields and scripts as well as composites thereof from serialization artifacts (labeled [Artifact]) which only appear in the serialization format. -For example, version and locktime are fields that can be set during transaction creation and therefore components of a transaction, while the input counter is a serialization artifact resulting from how the input list of the transaction is represented in the transfer format. -Likewise, the input script is a transaction component, but the length indicator of the input script is a serialization artifact, and a witness stack is a component, but the marker and flag appearing in a segwit transaction’s header are serialization artifacts. +We treat the objects of the Bitcoin protocol (e.g. transactions, blocks) as distinct from their +serialization. We distinguish parts and concrete properties of transactions (labeled [Component]) +such as fields and scripts as well as composites thereof from serialization artifacts (labeled +[Artifact]) which only appear in the serialization format. For example, version and locktime are +fields that can be set during transaction creation and therefore components of a transaction, while +the input counter is a serialization artifact resulting from how the input list of the transaction +is represented in the transfer format. Likewise, the input script is a transaction component, but +the length indicator of the input script is a serialization artifact, and a witness stack is a +component, but the marker and flag appearing in a segwit transaction’s header are serialization +artifacts. -We also introduce some umbrella terms, concepts, and ideas that are useful to describe aspects of transactions (labeled [Concept]). +We also introduce some umbrella terms, concepts, and ideas that are useful to describe aspects of +transactions (labeled [Concept]). ===Reader Guidance=== -- If the distinction between components and serialization artifacts is not readily clear, perusing the below example of a [[#example-anatomy-of-a-serialized-transaction|transaction’s anatomy]] may help foster an intuitive sense. -- An visual overview of how different output types make use of the different components can be found in the table [[#usage-in-context-of-txo-creation-and-spending|"Usage in context of TXO creation and spending"]]. -- The term definitions are sorted alphabetically. If a term is unfamiliar, it is probably defined below in the same list! +* If the distinction between components and serialization artifacts is not readily clear, perusing the below example of a [[#example-anatomy-of-a-serialized-transaction|transaction’s anatomy]] may help foster an intuitive sense. +* An visual overview of how different output types make use of the different components can be found in the table [[#usage-in-context-of-txo-creation-and-spending|"Usage in context of TXO creation and spending"]]. +* The term definitions are sorted alphabetically. If a term is unfamiliar, it is probably defined below in the same list! ==Definition of Terms== @@ -246,7 +257,8 @@ We also introduce some umbrella terms, concepts, and ideas that are useful to de | P2TR Script Path || […Script Arguments, Leaf Script, Control Block, (Opt: Annex)] |} -¹ Bare outputs include P2PK, P2PKH, P2MS, and any other arbitrary scripts that are fully defined in the output script. +¹ Bare outputs include P2PK, P2PKH, P2MS, and any other arbitrary scripts that are fully +defined in the output script. ===Example: Anatomy of a serialized transaction=== @@ -345,7 +357,9 @@ In this section we dissect a serialized transaction. Each sub-level in the list ==Acknowledgements== Thanks to Pieter Wuille for the discussions that led to this proposal. -Thanks to Otto Allmendinger, Matthew Zipkin, Larry Ruane, Stacie Waleyko, Dave Harding, Lloyd Fournier, Vojtěch Strnad, Armin Sabouri, Kostas Karasavvas, Sebastian Falbesoner, Ishaana Misra, AJ Towns, dpc, Matt Corallo, and John Moffett for feedback on this proposal. +Thanks to Otto Allmendinger, Matthew Zipkin, Larry Ruane, Stacie Waleyko, Dave Harding, Lloyd +Fournier, Vojtěch Strnad, Armin Sabouri, Kostas Karasavvas, Sebastian Falbesoner, Ishaana Misra, AJ +Towns, dpc, Matt Corallo, John Moffett, and Ava Chow for feedback on this proposal. ==Notes== From 4c5d7305e062be10ce9bbb001cd1bc6bf0ebc038 Mon Sep 17 00:00:00 2001 From: Murch Date: Thu, 11 Jun 2026 10:33:46 -0700 Subject: [PATCH 06/10] Fix grammar error in article --- bip-tx-terminology.mediawiki | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/bip-tx-terminology.mediawiki b/bip-tx-terminology.mediawiki index df427f7902..6b2bf4f93c 100644 --- a/bip-tx-terminology.mediawiki +++ b/bip-tx-terminology.mediawiki @@ -17,10 +17,6 @@ This document describes terminology for referring to scripts, transaction parts, and serialization artifacts in the context of transactions. -===Copyright=== - -This document is licensed under the 3-clause BSD license. - ===Motivation=== In the past decade, in many discussions about building transactions, leveraging new output types, @@ -51,7 +47,7 @@ transactions (labeled [Concept]). ===Reader Guidance=== * If the distinction between components and serialization artifacts is not readily clear, perusing the below example of a [[#example-anatomy-of-a-serialized-transaction|transaction’s anatomy]] may help foster an intuitive sense. -* An visual overview of how different output types make use of the different components can be found in the table [[#usage-in-context-of-txo-creation-and-spending|"Usage in context of TXO creation and spending"]]. +* A visual overview of how different output types make use of the different components can be found in the table [[#usage-in-context-of-txo-creation-and-spending|"Usage in context of TXO creation and spending"]]. * The term definitions are sorted alphabetically. If a term is unfamiliar, it is probably defined below in the same list! ==Definition of Terms== @@ -354,6 +350,10 @@ In this section we dissect a serialized transaction. Each sub-level in the list ; Locking Script vs Output Script + Forwarding Script + Condition Script : The scriptPubKey has also sometimes been referred to as “locking script”, especially before the activation of the segwit soft fork. However, this term is ambiguous in that it refers to the function of the output script but appears as the label for the field at the same time. This document introduces new terms to distinguish the transaction component from the abstract function it takes. We use '''output script''' when we refer to the scriptPubKey field in the transaction, and speak of either a '''condition script''' or '''forwarding script''' when we refer to the function the output script fulfills in a particular output. +===Copyright=== + +This document is licensed under the 3-clause BSD license. + ==Acknowledgements== Thanks to Pieter Wuille for the discussions that led to this proposal. From 03b513ce007131082fbac74ccf2b7d3118f17c1a Mon Sep 17 00:00:00 2001 From: Murch Date: Thu, 11 Jun 2026 10:39:29 -0700 Subject: [PATCH 07/10] Amend UTXO synonyms --- bip-tx-terminology.mediawiki | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/bip-tx-terminology.mediawiki b/bip-tx-terminology.mediawiki index 6b2bf4f93c..0c944e4f7b 100644 --- a/bip-tx-terminology.mediawiki +++ b/bip-tx-terminology.mediawiki @@ -201,7 +201,7 @@ transactions (labeled [Concept]). ; unspent transaction output (UTXO) : [Concept] An entry in Bitcoin’s ledger of spendable funds, the UTXO set. UTXOs get created by transaction outputs and spent by transaction inputs. UTXOs are uniquely identifiedThere have been two instances in which UTXOs with existing outpoints were recreated, see [[https://github.com/bitcoin/bips/blob/master/bip-0030.mediawiki|BIP30]] by an outpoint. The UTXO model with its uniquely-identifiable discrete portions of funds is instrumental to Bitcoin’s solution of the double-spending problem. -: Synonym: coin (whitepaper) +: Synonym: coin ; version : [Component] Part of the transaction header that specifies the transaction version. Serializes as the four-byte nVersion integer field. From a0b30799e47eb8c481d24c14fb8f1d8c33ecf370 Mon Sep 17 00:00:00 2001 From: Murch Date: Wed, 24 Jun 2026 13:09:56 -0700 Subject: [PATCH 08/10] BIP453: Adopt assigned number --- README.mediawiki | 7 +++++++ bip-tx-terminology.mediawiki => bip-0453.mediawiki | 6 +++--- {bip-tx-terminology => bip-0453}/scripts.png | Bin 3 files changed, 10 insertions(+), 3 deletions(-) rename bip-tx-terminology.mediawiki => bip-0453.mediawiki (99%) rename {bip-tx-terminology => bip-0453}/scripts.png (100%) diff --git a/README.mediawiki b/README.mediawiki index e4ca17bf81..c581a83533 100644 --- a/README.mediawiki +++ b/README.mediawiki @@ -1506,6 +1506,13 @@ users (see also: [https://en.bitcoin.it/wiki/Economic_majority economic majority | bubb1es, haris | Specification | Draft +|- +| [[bip-0453.mediawiki|453]] +| +| Terminology of Transaction Components +| Murch +| Informational +| Draft |} diff --git a/bip-tx-terminology.mediawiki b/bip-0453.mediawiki similarity index 99% rename from bip-tx-terminology.mediawiki rename to bip-0453.mediawiki index 0c944e4f7b..d7e2f9d098 100644 --- a/bip-tx-terminology.mediawiki +++ b/bip-0453.mediawiki @@ -1,10 +1,10 @@
-  BIP: ?
+  BIP: 453
   Title: Terminology of Transaction Components
   Authors: Murch 
   Status: Draft
   Type: Informational
-  Assigned: ?
+  Assigned: 2026-06-20
   License: BSD-3-Clause
   Discussion: 2023-04-05: https://gnusha.org/pi/bitcoindev/6bb373cc-bee0-13a3-a510-b65d4faa867f@murch.one/#t
               2023-03-22–…: https://github.com/murchandamus/bips/pull/1
@@ -350,7 +350,7 @@ In this section we dissect a serialized transaction. Each sub-level in the list
 ; Locking Script vs Output Script + Forwarding Script + Condition Script
 : The scriptPubKey has also sometimes been referred to as “locking script”, especially before the activation of the segwit soft fork. However, this term is ambiguous in that it refers to the function of the output script but appears as the label for the field at the same time. This document introduces new terms to distinguish the transaction component from the abstract function it takes. We use '''output script''' when we refer to the scriptPubKey field in the transaction, and speak of either a '''condition script''' or '''forwarding script''' when we refer to the function the output script fulfills in a particular output.
 
-===Copyright===
+==Copyright==
 
 This document is licensed under the 3-clause BSD license.
 
diff --git a/bip-tx-terminology/scripts.png b/bip-0453/scripts.png
similarity index 100%
rename from bip-tx-terminology/scripts.png
rename to bip-0453/scripts.png

From 284bfbcd900139100e48d1785ef9c85f56abc37d Mon Sep 17 00:00:00 2001
From: Murch 
Date: Wed, 24 Jun 2026 13:13:58 -0700
Subject: [PATCH 09/10] BIP453: Add references to BIPs using tx version

---
 bip-0453.mediawiki | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/bip-0453.mediawiki b/bip-0453.mediawiki
index d7e2f9d098..bc635f9107 100644
--- a/bip-0453.mediawiki
+++ b/bip-0453.mediawiki
@@ -204,7 +204,7 @@ transactions (labeled [Concept]).
 : Synonym: coin
 
 ; version
-: [Component] Part of the transaction header that specifies the transaction version. Serializes as the four-byte nVersion integer field.
+: [Component] Part of the transaction header that specifies the transaction version. Serializes as the four-byte nVersion integer field. `OP_CHECKSEQUENCEVERIFY` requires version 2 or higher (see [[bip-0068.mediawiki|BIP68]]), version 3 transactions are topologically restricted until confirmation (see [[bip-0431.mediawiki|BIP431]]).
 : Synonym: nVersion
 
 ; witness item

From b0cb2f95d72c4e04aa433ce2dd8577694cf18381 Mon Sep 17 00:00:00 2001
From: Murch 
Date: Wed, 24 Jun 2026 13:14:19 -0700
Subject: [PATCH 10/10] BIP453: Use page links across document

---
 bip-0453.mediawiki | 24 ++++++++++++------------
 1 file changed, 12 insertions(+), 12 deletions(-)

diff --git a/bip-0453.mediawiki b/bip-0453.mediawiki
index bc635f9107..652cd71b20 100644
--- a/bip-0453.mediawiki
+++ b/bip-0453.mediawiki
@@ -59,7 +59,7 @@ transactions (labeled [Concept]).
 : Synonym: nValue, value
 
 ; annex
-: [Component] A witness item reserved for future extensions, currently unused (see [[https://github.com/bitcoin/bips/blob/master/bip-0341.mediawiki#cite_note-5|BIP341]]).
+: [Component] A witness item reserved for future extensions, currently unused (see [[bip-0341.mediawiki#cite_note-5|BIP341]]).
 
 ; bare output script
 : [Component] A condition script that is directly defined in the output script field. Used to specify all types of bare outputs including Pay to Pubkey (P2PK), Pay to Public Key Hash (P2PKH), Pay to Multisig (P2MS) outputs, and arbitrary scripts.
@@ -78,7 +78,7 @@ transactions (labeled [Concept]).
 : [Component] The proof of existence for a leaf script. Appears as a witness item in witness stacks for P2TR script path inputs, but does not get evaluated by the condition script. Only consists of the taproot internal key for script trees with a single leaf script, otherwise provides the taproot internal key as well as a taproot branch in the form of the hashing partners for the used leaf script.
 
 ; flag
-: [Artifact] A serialization artifact indicating features used by the transaction. As of writing, the only allowed value is 01 which indicates that the transaction serialization has a witness structure (see [[https://github.com/bitcoin/bips/blob/master/bip-0144.mediawiki|BIP144]]).
+: [Artifact] A serialization artifact indicating features used by the transaction. As of writing, the only allowed value is 01 which indicates that the transaction serialization has a witness structure (see [[bip-0144.mediawiki|BIP144]]).
 
 ; forwarding script
 : [Concept] A collective term for scripts that redirect input validation to another script or data structure. Witness programs and P2SH Programs are forwarding scripts. Forwarding scripts make use of script templates that imply additional evaluation steps beyond the explicitly expressed conditions. In the case of P2SH, the output script itself only explicitly specifies that the redeem script must be the preimage of the hash in the output script, but the template prescribes that the redeem script must additionally be satisfied. For witness programs, the output script is even less verbose with more implied meaning.
@@ -87,7 +87,7 @@ transactions (labeled [Concept]).
 : See '''transaction input'''.
 
 ; input counter
-: [Artifact] The length of the transaction input list (see [[https://github.com/bitcoin/bips/blob/master/bip-0144.mediawiki|BIP144]]).
+: [Artifact] The length of the transaction input list (see [[bip-0144.mediawiki|BIP144]]).
 : Synonym: txin_count
 
 ; input index
@@ -108,7 +108,7 @@ transactions (labeled [Concept]).
 : Synonym: nLockTime, lock_time
 
 ; marker
-: [Artifact] 1-byte serialization artifact indicating that a type of extended serialization is being used for this transaction. Must always be 00 (see [[https://github.com/bitcoin/bips/blob/master/bip-0144.mediawiki|BIP144]]). (Note: Non-segwit nodes will only accept stripped segwit transactions, because the marker appears at the position where non-segwit nodes expect the input counter. The input counter may not be zero, so a complete (non-stripped) segwit transaction appears invalid to a non-segwit node.)
+: [Artifact] 1-byte serialization artifact indicating that a type of extended serialization is being used for this transaction. Must always be 00 (see [[bip-0144.mediawiki|BIP144]]). (Note: Non-segwit nodes will only accept stripped segwit transactions, because the marker appears at the position where non-segwit nodes expect the input counter. The input counter may not be zero, so a complete (non-stripped) segwit transaction appears invalid to a non-segwit node.)
 
 ; outpoint
 : [Component] Identifies the transaction output (TXO) being spent by a transaction input. Consists of a txid and output index. The txid is serialized in little-endian but displayed in big-endian.
@@ -118,7 +118,7 @@ transactions (labeled [Concept]).
 : See '''transaction output'''.
 
 ; output counter
-: [Artifact] The length of the transaction output list, (see [[https://github.com/bitcoin/bips/blob/master/bip-0144.mediawiki|BIP144]]).
+: [Artifact] The length of the transaction output list, (see [[bip-0144.mediawiki|BIP144]]).
 : Synonym: txout_count
 
 ; output index
@@ -175,7 +175,7 @@ transactions (labeled [Concept]).
 : [Component] The public key present in the witness program of a P2TR output script composed by tweaking the inner key with the script tree’s Merkle root.
 
 ; Tapscript
-: [Concept] A variant of the Script language used in P2TR leaf scripts (see [[https://github.com/bitcoin/bips/blob/master/bip-0342.mediawiki|BIP342]]). Signature processing opcodes in Tapscript expect Schnorr signatures.
+: [Concept] A variant of the Script language used in P2TR leaf scripts (see [[bip-0342.mediawiki|BIP342]]). Signature processing opcodes in Tapscript expect Schnorr signatures.
 
 ; transaction header
 : [Concept] Collective term for the serialization artifacts and transaction fields that appear only once in the transaction serialization regardless of lengths of the input and output lists: transaction version, marker (segwit only), flag (segwit only), input counter, output counter, and locktime.
@@ -192,7 +192,7 @@ transactions (labeled [Concept]).
 : Synonym: inputs, vin, txins, tx_ins
 
 ; transaction output (TXO)
-: [Component] A transaction component that consists of an amount and an output script. Adds a new unspent transaction output (UTXO) to the UTXO set that is uniquelyWell… usually uniquely. There have been two transactions that were repeated which created duplicate UTXOs (see BIP30). identified by an outpoint.
+: [Component] A transaction component that consists of an amount and an output script. Adds a new unspent transaction output (UTXO) to the UTXO set that is uniquelyWell… usually uniquely. There have been two transactions that were repeated which created duplicate UTXOs (see [[bip-0030.mediawiki|BIP30]]). identified by an outpoint.
 : Synonym: output, txout
 
 ; transaction output list
@@ -200,7 +200,7 @@ transactions (labeled [Concept]).
 : Synonym: outputs, vout, txouts, tx_outs
 
 ; unspent transaction output (UTXO)
-: [Concept] An entry in Bitcoin’s ledger of spendable funds, the UTXO set. UTXOs get created by transaction outputs and spent by transaction inputs. UTXOs are uniquely identifiedThere have been two instances in which UTXOs with existing outpoints were recreated, see [[https://github.com/bitcoin/bips/blob/master/bip-0030.mediawiki|BIP30]] by an outpoint. The UTXO model with its uniquely-identifiable discrete portions of funds is instrumental to Bitcoin’s solution of the double-spending problem.
+: [Concept] An entry in Bitcoin’s ledger of spendable funds, the UTXO set. UTXOs get created by transaction outputs and spent by transaction inputs. UTXOs are uniquely identifiedThere have been two instances in which UTXOs with existing outpoints were recreated, see [[bip-0030.mediawiki|BIP30]] by an outpoint. The UTXO model with its uniquely-identifiable discrete portions of funds is instrumental to Bitcoin’s solution of the double-spending problem.
 : Synonym: coin
 
 ; version
@@ -209,21 +209,21 @@ transactions (labeled [Concept]).
 
 ; witness item
 : [Component] An element of a witness stack. At the time of writing, witness items are: witness script (P2WSH only), script arguments, leaf script (P2TR script path only), control block (P2TR script path only), annex (P2TR only).
-: Synonyms: witness element, witness stack element ([[https://github.com/bitcoin/bips/blob/master/bip-0341.mediawiki|BIP341]])
+: Synonyms: witness element, witness stack element ([bip-0341.mediawiki|BIP341]])
 
 ; witness program
 : [Concept] A script template that forwards input validation to the witness stack. Witness programs are a type of forwarding script. Witness programs appear in the output script for native segwit outputs and in the input script for wrapped segwit inputs.
 
 ; witness structure
 : [Concept] The part of the serialized transaction that contains the witness stacks for each input. Transactions without segwit inputs are serialized without a witness structure.
-: Synonym: script_witnesses (BIP144), witness (BIP141, underdefined without more context, as "witness" is used for both witness structure and witness stack)
+: Synonym: script_witnesses ([[bip-0144.mediawiki|BIP144]]), witness ([[bip-0141.mediawiki|BIP141]], underdefined without more context, as "witness" is used for both witness structure and witness stack)
 
 ; witness script
 : [Component] A witness item that provides the condition script used to spend P2WSH outputs. Appears in the witness stack.
 
 ; witness stack
 : [Component] The pre-built stack of witness items that is consumed in validation of the input’s condition script. Witness stacks are not scripts, but may include witness items that are scripts. The witness stack is logically part of the input. A witness stack can contain witness items that will not be added to the stack, such as the control block. The witness stack may contain condition scripts, specifically it will contain a witness script for P2WSH inputs, and a leaf script for a P2TR script path spend. Every transaction input has a witness stack, but the witness stack of non-segwit inputs is empty, i.e. consists just of the serialization artifact of a witness item count of 0. If a transaction does not have any segwit inputs, witness data is omitted from the transaction serialization.
-: Synonym: input witness, witness (underdefined without more context, as "witness" is used for both witness structure and witness stack including in BIP141), script witness (BIP144)
+: Synonym: input witness, witness (underdefined without more context, as "witness" is used for both witness structure and witness stack including in BIP141), script witness ([[bip-0144.mediawiki|BIP144]])
 
 ; witness transaction identifier (wtxid)
 : [Concept] Result of hashing a complete transaction including its witness structure. Used in transaction propagation and to construct a witness commitment.
@@ -318,7 +318,7 @@ In this section we dissect a serialized transaction. Each sub-level in the list
 : Amount underscores that we are referring to a count of satoshis rather than subjective value. As Bitcoin transactions (and code altogether) are littered with “values”, we prefer “amount” as being less ambiguous.
 
 ; CompactSize vs VarInt
-: The Bitcoin Core codebase uses the term CompactSize for a “variable-length integer encoding used in Bitcoin Core’s serialization framework” that has outside of Bitcoin Core also been referred to as VarIntAlso see Bitcoin Stack Exchange: [[What is the different between CompactSize and VarInt encoding?|https://bitcoin.stackexchange.com/a/114585/5406]]. Since the Bitcoin Core codebase uses another type of variable-length integer encoding called VarInt in the context of database interaction, we prefer using CompactSize in the context of transaction serialization. This approach is also preferred by some technical writers working on widely read technical resources concerned with Bitcoin.
+: The Bitcoin Core codebase uses the term CompactSize for a “variable-length integer encoding used in Bitcoin Core’s serialization framework” that has outside of Bitcoin Core also been referred to as VarIntAlso see Bitcoin Stack Exchange: [[https://bitcoin.stackexchange.com/a/114585/5406|What is the difference between the CompactSize and VarInt encodings?]]. Since the Bitcoin Core codebase uses another type of variable-length integer encoding called VarInt in the context of database interaction, we prefer using CompactSize in the context of transaction serialization. This approach is also preferred by some technical writers working on widely read technical resources concerned with Bitcoin.
 
 ; Forwarding and condition script in the context of P2TR key path spends
 : The terminology is open to interpretation in the context of P2TR key path spends. When spending a P2TR output per the key path, the signer uses the private key corresponding to the taproot internal key and tweaks the resulting signature with the Merkle root of the script tree. Looking at the process under the hood, we should consider the taproot output key a forwarding script that commits to multiple condition scripts: the taproot internal key and all leaf scripts. However, looking at the serialization, this means that a P2TR key path input is an exception in that it does not explicitly reveal its condition script, since the taproot internal key does not appear in the transaction serialization. Alternatively, the taproot output key could be interpreted as being both the condition script in the case of a key path spend and a forwarding script in the case of a script path spend.