Glosario / Privacidad y seguridad
Payjoin
También se conoce como P2EP o Pay-to-endpoint.
- ¿Qué es un payjoin?
- Un payjoin es un pago en el que la persona que recibe las monedas añade discretamente una de sus propias entradas a su transacción, de modo que el monto que queda en la cadena ya no coincide con el monto que usted realmente pagó.
Se especifica en el BIP-78.
Ambas partes aportan entradas, lo que rompe la regla que los analistas usan para agrupar direcciones en billeteras. Nicolas Dorier lo especificó como BIP78 en mayo de 2019, y está implementado, no es teórico: BTCPay Server lanzó la compatibilidad en 2020. Para el pagador, la transacción cuesta un poco más en comisiones y parece completamente ordinaria.
Cómo funciona
El protocolo payjoin es una breve conversación que ocurre entre el momento en que usted pulsa enviar y el momento en que la transacción se difunde.
Su billetera construye el pago como un PSBT sin firmar, exactamente como lo haría para un gasto normal, y lo envía a un endpoint que el receptor anunció en la solicitud de pago. El receptor añade uno de sus propios UTXO como segunda entrada, aumenta su propia salida en ese mismo monto para seguir recibiendo el pago correcto, y devuelve el PSBT modificado. Su billetera comprueba que el destino y el monto no han cambiado, firma y difunde.
Lo que queda en la cadena tiene dos entradas que pertenecen a dos personas distintas. Un analista que aplique la regla estándar de agrupación fusionará a dos desconocidos en una sola billetera, una conclusión falsa registrada de forma permanente en su conjunto de datos. El monto del pago también desaparece: ninguna salida es igual a lo que usted pagó, porque la salida del receptor es el pago más su propia entrada aportada. Un observador ya no puede leer la factura a partir de la transacción.
BIP78 limita el costo para usted. El parámetro maxadditionalfeecontribution indica cuántos satoshis está usted dispuesto a pagar por la entrada adicional que añade el receptor, de modo que un receptor no puede inflar discretamente su comisión. Si algo sale mal, el endpoint es inaccesible, la respuesta llega malformada, los montos no cuadran, su billetera recurre a difundir la transacción original. Un payjoin fallido sigue siendo un pago completado, por lo que esto puede activarse de forma predeterminada sin romper nada.
Los receptores obtienen un segundo beneficio que no tiene nada que ver con la privacidad. Cada payjoin les permite incorporar una de sus propias monedas a una transacción que otra persona paga en gran parte, lo cual es una limpieza gratuita frente a una billetera llena de salidas pequeñas.
Dónde aparece
Payjoin vive del lado del comerciante, por lo que la mayoría de las personas lo encuentran sin darse cuenta.
BTCPay Server fue la primera implementación en producción y ofrece payjoin en las facturas, por lo que las páginas de donación y los procesos de pago autoalojados son donde más aparece. Wasabi y Sparrow pueden enviar a un endpoint de payjoin desde el escritorio.
La debilidad del diseño original era que el receptor tenía que ejecutar un servidor público y estar en línea en el momento del pago, lo que lo limitaba a los comerciantes. BIP77, "Async Payjoin", de Dan Gould y Yuval Kogman, creado en agosto de 2023 y aún en borrador, sustituye el endpoint directo por un directorio de almacenamiento y reenvío al que se accede mediante Oblivious HTTP, de modo que dos billeteras de teléfono pueden completar un payjoin sin que ninguna de las dos esté en línea al mismo tiempo. Bull Bitcoin y Cake Wallet han lanzado esa versión en aplicaciones móviles, lo que supone la primera vez que payjoin está disponible para pagos comunes entre personas.
El argumento más fuerte para usarlo es uno que usted nunca ve personalmente. Cada payjoin en el conjunto de datos hace que la regla de propiedad común de las entradas sea menos fiable para todos, incluidas las personas que nunca han hecho uno. Las técnicas de privacidad que solo ayudan a quien las usa son escasas; esta degrada la vigilancia de toda la red con cada transacción.