Saltar al contenido
buybitcoinsmart

Glosario / Transacciones y comisiones

PSBT

También se conoce como Transacción de bitcoin parcialmente firmada o BIP174.

¿Qué es un PSBT?
Un PSBT es un archivo de transacción que todavía no está terminado: lleva las entradas, las salidas y todo lo que un firmante necesita para verificarlas, y viaja entre dispositivos en lugar de por la red.

Se especifica en el BIP-174.

Firmar transacciones de bitcoin solía significar entregar las claves privadas a cualquier programa que construyera la transacción. El BIP174 separó ambas cosas en 2018 y Bitcoin Core incorporó la compatibilidad en la versión 0.17.0, de modo que el dispositivo que guarda las claves puede ser distinto del que está conectado a internet. Hoy lo usan todas las billeteras de hardware y todos los coordinadores multisig.

Cómo funciona

Un PSBT es un contenedor de mapas clave-valor: un mapa global que describe la transacción que se está ensamblando y, después, un mapa por cada entrada y otro por cada salida.

El archivo empieza por cinco bytes mágicos, 70 73 62 74 ff, que forman "psbt" más un separador. Base64 es la forma habitual de transportarlo, así que un PSBT pegado en un cuadro de texto siempre empieza por los caracteres cHNidP8. Una cadena de caracteres que empiece de cualquier otra forma no es un PSBT, diga lo que diga quien la envía.

Cada mapa de entrada contiene la información que un firmante sin conexión no puede consultar por su cuenta:

  • la salida que se gasta, para que el dispositivo conozca el monto exacto y el script de bloqueo que está autorizando
  • el script de canje o el script de testigo, cuando la moneda está protegida por una política y no por una sola clave
  • una ruta de derivación y la huella digital de la clave maestra de cada clave que tiene que firmar, para que un dispositivo con la semilla correcta pueda encontrar la clave hija correcta
  • las firmas parciales reunidas hasta el momento, una por firmante

Los mapas de salida también llevan información de derivación, y eso es lo que permite a un firmante confirmar que la salida de cambio pertenece de verdad a la billetera que protege.

El BIP174 divide el trabajo en roles y no en programas. Un creador produce el esqueleto, un actualizador completa los detalles de las entradas, los firmantes añaden firmas parciales, un combinador une los archivos que se firmaron por separado, un finalizador convierte las firmas parciales en un script o un testigo válidos, y un extractor produce la transacción en bruto lista para difundirse. Un mismo programa suele desempeñar varios roles a la vez, pero la separación es la razón de que los archivos de distintos proveedores sean interoperables.

El formato se diseñó para tolerar la ignorancia. Cada campo lleva un byte de tipo, y un firmante que no entiende un campo debe dejarlo pasar intacto en lugar de descartarlo, y así es como una billetera escrita en 2018 todavía puede pasar un archivo a otra escrita para Taproot. El BIP371 añadió los campos de Taproot; el BIP370 define una versión 2 en la que todavía pueden añadirse entradas y salidas después de la creación, la propiedad que necesitan las transacciones colaborativas.

Por qué importa cuando compra bitcoin

En cuanto usted mueve monedas de un exchange a su propia billetera de hardware, está usando el formato PSBT, lo diga o no alguna pantalla.

Mantiene las claves fuera de su computadora. Su computadora portátil construye el gasto y produce un PSBT, el Trezor o el Ledger lo lee, le muestra lo que dice, firma y se lo devuelve. Nada secreto pasa por el cable. Esa es la diferencia entre una computadora portátil comprometida, a la que se puede sobrevivir, y una frase semilla comprometida, a la que no.

Protege contra el reemplazo de la dirección de cambio. Un malware que controle su computadora puede mostrar una pantalla de pago honesta mientras desvía discretamente el cambio a una dirección que pertenece al propio malware, y el cambio suele ser el monto mayor. Como el archivo indica una ruta de derivación para cada salida, el dispositivo de firma puede comprobar que el cambio desciende de su propia semilla y avisarle cuando no es así. Lea la pantalla del dispositivo, nunca la pestaña del navegador.

Hace que el multisig sea viable para quienes no son ingenieros. Un 2 de 3 repartido entre dos billeteras de hardware y un respaldo en otro edificio solo funciona si una transacción sin firmar puede viajar por tarjeta SD, código QR o correo electrónico sin filtrar nada. Un PSBT no contiene claves privadas, así que perder uno en tránsito no le cuesta absolutamente nada.

