a introdução

O Bitcoin é frequentemente referido como dinheiro digital, mas esta comparação é questionável. Se Alice pagar dez dólares em dinheiro, Bob nunca saberá de onde veio o dinheiro. Se ele desse esse dinheiro para Carol, Carol não saberia que o dinheiro estava em posse de Alice antes disso.

O Bitcoin é diferente devido à sua natureza pública. Qualquer pessoa pode monitorar facilmente o histórico de uma moeda específica (ou, para ser mais preciso, sua saída de transação não gasta (UTXO). É como escrever o valor da transação e os nomes de seus participantes no papel-moeda sempre que for usado.

No entanto, os pseudónimos de endereços públicos garantem que as identidades dos utilizadores não serão facilmente expostas. Mas o Bitcoin não é uma moeda totalmente privada. Os métodos de análise de redes blockchain estão se tornando mais sofisticados e podem rastrear endereços e identificar identidades com eficiência crescente. Juntamente com outros métodos de monitorização, uma entidade ou organismo pode revelar as identidades dos utilizadores da moeda digital. Para resolver este problema, surgiram técnicas ao longo dos anos para ocultar as ligações entre as transações.


O que é mistura de moedas?

Em geral, a mistura de moedas pode referir-se a qualquer atividade que envolva ofuscar dinheiro, trocando-o por outro dinheiro. Mas no espaço das criptomoedas, a mistura de moedas refere-se a um serviço prestado por terceiros. Os provedores de serviços geralmente pegam as moedas dos usuários (além de uma pequena taxa) e lhes dão moedas que não estão relacionadas às moedas enviadas. Esses serviços também são conhecidos como serviços de dispersão ou serviços de mistura.

A segurança e o anonimato destes serviços centralizados, claro, tornam-nos questionáveis. Os usuários não têm garantia de que seus fundos serão devolvidos pelo serviço de mixagem ou que as moedas devolvidas não estão corrompidas de alguma forma. Outro aspecto a ter em mente ao usar serviços de mash-up é que seu endereço IP e endereços de carteira Bitcoin podem ser registrados por terceiros. Em última análise, os usuários abrem mão do controle das moedas na esperança de que moedas não rastreáveis ​​sejam devolvidas a eles.

Outro método que alguns consideram mais interessante são as transações CoinJoin, que criam um alto grau de dúvida razoável quanto à origem das moedas. Em outras palavras, após a realização de uma transação CoinJoin, um usuário não pode ser definitivamente vinculado às suas transações anteriores. Muitas soluções CoinJoin fornecem alternativas descentralizadas para misturar serviços. Embora um coordenador possa estar envolvido no processo, os usuários não precisam sacrificar a custódia de suas moedas.


O que é CoinJoin?

As transações CoinJoin são uma proposta apresentada pela primeira vez pelo desenvolvedor Bitcoin Gregory Maxwell em 2013. Em uma coleção de postagens que ele escreveu, Maxwell fornece uma breve visão geral do design dessas transações e como elas podem ser usadas para obter enormes ganhos de privacidade sem alterar o protocolo. .

Basicamente, uma transação CoinJoin envolve a combinação de entradas de vários usuários em uma única transação. Antes de explicarmos como (e por que) isso acontece, vejamos a estrutura de uma transação normal.

As transações Bitcoin são compostas de entradas e saídas. Quando um usuário deseja fazer uma transação, ele pega a saída não gasta da transação como entrada, define a saída e coloca sua assinatura na entrada. É importante notar que cada entrada é assinada independentemente das outras, e os usuários podem colocar múltiplas saídas (ou seja, enviar moedas para endereços diferentes).


image of an example transaction with four inputs and two outputs


Se olharmos para uma transação com quatro entradas (cada uma valendo 0,2 BTC) e duas saídas (0,7 BTC e 0,09 BTC), há algumas coisas que podemos assumir. Primeiro, vemos algum tipo de pagamento sendo realizado – o remetente envia um desses resultados para alguém e o restante volta para o remetente. Como utilizou quatro insumos, o resultado maior provavelmente será destinado ao destinatário. Observe que faltam 0,01 BTC na saída, esta é a taxa dada ao minerador.

Também é possível que o remetente quisesse uma grande saída não gasta de uma saída pequena, então ele colocou uma pequena entrada para acabar com os 0,7 BTC que queria enviar.

Há uma suposição que podemos fazer com base no fato de que cada entrada é assinada isoladamente das outras entradas. Quatro partes podem participar desta transação e assinar as transações. Aqui reside o princípio que torna as transações CoinJoin eficientes.


Como funcionam as transações CoinJoin?

A ideia é que várias partes se coordenem para criar uma transação, com cada parte fornecendo as entradas e saídas desejadas. Quando todas as entradas são combinadas, é impossível confirmar qual saída segue qual usuário. Veja a figura a seguir:


image of an example coinjoin


Aqui temos quatro participantes que desejam ocultar as conexões entre suas transações. Estes participantes coordenam-se entre si (ou através de um coordenador) e anunciam as entradas e saídas que desejam. 

O coordenador pegará todas as informações e fará uma transação com elas, e cada participante assinará antes de enviar para a rede. Uma vez assinada pelos participantes, a transação não poderá ser modificada sem invalidá-la. Então não há possibilidade do coordenador fugir com o dinheiro. 

Esta transação é como uma caixa preta para misturar transações. Lembre-se de que você pode realmente destruir saídas de transações não gastas e criar novas. A ligação entre os resultados antigos e novos é o mesmo tratamento, mas não é possível distinguir entre os participantes. O máximo que podemos fazer é dizer que um participante deu um input nesta transação e pode ser o novo proprietário de um dos outputs resultantes.

Mas mesmo isso não é garantido. Quem pode dizer que há quatro participantes na transação que mencionamos anteriormente? É uma pessoa enviando moedas para quatro endereços de sua propriedade? Ou duas pessoas fazendo compras separadas e 0,2 BTC voltarão para seus respectivos endereços? Ou são quatro pessoas enviando moedas para outros participantes ou devolvendo moedas para si mesmas? Não posso ter certeza.


Privacidade através da negação

O facto de existirem transações CoinJoin é suficiente por si só para lançar dúvidas sobre os métodos utilizados para analisar as transações. Podemos inferir que as transações CoinJoin foram feitas em muitos casos, mas não podemos saber quem são os proprietários da saída. À medida que sua popularidade cresce, não se pode presumir que todas as entradas sejam necessariamente propriedade do mesmo usuário – um grande salto para a privacidade no ecossistema das criptomoedas.

No exemplo anterior, dissemos que o proprietário de uma de suas saídas poderia ser qualquer um dos quatro participantes da transação, e esse número é conhecido como conjunto cego. Quanto mais pessoas no grupo de criptografia, menor será a probabilidade de suas transações estarem vinculadas ao proprietário original. Felizmente, implementações recentes de transações CoinJoin tornam mais fácil para os usuários combinarem entradas sem confiança com dezenas de outros usuários, proporcionando um alto grau de negação. Recentemente, uma transação envolvendo 100 pessoas foi realizada com sucesso.


Pensamentos finais

As ferramentas de mixagem de transações são uma adição importante ao arsenal de qualquer usuário que leva sua privacidade a sério. Ao contrário das atualizações de privacidade propostas (como transações confidenciais), é compatível com o protocolo tal como está. 

Para quem confia na integridade e conduta de terceiros, os serviços mash-up são uma solução fácil. Mas para aqueles que preferem alternativas verificáveis ​​e sem custódia, as alternativas CoinJoin são melhores. Essas transações podem ser realizadas manualmente para usuários experientes em tecnologia ou por meio de software que simplifica mecanismos mais complexos. Já existem várias dessas ferramentas cuja popularidade cresce constantemente, à medida que os usuários buscam melhorar sua privacidade.