BIPs bitcoin improvement proposals

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

BIP: 385 source Layer: Applications Title: raw() and addr() Output Script Descriptors Author: Pieter Wuille Ava Chow Comments-Summary: No comments yet. Comments-URI: https://github.com/bitcoin/bips/wiki/Comments:BIP-0385 Status: Final Type: Informational Created: 2021-06-27 License: BSD-2-Clause Table of ContentsAbstractCopyrightMotivationSpecificationraw()addr()Test VectorsBackwards CompatibilityReference Implementation 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 ...

384 - combo() Output Script Descriptors

BIP: 384 source Layer: Applications Title: combo() Output Script Descriptors Author: Pieter Wuille Ava Chow Comments-Summary: No comments yet. Comments-URI: https://github.com/bitcoin/bips/wiki/Comments:BIP-0384 Status: Final Type: Informational Created: 2021-06-27 License: BSD-2-Clause Table of ContentsAbstractCopyrightMotivationSpecificationTest VectorsBackwards CompatibilityReference Implementation 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 ...

382 - Segwit Output Script Descriptors

BIP: 382 source Layer: Applications Title: Segwit Output Script Descriptors Author: Pieter Wuille Ava Chow Comments-Summary: No comments yet. Comments-URI: https://github.com/bitcoin/bips/wiki/Comments:BIP-0382 Status: Final Type: Informational Created: 2021-06-27 License: BSD-2-Clause Table of ContentsAbstractCopyrightMotivationSpecificationwpkh()wsh()Test VectorsBackwards CompatibilityReference Implementation 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 ...

381 - Non-Segwit Output Script Descriptors

BIP: 381 source Layer: Applications Title: Non-Segwit Output Script Descriptors Author: Pieter Wuille Ava Chow Comments-Summary: No comments yet. Comments-URI: https://github.com/bitcoin/bips/wiki/Comments:BIP-0381 Status: Final Type: Informational Created: 2021-06-27 License: BSD-2-Clause Table of ContentsAbstractCopyrightMotivationSpecificationpk()pkh()sh()Test VectorsBackwards CompatibilityReference Implementation 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. Specificat...

387 - Tapscript Multisig Output Script Descriptors

BIP: 387 source Layer: Applications Title: Tapscript Multisig Output Script Descriptors Author: Pieter Wuille Ava Chow Comments-Summary: No comments yet. Comments-URI: https://github.com/bitcoin/bips/wiki/Comments:BIP-0387 Status: Final Type: Informational Created: 2024-04-17 License: BSD-2-Clause Table of ContentsAbstractCopyrightMotivationSpecificationsortedmulti_a()Multiple Extended KeysTest VectorsBackwards CompatibilityReference Implementation Abstract This document specifies multi_a() and sortedmulti_a() output script descriptors. Like BIP 383's multi() and sortedmulti(), both functions take a threshold and one or more public keys and produce a multisig script. The primary distinction is that multi_a() and sortedmulti_a() only produce tapscripts and are only allowed in a tapscript context. 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 expressi...

86 - Key Derivation for Single Key P2TR Outputs

BIP: 86 source Layer: Applications Title: Key Derivation for Single Key P2TR Outputs Author: Ava Chow Comments-Summary: No comments yet. Comments-URI: https://github.com/bitcoin/bips/wiki/Comments:BIP-0086 Status: Final Type: Standards Track Created: 2021-06-22 License: BSD-2-Clause Table of ContentsAbstractCopyrightMotivationSpecificationsPublic key derivationAddress derivationBackwards CompatibilityTest vectorsReference Abstract This document suggests a derivation scheme for HD wallets whose keys are involved in single key P2TR (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...

328 - Derivation Scheme for MuSig2 Aggregate Keys

BIP: 328 source Layer: Applications Title: Derivation Scheme for MuSig2 Aggregate Keys Author: Ava Chow Comments-Summary: No comments yet. Comments-URI: https://github.com/bitcoin/bips/wiki/Comments:BIP-0328 Status: Draft Type: Informational Created: 2024-01-15 License: CC0-1.0 Table of ContentsAbstractCopyrightMotivationSpecificationTest VectorsBackwards CompatibilityRationaleReference ImplementationAcknowledgements Abstract This document specifies how BIP 32 extended public keys can be constructed from a BIP 327 MuSig2 aggregate public key and how such keys should be used for key derivation. Copyright This BIP is licensed under the Creative Commons CC0 1.0 Universal license. Motivation Multiple signers can create a single aggregate public key with MuSig2 that is indistinguishable from a random public key. The cosigners need a method for generating additional aggregate pubkeys to follow the best practice of using a new address for every payment. The obvious method...

383 - Multisig Output Script Descriptors

BIP: 383 source Layer: Applications Title: Multisig Output Script Descriptors Author: Pieter Wuille Ava Chow Comments-Summary: No comments yet. Comments-URI: https://github.com/bitcoin/bips/wiki/Comments:BIP-0383 Status: Final Type: Informational Created: 2021-06-27 License: BSD-2-Clause Table of ContentsAbstractCopyrightMotivationSpecificationsortedmulti()Multiple Extended KeysTest VectorsBackwards CompatibilityReference Implementation 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 e...

390 - musig() Descriptor Key Expression

