Passer au contenu

Bitcoin accepté au paiement  |  Expédié depuis Montréal, QC, Canada  |  Soutien expert depuis 2016

Référence des types de clés PSBT de Bitcoin (BIP-174, BIP-370, BIP-371)

Chaque portefeuille matériel, coordinateur multisig et signeur isolé (air-gapped) parle PSBT — mais le format lui-même n’est que trois cartes clé-valeur, et cette page présente ces cartes au complet. Les 58 types de clés PSBT enregistrés avec leurs octets de type, les règles d’inclusion v0 vs v2 et le contenu des valeurs, directement de BIP-174, BIP-370 et BIP-371. Pour la langue de portefeuille dont les PSBT transportent les clés, voir la référence des descripteurs de sortie. Les descriptions sont conservées en anglais.

Réponse rapide

Un PSBT (transaction Bitcoin partiellement signée) est une carte clé-valeur en trois sections — globale, par entrée, par sortie — que portefeuilles, coordinateurs et appareils de signature se passent jusqu'à ce que la transaction soit complète. Cette référence liste les 58 types de clés du registre officiel : le nom, l'octet de type, la portée, la règle d'inclusion v0 (BIP-174) vs v2 (BIP-370), et ce que contient la valeur — champs taproot du BIP-371 inclus. Fait notable : la version 1 de PSBT n'existe pas, elle a été délibérément sautée. Chaque ligne est vérifiée contre sa spécification — y compris les champs MuSig2 (BIP-373), paiements silencieux (BIP-375/376, en brouillon), preuve de réserves (BIP-127), message BIP-322 et DNSSEC BIP-353, transcrits des textes bruts des BIP. Les descriptions sont conservées en anglais.

La règle v0-vs-v2 qui déroute le plus : en v2, la transaction non signée globale (0x00) disparaît — remplacée par des champs explicites (txid précédent, index, montants, scripts) qui rendent la construction incrémentale possible. Un lecteur PSBT doit vérifier PSBT_GLOBAL_VERSION d'abord. CSV/JSON gratuits sous CC BY 4.0.

Télécharger le CSV Télécharger le JSON API REST →

Carte globale 12

Type de cléHexVersionsValeurBIP
PSBT_GLOBAL_UNSIGNED_TX0x00v0 (required; MUST be excluded in v2)The transaction in (pre-segwit) network serialization with empty scriptSigs and witnesses.174
PSBT_GLOBAL_XPUB0x01bothKeydata is a 78-byte BIP-32 xpub; value is the 4-byte master fingerprint plus the 32-bit LE derivation path indexes for keys used in this transaction.174
PSBT_GLOBAL_TX_VERSION0x02v2 (required; excluded in v0)32-bit LE signed integer: version number of the transaction being created (not the PSBT version).370
PSBT_GLOBAL_FALLBACK_LOCKTIME0x03v2 only (excluded in v0)32-bit LE unsigned locktime to use if no input specifies a required locktime.370
PSBT_GLOBAL_INPUT_COUNT0x04v2 (required; excluded in v0)Compact size uint: number of inputs in this PSBT.370
PSBT_GLOBAL_OUTPUT_COUNT0x05v2 (required; excluded in v0)Compact size uint: number of outputs in this PSBT.370
PSBT_GLOBAL_TX_MODIFIABLE0x06v2 only (excluded in v0)8-bit bitfield: bit 0 = inputs modifiable, bit 1 = outputs modifiable, bit 2 = has SIGHASH_SINGLE signature whose input/output pairing must be preserved.370
PSBT_GLOBAL_SP_ECDH_SHARE0x07v2 only (excluded in v0)Keydata is the 33-byte scan key; value is a 33-byte ECDH share computed as a*B_scan, where a is the sum of all private keys of all eligible inputs and B_scan is the recipient's scan key.375
PSBT_GLOBAL_SP_DLEQ0x08v2 only (excluded in v0)Keydata is the 33-byte scan key the proof covers; value is a 64-byte BIP-374 DLEQ proof computed for the matching ECDH share.375
PSBT_GLOBAL_GENERIC_SIGNED_MESSAGE0x09bothNo keydata; value is the UTF-8 encoded message to be signed — coordinates BIP-322 multisig message signing through PSBT.322
PSBT_GLOBAL_VERSION0xFBboth (required and set to 2 in v2; 0 if omitted — version 1 was deliberately skipped)32-bit LE unsigned PSBT version number.174
PSBT_GLOBAL_PROPRIETARY0xFCbothKeydata: compact-size identifier length, identifier, compact-size subtype, subkeydata; value: any data defined by the proprietary user.174

