Introdução
Bitcoin é frequentemente referido como dinheiro digital, mas esta é uma comparação questionável. Se Alice paga a Bob dez dólares em dinheiro, Bob não tem ideia de onde veio o dinheiro. Se mais tarde ele o entregar a Carol, ela não conseguirá deduzir que Alice já esteve em posse dele.
O Bitcoin é diferente devido à sua natureza pública inerente. A história de uma determinada moeda (mais precisamente, uma saída de transação não gasta ou UTXO) pode ser observada trivialmente por qualquer pessoa. É como escrever o valor da transação e os nomes dos participantes em uma fatura sempre que ela for usada.
Dito isto, o pseudónimo de um endereço público garante que as identidades dos utilizadores não sejam facilmente reveladas. Ainda assim, o Bitcoin não é totalmente privado. A análise Blockchain está cada vez mais sofisticada e é capaz de vincular endereços a identidades de forma cada vez mais eficiente. Juntamente com outras técnicas de vigilância, uma entidade dedicada pode desanonimizar os usuários de criptomoedas. Para remediar esta situação, técnicas para desvincular transações surgiram ao longo dos anos.
O que é mistura de moedas?
Em termos gerais, a mistura de moedas pode referir-se a qualquer atividade que envolva a ofuscação de fundos, substituindo-os por outros. No entanto, no espaço das criptomoedas, a mistura de moedas geralmente denota um serviço prestado por terceiros. Normalmente, os provedores de serviços pegam as moedas dos usuários (e pagam uma pequena taxa) e devolvem moedas que não têm vínculo com as enviadas. Esses serviços também são conhecidos como copos ou misturadores.
A segurança e o anonimato de tais serviços centralizados são questionáveis, é claro. Os usuários não têm garantia de que seu dinheiro será devolvido pelo mixer ou que as moedas devolvidas não estejam contaminadas de alguma forma. Um aspecto adicional a considerar ao usar um mixer é que os endereços IP e Bitcoin podem ser registrados por terceiros. Em última análise, os usuários abrem mão do controle de seus fundos na esperança de receber de volta os desvinculados.
Existe uma abordagem possivelmente mais interessante na forma de transações CoinJoin, que criam um grau significativo de negação plausível. Isso quer dizer que, após um CoinJoin, nenhuma evidência pode vincular um usuário com certeza às suas transações anteriores. Muitas soluções CoinJoin oferecem uma alternativa descentralizada aos mixers. Embora possa haver um coordenador envolvido, os usuários não precisam sacrificar a custódia de seus fundos.
O que é um CoinJoin?
As transações CoinJoin foram inicialmente propostas pelo desenvolvedor Bitcoin Gregory Maxwell em 2013. Em seu tópico, ele fornece uma breve visão geral de como essas transações são estruturadas e como ganhos massivos de privacidade podem ser alcançados sem quaisquer alterações no protocolo.
Em essência, um CoinJoin envolve a combinação de entradas de vários usuários em uma única transação. Antes de explicarmos como (e porquê), vamos dar uma olhada na estrutura de uma transação básica.
As transações Bitcoin são compostas de entradas e saídas. Quando um usuário deseja fazer uma transação, ele utiliza seus UTXOs como entradas, especifica as saídas e assina as entradas. É importante observar que cada entrada é assinada de forma independente e os usuários podem definir múltiplas saídas (indo para endereços diferentes).

Se olharmos para uma determinada transação composta por quatro entradas (0,2 BTC cada) e duas saídas (0,7 BTC e 0,09 BTC), existem algumas suposições diferentes que podemos fazer. A primeira é que estamos observando um pagamento ocorrer – o remetente está enviando uma das saídas para alguém e devolvendo algum troco para si mesmo. Como eles usaram quatro entradas, a saída maior provavelmente será para o destinatário. Observe que faltam 0,01 BTC nas saídas, que é a taxa dada ao minerador.
Também é possível que o remetente queira criar um UTXO grande a partir dos menores, para consolidar entradas menores para obter o resultado desejado de 0,7 BTC.
Outra suposição que podemos fazer é baseada no fato de que cada entrada é assinada de forma independente. Esta transação pode ter até quatro partes diferentes assinando as entradas. E é aí que reside o princípio que torna o CoinJoining eficaz.
Como funciona um CoinJoin?
A ideia é que várias partes se coordenem para criar uma transação, cada uma fornecendo entradas e resultados desejados. Como todas as entradas são combinadas, torna-se impossível dizer com certeza qual saída pertence a qual usuário. Considere o diagrama abaixo:

Aqui, temos quatro participantes que desejam romper o vínculo entre as transações. Eles coordenam-se entre si (ou através de um coordenador dedicado) para anunciar os contributos e resultados que gostariam de incluir.
O coordenador pegará todas as informações, criará uma transação e fará com que cada participante assine antes de transmiti-las para a rede. Depois que os usuários assinarem, a transação não poderá ser modificada sem se tornar inválida. Portanto, não há risco de o coordenador fugir com os recursos.
A transação serve como uma espécie de caixa preta para misturar moedas. Lembre-se de que efetivamente destruímos UTXOs para criar novos. A única ligação entre os antigos e os novos UTXOs que temos é a transação em si, mas, é claro, não podemos distinguir entre os participantes. Na melhor das hipóteses, podemos dizer que um participante forneceu um dos insumos e talvez seja o novo proprietário de um produto resultante.
Mas mesmo isso não é de forma alguma garantido. Quem pode dizer, ao analisar a transação acima, que há quatro participantes? Esta pessoa está enviando seus fundos para quatro endereços diferentes? Duas pessoas fazendo duas compras separadas e devolvendo 0,2 BTC cada uma para seus próprios endereços? Quatro pessoas enviando para novos participantes ou de volta para si mesmas? Não podemos ter certeza.
Privacidade através da negação
O próprio fato de existirem implementações de CoinJoin é suficiente para lançar dúvidas sobre os métodos usados para analisar transações. Você pode deduzir que um CoinJoin ocorreu em muitos casos, mas ainda não sabe quem é o proprietário das saídas. À medida que sua popularidade cresce, a suposição de que todas as entradas pertencem ao mesmo usuário é enfraquecida – um grande salto para a privacidade no ecossistema mais amplo.
No exemplo anterior, dizemos que a transação tinha um conjunto de anonimato de 4 – o proprietário de um output poderia ser qualquer um dos quatro participantes envolvidos. Quanto maior for o conjunto de anonimato, menor será a probabilidade de as transações poderem ser vinculadas ao seu proprietário original. Felizmente, as implementações recentes do CoinJoin tornam trivial para os usuários mesclar, sem confiança, suas entradas com dezenas de outras, proporcionando um alto grau de negação. Recentemente, uma transação de 100 pessoas foi executada com sucesso.
Pensamentos finais
As ferramentas para misturar moedas são uma adição importante ao arsenal de qualquer usuário que leva a sério a sua privacidade. Ao contrário das atualizações de privacidade propostas (como Transações Confidenciais), elas são compatíveis com o protocolo atual.
Para quem confia na integridade e metodologia de terceiros, os serviços de mixagem são uma solução fácil. Para aqueles que preferem uma alternativa verificável e sem custódia, as alternativas CoinJoin são superiores. Isso pode ser feito manualmente para usuários com conhecimento técnico ou usando ferramentas de software que abstraem os mecanismos mais complexos. Já existem algumas dessas ferramentas que continuam a crescer em popularidade à medida que os usuários buscam maior privacidade.

