Firmar una transacción necesita información que el firmante puede no tener: qué monedas se gastan, sus importes, scripts y rutas de derivación de claves. Una Partially Signed Bitcoin Transaction (PSBT), definida en BIP174 por Andrew Chow en 2017, es un contenedor estándar para todo ello.
El formato
Una PSBT empieza con los bytes mágicos 0x70 0x73 0x62 0x74 0xff («psbt» seguido de 0xff). Tiene una sección global, un mapa por entrada y uno por salida, cada uno con pares clave–valor tipados. Suele compartirse como Base64 o como archivo binario .psbt.
Las entradas pueden llevar la transacción anterior completa o el UTXO que se gasta, el redeem o witness script, firmas parciales, tipos sighash y rutas de derivación BIP32. Las salidas pueden llevar rutas de derivación para que una billetera de hardware verifique qué salida es el cambio.
Los roles
- Creator: crea la transacción sin firmar.
- Updater: añade datos UTXO, scripts y rutas de clave.
- Signer: comprueba los detalles y añade su firma.
- Combiner: fusiona PSBTs firmadas por distintas partes.
- Finalizer: construye el scriptSig y witness finales.
- Extractor: saca la transacción lista para difundir.
Una app puede hacer varios roles, o cada uno puede ser un dispositivo distinto, como un teléfono, un portátil y dos billeteras de hardware.
Por qué importa
- Firma air-gapped: las PSBT pueden moverse por tarjeta SD o código QR.
- Multifirma: cada cofirmante firma de forma independiente, luego se combinan las firmas.
- Seguridad de comisión: como se incluyen los importes de entrada, un firmante puede calcular la comisión antes de firmar.
- Coinjoins y payjoins: varias personas aportan entradas a una transacción.
En Bitcoin Core
Los RPC incluyen walletcreatefundedpsbt, walletprocesspsbt, combinepsbt, finalizepsbt y decodepsbt.
Versión 2
BIP370 (PSBTv2) permite añadir entradas y salidas tras la creación, lo que ayuda a protocolos interactivos. Los campos Taproot los añadió BIP371.
Regla: verifica siempre las direcciones y los importes en la pantalla de tu dispositivo de firma, no solo en el ordenador.