Uma Introdução às Transações Confidenciais
HomeArticles

Uma Introdução às Transações Confidenciais

Avançado
2w ago
6m

Conteúdo


Introdução

A transparência do sistema é, frequentemente, considerada um fator crítico para o funcionamento de uma blockchain. Isso significa que todos os nós da rede podem armazenar uma cópia e verificar se nenhuma regra está sendo violada. Em muitos ledgers distribuídos, qualquer pessoa pode usar um explorador de blocos online que permita pesquisar blocos, transações e endereços.

Em termos de privacidade, isso não é o ideal. Em um sistema como o da Bitcoin, todas as transações podem ser vinculadas a uma anterior. As moedas não são tecnicamente fungíveis, o que significa que cada uma pode ser vinculada a transações específicas. Ninguém pode impedir que você envie Bitcoin, mas eles podem recusar sua transação caso essas moedas tenham passado, anteriormente, por um endereço da lista de rejeitados.

Na pior das hipóteses, a falta de fungibilidade pode gerar grande impacto nas próprias bases do sistema. Moedas "limpas" (honestas) podem ser premiadas, enquanto as mais antigas seriam menos valiosas, dada a sua história.

Em termos de privacidade, usuários da rede Bitcoin costumam sofrer com a grande exposição. Não apenas as moedas podem ser rastreadas, mas também os próprios usuários. Eles fazem uso de pseudônimos (não divulgam nomes, apenas endereços públicos), mas isso não garante sua privacidade. Existem técnicas sofisticadas de análise que podem, com precisão, agrupar endereços para identificar entidades de uma rede.

As Transações Confidenciais representam uma atualização proposta para fazer com que as transações sejam verdadeiramente privadas.


O que são Transações Confidenciais?

As Transações Confidenciais (CT) foram discutidas pela primeira vez em 2013 pelo CEO da Blockstream, Adam Back. Mais tarde, o desenvolvedor de Bitcoin, Gregory Maxwell, incrementou o uso das Transações Confidenciais. Maxwell descreveu os problemas mencionados na primeira seção (em relação à fungibilidade e privacidade) – e propôs uma solução. Os valores transferidos poderiam ser protegidos (ocultos) da rede mais ampla, para que apenas as partes envolvidas na transação soubessem quanto havia sido enviado.

Em circunstâncias normais (com transações publicamente visíveis), é fácil para um nó verificar se o valor recebido não excede o valor enviado. Se Alice deseja enviar 0,3 BTC para Bob, ela usa um output (saída) que não foi gasto (vamos considerar 1 BTC) e o divide em duas partes: 0,3 para enviar a Bob e 0,69 para ela (o restante é utilizado para pagar a taxa de mineração).

É uma conta simples para os outros nós: 1 é maior que 0,3 + 0,69, as assinaturas estão todas corretas e os inputs (entradas) de Alice ainda não foram gastos em outros lugares, portanto a transação deve ser válida. Quando os valores são ocultos, no entanto, esse processo não é tão trivial. Como seria possível avaliar se uma quantia desconhecida é igual ou superior à soma de duas outras quantias desconhecidas?


Uma visão geral da criptografia relacionada

Para ocultar os dados, a encriptação é necessária. No entanto, os métodos tradicionais são semelhantes a colocar documentos em um cofre: após trancados, tornam-se inutilizáveis até que sejam removidos do cofre. O que precisamos para que as Transações Confidenciais funcionem é um cofre digital cujo conteúdo não é revelado, mas cujas propriedades podem ser verificadas por alguém de fora.

A resposta está, especificamente, na encriptação homomórfica, em um esquema chamado de "Pedersen commitment". Esse tipo de encriptação permite que usuários externos executem operações em dados encriptados (que eles não podem ver) para diversas finalidades. 

Um hash regular pode ser usado para confirmar dados que você deseja revelar posteriormente. Suponha que você queira anunciar uma competição nas redes sociais, onde aquele que adivinhar sua exchange favorita ganhará um prêmio de 0,01 BTC. Os usuários podem não confiar na validade da sua competição, alegando que você pode simplesmente olhar as respostas após o encerramento e revelar uma exchange que não foi mencionada por ninguém.