Carte par entrée (per-input) 33

Type de cléHexVersionsValeurBIP
PSBT_IN_NON_WITNESS_UTXO0x00bothFull previous transaction in network serialization; should be present for non-segwit spends, may coexist with WITNESS_UTXO.174
PSBT_IN_WITNESS_UTXO0x01bothThe spent transaction output (64-bit LE amount + scriptPubKey) for segwit spends, including P2SH-embedded ones.174
PSBT_IN_PARTIAL_SIG0x02bothKeydata is the pubkey; value is a valid ECDSA signature as it would be pushed to the stack.174
PSBT_IN_SIGHASH_TYPE0x03both32-bit LE uint sighash type this input's signatures must use; finalizers must reject mismatching signatures.174
PSBT_IN_REDEEM_SCRIPT0x04bothThe redeemScript for this input if it has one.174
PSBT_IN_WITNESS_SCRIPT0x05bothThe witnessScript for this input if it has one.174
PSBT_IN_BIP32_DERIVATION0x06bothKeydata is a pubkey needed to sign this input; value is master fingerprint + 32-bit LE path indexes.174
PSBT_IN_FINAL_SCRIPTSIG0x07bothFully constructed scriptSig with signatures and scripts needed for validation.174
PSBT_IN_FINAL_SCRIPTWITNESS0x08bothFully constructed scriptWitness with signatures and scripts needed for validation.174
PSBT_IN_POR_COMMITMENT0x09v0-era (BIP-174 input map; no v2 rule stated)Value is the UTF-8 proof-of-reserves commitment message. Wallets MUST check the prevout txid equals the SHA-256 of the prefixed commitment message, assume input value 0, and SHOULD display the message before signing.127
PSBT_IN_RIPEMD1600x0abothKeydata is the 20-byte hash; value is the preimage hashing to it under RIPEMD160.174
PSBT_IN_SHA2560x0bbothKeydata is the 32-byte hash; value is the preimage hashing to it under SHA256.174
PSBT_IN_HASH1600x0cbothKeydata is the 20-byte hash; value is the preimage under SHA256 then RIPEMD160.174
PSBT_IN_HASH2560x0dbothKeydata is the 32-byte hash; value is the preimage under double-SHA256.174
PSBT_IN_PREVIOUS_TXID0x0ev2 (required; excluded in v0)32-byte txid (standard byte order, not display order) of the transaction whose output is being spent.370
PSBT_IN_OUTPUT_INDEX0x0fv2 (required; excluded in v0)32-bit LE index of the output being spent in the PSBT_IN_PREVIOUS_TXID transaction.370
PSBT_IN_SEQUENCE0x10v2 only (excluded in v0)32-bit LE sequence number; assumed final (0xffffffff) if omitted.370
PSBT_IN_REQUIRED_TIME_LOCKTIME0x11v2 only (excluded in v0)32-bit LE uint >= 500000000: minimum Unix timestamp this input requires as the transaction locktime.370
PSBT_IN_REQUIRED_HEIGHT_LOCKTIME0x12v2 only (excluded in v0)32-bit LE uint > 0 and < 500000000: minimum block height this input requires as the transaction locktime.370
PSBT_IN_TAP_KEY_SIG0x13both64 or 65 byte Schnorr signature for key-path spending a taproot output (no keydata).371
PSBT_IN_TAP_SCRIPT_SIG0x14bothKeydata is x-only pubkey + 32-byte leaf hash; value is the 64/65-byte Schnorr signature for that pubkey-and-leaf combination.371
PSBT_IN_TAP_LEAF_SCRIPT0x15bothKeydata is the BIP-341 control block (merkle path); value is the leaf script followed by its single-byte leaf version.371
PSBT_IN_TAP_BIP32_DERIVATION0x16bothKeydata is a 32-byte x-only pubkey; value is a compact-size count of leaf hashes, the leaf hashes, then fingerprint + 32-bit LE path (internal key uses count 0).371
PSBT_IN_TAP_INTERNAL_KEY0x17bothThe x-only pubkey used as the taproot internal key of the spent output.371
PSBT_IN_TAP_MERKLE_ROOT0x18bothThe 32-byte taproot merkle root hash.371
PSBT_IN_MUSIG2_PARTICIPANT_PUBKEYS0x1abothKeydata is the 33-byte compressed MuSig2 aggregate public key from KeyAgg; value is the list of participants' compressed public keys in the order required for aggregation (sorted order if sorting was done).373
PSBT_IN_MUSIG2_PUB_NONCE0x1bbothKeydata is the participant's 33-byte compressed pubkey + the 33-byte aggregate pubkey + the BIP-341 tapleaf hash of the leaf script to sign (omitted for the internal/output key); value is the 66-byte public nonce from NonceGen.373
PSBT_IN_MUSIG2_PARTIAL_SIG0x1cbothKeydata is the participant's 33-byte compressed pubkey + the 33-byte aggregate pubkey + the BIP-341 tapleaf hash signed (omitted for the internal/output key); value is the 32-byte partial signature from the Sign algorithm.373
PSBT_IN_SP_ECDH_SHARE0x1dv2 only (excluded in v0)Keydata is the 33-byte scan key; value is a 33-byte ECDH share computed as a*B_scan from this input's prevout private key.375
PSBT_IN_SP_DLEQ0x1ev2 only (excluded in v0)Keydata is the 33-byte scan key the proof covers; value is a 64-byte BIP-374 DLEQ proof for the matching input ECDH share.375
PSBT_IN_SP_SPEND_BIP32_DERIVATION0x1fv2 only (excluded in v0)Keydata is the 33-byte spend public key; value is the 4-byte master fingerprint plus the spend key's 32-bit LE derivation path. Updaters SHOULD add it when spending a silent-payment output; Finalizers remove it after the final scriptwitness.376
PSBT_IN_SP_TWEAK0x20v2 only (excluded in v0)No keydata; value is the 32-byte BIP-352 spending tweak (shared-secret hash, optionally plus the label hash). The Updater MUST add it when an input spends a silent-payment output; Finalizers remove it after the final scriptwitness.376
PSBT_IN_PROPRIETARY0xFCbothProprietary use: identifier + subtype keydata, arbitrary value data.174

