Qué es una PSBT
Respuesta corta: una PSBT (Partially Signed Bitcoin Transaction, «transacción de Bitcoin parcialmente firmada») es un formato estándar, definido en el BIP 174, para pasar una transacción todavía sin firmar, o firmada solo en parte, de un programa o dispositivo a otro. Lleva la transacción y todo lo que el firmante necesita para comprobarla: el importe y el script de cada moneda que se gasta y las rutas de derivación de tus claves. Así, la wallet conectada a internet prepara el pago y tu hardware wallet, que guarda las claves, solo lo revisa y lo firma.
En 30 segundos
Qué es: un «borrador» de transacción en un formato que entienden todas las wallets compatibles (BIP 174). Para qué: preparar el pago en un equipo conectado y firmarlo en una hardware wallet, o reunir las firmas de una multifirma. Cómo se reconoce: empieza por los bytes «psbt» + 0xFF y, como texto, por cHNidP8. Lo importante: no contiene claves privadas, y lo que firmas es lo que ves en la pantalla de la Trezor: revisa dirección, importe y comisión.
Para qué sirve una PSBT
Antes del BIP 174 cada wallet tenía su propia forma de pasar transacciones a medio hacer, y no se entendían entre sí. La PSBT es el idioma común. Sus usos principales:
- Firmar con una hardware wallet. La wallet del ordenador (ve la blockchain, pero no tiene claves) construye la transacción y se la pasa a la Trezor. La Trezor la muestra, tú confirmas en el dispositivo y devuelve las firmas. Las claves privadas nunca salen de ella.
- Firmar en un equipo que nunca se conecta. Bitcoin Core permite tener una wallet de solo lectura en un ordenador conectado y la wallet con las claves en otro sin red. La PSBT viaja entre los dos en un archivo (lo explica su guía oficial de firma sin conexión).
- Multifirma. En una multifirma 2 de 3, el coordinador crea la PSBT, cada cofirmante añade su firma (a la vez o uno detrás de otro) y, cuando hay dos, la transacción se puede completar.
- Coordinadores y transacciones compartidas. Varias personas pueden aportar entradas a una misma transacción (por ejemplo, un CoinJoin) y cada una firma solo las suyas, sin entregar sus claves a nadie.
El flujo, paso a paso
En 30 segundos: el ordenador prepara, la Trezor firma y el ordenador termina y difunde. Entre un paso y otro solo viajan la transacción, datos públicos y firmas: nunca las claves privadas.
- 1Wallet en el ordenadorCrearEliges destino, importe y comisión. Se añaden las monedas que se gastan y sus datos.
- 2TrezorRevisar y firmarMuestra dirección, importe y comisión. Confirmas con el botón o la pantalla táctil del dispositivo.
- 3Wallet o coordinadorCombinar y finalizarJunta las firmas (en multifirma, las de cada cofirmante) y completa cada entrada.
- 4Tu nodoExtraer y difundirSaca la transacción final en formato de red y la envía a la mempool.
Los seis roles del BIP 174
El estándar reparte el trabajo en papeles. Un mismo programa puede hacer varios: en el día a día tu wallet es creador, actualizador, finalizador y extractor, y la Trezor es el firmante.
| Rol | Qué hace | Ejemplo |
|---|---|---|
| Creator | Crea la PSBT con la transacción sin firmar: entradas y salidas, sin firmas. | Tu wallet al pulsar «Enviar» |
| Updater | Añade lo que necesita el firmante: la salida que se gasta (importe y script), scripts de canje y rutas de derivación (BIP 32) de las claves. | Tu wallet o un nodo (utxoupdatepsbt) |
| Signer | Comprueba la transacción, firma las entradas que puede y añade sus firmas parciales. No cambia nada más. | Tu Trezor |
| Combiner | Une varias PSBT de la misma transacción en una, sumando sus firmas. | El coordinador de una multifirma (combinepsbt) |
| Input Finalizer | Cuando una entrada tiene firmas suficientes, construye su scriptSig o witness definitivo y borra los datos auxiliares. | Tu wallet o Bitcoin Core (finalizepsbt) |
| Transaction Extractor | Saca la transacción completa en formato de red, lista para difundir. | Tu wallet antes de enviarla al nodo |
Cómo se ve una PSBT por dentro
Es un archivo binario (suele tener extensión .psbt). Empieza por 5 bytes mágicos: 0x70 0x73 0x62 0x74, que en ASCII son las letras «psbt», más el separador 0xFF. Después vienen un mapa global, un mapa por cada entrada y otro por cada salida, todos con pares clave-valor. Cuando se copia como texto se codifica en Base64, y esos 5 bytes se escriben siempre igual: cHNidP8. Si ves un texto que empieza así, es una PSBT.
70 73 62 74 ffbytes mágicos «psbt» + 0xFF01 00 75 02 00 00 00 01 …mapa global: la transacción sin firmarcHNidP8BAHUCAAAAAQ…lo mismo en Base64Puedes inspeccionarla con Bitcoin Core: decodepsbt muestra todo su contenido y analyzepsbt dice qué le falta y qué rol le toca a continuación (documentación de PSBT de Bitcoin Core, disponible desde la versión 0.17).
PSBT versión 2 (BIP 370)
La versión original (v0) guarda dentro la transacción sin firmar completa, así que entradas y salidas quedan fijadas desde el principio. El BIP 370 define la versión 2: ya no lleva esa transacción entera, sino que cada entrada y cada salida tienen sus propios campos, y la versión y el locktime van en el mapa global. Eso permite añadir entradas y salidas después de crearla, algo útil cuando varias personas construyen juntas una transacción, y añade un séptimo rol, el Constructor. Para quien firma con una sola wallet cambia poco. Por su parte, el BIP 371 añadió los campos que necesita Taproot.
Qué comprobar en la pantalla de la Trezor antes de firmar
Respuesta corta: la pantalla del ordenador puede estar manipulada por malware; la de la Trezor, no. Lo que confirmas en el dispositivo es lo que se firma, así que revisa allí:
- Dirección de destino. Compárala carácter a carácter (como mínimo el principio y el final) con la que te dio el destinatario, a ser posible por otro canal.
- Importe. Lo que envías a cada destinatario, en BTC o sats, sin un cero de más ni de menos.
- Comisión. Que sea razonable para la congestión del momento (consulta las comisiones y la mempool). Una comisión enorme es dinero perdido.
- Cambio. Lo que sobra vuelve a una dirección tuya. La Trezor no lo enseña como un destinatario más cuando comprueba que pertenece a tu propia cuenta; si te pide confirmar un envío a una dirección que no reconoces, no firmes.
Si algo no coincide, cancela en la Trezor: no firmar no cuesta nada, y una transacción firmada y difundida no se puede deshacer.
Riesgos y errores comunes
- Malware que cambia la dirección. Es el ataque más habitual: el ordenador muestra la dirección buena y mete otra en la PSBT. Solo lo detectas mirando la pantalla de la Trezor.
- Comisión engañosa. Para calcular la comisión, el firmante necesita saber cuánto vale cada moneda que se gasta. En 2020 se publicó un ataque contra entradas SegWit v0 que podía engañar al dispositivo sobre ese importe; por eso los firmantes piden la transacción anterior completa de esas entradas. En Taproot la firma cubre los importes de todas las entradas (BIP 341) y el problema desaparece.
- Privacidad. Una PSBT no lleva claves privadas, pero sí claves públicas extendidas, rutas de derivación y qué monedas tienes. No la compartas con quien no tenga que firmarla.
- PSBT de desconocidos. Firmar una PSBT que te envía otra persona autoriza a gastar tus monedas en los términos que contenga. Revisa todas las salidas y desconfía de las prisas (mira las estafas más comunes).
- PSBT caducada. Si alguna de sus monedas se gasta en otra transacción antes de difundirla, ya no vale: crea una nueva.
Preguntas frecuentes
¿Qué significa PSBT?
Partially Signed Bitcoin Transaction, «transacción de Bitcoin parcialmente firmada». Es el formato estándar del BIP 174 para pasar transacciones sin firmar o a medio firmar entre wallets y dispositivos.
¿Una PSBT contiene mis claves privadas?
No. Lleva la transacción, datos públicos (importes, scripts, claves públicas y rutas de derivación) y, cuando ya las hay, firmas. Aun así revela tus direcciones y tus monedas, así que compártela solo con quien deba firmarla.
¿Tengo que manejar archivos PSBT para usar mi Trezor?
No. Con Trezor Suite el proceso es automático: la aplicación prepara la transacción, la Trezor la muestra y tú confirmas en el dispositivo. Los archivos PSBT aparecen cuando usas la Trezor con otra wallet coordinadora, con Bitcoin Core o en una multifirma.
¿Por qué una PSBT en texto empieza por cHNidP8?
Porque toda PSBT empieza por los bytes mágicos 0x70 0x73 0x62 0x74 0xFF («psbt» más un separador) y, codificados en Base64, esos bytes se escriben cHNidP8.
¿Qué es una PSBT v2?
La versión del BIP 370. En lugar de guardar la transacción sin firmar entera, guarda por separado los datos de cada entrada y salida, lo que permite añadir entradas y salidas después de crearla. Añade el rol de Constructor.
Sigue aprendiendo
Fuentes: BIP 174 (PSBT), BIP 370 (PSBT v2), BIP 371 (campos Taproot), BIP 341, Bitcoin Core: PSBT, Bitcoin Core: firma sin conexión.