O Bitcoin é frequentemente chamado de dinheiro digital, mas essa comparação é discutível. Se Alice paga US$ 10 em dinheiro vivo para Bob, Bob não sabe de onde veio aquela nota. Se Bob depois entrega o dinheiro para Carol, Carol não tem como deduzir que aquele dinheiro estava antes com Alice.
O Bitcoin é diferente por causa da sua natureza aberta. O histórico de uma determinada moeda (ou seja, de uma saída de transação não gasta, a UTXO) pode ser consultado por qualquer pessoa com facilidade. O processo lembra mais anotar o valor da operação e o nome de quem recebeu em uma nota fiscal a cada vez que um bitcoin é usado.
A ausência de nomes nos endereços públicos, porém, dificulta revelar a identidade dos usuários. Ainda assim, o Bitcoin não é totalmente privado. A análise de blockchain fica cada vez mais sofisticada e consegue ligar endereços a identidades com sucesso crescente. Além das técnicas de monitoramento, uma equipe dedicada especificamente a isso também pode expor quem está por trás das transações. Para evitar esse tipo de exposição, surgiram ao longo dos anos técnicas para quebrar as conexões entre operações.
O que é mistura de moedas (coin mixing)?
De forma geral, a mistura de moedas descreve operações feitas para ocultar recursos trocando-os por outros. No mundo cripto, porém, o termo costuma se referir a serviços oferecidos por terceiros. O prestador de serviço recebe as moedas do usuário (e uma pequena taxa) e devolve outras moedas, sem nenhuma ligação com as que foram enviadas. Esses serviços também são conhecidos como tumblers ou mixers.
Claro que existem dúvidas sobre a segurança e a privacidade desses serviços centralizados. Não há garantia de que o mixer vai devolver os recursos ao usuário nem de que as moedas recebidas de volta não carregam um histórico de transações problemático. Outro ponto a considerar ao usar um mixer é que IPs e endereços de Bitcoin podem ser registrados por terceiros. No fim das contas, o usuário confia seus recursos a outra pessoa na esperança de receber moedas sem rastro.
Uma abordagem mais interessante são as transações CoinJoin, que criam um grau considerável de negação plausível. Ou seja: depois de uma transação CoinJoin, não é possível produzir prova que estabeleça de forma definitiva a ligação entre o usuário e as operações anteriores dele. Muitas soluções de CoinJoin oferecem uma alternativa mais descentralizada aos mixers. O usuário não precisa abrir mão da custódia dos seus fundos, embora um coordenador possa participar do processo.
O que é o CoinJoin?
As transações CoinJoin foram apresentadas pela primeira vez pelo desenvolvedor de Bitcoin Gregory Maxwell, em 2013. No seu texto, ele explicou brevemente como essas operações são estruturadas e como é possível obter um enorme ganho de privacidade sem precisar mudar o protocolo.
Na essência, o CoinJoin consiste em reunir entradas de usuários diferentes dentro de uma única transação. Antes de explicar como (e por que) isso é feito, vale falar da estrutura básica de uma transação.
As transações de Bitcoin são compostas por entradas e saídas. Quando o usuário quer movimentar seus fundos, ele usa suas UTXOs como entradas, define as saídas e assina as entradas. É importante notar que cada entrada é assinada de forma independente, e que o usuário pode criar várias saídas (envios para endereços diferentes).

Ao analisar uma transação formada por quatro entradas (de 0,2 BTC cada) e duas saídas (0,7 BTC e 0,09 BTC), podemos levantar algumas hipóteses. A primeira é que houve um pagamento: o remetente manda uma das saídas para outra pessoa e o troco para si mesmo. Como ele usou quatro entradas, a saída maior provavelmente vai para quem recebe. E, se estão faltando 0,01 BTC na conta, esse é o valor da taxa paga ao minerador.
Também é possível que o remetente queira criar uma UTXO grande a partir de UTXOs menores e, por isso, tenha juntado as entradas menores para chegar aos 0,7 BTC desejados.
Outra hipótese que podemos levantar se apoia no fato de que cada entrada é assinada de forma independente. A transação pode ter sido executada de modo que as entradas fossem assinadas por quatro partes diferentes. É justamente esse princípio que faz o CoinJoin funcionar.
Como funciona o CoinJoin?
A ideia central é que várias partes se coordenem para montar uma transação, informando suas entradas e as saídas que desejam. Quando todas as entradas são combinadas, não é possível afirmar com certeza qual saída pertence a qual usuário. Veja o processo no diagrama abaixo:

Aqui temos quatro usuários que querem romper o vínculo entre suas operações. Eles se coordenam entre si (ou por meio de um coordenador) para comunicar as entradas e saídas que querem incluir.
O coordenador reúne todas as informações, monta uma transação com elas e pede que cada participante a assine antes de transmiti-la à rede. Depois que os usuários assinam, fica impossível alterar essa transação sem invalidá-la. Assim, elimina-se o risco de o coordenador roubar os fundos.
A transação funciona como uma caixa-preta que mistura as moedas. As UTXOs antigas precisam ser destruídas para que novas sejam criadas. O único elo entre as antigas e as novas é a própria transação, mas a essa altura não dá para separar os participantes uns dos outros. Na melhor das hipóteses, é possível dizer que uma das entradas foi colocada por um participante e que esse participante talvez seja o novo dono de uma das saídas.
Mas nem isso é garantia. Dá para concluir, a partir da transação acima, que existem quatro participantes? Será que é uma única pessoa enviando fundos para quatro endereços próprios? Duas pessoas fazendo duas compras diferentes e devolvendo 0,2 BTC para o endereço delas? Quatro pessoas mandando recursos para outras pessoas ou para elas mesmas? Não temos como dar respostas precisas para essas perguntas.
Privacidade pela negação plausível
O simples fato de existirem aplicativos de CoinJoin já é suficiente para colocar em dúvida os métodos usados para analisar transações. Você pode até concluir que o CoinJoin foi usado em muitas operações, mas ainda assim não consegue saber de quem são as saídas. Conforme esses aplicativos ganharam popularidade, a suposição de que todas as entradas pertencem ao mesmo usuário foi enfraquecendo — um passo importante rumo à privacidade em todo o ecossistema.
No exemplo anterior, a transação tem um conjunto de anonimato de 4, então o dono da saída pode ser qualquer um dos quatro usuários envolvidos. Quanto maior esse conjunto, mais difícil fica ligar a transação ao seu dono original. Felizmente, graças às implementações mais recentes de CoinJoin, o usuário consegue combinar sua entrada com dezenas de outras pessoas sem precisar confiar em ninguém, garantindo um alto grau de negação plausível. Não faz muito tempo, uma transação com 100 pessoas foi realizada com sucesso.
Considerações finais
As ferramentas de mistura de moedas são recursos importantes ao alcance de qualquer usuário preocupado com privacidade. Diferentemente de outras melhorias voltadas à privacidade (como as Transações Confidenciais), é possível aproveitá-las mantendo o protocolo do jeito que ele está hoje.
Para quem confia na idoneidade e nos métodos de terceiros, os serviços de mistura são uma solução fácil. Para quem prefere alternativas verificáveis e sem custódia, o CoinJoin é superior. Essas operações podem ser feitas manualmente por usuários com conhecimento técnico ou com ferramentas de software que dispensam lidar com os mecanismos mais complexos. Várias ferramentas desse tipo já existem, e a popularidade delas cresce à medida que os usuários buscam mais privacidade.
