Introdução:
O Monero tem se destacado no cenário das moedas digitais devido à sua ênfase na privacidade das transações. No entanto, um tópico que frequentemente surge em discussões sobre Monero é sua suposta falta de auditabilidade. Críticos argumentam que a natureza altamente privada da Monero levanta questões sobre a capacidade de auditar transações. Essas objeções têm levado a debates fervorosos sobre se o Monero é realmente uma escolha viável entre criptomoedas onde a verificação é o principal garantidor da idoneidade da rede.
Neste artigo, mergulharemos nas objeções levantadas em relação à auditabilidade do Monero e exploraremos as respostas que vão acabar com as preocupações.
Problemas de supply:
Antes de abordar a auditabilidade do supply, vamos falar sobre os problemas de supply que uma criptomoeda pode encontrar. São diversos os fatores que os causam e para entender melhor sobre a auditoria, precisamos falar desses fatores.
Costumeiramente, quando se fala em auditar supply, pensa-se em "olhar" transação por transação, valor por valor que foi gasto, fazer umas contas num papel e chegar à conclusão que nada foi criado espontâneamente. Por mais que isso seja possível com criptomoedas transparentes como Bitcoin e Ethereum, aqui a auditabilidade terá outro significado.
Ter uma verificação de supply aberta e transparente é uma opção do design da criptomoeda. Não é um problema, mas pode trazer alguns. Nós, no mundo do Monero damos preferência por não ter os montantes envolvidos nas transações visíveis. Ter os valores visíveis traz problemas de segurança pessoal (caso uma das partes da transação seja identificada) e principalmente de fungibilidade. Privacidade então nem se fala. Não existe privacidade com montantes abertos. Pode haver privacidade quanto à identidade da pessoa, mas não do valor transacionado, convenhamos.
O Monero faz uso de uma estrutura criptográfica chamada "Comprometimento de Pendersen" para garantir que, mesmo não mostrando os valores envolvidos numa transação, nenhuma moeda tenha sido criada do nada. Com isso a transação fica indistinguível entre as demais, garantindo fungibilidade, segurança e privacidade. Se você não entende como esse algoritmo funciona, sugiro que dê uma pesquisada por fontes externas, visto que a explicação completa tiraria o foco desse artigo.
Considerando o apresentado acima, vamos pontuar alguns problemas que podem ocorrer em relação à auditabilidade do supply de uma criptomoeda e vamos avaliar as situações decorrentes.
Quebra da integridade da criptografia usada
Falha de implementação gerando inflação detectável
Falha de implementação gerando inflação indetectável
A primeira classe envolve a quebra de uma suposição fundamental de segurança criptográfica. A segurança digital moderna depende muito da suposição de que certos problemas matemáticos (como o problema do logaritmo discreto) sejam computacionalmente difíceis. Não é possível provar que esses problemas são difíceis, mas décadas de pesquisa e uso implicam nisso. Se um adversário fosse capaz de resolver eficientemente o problema do logaritmo discreto, por exemplo, ele poderia recuperar chaves privadas de Bitcoin, Ethereum ou Monero e roubar fundos. No entanto, em relação ao supply, resolver problemas de dificuldade relacionados permitiria a um adversário representar uma quantidade diferente em um Comprometimento de Pedersen do que foi originalmente pretendido, enganando a rede e inflando o fornecimento em um ativo opaco (Monero). Resumindo, comprometer a integridade não é um risco prático. A complexidade computacional necessária para realizar uma manobra desse tipo (a menos que haja uma descoberta inimaginável e distante que comprometa a segurança de toda a internet) é absurdamente alta, em uma escala de tempo que vai além da existência do universo.
A segunda classe envolve falhas de implementação que levam a uma inflação detectável. Essas falhas podem assumir várias formas e tamanhos, e afetaram ativos transparentes (como o Bitcoin em dois incidentes separados) e ativos opacos (como o Monero). No caso de um incidente com o Bitcoin, a inflação de fato ocorreu, mas os nós optaram por bifurcar a blockchain para reverter os fundos inflados. Nos outros incidentes relacionados ao Bitcoin e ao Monero, foi verificado que nenhuma inflação ocorreu.
A terceira classe envolve falhas de implementação que levam a uma inflação indetectável. Tais falhas podem surgir de várias maneiras, mas estão limitadas a ativos opacos (como o Monero ou o Zcash quando usa "shielded transactions") nos quais não é possível simplesmente contar a quantidade de fundos envolvidos na transação. Poderia ser possível modificar o protocolo do Monero para produzir uma detecção de valores semelhante, mas isso introduz riscos adicionais, reduz a privacidade e a fungibilidade.
Qual é a lição que podemos tirar disso? É muito importante observar que nem todos os problemas relacionados à inflação são iguais. É seguro afirmar que o risco prático de uma falha de implementação é muito maior do que o de uma quebra comum da suposição de dificuldade computacional.
É importante destacar que o uso de um ativo transparente não é suficiente para garantir a segurança dos fundos. É verdade que a transparência do supply significa que a inflação pode teoricamente ser detectada por uma implementação apropriada, mas a correção da inflação do supply poderia resultar na reversão de transações e afetar fundos "honestos". Além disso, ativos transparentes não estariam imunes a uma (muito improvável) quebra de segurança criptográfica que resultasse na recuperação de chaves (por agentes maliciosos) e no roubo de fundos.
Em contraste, o uso de um ativo opaco introduz o risco de falhas de implementação que podem ou não ser detectáveis devido à matemática subjacente dos "Comprometimentos de Pendersen" e sistemas de prova mais complexos. Análises e auditorias externas do código e das novas construções matemáticas tornam-se especialmente importantes como uma forma de mitigar, mas certamente não eliminar, esses riscos.
No final do dia, existem compensações inerentes às escolhas de design de auditoria de supply. Você pode optar por representar quantias de forma clara, como o Bitcoin faz; você pode ter certeza de que o fornecimento é o que você espera que seja (ou fazer um fork para garantir isso em caso de inflação explorada), mas sacrifica a fungibilidade e pode expor os usuários a riscos pessoais. Ou você pode escolher ocultar quantias como o Monero faz; você melhora a privacidade e a fungibilidade, mas ao custo de transferir garantias de integridade para o código usado.
Se o seu caso de uso pessoal requer uma garantia absoluta, de 100%, sem restrições, do supply, e você entende os riscos inerentes a isso, então você precisa de um ativo transparente. Mas se você deseja mitigar os riscos associados a quantias visíveis e está disposto a aceitar a transferência do risco para a correção da implementação do sistema de prova, então escolha um ativo focado em privacidade e fungibilidade. Não há uma solução única aqui, mas sim uma análise necessária e cuidadosa de suas prioridades e das compensações que você está disposto a fazer por elas.
O que são key-images?
Uma "key-image" (imagem de chave na tradução direta) não é uma imagem digital como alguns podem imaginar. Ela é uma sequência de letras e números que compõem um código único, muito semelhante a um endereço de carteira. Ao contrário de um endereço de carteira, as "key-images" são hexadecimais.
O que isso significa?
Hexadecimal é um sistema de numeração que usa apenas os números de 0 a 9 e letras maiúsculas ou minúsculas de A a F.
Aqui está um exemplo de como uma imagem de chave pode ser:
As key-images são usadas como uma chave segura dentro das transações do Monero. Elas são criadas a partir da conta de Monero pertencente ao usuário que está enviando os fundos e fazem parte da assinatura de anel (ring signature).
Elas são usadas para garantir as transações do Monero e evitar que os usuários gastem as mesmas moedas duas vezes, conhecido como "double-spending" (gasto duplo).
Como as key-images evitam o gasto duplo?
Existe uma única key-image por input (entrada) na blockchain. Se um usuário tentar fazer duas transações separadas usando as mesmas moedas Monero, a rede pode rapidamente rastrear se as key-images relacionadas já foram usadas anteriormente. E ela pode impedir que a segunda transação seja concluída com sucesso.
Como as key-images afetam a privacidade?
Nenhuma informação relacionada ao remetente é divulgada junto com essas key-images, o que significa que elas não podem ser rastreadas de volta até o remetente e, assim, o anonimato do remetente é mantido.
Evitando o gasto duplo
No Monero, cada saída de transação (output) está exclusivamente associada a uma imagem de chave (key-image) que só pode ser gerada pelo detentor desse output. Key-images que são usadas mais de uma vez são rejeitadas pelos mineradores como gastos duplos e não podem ser adicionadas a um bloco válido. Quando uma nova transação é recebida, os mineradores verificam se a key-image já existe em uma transação anterior para garantir que não seja um gasto duplo.
Também é possível saber que os valores das transações são válidos, mesmo que o valor dos inputs que você está gastando e o valor dos outputs que você está enviando estejam criptografados (esses são ocultos para todos, exceto o destinatário e o remetente). Isso ocorre porque os valores são criptografados usando Comprometimento de Pedersen. O que isso significa é que nenhum observador pode determinar os valores das entradas e saídas, mas eles podem fazer cálculos nos Comprometimentos de Pedersen para determinar que nenhum Monero foi criado do nada.
Desde que os valores de saída (outputs) criptografados que você cria sejam iguais à soma das entradas (inputs) que estão sendo gastas (incluindo uma saída para o destinatário e uma saída de troco de volta para você e a taxa de transação não criptografada), então você tem uma transação legítima e sabe que nenhum Monero está sendo criado do nada. Os Comprometimentos de Pedersen permitem que as somas sejam verificadas como iguais, mas o valor em Monero de cada uma das somas e o valor em Monero das entradas e saídas individualmente são indetermináveis.
Auditoria
Conferindo o supply do Monero
Como sabemos, o Monero possui supply infinito. Apesar disso, sua inflação tende a zero. Só para você ter um parâmetro, hoje, enquanto escrevo este artigo, a inflação do XMR é menor que a do Bitcoin.
Passado isso, vamos ao supply. Como verificar um supply sendo que a blockchain é fechada e não conseguimos fazer uma aferição conforme poderia ser feita no caso do Bitcoin, contando todas as moedas envolvidas em todas as transações? Vamos à explicação:
Toda transação coinbase no Monero é aberta para verificação. Ou seja, o que os mineradores recebem sempre será aberto e possível de ser visualizado.
Verificando o supply pelo node:
Para quem roda um node de Monero, é simplesmente usar um comando para te retornar a quantidade total de XMR em circulação naquele momento, sendo este: print_coinbase_tx_sum
Verificando o supply em fontes externas:
Caso você não tenha acesso a um node, você pode usar fontes externas para verificar o supply circulante atual. É claro que nesse caso você precisará confiar nessas fontes, mas de toda forma, se você verificar em locais distintos, a chance de estar errado diminui. Aqui eu sugiro que você verifique os seguintes sites:
https://coinmarketcap.com/currencies/monero/
https://messari.io/asset/monero/metrics/all
https://localmonero.co/blocks/api/get_stats
Fazendo o cálculo do supply atual "na mão":
Uma forma alternativa de você avaliar se o supply está de acordo com o esperado é fazendo a conta do supply "na mão" e comparando com as fontes fornecidas acima.
Todo supply do Monero segue a regra da Tail Emission e por isso é produzido sempre 0.6 XMR a cada 2 minutos, conforme os blocos são fechados. Com isso podemos extrapolar algumas quantidades de XMR sendo criadas a cada X tempo, facilitando com que a avaliação do supply circulante esteja de acordo com o "esperado" pela rede e programado no código, veja a seguir:
0.3 XMR por minuto
18 XMR por hora
432 XMR por dia
12.960 XMR por mês
155.520 XMR por ano
Como essa tabela nos ajuda?
Bom, com essa emissão prevista você pode estipular se a quantidade de Monero emitida está de acordo com o previsto para a rede naquela data, vou exemplificar:
Como você pode ver na foto acima, no mês 10 de 2022 o supply de XMR circulante era de 18.187.361 XMR. Com base nisso podemos avaliar qual seria o supply em um determinado mês em determinado ano (considerando uma variância esperada, claro).
Então vamos ao cálculo: Se em 10/2022 tinha 18.187.361 XMR circulantes, 3 meses e 1 dia depois era pra ter (em média) quantos XMR circulando?
18.187.361 + 3*(12.960) + 432 = 18.226.673 XMR circulando.
Vamos ao gráfico pra verificar.
Conforme o novo gráfico, temos um supply de 18.228.064 na exata data que calculamos, um supply conforme esperado, com uma variação de 0.008%.
Verificando o código em si:
https://github.com/monero-project/monero/tree/master
Revisão
Fica evidente que o Monero se diferencia pela sua base de código e algoritmos mais complexos do que o comum, exigindo uma avaliação meticulosa para entender tudo isso.
Se verificar o código diretamente não for possível, uma abordagem inteligente é aprender como os mecanismos de segurança contra gasto duplo funcionam. Dessa forma, você pode entender o sistema em profundidade, examinando cada parte com atenção.
Num cenário em que a auditoria direta do código seja difícil, é importante adotar uma perspectiva ampla ao explorar as características de qualquer criptomoeda, incluindo o Monero. Isso significa examinar como os sistemas se conectam, onde podem ser vulneráveis e como as coisas podem mudar ao longo do tempo. Auditoria e problemas de supply são complexos e envolvem diversas situações e causas.
Na etapa final da análise, é essencial observar o supply total de moedas atual e fazer estimativas para o passado ou futuro (a depender da sua necessidade), como explicado antes. Isso ajuda a identificar qualquer comportamento estranho e, caso algo pareça fora do lugar, é importante compartilhar essas descobertas rapidamente para manter tudo em ordem.
Conclusão
Concluindo, fica claro que a auditoria do Monero é um pouco mais desafiadora, mas isso não significa que seja impossível. As opções para avaliação estão disponíveis e é sugerido que você conduza sua própria análise para tomar decisões financeiras sólidas de acordo com o que faz mais sentido para você.
Se, ao término desta leitura, você ainda se sentir mais confortável investindo em criptomoedas mais transparentes, está tudo bem. Não há uma resposta certa, e o fundamental é ter paz de espírito em relação às suas escolhas.
Se você tiver preocupações ou objeções sobre o que foi abordado, não hesite em entrar em contato comigo. Ficarei contente em discutir suas ideias e, quem sabe, até atualizar o artigo com novas perspectivas.
Agradeço muito por dedicar seu tempo à leitura deste texto.
Contatos
Telegram:
https://t.me/investidor_descentralizado
Session:
05b84e24f6545598d8e6e31051216dc023567066fc55d57b7437d4c7523cfeb74b
Signal:
+1 757-237-1521
Matrix: @ investidordescentralizado:matrix. org
Doações
Se eu te ajudei de alguma forma e você quiser contribuir com qualquer valor, seguem os endereços:
Bitcoin: bc1qz7ct3pqc3cny8gdghgqfutrtc3qeckxpyg4dww
Monero: 43WguJKXsnd5rbFBtWsMB1JxAosKUdpd15EcgxG1wooZQKGmbcyyrMRiEhzQ9PQt8t68nf4AJb6g7bzFbe33Nj3GEZWZY
Post fantástico! Obrigada por contribuir com assuntos tão importantes