Visão geral
PayJoin é uma técnica de privacidade que mina um dos pressupostos mais fundamentais usados na análise de blockchain: que todas as entradas em uma transação pertencem à mesma entidade. Em uma transação PayJoin, tanto o remetente quanto o destinatário contribuem com pelo menos uma entrada, tornando impossível determinar o valor real do pagamento apenas a partir da estrutura da transação.
Como o PayJoin funciona
Em um pagamento Bitcoin padrão, apenas o remetente fornece entradas. No PayJoin, o destinatário também adiciona um de seus próprios UTXOs como entrada:
Pagamento Padrão: Pagamento PayJoin:
┌─────────────────────┐ ┌─────────────────────┐
│ Entradas (todas de │ │ Entradas: │
│ Alice): │ │ UTXO Alice: 0,5 BTC│
│ UTXO Alice: 0,5 BTC│ │ UTXO Bob: 0,3 BTC│
│ │ ├─────────────────────┤
├─────────────────────┤ │ Saídas: │
│ Saídas: │ │ Bob: 0,5 BTC │
│ Bob: 0,2 BTC │ │ Alice: 0,3 BTC │
│ Alice: 0,3 BTC │ │ (troco) │
│ (troco) │ └─────────────────────┘
└─────────────────────┘
O analista vê:
O analista vê: Duas entradas, não está claro
"Alice pagou Bob 0,2 BTC" quem pagou quem ou quanto
A transação PayJoin acima parece que poderia ser um pagamento em qualquer direção, um CoinJoin ou uma auto-transferência. O valor real do pagamento (0,2 BTC) fica obscurecido.
Fluxo do protocolo
- Alice cria uma transação padrão pagando Bob
- Alice envia o PSBT para Bob via endpoint HTTP (BIP78) ou relay Payjoin V2
- Bob adiciona suas próprias entradas e ajusta as saídas
- Bob envia o PSBT modificado de volta para Alice
- Alice verifica as alterações, assina e transmite
Vantagens sobre o CoinJoin
- Sem coordenador necessário — PayJoin acontece diretamente entre remetente e destinatário
- Sem taxas extras — A transação é o próprio pagamento, não uma etapa adicional de mistura
- Indistinguível — Transações PayJoin parecem pagamentos comuns, ao contrário do CoinJoin que tem padrões de saídas iguais identificáveis
- Quebra heurísticas em escala — Mesmo uma pequena porcentagem de adoção do PayJoin contamina os pressupostos da análise de cadeia para todas as transações
Payjoin V2
O PayJoin original BIP78 exigia que o destinatário executasse um servidor publicamente acessível. O Payjoin V2 remove esse requisito usando um relay não confiável, habilitando PayJoin assíncrono onde o destinatário não precisa estar online no momento exato do pagamento. Isso reduz drasticamente a barreira para adoção.
Conceito errôneo comum
O PayJoin não requer saídas de igual valor como um CoinJoin. Funciona com qualquer valor de pagamento, tornando-o prático para o comércio cotidiano. O benefício de privacidade vem da ambiguidade na propriedade das entradas, não da uniformidade das saídas.