Você poderia fornecer um hash aos seus seguidores: uma sequência de números e caracteres aparentemente aleatórios que se referem a um input (entrada) específico. Através de uma função, você transforma a informação da sua exchange para obter um determinado output (saída). Ilustraremos com o algoritmo SHA256:


f1624fcc63b615ac0e95daf9ab78434ec2e8ffe402144dc631b055f711225191


Olhando para isso, você não tem ideia de qual foi o input (entrada). E você não pode reverter a função para obtê-lo. Entretanto, se você souber que a entrada foi “Binance”, é possível verificar facilmente se o hash corresponde ao mostrado acima. Dessa forma, seus seguidores têm a garantia de que você não mudará sua resposta no final da competição – o que produziria um output (saída) totalmente diferente.

Realisticamente, porém, isso não é muito seguro. Embora seus seguidores não possam fazer engenharia reversa do algoritmo, eles poderiam criar uma lista de possíveis exchanges, obtendo o hash de cada uma delas até encontrar a correspondente. É possível reduzir a probabilidade desse tipo de ação, adicionando alguns dados aleatórios chamados de "blinding factor" (fator ofuscante) aos dados que usaremos para criar a função hash. 

Se usarmos o input “A Binance é a minha exchange favorita, eu a amo mais do que qualquer outra exchange 2#43Wr”, será muito mais difícil para um usuário adivinhar a resposta da forma citada anteriormente (por 0,01 BTC, seria improvável que alguém tentasse).

Um "Pedersen commitment" nos permite adicionar inputs por trás dos commits (alterações no banco de dados). Como ilustra Maxwell:


C(BF1 + D1) + C(BF2 + D2) = C(BF1 + BF2, D1 + D2)

Onde BF é o blinding factor e D são os dados


Existem mais algumas etapas que envolvem criptografia de curva elíptica e provas de intervalo (range proofs), mas a ideia básica é que um usuário tenha um "Pedersen commitment" para o próprio endereço. Ao enviar fundos, são criados dois commits adicionais (um para o endereço do usuário que receberá o troco e outro para o endereço de destino da transferência). 

Ninguém sabe o valor que está sendo enviado, mas é possível verificar se os commits do troco e do endereço de destino (lado esquerdo da equação de Maxwell) correspondem corretamente ao endereço de origem (lado direito da equação). Se as correspondências estiverem corretas, a transação do usuário é válida, pois pode ser comprovado que os inputs (entradas) são iguais aos outputs (saídas).


O que as Transações Confidenciais podem fazer?

Se as Transações Confidenciais fossem implementadas na rede Bitcoin, teríamos um sistema com muito mais privacidade. As entradas e saídas seriam disfarçadas na rede geral e as entradas no ledger ficariam ocultas - mas os nós ainda poderiam verificar sua autenticidade. Com esse aumento significativo de privacidade, a Bitcoin poderia se tornar efetivamente fungível, pois a análise da cadeia não mais revelaria o histórico de uma determinada unidade. 

No momento, a integração das Transações Confidenciais ao protocolo, não parece provável. Com essa funcionalidade adicional, as transações seriam muito maiores que o padrão – considerando o espaço limitado dos blocos, isso apenas aumentaria a demanda. Essa adição também exigiria que a maioria dos participantes concordasse em alterar o código, uma tarefa tradicionalmente difícil.


Considerações finais

As Transações Confidenciais têm visto algumas iterações em outras criptomoedas e cadeias alternativas (sidechains) à Bitcoin. A Monero, por exemplo, as utiliza em combinação com estruturas chamadas "ring signatures" para obter anonimato e fungibilidade. A sidechain Liquid e o protocolo MimbleWimble também as utilizam para proporcionar maior privacidade.

Apesar dos benefícios que elas proporcionam, as Transações Confidenciais apresentam um ponto negativo. As criptomoedas geralmente enfrentam problemas de escalabilidade e desempenho na camada de base. Dessa forma, o aumento no tamanho das transações está longe de ser uma mudança desejada. Ainda assim, os defensores da privacidade acreditam que esconder os valores das transações e preservar o anonimato dos usuários são medidas essenciais para que a criptomoeda possa, de fato, operar como uma moeda fungível.