A premissa mais usada na análise de cadeia é que todas as entradas de uma transação pertencem ao pagador. PayJoin a quebra com um truque simples: o receptor adiciona uma das próprias moedas como entrada.
Como funciona (BIP78)
- O pagador cria uma transação assinada normal (um psbt) e a envia ao endpoint do receptor.
- O receptor adiciona uma entrada própria e aumenta a saída pelo mesmo valor.
- O pagador checa que não está pagando mais do que o pretendido, depois assina e transmite.
On-chain parece um pagamento comum. Mas as entradas vêm de duas pessoas, e os valores já não revelam o pagamento real.
Por que ajuda a todos
BIP78 observa que payjoin pode invalidar as heurísticas de common-input, change-script-type e round-amount. Como payjoins parecem transações normais, o mero fato de existirem torna essas heurísticas menos confiáveis para todos, inclusive quem nunca usa payjoin.
Status
- BIP78 tem status «Deployed» e é suportado por algumas carteiras e servidores de pagamento (como BTCPay Server).
- BIP77 (Async Payjoin, status Draft) remove a necessidade de o receptor rodar um servidor online no momento do pagamento.
Limite: ambos os lados devem usar carteiras que o suportem.