Visión general
PayJoin es una técnica de privacidad que socava uno de los supuestos más fundamentales utilizados en el análisis de blockchain: que todas las entradas en una transacción pertenecen a la misma entidad. En una transacción PayJoin, tanto el remitente como el destinatario contribuyen al menos una entrada, haciendo imposible determinar el monto real del pago solo a partir de la estructura de la transacción.
Cómo funciona PayJoin
En un pago Bitcoin estándar, solo el remitente proporciona entradas. En un PayJoin, el destinatario también añade uno de sus propios UTXOs como entrada:
Pago Estándar: Pago PayJoin:
┌─────────────────────┐ ┌─────────────────────┐
│ Entradas (todas │ │ Entradas: │
│ de Alice): │ │ UTXO Alice: 0,5 BTC│
│ UTXO Alice: 0,5 BTC│ │ UTXO Bob: 0,3 BTC│
│ │ ├─────────────────────┤
├─────────────────────┤ │ Salidas: │
│ Salidas: │ │ Bob: 0,5 BTC │
│ Bob: 0,2 BTC │ │ Alice: 0,3 BTC │
│ Alice: 0,3 BTC │ │ (cambio) │
│ (cambio) │ └─────────────────────┘
└─────────────────────┘
El analista ve:
El analista ve: Dos entradas, no está claro
"Alice pagó a Bob 0,2 BTC" quién pagó a quién o cuánto
La transacción PayJoin anterior podría ser un pago en cualquier dirección, un CoinJoin o una auto-transferencia. El monto real del pago (0,2 BTC) queda oscurecido.
Flujo del protocolo
- Alice crea una transacción estándar pagando a Bob
- Alice envía el PSBT a Bob a través de un endpoint HTTP (BIP78) o el relay Payjoin V2
- Bob añade sus propias entradas y ajusta las salidas
- Bob envía el PSBT modificado de vuelta a Alice
- Alice verifica los cambios, firma y difunde
Ventajas sobre CoinJoin
- No necesita coordinador — PayJoin ocurre directamente entre remitente y receptor
- Sin comisiones extra — La transacción es el pago mismo, no un paso de mezcla adicional
- Indistinguible — Las transacciones PayJoin parecen pagos ordinarios, a diferencia de CoinJoin que tiene patrones de salidas iguales identificables
- Rompe heurísticas a escala — Incluso un pequeño porcentaje de adopción de PayJoin envenena los supuestos del análisis de cadena para todas las transacciones
Payjoin V2
El PayJoin original BIP78 requería que el destinatario ejecutara un servidor públicamente accesible. Payjoin V2 elimina este requisito usando un relay no confiable, habilitando PayJoin asíncrono donde el destinatario no necesita estar en línea en el momento exacto del pago. Esto reduce drásticamente la barrera de adopción.
Concepto erróneo común
PayJoin no requiere salidas de igual valor como un CoinJoin. Funciona con cualquier monto de pago, haciéndolo práctico para el comercio cotidiano. El beneficio de privacidad proviene de la ambigüedad en la propiedad de las entradas, no de la uniformidad de las salidas.