MSTR Cat

Blockchain/Nivel IV · El protocolo a fondo/4.2 Actualizaciones/Lección 3

Transacciones parcialmente firmadas (PSBT)

El contenedor que permite a un desconocido verificar lo que firma un dispositivo

MaterialesUna billetera de hardware con soporte para PSBTSoftware Bitcoin Core con el comando ‘decodepsbt’ disponibleUna computadora o dispositivo aislado de la red (air-gapped)

Curiosidad

  1. ¿Por qué una transacción inacabada necesita más datos que la terminada?
  2. ¿Por qué todas las billeteras físicas necesitaban en su momento un formato propio para transacciones sin firmar?
  3. ¿Cómo puede un usuario agregar una nueva salida después de que la plantilla inicial ya se haya creado?

Explorar

  1. Una transacción en bruto estándar es un artefacto compacto y definitivo, listo para su difusión. Una Transacción de Bitcoin Parcialmente Firmada (PSBT), definida por BIP174 en 2017 por Andrew Chow, es diferente: es un contenedor que alberga una transacción incompleta junto con todos los metadatos necesarios para completarla más adelante. Existe en tres estados: completamente construida pero sin firmar, parcialmente firmada (con algunas entradas finalizadas y otras pendientes), o completamente firmada y lista para extraerla como hexadecimal en bruto. Este formato permite que un programa no confiable genere una plantilla que pueda ser verificada por un dispositivo de confianza, sin que este necesite acceso a la red.
  2. El flujo de trabajo de PSBT define seis roles: Creador (Creator), Actualizador (Updater), Firmante (Signer), Combinador (Combiner), Finalizador (Finalizer) y Extractor (Extractor) (la versión 2 añade un séptimo, Constructor). Después de que el creador construye la transacción, el actualizador adjunta las salidas anteriores que se están gastando, sus scripts y las rutas de derivación de las claves, para que el firmante pueda verificar exactamente lo que aprueba, incluidas las cantidades y la comisión. Esta inclusión explícita de metadatos hace que el archivo sea significativamente menos compacto que la serialización estándar, pero es esencial porque permite a las billeteras de hardware verificar la estructura de la transacción sin conectarse a un nodo conectado a Internet que podría estar comprometido o ejecutar software malicioso.
  3. La interoperabilidad es el principal impulsor de los PSBT. Antes de que existiera este estándar, diferentes softwares de billetera utilizaban métodos incompatibles para transferir datos entre una billetera caliente (hot wallet) y un dispositivo de almacenamiento en frío (cold storage), lo que generaba dependencia del proveedor (vendor lock-in). BIP174 resolvió esto al establecer un lenguaje universal; hoy en día, un coordinador como Sparrow puede pasar el mismo PSBT a dispositivos de firma de diferentes fabricantes, mediante USB, tarjeta SD o código QR. Eso hace práctica la multi-firma entre proveedores: cada firmante agrega su firma al archivo y ninguna clave privada abandona nunca su dispositivo.
  4. La versión 0 de PSBT tiene una limitación estructural rígida: una vez creada, la transacción global sin firmar queda fija. La versión 0 almacena una transacción completa sin firmar en un campo global, por lo que no se pueden añadir entradas ni salidas una vez que está creada. Esta rigidez significaba que, si alguien comenzaba a construir una transacción compleja de varias partes y se daba cuenta de que necesitaba una salida adicional de cambio (change), tenía que descartar todo el proceso e iniciarlo desde cero con una nueva plantilla.
  5. BIP370 introduce la versión 2 de PSBT para resolver este problema de inmutabilidad. En la versión 2, toda la información de una entrada o salida dada se consolida en ese campo específico, en lugar de estar dividida entre datos locales y globales. Los participantes pueden añadir entradas o salidas después de la creación, siempre que los banderines (flags) 'modifiable' del PSBT lo permitan. Esto agiliza el proceso colaborativo al garantizar que, si se examina una sola entrada, cada pieza de información relacionada con ella esté contenida allí mismo, simplificando la verificación para dispositivos de hardware y reduciendo el riesgo de desincronización de estado.
  6. Los usos prácticos van desde la firma con billeteras de hardware hasta transacciones colaborativas como payjoin y coinjoin, donde los participantes se pasan PSBTs de un lado a otro hasta que todos hayan firmado. Para un usuario estándar, esto significa que puede crear una transacción en su teléfono, conectar una billetera de hardware para firmarla de forma segura sin conexión y luego extraer la transacción final en bruto para su difusión; cada dispositivo ve exactamente lo que firma.

Datos clave

  • BIP174 define la Versión 0 de PSBT, que requiere un campo de transacción global sin firmar que no puede modificarse una vez creada.
  • BIP370 define la Versión 2 (PSBTv2), lo que permite agregar entradas y salidas después de su creación al consolidar los datos en campos específicos.
  • Un PSBT es intencionalmente menos compacto que la serialización estándar porque almacena metadatos significativos para su verificación por parte de los dispositivos de firma.
  • El flujo de trabajo original tiene seis roles: Creador, Actualizador, Firmante, Combinador, Finalizador y Extractor.
  • Los PSBT facilitan la interoperabilidad entre diversos softwares de billetera y dispositivos de firma de hardware.
  • Los coordinadores como Sparrow y los dispositivos de firma como Coldcard intercambian PSBT por archivo o código QR.

Ejercicio nueve, seis, tres, uno

9ReunirEnumera 9 roles o estados diferentes involucrados en el ciclo de vida de una transacción de Bitcoin, desde su creación inicial hasta su difusión final.
6AgruparAgrupa los 9 en 6 categorías según si implican agregar datos, verificar la estructura, aplicar firmas criptográficas, fusionar contribuciones, completar el formato o transmitir el resultado.
3DestilarReduce los 6 grupos a 3 funciones esenciales que cualquier sistema de gestión de transacciones debe realizar para garantizar la seguridad y la interoperabilidad.
1CristalizarEscribe una frase que explique por qué una transacción incompleta requiere más datos que una finalizada.

Verificación de hechos

Fechas, cifras y afirmaciones verificadas con las fuentes publicadas que se enumeran a continuación.

Abrir en la academia interactiva →

EN PT ZH JA KO RU DE FR MS