Partially signed bitcoin transactions
Also covering BIP174 and PSBT
Partially Signed Bitcoin Transactions (PSBTs) are a data format that allows wallets and other tools to exchange information about a Bitcoin transaction and the signatures necessary to complete it.
A PSBT can be created that identifies a set of UTXOs to spend and a set of outputs to receive that spent value. Then information about each UTXO that’s necessary to generate a signature for it can added, possibly by a separate tool, such as the UTXO’s script or its precise bitcoin value.
The PSBT can then be copied by any means to a program that can sign it. For multisig wallets or cases where different wallets control different inputs, this last step can be repeated multiple times by different programs on different copies of the PSBT. Multiple PSBTs each with one or more necessary signatures can be integrated into a single PSBT later. Finally, that fully signed PSBT can be converted into a complete ready-to-broadcast transaction.
Primary code and documentation
Optech newsletter and website mentions
2021
- BIPs #988 updates BIP174 to require output fields be initialized
- BIPs #1055 updatse BIP174 with new versioning information
- LND 0.12.0-beta adds a new
psbt
wallet subcommand for PSBTs
2020
- New PSBT Toolkit software provides GUI for working with PSBTs
- A new backwards-incompatible version of PSBT is proposed
- LND #4389 adds a new
psbt
wallet subcommand for creating & signing PSBTs - Joinmarket 0.7.0 adds support for PSBTs
- BIPs #955 updates BIP174 PSBT to standardize supplying hash preimages
- Bitcoin Core #18654 adds new RPC specifically for RBF fee bumping PSBTs
- BIP174 specification of PSBT updated in response to fee overpayment attack
- LND #4455 makes it safe to batch open channels using PSBTs
- Field Report: Using PSBT at River Financial
- Initial release of Lily Wallet supports PSBTs
- Electrum 4.0.1 replaces their partial transactions format with PSBTs
- C-Lightning #3775 adds RPCs for creating and using PSBTs
- Bitcoin Core #19215 adds additional data to PSBTs for segwit inputs
- Bitcoin Core #18027 adds GUI support for signing & broadcasting PSBTs
- C-Lightning #3738 adds initial support for creating PSBTs
- LND 0.10.0-beta released with support for funding channels using PSBTs
- LND 0.10 presentation: funding channels using PSBTs
- Bitcoin Core #17509 allows saving and loading PSBTs from files
- LND #4079 adds support for funding channels with PSBTs
- Bitcoin Core #17264 includes HD derivation path in PSBTs by default
- CKBunker using PSBTs for an HSM
- Bitcoin Core #17492 allows the wallet GUI to place a PSBT in the clipboard
- Bitcoin Core #16373 allows the bumpfee RPC used for RBF to return a PSBT
2019
- Range of identifiers allocated to proprietary PSBT extensions
- Modifying BIP174 for extensibility
- Update to the utxoupdatepsbt RPC in Bitcoin Core
- PSBT enhancements included in Bitcoin Core 0.18
- Discussion of PSBT extension fields
- Three new Bitcoin Core RPCs for managing PSBTs
2018
- New Bitcoin Core RPCs for initial PSBT support
- Features included in Bitcoin Core 0.17
- PSBT discussion
See also
Previous Topic:
Payjoin
Next Topic:
Point Time Locked Contracts (PTLCs)