La noticia de este mes es que una empresa de bitcoin llamada Bull Bitcoin agregó soporte para Payjoin a su billetera, pero con dos características nuevas: funciona de manera asíncrona y sin requerir que los usuarios ejecuten un servidor. Me gustaría aprovechar esta oportunidad para explicar qué es Payjoin y qué agregan estas nuevas características.
Un Payjoin es un tipo de transacción en bitcoin que oculta parcialmente dos piezas de datos sobre una transacción: el remitente y la cantidad. Cada transacción de bitcoin tiene dos campos: entradas y salidas. Las entradas de una transacción son básicamente las direcciones que envían dinero en esa transacción y las salidas son básicamente las direcciones que reciben dinero. Entonces, una transacción podría parecerse a esto: [ Entradas: Dirección A (20k sats), Dirección B (15k sats) | Salidas: Dirección X (32k sats), Dirección Y (3k sats) ] |
Normalmente, el “remitente” construye la transacción por sí solo enumerando sus propias direcciones como entradas y enumerando la dirección del destinatario como salida, y usualmente también crea una salida “de cambio” para sí mismo (porque usualmente queda algo de dinero sobrante de sus entradas, llamado “cambio”, y la mayoría de las personas envían el cambio a una nueva dirección bajo su control). En el ejemplo anterior, las direcciones A y B pertenecen al remitente, la dirección X pertenece al destinatario, y la dirección Y pertenece al remitente – recibe su cambio.
En un Payjoin, cambiamos un poco esto. El remitente construye una transacción con ayuda del destinatario. Ambos enumeran al menos una dirección como entrada y firman la transacción. Entonces, una transacción Payjoin podría parecerse a esto: [ Entradas: Dirección A (20k sats), Dirección B (15k sats), Dirección C (8k sats) | Salidas: Dirección X (40k sats), Dirección Y (3k sats) ] |
En el ejemplo anterior, las direcciones A y B todavía pertenecen al remitente (al igual que en el ejemplo anterior), pero la dirección C pertenece al destinatario – él está enviándose algo de dinero a sí mismo. En las salidas, la dirección X todavía pertenece al destinatario, y parece que él está recibiendo 40k sats, pero en realidad solo está recibiendo 32k sats porque 8k sats de las entradas ya le pertenecían. Y al igual que en el ejemplo anterior, el “verdadero” remitente todavía recibe 3k sats en cambio.
Al mirar una transacción Payjoin en la blockchain, no está claro qué entradas pertenecen al remitente y qué entradas pertenecen al destinatario. Como resultado, no está claro quién es el verdadero remitente. Y también es difícil determinar cuánto recibió el destinatario – en el ejemplo anterior, él podría haber recibido cualquiera de estas cantidades: 40k sats, 32k sats, 35k sats, 20k sats, 17k sats, 12k sats, 8k sats, 5k sats o 3k sats. Entonces los Payjoins ayudan a ocultar la cantidad enviada.
Antes de la última actualización del carretera Bull Bitcoin, las carreteras que apoyaron Payjoin requerían dos cosas: (1) El usuario tenía que ejecutar un servidor anunciando su disponibilidad para realizar transacciones Payjoin; (2) si alguien aceptaba hacerlo, ambas partes tenían que permanecer conectados durante unos segundos mientras sus monederos se comunicaban entre sí para preparar una transacción.
Pero Bull Bitcoin encontró forma hacer Payjoins “asíncronos” - lo significa puede publicar mensaje texto algún lugar diciendo quieres realizar un pay join luego ir desconectado. Alguién puede venir mientras estás desconectado acepta hacer Payjoin contigo contribuye una entrada a tu transaction y también agrega una salida para recibir dinero. Luego firma la transaction y ellos pueden ir desconectados. La próxima vez tú vengas conectado, puedes verificar si alguien aceptó hacer un Payjoin contigo. Si lo hicieron, puedes finalizar tu Payjoin, cofirmando la transaction ya luego puedes transmitirla.
Gracias este método asíncrono significa usuarios no tienen que correr servidor. Bull Bitcoin puede hostearlo para ellos. Cada usuario solo publica mensajes diciendo “Quiero realizar un Payjoin” (y revelando que entradas quieres realizar el Payoin) o diciendo “Acepto hacer unb Payjoin” (y agregando al menos una entrada también agrega una o más salidas a la transaccion).