Guia sobre Coin Mixing e CoinJoins
Página Inicial
Artigos
Guia sobre Coin Mixing e CoinJoins

Guia sobre Coin Mixing e CoinJoins

Avançado
Publicado em Mar 25, 2020Atualizado em Dec 28, 2022
6m

Introdução

É comum se referir ao Bitcoin como uma forma de dinheiro digital, mas esta é uma afirmação questionável. Se Alice paga a Bob dez dólares em dinheiro, Bob não tem ideia da origem do dinheiro. Se mais tarde ele enviar os dez dólares a Carol, ela não saberá que Alice já foi dona desse dinheiro.
O Bitcoin é diferente devido à sua natureza inerentemente pública. O histórico de uma moeda (mais precisamente, de um output de transação não gasto ou UTXO) pode ser facilmente verificado por qualquer pessoa. É como escrever o valor de cada transação e os nomes correspondentes na fatura de um cartão de crédito, sempre que ele for usado. 
Dito isso, o aspecto de pseudônimo de um endereço público garante que as identidades dos usuários não sejam facilmente reveladas. Ainda assim, o Bitcoin não é totalmente privado. A análise de blockchain está ficando mais sofisticada e a sua capacidade de associar endereços e identidades se torna mais eficiente a cada dia. Com a ajuda de outras técnicas de vigilância, uma entidade especializada pode remover o anonimato dos usuários de criptomoedas. Para remediar isso, surgiram ao longo dos anos, técnicas que possibilitam a remoção dos vínculos das transações.


O que é coin mixing?

Em termos gerais, o coin mixing pode se referir a qualquer atividade que envolva a ofuscação de fundos e a substituição dos mesmos. No entanto, no setor das criptomoedas, o coin mixing geralmente denota um serviço fornecido por terceiros. Normalmente, os provedores desse serviço recebem as moedas dos usuários (e uma pequena taxa) e devolvem moedas que não têm vínculo com as moedas enviadas. Esses serviços também são conhecidos como tumblers ou mixers.

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 CoinJoin foram inicialmente propostas pelo desenvolvedor de Bitcoin, Gregory Maxwell, em 2013. Em seu artigo, ele fornece uma breve visão de como essas transações são estruturadas e de como é possível obter um alto grau de privacidade sem qualquer alteração no protocolo.
Essencialmente, uma CoinJoin envolve a combinação de inputs (entradas) de múltiplos usuários em uma única transação. Antes de explicarmos como (e por quê), vamos dar uma olhada na estrutura de uma transação básica.

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. 

A transação funciona como uma espécie de caixa preta que mistura as moedas. Lembre-se, os UTXOs são destruídos, efetivamente, para a criação de novos. O único vínculo entre os UTXOs antigos e novos é a própria transação, mas, é claro, não é possível distinguir os participantes do processo. Na melhor das hipóteses, é possível afirmar que um participante forneceu um dos inputs e é, talvez, o novo proprietário de um output resultante.

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.

No exemplo anterior, dizemos que a transação teve um anonimato de grau 4 – o proprietário de um output pode ser qualquer um dos quatro participantes envolvidos. Quanto maior o grau de anonimato, menor a probabilidade de que as transações possam ser associadas ao proprietário original. Felizmente, implementações recentes da CoinJoin tornam trivial para os usuários misturar seus inputs (sem necessidade de confiança) com dezenas de outros. Isso fornece um alto grau de negação plausível. Recentemente, uma transação de 100 pessoas foi executada com sucesso.


Considerações finais

As ferramentas de coin mixing são um acréscimo importante ao arsenal de qualquer usuário que se preocupa com a sua privacidade. Ao contrário das propostas de atualizações de privacidade (como as Transações Confidenciais), elas são compatíveis com o protocolo atual. 

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.