Audite a blockchain do Monero

De Área31 Hackerspace
Ir para: navegação, pesquisa
Membro do hackerspace felizão por mostrar pros maximalistas macacos, e um certo "policial famosinho bitcoinheiro", de que sim é possivel auditar o monero.

Responsável:

Código fonte

O mais importante, o tal do "talk is cheap, show me the CODE". Segue:

https://github.com/area31/audit-xmr

Mais infos no X:

https://x.com/coffnix/status/1906320712349925854


Auditoria do Supply do Monero com audit-xmr

O audit-xmr é um conjunto de ferramentas open-source escrito em C++ que permite a auditoria independente do suprimento (supply) da criptomoeda Monero (XMR). Desenvolvido para garantir a integridade da emissão de moedas, ele se conecta a um nó Monero via interface RPC (Remote Procedure Call) e analisa cada bloco da blockchain para verificar se as recompensas de mineração (transações coinbase) estão consistentes com as regras do protocolo.

O projeto é essencial para a comunidade Monero, que valoriza privacidade e descentralização, oferecendo uma maneira transparente de validar a supply sem depender de exploradores centralizados ou terceiros.

Objetivos e Importância

O principal objetivo do audit-xmr é detectar fraudes como emissões indevidas ou manipulações de recompensa, capacitando:

  • Operadores de nós a auditarem suas instâncias;
  • Auditores independentes a verificarem nós de terceiros;
  • Pesquisadores e entusiastas a analisarem a integridade da supply do Monero sem confiar em terceiros.

Componentes do Projeto

  • audit-xmr: Audita blocos em massa e salva resultados num CSV.
  • audit-xmr-check: Revalida os dados do CSV contra um outro node de Monero via RPC.
  • Módulos auxiliares: Comunicação RPC (rpc.cpp/hpp), logging (log.cpp/hpp), multithread (mutex, threads), configuração e scripts de build.

Arquitetura Geral

O código é modular, dividido em arquivos que separam responsabilidades específicas:

  • audit.hpp & audit.cpp: Contêm a lógica central da auditoria de blocos.
  • rpc.hpp & rpc.cpp: Gerenciam a comunicação com o nó Monero via RPC.
  • audit-xmr.cpp: Coordena a auditoria em larga escala com suporte a múltiplas threads.
  • audit-xmr-check.cpp: Valida resultados anteriores.
  • log.hpp & log.cpp: Registram atividades detalhadas para depuração.
  • Arquivos de suporte como audit-xmr.cfg, build_cmake.sh, build_gpp.sh e CMakeLists.txt.

Estrutura Técnica (AuditResult)

A estrutura `AuditResult` armazena os dados auditados:

  • height: Altura do bloco.
  • hash: Hash do bloco.
  • real_reward: Recompensa oficial extraída do cabeçalho.
  • coinbase_outputs: Soma das saídas da transação coinbase.
  • total_mined: Total minerado (equivalente à coinbase_outputs).
  • issues: Lista de problemas detectados (ex.: "Reward != CoinBase").
  • status: "OK" ou "Discrepância".

Como Funciona

Etapa 1: Coleta e Verificação (audit-xmr)

  • Conexão ao Nó: Usa `rpc_url` do arquivo de configuração ou argumento `--server`.
  • Escopo:
   - `--block <altura>`: bloco único;
   - `--range <início> <fim>`: intervalo;
   - Sem argumentos: toda a blockchain.
  • Para cada bloco:
   - Busca via `get_block_info`;
   - Extrai `real_reward` do cabeçalho;
   - Calcula `coinbase_outputs` via vout da miner_tx;
   - Valida integridade de `vin` (entrada única e válida);
   - Aplica tolerância de 1e9 unidades atômicas (0.001 XMR);
   - Escreve em CSV e log detalhado.

Etapa 2: Validação Independente (audit-xmr-check)

  • Lê o CSV gerado;
  • Refaz auditoria via RPC;
  • Compara os campos;
  • Reporta "OK" ou "ERRO" com detalhes.

Detecção de Fraudes

O sistema identifica e reporta automaticamente:

  • Reward != CoinBase: Recompensa não bate com as saídas.
  • Reward != TotalMined: Divergência entre recompensa e mineração (coinbase_outputs).
  • CoinBase inválida: Estrutura incorreta da transação coinbase.
   Importante:

Essas discrepâncias podem indicar nós maliciosos ou corrupção de dados.

Compilação e Execução

Build

root # ./build_gpp.sh

Ou:

root # ./build_cmake.sh

Configuração

Exemplo de `audit-xmr.cfg`:

root # audit-xmr.cfg
rpc_url=http://192.168.200.252:18081/json_rpc
threads=8
output_dir=out
max_retries=99
timeout=30
server=192.168.200.252

Auditoria

Auditar de 0 até 500000:

root # ./audit-xmr --range 0 500000 --threads max

Validação

Verificar o CSV:

root # ./audit-xmr-check out/auditoria_monero.csv

Resultados

  • CSV: altura, hash, recompensa real, coinbase_outputs, total_mined, problemas, status.
  • Log: audit_log.txt com depuração detalhada.

Aplicabilidade Prática

  • Auditoria Local: Verifique se seu próprio nó está íntegro.
  • Auditoria Cruzada: Compare resultados entre diferentes nós.
  • Supply Independente: Valide a emissão total sem confiar em terceiros.
  • Ambiente Offline: Use apenas o CSV em ambientes isolados.

Benefícios para a Comunidade Monero

  • Transparência: Qualquer usuário pode verificar o supply.
  • Descentralização: Sem depender de sites ou empresas.
  • Segurança: Detecta comportamentos anômalos em nós.
  • Performance: Suporte completo a multithreading.

Conclusão

O audit-xmr é uma das ferramentas mais completas para auditoria da supply do Monero. Ele permite auditoria independente, precisa e reproduzível, oferecendo à comunidade um recurso essencial contra fraudes.

   Dica:

Liberdade requer verificação, não confiança.

Próximos Passos

  • Agendar auditorias com cron:
0 0 * * * /caminho/audit-xmr --range 0 $(/caminho/audit-xmr --block-height) >> /caminho/audit.log 2>&1
  • Contribuir com melhorias no repositório open-source.

Veja Também

Cookies nos ajudam a entregar nossos serviços. Ao usar nossos serviços, você concorda com o uso de cookies.