PayJoin: un pago que engaña al análisis

Cuando el receptor también añade una moneda, un pago normal rompe la heurística más usada.

La asunción más usada en el análisis de cadena es que todas las entradas de una transacción pertenecen al pagador. PayJoin la rompe con un truco sencillo: el receptor añade una de sus propias monedas como entrada.

Cómo funciona (BIP78)

  • El pagador crea una transacción firmada normal (un psbt) y la envía al endpoint del receptor.
  • El receptor añade una entrada propia y aumenta su salida en la misma cantidad.
  • El pagador comprueba que no paga más de lo previsto, luego firma y difunde.

On-chain parece un pago ordinario. Pero las entradas vienen de dos personas, y los importes ya no revelan el pago real.

Por qué ayuda a todos

BIP78 señala que payjoin puede invalidar las heurísticas de common-input, change-script-type y round-amount. Como los payjoins parecen transacciones normales, el mero hecho de que existan hace esas heurísticas menos fiables para todos, incluidos quienes nunca usan payjoin.

Estado

  • BIP78 tiene estado «Deployed» y lo admiten algunas billeteras y servidores de pago (como BTCPay Server).
  • BIP77 (Async Payjoin, estado Draft) elimina la necesidad de que el receptor ejecute un servidor en línea en el momento del pago.

Límite: ambos lados deben usar billeteras que lo admitan.