PSBT (BIP174): signing together

The standard file format for multisig and hardware wallets.

Signing a transaction needs information the signer may not have: which coins are being spent, their amounts, scripts and key derivation paths. A Partially Signed Bitcoin Transaction (PSBT), defined in BIP174 by Andrew Chow in 2017, is a standard container for all of it.

The format

A PSBT starts with the magic bytes 0x70 0x73 0x62 0x74 0xff ("psbt" followed by 0xff). It has a global section, one map per input and one per output, each containing typed key–value pairs. It is usually shared as Base64 or as a binary .psbt file.

Inputs can carry the full previous transaction or the UTXO being spent, the redeem or witness script, partial signatures, sighash types and BIP32 derivation paths. Outputs can carry derivation paths so a hardware wallet can verify which output is change.

The roles

  1. Creator: makes the unsigned transaction.
  2. Updater: adds UTXO data, scripts and key paths.
  3. Signer: checks the details and adds its signature.
  4. Combiner: merges PSBTs signed by different parties.
  5. Finalizer: builds the final scriptSig and witness.
  6. Extractor: outputs the ready-to-broadcast transaction.

One app can do several roles, or each can be a different device, such as a phone, a laptop and two hardware wallets.

Why it matters

  • Air-gapped signing: PSBTs can move via SD card or QR code.
  • Multisig: each cosigner signs independently, then signatures are combined.
  • Fee safety: because input amounts are included, a signer can calculate the fee before signing.
  • Coinjoins and payjoins: several people contribute inputs to one transaction.

In Bitcoin Core

RPCs include walletcreatefundedpsbt, walletprocesspsbt, combinepsbt, finalizepsbt and decodepsbt.

Version 2

BIP370 (PSBTv2) lets inputs and outputs be added after creation, which helps interactive protocols. Taproot fields were added by BIP371.

Rule: always verify the addresses and amounts on your signing device's screen, not just on your computer.