86 - Key Derivation for Single Key P2TR Outputs
BIP: 86 Layer: Applications Title: Key Derivation for Single Key P2TR Outputs Author: Andrew Chow Comments-Summary: No comments yet. Comments-URI: https://github.com/bitcoin/bips/wiki/Comments:BIP-0086 Status: Draft Type: Standards Track Created: 2021-06-22 License: BSD-2-Clause ==Abstract== This document suggests a derivation scheme for HD wallets whose keys are involved in single key P2TR ([[bip-0341.mediawiki|BIP 341]]) outputs as the Taproot internal key. ===Copyright=== This BIP is licensed under the 2-clause BSD license. ==Motivation== With the usage of single key P2TR transactions, it is useful to have a common derivation scheme so that HD wallets that only have a backup of the HD seed can be likely to recover single key Taproot outputs. Although there are now solutions which obviate the need for fixed derivation paths for specific script types, many software wallets and hardware signers still use seed backups which lack derivation path and script information. T...
389 - Multipath Descriptor Key Expressions
BIP: 389 Layer: Applications Title: Multipath Descriptor Key Expressions Author: Andrew Chow Comments-Summary: No comments yet. Comments-URI: https://github.com/bitcoin/bips/wiki/Comments:BIP-0389 Status: Draft Type: Informational Created: 2022-07-26 License: BSD-2-Clause ==Abstract== This document specifies a modification to Key Expressions of Descriptors that are described in BIP 380. This modification allows Key Expressions to indicate BIP 32 derivation path steps that can have multiple values. ==Copyright== This BIP is licensed under the BSD 2-clause license. ==Motivation== Descriptors can describe the scripts that are used in a wallet, but wallets often require at least two descriptors for all of the scripts that they watch for. Wallets typically have one descriptor for producing receiving addresses, and the other for change addresses. These descriptors are often extremely similar - they produce the same types of scripts, derive keys from the same master key, and ...
371 - Taproot Fields for PSBT
BIP: 371 Layer: Applications Title: Taproot Fields for PSBT Author: Andrew Chow Comments-Summary: No comments yet. Comments-URI: https://github.com/bitcoin/bips/wiki/Comments:BIP-0371 Status: Draft Type: Standards Track Created: 2021-06-21 License: BSD-2-Clause ==Introduction== ===Abstract=== This document proposes additional fields for BIP 174 PSBTv0 and BIP 370 PSBTv2 that allow for BIP 340/341/342 Taproot data to be included in a PSBT of any version. These will be fields for signatures and scripts that are relevant to the creation of Taproot inputs. ===Copyright=== This BIP is licensed under the 2-clause BSD license. ===Motivation=== BIPs 340, 341, and 342 specify Taproot which provides a wholly new way to create and spend Bitcoin outputs. The existing PSBT fields are unable to support Taproot due to the new signature algorithm and the method by which scripts are embedded inside of a Taproot output. Therefore new fields must be defined to allow PSBTs to carry the inf...
370 - PSBT Version 2
BIP: 370 Layer: Applications Title: PSBT Version 2 Author: Andrew Chow Comments-Summary: No comments yet. Comments-URI: https://github.com/bitcoin/bips/wiki/Comments:BIP-0370 Status: Draft Type: Standards Track Created: 2021-01-14 License: BSD-2-Clause ==Introduction== ===Abstract=== This document proposes a second version of the Partially Signed Bitcoin Transaction format described in BIP 174 which allows for inputs and outputs to be added to the PSBT after creation. ===Copyright=== This BIP is licensed under the 2-clause BSD license. ===Motivation=== Partially Signed Bitcoin Transaction Version 0 as described in BIP 174 is unable to have new inputs and outputs be added to the transaction. The fixed global unsigned transaction cannot be changed which prevents any additional inputs or outputs to be added. PSBT Version 2 is intended to rectify this problem. An additional beneficial side effect is that all information for a given input or output will be provided by its or...
174 - Partially Signed Bitcoin Transaction Format
BIP: 174 Layer: Applications Title: Partially Signed Bitcoin Transaction Format Author: Andrew Chow Comments-Summary: No comments yet. Comments-URI: https://github.com/bitcoin/bips/wiki/Comments:BIP-0174 Status: Final Type: Standards Track Created: 2017-07-12 License: BSD-2-Clause ==Introduction== ===Abstract=== This document proposes a binary transaction format which contains the information necessary for a signer to produce signatures for the transaction and holds the signatures for an input while the input does not have a complete set of signatures. The signer can be offline as all necessary information will be provided in the transaction. The generic format is described here in addition to the specification for version 0 of this format. ===Copyright=== This BIP is licensed under the 2-clause BSD license. ===Motivation=== Creating unsigned or partially signed transactions to be passed around to multiple signers is currently implementation dependent, making it hard for...
385 - raw() and addr() Output Script Descriptors
BIP: 385 Layer: Applications Title: raw() and addr() Output Script Descriptors Author: Pieter Wuille Andrew Chow Comments-Summary: No comments yet. Comments-URI: https://github.com/bitcoin/bips/wiki/Comments:BIP-0385 Status: Draft Type: Informational Created: 2021-06-27 License: BSD-2-Clause ==Abstract== This document specifies raw() and addr() output script descriptors. raw() encapsulates a raw script as a descriptor. addr() encapsulates an address as a descriptor. ==Copyright== This BIP is licensed under the BSD 2-clause license. ==Motivation== In order to make descriptors maximally compatible with scripts in use today, it is useful to be able to wrap any arbitrary output script or an address into a descriptor. ==Specification== Two new script expressions are defined: raw() and addr(). ===raw()=== The raw(HEX) expression can only be used as a top level descriptor. As the argument, it takes a hex string representing a Bitcoin script. The output script produced ...
384 - combo() Output Script Descriptors
BIP: 384 Layer: Applications Title: combo() Output Script Descriptors Author: Pieter Wuille Andrew Chow Comments-Summary: No comments yet. Comments-URI: https://github.com/bitcoin/bips/wiki/Comments:BIP-0384 Status: Draft Type: Informational Created: 2021-06-27 License: BSD-2-Clause ==Abstract== This document specifies combo() output script descriptors. These take a key and produce P2PK, P2PKH, P2WPKH, and P2SH-P2WPKH output scripts if applicable to the key. ==Copyright== This BIP is licensed under the BSD 2-clause license. ==Motivation== In order to make the transition from traditional key based wallets to descriptor based wallets easier, it is useful to be able to take a key and produce the scripts which have traditionally been produced by wallet software. ==Specification== A new top level script expression is defined: combo(KEY). This expression can only be used as a top level expression. It takes a single key expression as an argument and produces either 2...
382 - Segwit Output Script Descriptors
BIP: 382 Layer: Applications Title: Segwit Output Script Descriptors Author: Pieter Wuille Andrew Chow Comments-Summary: No comments yet. Comments-URI: https://github.com/bitcoin/bips/wiki/Comments:BIP-0382 Status: Draft Type: Informational Created: 2021-06-27 License: BSD-2-Clause ==Abstract== This document specifies wpkh(), and wsh() output script descriptors. wpkh() descriptors take a key and produces a P2WPKH output script. wsh() descriptors take a script and produces a P2WSH output script. ==Copyright== This BIP is licensed under the BSD 2-clause license. ==Motivation== Segregated Witness added 2 additional standard output script formats: P2WPKH and P2WSH. These expressions allow specifying those formats as a descriptor. ==Specification== Two new script expressions are defined: wpkh(), and wsh(). ===wpkh()=== The wpkh(KEY) expression can be used as a top level expression, or inside of a sh() descriptor. It takes a single key expression as an argument and pr...
381 - Non-Segwit Output Script Descriptors
BIP: 381 Layer: Applications Title: Non-Segwit Output Script Descriptors Author: Pieter Wuille Andrew Chow Comments-Summary: No comments yet. Comments-URI: https://github.com/bitcoin/bips/wiki/Comments:BIP-0381 Status: Draft Type: Informational Created: 2021-06-27 License: BSD-2-Clause ==Abstract== This document specifies pk(), pkh(), and sh() output script descriptors. pk() descriptors take a key and produces a P2PK output script. pkh() descriptors take a key and produces a P2PKH output script. sh() descriptors take a script and produces a P2SH output script. ==Copyright== This BIP is licensed under the BSD 2-clause license. ==Motivation== Prior to the activation of Segregated Witness, there were 3 main standard output script formats: P2PK, P2PKH, and P2SH. These expressions allow specifying those formats as a descriptor. ==Specification== Three new script expressions are defined: pk(), pkh(), and sh(). ===pk()=== The pk(KEY) expression can be used in any conte...
383 - Multisig Output Script Descriptors
BIP: 383 Layer: Applications Title: Multisig Output Script Descriptors Author: Pieter Wuille Andrew Chow Comments-Summary: No comments yet. Comments-URI: https://github.com/bitcoin/bips/wiki/Comments:BIP-0383 Status: Draft Type: Informational Created: 2021-06-27 License: BSD-2-Clause ==Abstract== This document specifies multi(), and sortedmulti() output script descriptors. Both functions take a threshold and one or more public keys and produce a multisig output script. multi() specifies the public keys in the output script in the order given in the descriptor while sortedmulti() sorts the public keys lexicographically when the output script is produced. ==Copyright== This BIP is licensed under the BSD 2-clause license. ==Motivation== The most common complex script used in Bitcoin is a threshold multisig. These expressions allow specifying multisig scripts as a descriptor. ==Specification== Two new script expressions are defined: multi(), and sortedmulti(). Bot...
386 - tr() Output Script Descriptors
BIP: 386 Layer: Applications Title: tr() Output Script Descriptors Author: Pieter Wuille Andrew Chow Comments-Summary: No comments yet. Comments-URI: https://github.com/bitcoin/bips/wiki/Comments:BIP-0386 Status: Draft Type: Informational Created: 2021-06-27 License: BSD-2-Clause ==Abstract== This document specifies tr() output script descriptors. tr() descriptors take a key and optionally a tree of scripts and produces a P2TR output script. ==Copyright== This BIP is licensed under the BSD 2-clause license. ==Motivation== Taproot added one additional standard output script format: P2TR. These expressions allow specifying those formats as a descriptor. ==Specification== A new script expression is defined: tr(). A new expression is defined: Tree Expressions ===Tree Expression=== A Tree Expression (denoted TREE) is an expression which represents a tree of scripts. The way the tree is represented in an output script is dependent on the higher level expressions. A Tre...
380 - Output Script Descriptors General Operation
BIP: 380 Layer: Applications Title: Output Script Descriptors General Operation Author: Pieter Wuille Andrew Chow Comments-Summary: No comments yet. Comments-URI: https://github.com/bitcoin/bips/wiki/Comments:BIP-0380 Status: Draft Type: Informational Created: 2021-06-27 License: BSD-2-Clause ==Abstract== Output Script Descriptors are a simple language which can be used to describe collections of output scripts. There can be many different descriptor fragments and functions. This document describes the general syntax for descriptors, descriptor checksums, and common expressions. ==Copyright== This BIP is licensed under the BSD 2-clause license. ==Motivation== Bitcoin wallets traditionally have stored a set of keys which are later serialized and mutated to produce the output scripts that the wallet watches and the addresses it provides to users. Typically backups have consisted of solely the private keys, nowadays primarily in the form of BIP 39 mnemonics. Ho...