Overview
Partially Signed Bitcoin Transactions (PSBTs), defined in BIP174, provide a standard data format for representing Bitcoin transactions at various stages of the signing process. Before PSBTs, there was no universal way to pass an unsigned transaction from one wallet to a hardware wallet for signing, or to coordinate signatures among multiple parties in a multisig setup. PSBT solved this interoperability problem.
PSBT Workflow
A PSBT moves through distinct roles, which may be performed by different software or devices:
┌──────────┐ ┌──────────┐ ┌──────────┐ ┌───────────┐
│ Creator │───>│ Updater │───>│ Signer │───>│ Finalizer │
│ │ │ │ │ (one or │ │ │
│ Builds │ │ Adds │ │ more) │ │ Combines │
│ unsigned │ │ UTXO │ │ │ │ & strips │
│ tx │ │ info, │ │ Adds │ │ PSBT │
│ │ │ scripts, │ │ partial │ │ metadata │
│ │ │ paths │ │ sigs │ │ │
└──────────┘ └──────────┘ └──────────┘ └─────┬─────┘
│
▼
┌───────────┐
│ Extractor │
│ │
│ Produces │
│ final raw │
│ tx for │
│ broadcast │
└───────────┘
Key Use Cases
- Hardware wallet signing — A watch-only wallet creates the PSBT, the hardware device signs it, and the wallet broadcasts the finalized transaction
- Multisig coordination — Each signer adds their signature to the PSBT in turn, or signatures are collected in parallel and combined
- CoinJoin — Multiple participants each add their inputs and sign only their portion of a collaborative transaction
- Air-gapped signing — PSBTs can be transferred via QR codes or SD cards to completely offline signing devices
Data Contained in a PSBT
A PSBT bundles the raw transaction with all the metadata signers need: previous transaction outputs (for verification), redeem scripts, witness scripts, BIP32 derivation paths, and partial signatures. This means a signer does not need access to the blockchain to validate and sign.
PSBT Version 2
BIP370 introduced PSBT v2, which allows the transaction itself to be modified during the construction process (adding or removing inputs and outputs). This is particularly useful for interactive protocols like PayJoin and CoinJoin where the final transaction shape is not known at creation time.
Common Misconception
PSBTs are not a new transaction type on the Bitcoin network. A PSBT is purely an off-chain data format for constructing and signing transactions. Once finalized, the resulting transaction is indistinguishable from any other valid Bitcoin transaction.