Es la pieza que necesitarán sus herederos. Un sobre con las palabras de la frase semilla no es un plan de recuperación para nada más complicado que una billetera de una sola clave. Guarde junto a las semillas el descriptor de salida de la billetera y una nota que nombre un software que lea PSBT, y el plan le sobrevivirá. Nuestra guía de seguridad cubre el resto de esa configuración.

Firmar un retiro 2 de 3, paso a paso

Suponga que compra 0,4 BTC en un exchange y los retira a una bóveda controlada por tres claves, dos cualesquiera de las cuales pueden gastar.

Meses después quiere mover una parte. Una billetera de solo lectura en su computadora portátil, cargada con el descriptor de la bóveda y sin ninguna clave, construye la transacción: una entrada, una salida de pago y una salida de cambio. Una entrada SegWit nativa 2 de 3 ocupa alrededor de 105 bytes virtuales y las dos salidas, alrededor de 62 más, así que con la sobrecarga el total queda cerca de 177 bytes virtuales, y a 8 sat/vB la comisión asciende a aproximadamente 1.400 satoshis.

La computadora portátil escribe un PSBT. Usted conecta la primera billetera de hardware, que lee el archivo, muestra el destinatario, el monto y la comisión, y escribe una firma en el mapa de la entrada. Después lleva el archivo en una tarjeta microSD al segundo dispositivo, que nunca ha tocado una red, y este añade la segunda firma.

De vuelta en la computadora portátil, el combinador une los dos archivos, el finalizador ensambla las firmas en un testigo en el orden que espera el script, y el extractor produce una transacción en bruto. Solo entonces llega algo a la red. Hasta ese momento ninguna clave salió de un dispositivo, y nada de lo que usted hizo fue visible para nadie.

PSBT frente a transacción serializada

Una transacción serializada está terminada; un PSBT es un espacio de trabajo. Si difunde un PSBT, todos los nodos lo rechazan, porque no es un formato que transporte el protocolo entre pares. La diferencia también va en el otro sentido: un PSBT contiene contexto que una transacción terminada descarta, como el valor de cada entrada que se gasta y de qué clave se derivó cada dirección, y ese contexto es precisamente la información que necesita una billetera de hardware y que un bloque no necesita.

PSBT frente a descriptor de salida

Un descriptor de salida describe una billetera; un PSBT describe un gasto. El descriptor es una sola línea que nombra el tipo de script, las claves y las rutas de derivación, y no cambia de un año a otro. Los PSBT son desechables, uno por transacción. En una billetera de una sola clave, la frase semilla por sí sola lo recupera todo, pero con multisig necesita ambos: el descriptor para averiguar qué direcciones son suyas, y los PSBT para sacar cualquier cosa de ellas.

No confundir con

Preguntas frecuentes

¿Es seguro enviar un PSBT por correo electrónico o subirlo a internet?

No contiene claves privadas, así que nadie puede gastar sus monedas con él. Sí revela con qué direcciones y montos está trabajando, así que trátelo como una fuga de privacidad más que como un riesgo de robo, y prefiera una tarjeta SD o un código QR cuando eso importe.

¿Necesito saber qué es un PSBT para usar una billetera de hardware?

No. Sparrow, Electrum, Bitcoin Core y las aplicaciones de los fabricantes los crean y los finalizan por usted. Conocer el formato ayuda cuando una firma no se combina, cuando dos billeteras discrepan sobre un archivo o cuando está diseñando una configuración multisig.

¿Por qué mi billetera de hardware me pide que confirme una salida de cambio?

Porque el PSBT le indica a qué ruta de derivación pertenece cada salida, así que puede demostrar que el cambio vuelve a su propia semilla. Si el dispositivo no puede verificarlo, marca la salida como un destinatario desconocido, y usted debería detenerse y comprobarlo.

¿Qué diferencia hay entre la versión 1 y la versión 2 de PSBT?

La versión 1, definida en el BIP174, fija el conjunto de entradas y salidas en el momento de la creación. La versión 2, definida en el BIP370, permite a los participantes añadir entradas y salidas más tarde, algo que necesitan las transacciones colaborativas como los coinjoins y los payjoins.

Para seguir leyendo

Términos relacionados

Más en la sección Transacciones y comisiones

Leer esta página en inglés