Introdução
O que é coin mixing?
Obviamente, a segurança e o anonimato desses serviços centralizados são questionáveis. Os usuários não têm garantia de que seu dinheiro será devolvido pelo mixer ou de que as moedas devolvidas não estão "comprometidas" de alguma forma. Um aspecto adicional a se considerar ao usar um mixer é que os endereços de IP e de Bitcoin podem ser registrados por terceiros. No final das contas, os usuários abrem mão do controle de seus fundos na esperança de receber fundos sem nenhum vínculo.
Existe outra abordagem, indiscutivelmente mais interessante, na forma de transações CoinJoin, que geram um grau significativo de negação plausível. Isso quer dizer que, após uma CoinJoin, nenhuma evidência é capaz de associar, com certeza, um usuário às suas transações anteriores. Muitas soluções CoinJoin fornecem uma alternativa descentralizada aos mixers. Embora possa existir um coordenador encarregado, os usuários não precisam sacrificar a custódia de seus fundos.
O que é CoinJoin?
As transações de Bitcoin são compostas de inputs (entradas) e outputs (saídas). Quando um usuário deseja fazer uma transação, ele usa seus UTXOs como inputs, especifica os outputs e então assina os inputs. É importante observar que cada input é assinado de forma independente, e os usuários podem definir múltiplos outputs (direcionados a diferentes endereços).
Se observamos uma determinada transação composta de quatro inputs (0,2 BTC cada) e dois outputs (0,7 BTC e 0,09 BTC), podemos fazer diferentes suposições. A primeira é que a transação representa um pagamento – o remetente está enviando um dos outputs para alguém e retornando um valor de troco para ele mesmo. Como foram usados quatro inputs, o maior output é provavelmente para o destinatário. Podemos ver que estamos perdendo 0,01 BTC dos outputs, que é a taxa dada ao minerador.
Também é possível que o remetente queira criar um UTXO grande a partir de outros menores, então ele consolida inputs menores para obter o resultado desejado de 0,7 BTC.
Outra suposição que podemos fazer é baseada no fato de que cada input é assinado de forma independente. Essa transação pode ter até quatro partes diferentes assinando os inputs. Esse é o princípio que torna o CoinJoining eficaz.
Como funciona uma CoinJoin?
A ideia é que várias partes se coordenam para criar uma transação, cada uma fornecendo os inputs e outputs desejados. Como todos os inputs são combinados, torna-se impossível dizer com certeza qual output pertence a cada usuário. Veja o diagrama abaixo:
Aqui, temos quatro participantes que desejam remover o vínculo entre as transações. Eles se coordenam entre si (ou são coordenados por um serviço especializado) para anunciar os inputs e outputs que gostariam de incluir.
O coordenador transforma todas as informações em uma transação e faz com que cada participante assine, antes de transmiti-la para a rede. Após a assinatura dos usuários, a transação não pode ser modificada. Se houver alguma modificação, ela se tornará inválida. Portanto, o coordenador não corre o risco de perder os fundos.
No entanto, isso não é de forma alguma, uma certeza. Quem poderia afirmar, observando a transação acima, que são quatro participantes? Ou uma única pessoa está enviando seus fundos para quatro de seus próprios endereços? Seriam duas pessoas fazendo duas compras separadas e devolvendo 0,2 BTC para cada um de seus endereços? Poderiam ser quatro pessoas transferindo para novos participantes ou retornando a transação para elas mesmas. Não é possível afirmar com certeza.
Privacidade via negação plausível
O simples fato de existirem implementações de CoinJoin gera dúvidas sobre os métodos usados para a análise de transações. Podemos deduzir que ocorreu uma CoinJoin em diversos casos, mas não é possível saber quem é o real proprietário das transações de outputs. À medida que a popularidade da CoinJoin aumenta, a suposição de que todos os inputs pertencem ao mesmo usuário se enfraquece, – isso representa um grande avanço em termos de privacidade no ecossistema, de modo geral.
Considerações finais
Para quem confia na integridade e metodologia de terceiros, o serviço de mixing é uma solução fácil. Para aqueles que preferem uma alternativa verificável e não custodial, as alternativas de CoinJoin são mais indicadas. Isso pode ser feito manualmente por usuários com experiência técnica ou através de ferramentas de software que se encarregam dos mecanismos mais complexos. Já existem diversas ferramentas disponíveis, que continuam ganhando popularidade, já que os usuários se preocupam cada vez mais com a privacidade.