Inicio Privacidad y Seguridad PayJoin: transacciones colaborativas

PayJoin: transacciones colaborativas

PayJoin rompe la heurística de propiedad común combinando inputs de pagador y receptor en una misma transacción, sin requerir coordinadores externos y sin distinguirse visualmente de una transacción ordinaria.

La heurística que PayJoin ataca

El análisis de blockchain se apoya en una suposición casi universal: todos los inputs de una transacción pertenecen al mismo propietario. Esta "heurística de propiedad común" permite a las empresas de vigilancia agrupar direcciones y reconstruir billeteras enteras. PayJoin la invalida de raíz introduciendo inputs del receptor en la misma transacción.

Cómo funciona técnicamente

Imagina que Alice quiere pagar 0,01 BTC a Bob. En un flujo PayJoin, el proceso es el siguiente. Alice construye una transacción provisional con sus propios inputs y se la envía a Bob en forma de PSBT (Partially Signed Bitcoin Transaction). Bob añade uno de sus propios UTXO como input adicional, ajusta los outputs para que él reciba lo acordado más su propio UTXO de vuelta (consolidándolo), y devuelve el PSBT modificado a Alice. Alice verifica que el pago es correcto, firma su parte, y Bob firma la suya. La transacción resultante tiene inputs de ambas partes.

Un observador externo que analice esa transacción verá, por ejemplo, dos inputs de 0,008 BTC y 0,005 BTC y dos outputs de 0,01 BTC y 0,003 BTC. No puede determinar quién pagó a quién ni cuánto, porque la heurística de propiedad común ya no aplica. La transacción es indistinguible de una consolidación normal.

Diferencia clave con CoinJoin

CoinJoin requiere coordinar varios participantes que no se conocen entre sí, lo que implica un coordinador (central o distribuido) y transacciones con una firma estructural reconocible. PayJoin solo necesita dos partes: pagador y receptor. No hay coordinador que pueda ser presionado regulatoriamente, y la transacción no tiene ninguna característica que la distinga de una transacción estándar. Esta discreción es su mayor ventaja.

Implementaciones actuales

BIP-78 es el estándar de interoperabilidad para PayJoin. Sparrow Wallet lo implementa tanto en el lado del pagador como del receptor: si configuras Sparrow como servidor de pago, cualquier billetera compatible con BIP-78 puede pagarte usando PayJoin automáticamente. BTCPay Server fue el primer sistema en implementarlo y lo activa por defecto en sus puntos de venta, lo que significa que muchos comercios que usan BTCPay ya están haciendo PayJoin sin que el cliente lo sepa.

La limitación principal: el receptor debe estar online

A diferencia de una transacción normal, donde el pagador actúa de forma unilateral, PayJoin requiere que el receptor esté disponible en el momento del pago para firmar su parte del PSBT. Esto lo hace inviable para pagos a billeteras frías o a usuarios que no tienen un servidor siempre activo. Es un protocolo pensado para comercios o usuarios avanzados con infraestructura propia.

PayJoin v2: BIP-77 y pagos asíncronos

BIP-77 (PayJoin v2) resuelve el problema de la sincronía introduciendo un servidor de retransmisión cifrado de extremo a extremo. El receptor puede dejar su PSBT firmado en el servidor, y el pagador lo recoge cuando quiere, sin que ambas partes estén conectadas simultáneamente. El servidor de retransmisión nunca ve el contenido del PSBT porque está cifrado. Esto acerca PayJoin a la usabilidad de una transacción normal mientras mantiene sus ventajas de privacidad. A principios de 2025, BIP-77 está en fase de implementación en Sparrow y otros clientes.

¿Cuándo usar PayJoin?

PayJoin es especialmente valioso para comercios: cada venta mejora la privacidad del receptor sin coste adicional y sin que el cliente necesite hacer nada diferente. Para usuarios individuales, es más útil en pagos entre partes que ya tienen billeteras compatibles. No es un sustituto de CoinJoin para mejorar la privacidad de UTXO existentes, sino una herramienta para preservar la privacidad en el momento del pago.

Errores habituales

  • Creer que PayJoin es igual a CoinJoin: PayJoin mezcla inputs de pagador y receptor en un pago real; CoinJoin junta inputs de múltiples participantes sin relación de pago entre ellos.
  • Asumir que cualquier transacción con múltiples inputs es un PayJoin: la mayoría de transacciones con varios inputs son simplemente consolidaciones normales. PayJoin es uno de muchos patrones posibles.
  • Pensar que PayJoin funciona con cualquier billetera receptor sin configuración: el receptor necesita tener activo un endpoint BIP-78 o BIP-77 para que el protocolo pueda ejecutarse.

Conceptos relacionados

Fuentes primarias

  • BIP-78: https://github.com/bitcoin/bips/blob/master/bip-0078.mediawiki
  • BIP-77 (PayJoin v2): https://github.com/bitcoin/bips/blob/master/bip-0077.mediawiki
  • Sparrow Wallet PayJoin documentation: https://sparrowwallet.com/docs/payjoin.html
  • BTCPay Server PayJoin: https://docs.btcpayserver.org/Payjoin/