Glossário / Privacidade e segurança
Payjoin
Outros nomes: P2EP, Pay-to-endpoint.
- O que é o payjoin?
- Payjoin é um pagamento em que a pessoa que recebe os bitcoins acrescenta discretamente uma de suas próprias entradas à sua transação, de modo que o valor on-chain não corresponde mais ao valor que você realmente pagou.
Especificação no BIP-78.
Os dois lados contribuem com entradas, o que quebra a regra que os analistas usam para agrupar endereços em carteiras. Nicolas Dorier especificou isso como BIP78 em maio de 2019, e está implantado, não é teórico: o BTCPay Server lançou o suporte em 2020. Para quem paga, a transação custa um pouco mais em taxas e parece completamente comum.
Como funciona
O protocolo payjoin é uma conversa curta que acontece entre o momento em que você toca em enviar e o momento em que a transação é transmitida.
Sua carteira monta o pagamento como um PSBT não assinado, exatamente como faria em um gasto normal, e o envia a um endpoint que o recebedor anunciou na solicitação de pagamento. O recebedor acrescenta uma de suas próprias saídas não gastas como segunda entrada, aumenta sua própria saída nesse mesmo valor para continuar recebendo o pagamento correto e devolve o PSBT modificado. Sua carteira verifica que o destino e o valor não mudaram, assina e transmite.
O que chega à blockchain tem duas entradas pertencentes a duas pessoas diferentes. Um analista que aplique a regra padrão de agrupamento vai unir dois desconhecidos em uma só carteira, uma conclusão falsa registrada de forma permanente em seu conjunto de dados. O valor do pagamento também desaparece: nenhuma saída é igual ao que você pagou, porque a saída do recebedor é o pagamento mais a entrada que ele mesmo contribuiu. Um observador não consegue mais ler a fatura a partir da transação.
O BIP78 limita o custo para você. O parâmetro maxadditionalfeecontribution indica quantos satoshis você está disposto a pagar pela entrada extra que o recebedor acrescenta, de modo que um recebedor não pode inflar sua taxa sem que você saiba. Se algo der errado, o endpoint está inacessível, a resposta está malformada, os valores não conferem, sua carteira recorre a transmitir a transação original. Um payjoin que falha continua sendo um pagamento concluído, e é por isso que ele pode ser ativado por padrão sem quebrar nada.
Os recebedores ganham um segundo benefício que nada tem a ver com privacidade. Cada payjoin permite que eles incorporem um de seus próprios bitcoins a uma transação que outra pessoa paga em grande parte, o que é uma arrumação gratuita diante de uma carteira cheia de saídas pequenas.
Onde você encontra isso
O payjoin vive do lado do comerciante, então a maioria das pessoas o encontra sem perceber.
O BTCPay Server foi a primeira implementação em produção e oferece payjoin nas faturas, e é por isso que páginas de doação e checkouts auto-hospedados são onde ele mais aparece. A Wasabi e a Sparrow podem enviar para um endpoint de payjoin a partir do desktop.
A fraqueza do projeto original era que o recebedor tinha que rodar um servidor público e estar online no momento do pagamento, o que o limitava a comerciantes. O BIP77, "Async Payjoin", de Dan Gould e Yuval Kogman, criado em agosto de 2023 e ainda em rascunho, substitui o endpoint direto por um diretório de armazenamento e encaminhamento acessado por Oblivious HTTP, de modo que duas carteiras de celular podem concluir um payjoin sem que nenhuma das duas esteja online ao mesmo tempo. A Bull Bitcoin e a Cake Wallet lançaram essa versão em aplicativos móveis, o que marca a primeira vez que o payjoin fica disponível para pagamentos comuns entre pessoas.
O argumento mais forte para usá-lo é um que você nunca vê pessoalmente. Cada payjoin no conjunto de dados torna a regra de propriedade comum das entradas menos confiável para todos, incluindo pessoas que nunca fizeram um. Técnicas de privacidade que ajudam apenas quem as usa são raras; esta degrada a vigilância de toda a rede a cada transação.