CoinJoin é uma forma de reunir fundos de várias pessoas em uma transação Bitcoin, mantendo cada uma no controle das próprias chaves e do que assina. A transação cria novas saídas para os participantes ou seus destinatários. Um observador pode ter mais dificuldade para associar cada saída ao proprietário original. O resultado depende da estrutura da transação, do protocolo e das outras informações disponíveis ao observador.
Anna paga por um serviço e não quer que o destinatário consiga rastrear facilmente seus outros fundos. Mas o Bitcoin não tem um extrato bancário privado: o histórico das transações é público. Uma transação gasta saídas anteriores ainda não gastas, chamadas UTXOs, e cria novas. Uma saída registra uma quantia e as condições para gastá-la. Quando um pagamento comum usa várias dessas saídas, um analista costuma supor que uma só pessoa as controla. É uma suposição útil, uma heurística, não uma prova. O CoinJoin quebra essa premissa ao reunir diferentes proprietários em uma transação. Não reescreve o passado; altera o grau de certeza com que se podem deduzir relações a partir dos registros públicos. [1]
Em um exemplo simplificado, Anna e Pavel têm uma saída de 100 500 sat cada. Sat é a abreviação de satoshi, a menor unidade do bitcoin. Eles organizam uma transação que entrega a cada um uma nova saída de 100 000 sat. Os 1 000 sat restantes são a taxa de rede total, dividida entre ambos. O exemplo não inclui outras taxas de serviço. A proposta é preparada por um coordenador ou pelas carteiras que se comunicam entre si. Uma assinatura digital é uma autorização verificável criada com uma chave privada, o dado secreto que permite assinar. A chave em si não é revelada. Antes de assinar suas entradas, cada pessoa verifica o endereço da própria saída, o valor, as taxas e todas as condições. O coordenador, por si só, não tem as chaves nem autorização para gastar fundos alheios. Se faltar uma assinatura exigida, essa transação não poderá ser concluída validamente. A proteção depende de software correto e da conferência da proposta: assinar um envio para o endereço de um golpista anularia essa proteção. [1] [5]
No exemplo, quem consulta apenas a blockchain vê duas novas saídas com o mesmo valor. O valor sozinho não identifica qual é de Anna e qual é de Pavel. Isso não significa automaticamente chances de meio a meio nem anonimato garantido: o observador pode conhecer um endereço ou ter outra pista. Em transações reais, troco reconhecível, valores diferentes, tipos de saída e horários podem ajudar a identificar vínculos. O conjunto de anonimato corresponde aos candidatos que o observador não consegue distinguir, não simplesmente ao número de inscritos em uma rodada. A pontuação da carteira é uma estimativa baseada em um modelo específico, não uma promessa sobre o que todo observador sabe a seu respeito. [1] [4]
Poder roubar dinheiro e poder descobrir informações são capacidades diferentes. Um coordenador simples pode conhecer a relação entre entradas e saídas; outros protocolos escondem essas relações com técnicas criptográficas. Informações de rede, como endereços IP e horários de conexão, também importam. Outro risco é um Sybil Attack: um adversário se apresenta como vários participantes, conhece as próprias saídas e reduz a incerteza sobre as restantes. Um participante também pode se recusar a assinar e interromper toda a rodada. Por isso, importam as regras concretas de participação e as defesas contra sobrecarga ou sabotagem, conhecidas como DoS. Um grande número de entradas, por si só, não resolve essas questões. [1] [4]
Mais tarde, Anna junta sua nova saída a fundos retirados de uma corretora que conhece sua identidade. Isso pode dar ao observador uma ligação nova justamente onde ela tentou criar incerteza. Reutilizar endereços ou reunir várias saídas em uma, processo chamado consolidação, pode ter efeito semelhante. Coin Control permite escolher quais UTXOs a carteira vai gastar, ajudando a separar fundos de contextos diferentes. Não é um botão de privacidade absoluta. O destinatário pode conhecer quem paga, e um serviço pode manter seus próprios registros. Portanto, a privacidade continua exigindo atenção depois de uma rodada bem-sucedida; ela não depende apenas do formato de uma transação. [5]
Comece definindo quais informações quer proteger e de quem. Um destinatário curioso, o coordenador e um observador da rede não têm as mesmas capacidades. Depois confira quem guarda as chaves, o que o aplicativo assina, quais taxas cobra e como trata as saídas resultantes. Um serviço ao qual você entrega fundos para custódia exige uma confiança diferente da de um CoinJoin não custodial. CoinJoin não acrescenta uma regra especial ao Bitcoin: os nós verificam uma transação comum e suas condições. Um nó é um computador com software que verifica transações e blocos do Bitcoin. CoinJoin não remove os registros de uma corretora ou de um destinatário, nem promete como determinado serviço tratará um pagamento. Entender esses limites ajuda mais quem está começando do que um rótulo de “anônimo” no aplicativo. [1] [5]
Gregory Maxwell explicou o CoinJoin publicamente em agosto de 2013. A ideia não exigia mudar as regras da rede, mas as pessoas ainda precisavam se encontrar e cooperar. O JoinMarket demonstrou uma abordagem de mercado: quem organiza a transação conjunta paga a outros para disponibilizarem fundos para participar. Protocolos coordenados organizam isso de outra maneira. O WabiSabi, por exemplo, admite valores variados e credenciais anônimas que permitem comprovar o direito a saídas sem revelar diretamente sua ligação com as entradas. Portanto, CoinJoin não é sinônimo de um único aplicativo, e nem toda variante exige apenas saídas iguais. [1] [2] [4]
A publicação de Maxwell explica a ideia básica, a documentação de uma carteira descreve seu funcionamento e o artigo sobre WabiSabi apresenta propriedades do protocolo. São camadas diferentes de informação. Na data desta revisão, o repositório original do cliente e servidor JoinMarket está arquivado; aqui serve como material histórico e técnico, não como recomendação de instalação. PayJoin, definido no BIP 78, é uma cooperação relacionada entre pagador e destinatário, na qual ambos contribuem com entradas. Em geral, não busca formar um grande grupo de saídas iguais. Ao comparar soluções, pergunte quem coopera, o que pode descobrir e o que a pessoa e sua carteira realmente verificam antes de assinar, em vez de se guiar apenas pela palavra “privacidade”. [1] [2] [3] [4] [5] [6]
Uma transação conjunta não significa que tudo pertence a uma pessoa
Alice e Bob controlam cada um uma entrada diferente de uma transação conjunta e recebem suas próprias saídas. A suposição de que todas as entradas pertencem a uma pessoa é falsa neste caso. Juntar entradas não garante ocultar a atribuição das saídas; valores, outros dados e gastos posteriores podem revelar vínculos.
Para ter uma visão mais completa, leia este verbete junto com Bitcoin, Privacidade no Bitcoin, Pseudonimidade, Carteira, UTXO, Transação. Também há referências a este verbete em Change Address, Privacidade no Bitcoin, Pseudonimidade, KYC.
01Um coordenador CoinJoin pode roubar fundos das entradas?+
Em um CoinJoin não custodial bem projetado, os participantes mantêm suas próprias chaves. Antes de assinar, verificam a transação inteira, principalmente suas saídas, os valores e as taxas. Sem as assinaturas necessárias, o coordenador não cria um gasto válido, mas pode perturbar uma rodada ou recusar participação. Mas, se um participante assina uma transação que envia seu dinheiro a um golpista, ele próprio está autorizando esse pagamento.
02As saídas ficam anônimas para sempre após CoinJoin?+
Não. O histórico continua público. Reutilização de endereços, consolidação, pagamentos a contrapartes conhecidas, comportamento reconhecível da carteira e metadados de rede podem reduzir ou eliminar a ambiguidade. O resultado depende do protocolo e do tratamento posterior das saídas.