Carte par sortie (per-output) 13

Type de cléHexVersionsValeurBIP
PSBT_OUT_REDEEM_SCRIPT0x00bothThe redeemScript for this output if it has one.174
PSBT_OUT_WITNESS_SCRIPT0x01bothThe witnessScript for this output if it has one.174
PSBT_OUT_BIP32_DERIVATION0x02bothKeydata is a pubkey needed to spend this output; value is master fingerprint + 32-bit LE path indexes.174
PSBT_OUT_AMOUNT0x03v2 (required; excluded in v0)64-bit signed LE integer: the output amount in satoshis.370
PSBT_OUT_SCRIPT0x04v2 (required; excluded in v0)The output script (scriptPubKey).370
PSBT_OUT_TAP_INTERNAL_KEY0x05bothThe x-only pubkey used as the taproot internal key of this output.371
PSBT_OUT_TAP_TREE0x06bothTuples of (8-bit depth, 8-bit leaf version, compact-size script length, script) in depth-first order, reconstructing the whole taproot tree.371
PSBT_OUT_TAP_BIP32_DERIVATION0x07bothKeydata is a 32-byte x-only pubkey involved in this output; value is leaf-hash count, leaf hashes, then fingerprint + 32-bit LE path.371
PSBT_OUT_MUSIG2_PARTICIPANT_PUBKEYS0x08bothKeydata is the 33-byte compressed MuSig2 aggregate public key from KeyAgg; value is the list of participants' compressed public keys in the order required for aggregation (sorted order if sorting was done).373
PSBT_OUT_SP_V0_INFO0x09v2 only (excluded in v0)No keydata; value is a zero version byte, then the 33-byte scan key, then the 33-byte spend key of the silent-payment address. If PSBT_OUT_SCRIPT is absent this field must be present — it represents the address whose script is not yet computed.375
PSBT_OUT_SP_V0_LABEL0x0av2 only (excluded in v0)No keydata; value is a 32-bit LE unsigned label used to compute the spend key of the silent-payment address to verify change.375
PSBT_OUT_DNSSEC_PROOF0x35bothNo keydata; value is a 1-byte-length-prefixed BIP-353 human-readable name (without the bitcoin prefix symbol) followed by an RFC 9102 DNSSEC AuthenticationChain proving the BIP-353 DNS TXT record.353
PSBT_OUT_PROPRIETARY0xFCbothProprietary use: identifier + subtype keydata, arbitrary value data.174

Source : les textes bruts de BIP-174 (Deployed), BIP-370 (Deployed) et BIP-371 (Deployed) + le registre officiel des types (bitcoin/bips, consultés le 2026-07-26). Se combine avec la référence des descripteurs et la matrice de récupération de portefeuilles.