BIP: 390 source Layer: Applications Title: musig() Descriptor Key Expression Author: Ava Chow Comments-Summary: No comments yet. Comments-URI: https://github.com/bitcoin/bips/wiki/Comments:BIP-0390 Status: Draft Type: Informational Created: 2024-01-15 License: CC0-1.0 Table of ContentsAbstractCopyrightMotivationSpecificationmusig(KEY, KEY, ..., KEY)musig(KEY, KEY, ..., KEY)/NUM/.../*Test VectorsBackwards CompatibilityRationaleReference ImplementationAcknowledgements Abstract This document specifies a musig() key expression for output script descriptors. musig() expressions take multiple keys and produce an aggregate public key using BIP 327. Copyright This BIP is licensed under the Creative Commons CC0 1.0 Universal license. Motivation BIP 327 introduces the MuSig2 Multi-Signature scheme. It is useful to have a way for keys to be used in a MuSig2 aggregate key to be expressed in descriptors so that wallets can more easily use MuSig2. Specification A new key expre...

386 - tr() Output Script Descriptors

BIP: 386 source Layer: Applications Title: tr() Output Script Descriptors Author: Pieter Wuille Ava Chow Comments-Summary: No comments yet. Comments-URI: https://github.com/bitcoin/bips/wiki/Comments:BIP-0386 Status: Final Type: Informational Created: 2021-06-27 License: BSD-2-Clause Table of ContentsAbstractCopyrightMotivationSpecificationTree Expressiontr()Modified Key ExpressionTest VectorsBackwards CompatibilityReference Implementation 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 ...

389 - Multipath Descriptor Key Expressions

BIP: 389 source Layer: Applications Title: Multipath Descriptor Key Expressions Author: Ava 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 Table of ContentsAbstractCopyrightMotivationSpecificationTest VectorsBackwards CompatibilityReference Implementation 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 descriptor...

373 - MuSig2 PSBT Fields

BIP: 373 source Layer: Applications Title: MuSig2 PSBT Fields Author: Ava Chow Comments-Summary: No comments yet. Comments-URI: https://github.com/bitcoin/bips/wiki/Comments:BIP-0373 Status: Draft Type: Standards Track Created: 2024-01-15 License: CC0-1.0 Table of ContentsIntroductionAbstractCopyrightMotivationSpecificationRolesUpdaterSignerFinalizerBackwards CompatibilityTest VectorsRationaleReference implementationAcknowledgements Introduction Abstract This document proposes additional fields for BIP 174 PSBTv0 and BIP 370 PSBTv2 that allow for BIP 327 MuSig2 Multi-Signature data to be included in a PSBT of any version. These will be fields for the participants' keys, the public nonces, and the partial signatures produced with MuSig2. Copyright This BIP is licensed under the Creative Commons CC0 1.0 Universal license. Motivation BIP 327 specifies a way to create BIP 340 compatible public keys and signatures using the MuSig2 Multi-Signature scheme. The existing...

371 - Taproot Fields for PSBT

BIP: 371 source Layer: Applications Title: Taproot Fields for PSBT Author: Ava Chow Comments-Summary: No comments yet. Comments-URI: https://github.com/bitcoin/bips/wiki/Comments:BIP-0371 Status: Final Type: Standards Track Created: 2021-06-21 License: BSD-2-Clause Table of ContentsIntroductionAbstractCopyrightMotivationSpecificationUTXO TypesCompatibilityTest VectorsRationaleReference implementationAcknowledgements 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 algorit...

380 - Output Script Descriptors General Operation

BIP: 380 source Layer: Applications Title: Output Script Descriptors General Operation Author: Pieter Wuille Ava Chow Comments-Summary: No comments yet. Comments-URI: https://github.com/bitcoin/bips/wiki/Comments:BIP-0380 Status: Final Type: Informational Created: 2021-06-27 License: BSD-2-Clause Table of ContentsAbstractCopyrightMotivationSpecificationScript ExpressionsKey ExpressionsNormalization of Key Expressions with Hardened DerivationCharacter SetChecksumTest VectorsBackwards CompatibilityReference ImplementationAppendix A: Index of ExpressionsAppendix B: Index of Script Expressions 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 ...

370 - PSBT Version 2

BIP: 370 source Layer: Applications Title: PSBT Version 2 Author: Ava Chow Comments-Summary: No comments yet. Comments-URI: https://github.com/bitcoin/bips/wiki/Comments:BIP-0370 Status: Final Type: Standards Track Created: 2021-01-14 License: BSD-2-Clause Table of ContentsIntroductionAbstractCopyrightMotivationSpecificationDetermining Lock TimeUnique IdentificationRolesCreatorConstructorUpdaterSignerTransaction ExtractorBackwards CompatibilityTest VectorsRationaleReference implementation 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 w...

174 - Partially Signed Bitcoin Transaction Format

BIP: 174 source Layer: Applications Title: Partially Signed Bitcoin Transaction Format Author: Ava 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 Table of ContentsIntroductionAbstractCopyrightMotivationSpecificationHandling Duplicated KeysProprietary Use TypeVersion 0RolesCreatorUpdaterSignerData Signers Check ForSimple Signer AlgorithmChange DetectionCombinerInput FinalizerTransaction ExtractorEncodingExtensibilityVersion NumbersProcedure For New FieldsProcedure For New VersionsCompatibilityExamplesManual CoinJoin Workflow2-of-3 Multisig WorkflowTest VectorsRationaleReference implementationAcknowledgements 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 ...