BIPs bitcoin improvement proposals

86 - Key Derivation for Single Key P2TR Outputs

<pre> BIP: 86 Layer: Applications Title: Key Derivation for Single Key P2TR Outputs Author: Andrew Chow <andrew@achow101.com> 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 </pre> ==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 la...

371 - Taproot Fields for PSBT

<pre> BIP: 371 Layer: Applications Title: Taproot Fields for PSBT Author: Andrew Chow <andrew@achow101.com> 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 </pre> ==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 m...

370 - PSBT Version 2

<pre> BIP: 370 Layer: Applications Title: PSBT Version 2 Author: Andrew Chow <achow101@gmail.com> 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 </pre> ==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 benficial side effect is that all information for a giv...

174 - Partially Signed Bitcoin Transaction Format

<pre> BIP: 174 Layer: Applications Title: Partially Signed Bitcoin Transaction Format Author: Andrew Chow <achow101@gmail.com> 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 </pre> ==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 current...

385 - raw() and addr() Output Script Descriptors

<pre> BIP: 385 Layer: Applications Title: raw() and addr() Output Script Descriptors Author: Pieter Wuille <pieter@wuille.net> Andrew Chow <andrew@achow101.com> 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 </pre> ==Abstract== This document specifies <tt>raw()</tt> and <tt>addr()</tt> output script descriptors. <tt>raw()</tt> encapsulates a raw script as a descriptor. <tt>addr()</tt> 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: <tt>raw()</tt> and <tt>addr()</tt>. ===<tt>raw()</tt>=== The <tt>raw(HEX)</tt> expressio...

384 - combo() Output Script Descriptors

<pre> BIP: 384 Layer: Applications Title: combo() Output Script Descriptors Author: Pieter Wuille <pieter@wuille.net> Andrew Chow <andrew@achow101.com> 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 </pre> ==Abstract== This document specifies <tt>combo()</tt> 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: <tt>combo(KEY)</tt>. This expression can only be used as a top le...

382 - Segwit Output Script Descriptors

<pre> BIP: 382 Layer: Applications Title: Segwit Output Script Descriptors Author: Pieter Wuille <pieter@wuille.net> Andrew Chow <andrew@achow101.com> 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 </pre> ==Abstract== This document specifies <tt>wpkh()</tt>, and <tt>wsh()</tt> output script descriptors. <tt>wpkh()</tt> descriptors take a key and produces a P2WPKH output script. <tt>wsh()</tt> 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: <tt>wpkh()</tt>, and <tt>wsh()</tt>. ===<tt>wpkh()</tt>=== The <tt>wpkh(KEY...

381 - Non-Segwit Output Script Descriptors

<pre> BIP: 381 Layer: Applications Title: Non-Segwit Output Script Descriptors Author: Pieter Wuille <pieter@wuille.net> Andrew Chow <andrew@achow101.com> 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 </pre> ==Abstract== This document specifies <tt>pk()</tt>, <tt>pkh()</tt>, and <tt>sh()</tt> output script descriptors. <tt>pk()</tt> descriptors take a key and produces a P2PK output script. <tt>pkh()</tt> descriptors take a key and produces a P2PKH output script. <tt>sh()</tt> 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== ...

383 - Multisig Output Script Descriptors

<pre> BIP: 383 Layer: Applications Title: Multisig Output Script Descriptors Author: Pieter Wuille <pieter@wuille.net> Andrew Chow <andrew@achow101.com> 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 </pre> ==Abstract== This document specifies <tt>multi()</tt>, and <tt>sortedmulti()</tt> output script descriptors. Both functions take a threshold and one or more public keys and produce a multisig output script. <tt>multi()</tt> specifies the public keys in the output script in the order given in the descriptor while <tt>sortedmulti()</tt> 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 ...

386 - tr() Output Script Descriptors

<pre> BIP: 386 Layer: Applications Title: tr() Output Script Descriptors Author: Pieter Wuille <pieter@wuille.net> Andrew Chow <andrew@achow101.com> 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 </pre> ==Abstract== This document specifies <tt>tr()</tt> output script descriptors. <tt>tr()</tt> 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: <tt>tr()</tt>. A new expression is defined: Tree Expressions ===Tree Expression=== A Tree Expression (denoted <tt>TREE</tt>) is an expression which represents a tree of scri...

380 - Output Script Descriptors General Operation

<pre> BIP: 380 Layer: Applications Title: Output Script Descriptors General Operation Author: Pieter Wuille <pieter@wuille.net> Andrew Chow <andrew@achow101.com> 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 </pre> ==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 priva...