Laudos periciais e depoimentos · Aula 3 de 4
Visualização de fluxos e evidências visuais para tribunais
13 min de leitura
A maioria dos leitores de um relatório de rastreamento olha primeiro as imagens, e alguns nunca chegam a ler o texto. Juízes e jurados lembram-se do diagrama de fluxo muito depois de esquecerem a tabela de transações. Isso torna as figuras a parte mais persuasiva de um caso envolvendo criptoativos e a mais sujeita a questionamentos: um diagrama que transmite mais certeza do que o relatório, ou que não pode ser rastreado até os dados, pode comprometer a credibilidade de tudo o mais que o perito diz. Esta aula aborda como escolher e construir a visualização adequada, mantê-la fiel aos dados e legível e transformá-la em uma peça probatória que o tribunal possa acompanhar, verificar e usar com confiança. O relatório que acompanha as figuras é abordado na Aula 9.2.
Escolha a visualização de acordo com a pergunta
Comece pela pergunta que o leitor precisa ver respondida, não pela ferramenta que você está usando.
| Pergunta do leitor | Melhor visualização | O que ela oculta |
|---|---|---|
| Quanto foi para onde? | Diagrama de Sankey | Cronologia, transações individuais |
| Como esses endereços estão conectados, e por qual caminho? | Grafo de fluxo | Valores, a menos que estejam rotulados |
| Quando as coisas aconteceram, e em que ordem? | Linha do tempo | Estrutura da rede |
| Quais endereços pertencem a qual entidade? | Mapa de clusters | Direção e cronologia dos fluxos |
| Como um saldo ou volume mudou ao longo do tempo? | Gráfico de linhas ou barras | Contrapartes |
Toda visualização simplifica, e cada uma oculta algo. Uma figura destinada ao tribunal deve apresentar uma única afirmação: se o relatório contém quatro constatações, pode precisar de quatro figuras, ou de uma visão geral com figuras detalhadas, cada uma vinculada ao número de uma constatação.
Diagramas de Sankey
Um diagrama de Sankey representa fluxos como faixas cuja largura é proporcional ao valor movimentado. Seu nome vem de Matthew Sankey, que usou um deles em 1898 para mostrar a eficiência energética de uma máquina a vapor, e ele é a forma mais clara de mostrar como uma quantia foi dividida. Exemplo resolvido: um endereço do invasor contém 941,2 ETH após a troca dos ativos roubados, e três faixas saem dele: 600 ETH para um serviço de troca entre blockchains, 300 ETH para uma ponte e 41,2 ETH que permaneceram no endereço. As larguras estão na proporção 600 : 300 : 41,2, de modo que o leitor percebe imediatamente que quase dois terços seguiram por um único caminho.
Regras que mantêm um Sankey fiel aos dados:
- Conserve o valor. O que entra em um nó é igual ao que sai mais o que permanece. Mostre taxas, saldos não gastos e quantias não rastreadas como faixas explícitas ("taxas 0,002 BTC", "não movimentado 41,2 ETH", "não rastreado"); nunca deixe que desapareçam silenciosamente.
- Uma unidade por diagrama. Desenhe um Sankey por ativo ou converta para uma única moeda no momento de cada transferência e informe a fonte da cotação.
- Ordene as colunas por salto ou por tempo, da esquerda para a direita, e informe qual critério foi usado.
- Evite ciclos. Movimentações de ida e volta devem ser representadas em um grafo de fluxo.
Os dados por trás de um Sankey são uma lista de arestas (origem, destino, valor), produzida diretamente a partir de uma tabela do caso com transferências de ETH rastreadas e as mesmas colunas de transactions (Aula 2.7):
-- Lista de arestas para um Sankey: valor movimentado entre entidades rotuladas
SELECT
COALESCE(ls.entity, t.from_address) AS source,
COALESCE(lt.entity, t.to_address) AS target,
SUM(t.value) / 1e18 AS eth_moved, -- valor em wei, como em transactions
COUNT(*) AS transfers
FROM traced_transfers t
LEFT JOIN labels ls ON ls.address = t.from_address
LEFT JOIN labels lt ON lt.address = t.to_address
GROUP BY 1, 2
ORDER BY eth_moved DESC;
As junções à esquerda usam nomes de entidades quando existe um rótulo e mantêm o endereço bruto caso contrário. Usar, em vez disso, um único agrupamento "Sem rótulo" uniria endereços sem relação entre si e desenharia fluxos que nunca ocorreram. As junções pressupõem um rótulo por endereço (caso contrário, as somas se multiplicam; veja a Aula 2.8), e a divisão por 1e18 resulta em um número de ponto flutuante em muitos mecanismos de banco de dados; portanto, converta para um decimal de alta precisão quando os valores exatos forem importantes.
Grafos de fluxo, linhas do tempo e mapas de clusters
Um grafo de fluxo representa endereços ou entidades como caixas e transferências como setas, a representação natural do trabalho de rastreamento (Aula 3.1).
- Use uma disposição em camadas, da esquerda para a direita, com cada coluna representando um salto ou etapa temporal, para que os leitores acompanhem o dinheiro como acompanham um texto. Disposições dirigidas por força servem apenas para exploração: nelas, a posição é um efeito do algoritmo, e dois nós desenhados próximos parecem relacionados mesmo quando não são.
- Diferencie o observado do inferido. Setas contínuas para transferências registradas na blockchain; setas tracejadas para inferências (uma correspondência de ponte por valor e tempo, uma identificação de saída de troco), com o grau ou termo de probabilidade ao lado.
- Rotule as arestas com valor, data e uma referência curta à transação; mantenha o hash completo no apêndice.
- Mostre onde o rastreamento parou e por quê: "serviço custodial, registros solicitados" ou "rastreamento não prosseguido". O limite é uma escolha, não o fim do dinheiro.
- Mantenha o grafo pequeno. Acima de cerca de 30 a 50 nós, um grafo deixa de ser legível. Condense cadeias de descascamento ("cadeia de descascamento, 9 saltos") e clusters em caixas únicas, com detalhes no apêndice.
Seja qual for a ferramenta usada (entre as abertas estão Graphviz para disposições em camadas e Gephi ou Cytoscape para exploração), exporte a lista de arestas junto com a figura.
Uma linha do tempo responde "quando" e "em que ordem", o que muitas vezes importa mais no tribunal do que o caminho, pois conecta eventos na blockchain a depoimentos de testemunhas e mostra se houve tempo para congelar os ativos. Mostre os horários dos blocos em UTC com as alturas dos blocos e, quando for necessário comparar eventos com relatos de testemunhas, também o horário local vivenciado por elas, informando a diferença em relação ao UTC. Use uma raia por blockchain em casos que envolvam várias blockchains, para que um depósito em ponte e sua liberação fiquem lado a lado. Diferencie eventos na blockchain (uma transação confirmada) de eventos fora da blockchain (o relato da vítima, uma solicitação de congelamento, uma prisão) por forma ou raia, não apenas por cor. Mantenha os intervalos visíveis: uma pausa de três semanas antes de um depósito é evidência; marque qualquer quebra no eixo.
Um mapa de clusters mostra a resolução de entidades: cada cluster como um contêiner com seus endereços ou sua contagem de endereços, e cada motivo para uma ligação (entradas comuns, endereço de depósito compartilhado) como um estilo de linha distinto. Se a área das bolhas indicar tamanho, informe se ela representa a contagem de endereços ou o saldo e alerte o leitor quando um cluster for suspeitosamente grande (Aula 4.4).
Mapas de lugares apresentam um risco especial. A geolocalização de IP a partir de registros de provedores é aproximada, e os endereços podem pertencer a VPNs, provedores de hospedagem ou redes móveis. Mostre essas localizações como uma região ou um raio, com fonte e data, nunca como um marcador em uma rua. A sede registrada de um provedor, seus servidores e seus clientes podem estar em três países diferentes; um mapa de "para onde o dinheiro foi" deve dizer qual deles está mostrando.
Uma figura é uma peça probatória
No tribunal, uma figura faz parte da prova ou, no mínimo, é um resumo no qual o tribunal se apoia. O reconhecimento de um gráfico como prova por si só ou apenas como recurso auxiliar varia entre sistemas; de qualquer forma, trate-o como uma peça probatória. Ele precisa de um identificador único e uma versão correspondentes ao relatório, do limite de coleta dos dados e dos dados de origem, das linhas do apêndice que sustentam cada aresta, valor e data, e do autor e da ferramenta. Gere figuras a partir dos dados em vez de desenhá-las e mantenha o arquivo de entrada com seu hash registrado para que o perito da parte contrária possa gerar novamente a mesma imagem:
{
"figure_id": "FIG-04",
"version": 2,
"title": "Movimentação dos 41,6 BTC roubados, 14 a 16 de março de 2026",
"source_file": "fig04_edges_v2.csv",
"source_sha256": "9c1e…a07b",
"appendix_rows": "A14-A31, B3-B9",
"data_cutoff": {"bitcoin_block": 941350, "ethereum_block": 24812000},
"generated_with": {"tool": "biblioteca de código aberto para disposição de grafos", "version": "12.1"},
"supersedes": "FIG-04 v1, relatório v1.0",
"author": "Perito 2"
}
Se uma figura mudar entre o relatório e a audiência, o manifesto registra o motivo, e a versão exibida no tribunal deve ser a que foi disponibilizada às partes. Uma figura que aparece pela primeira vez na audiência, ou difere da versão disponibilizada, é um alvo fácil e pode ser excluída (Aula 8.4).
Projetando para a sala de audiências
Uma figura destinada ao tribunal atende ao juiz ou colegiado, aos julgadores leigos nos sistemas que os utilizam e ao perito da parte contrária, que verificará cada número. Eles podem encontrá-la em cadernos impressos, muitas vezes fotocopiados em escala de cinza e reduzidos; projetada em uma sala de audiências a vários metros de distância; em telas compartilhadas em audiências por videoconferência; ou em arquivos eletrônicos em qualquer dispositivo. Projete para o pior cenário: imprima-a em escala de cinza no tamanho do caderno, veja-a projetada do fundo de uma sala e verifique se todos os rótulos são legíveis sem ampliar.
- Coloque a legenda primeiro, no topo: "linha contínua: transferência registrada na blockchain; linha tracejada: inferência do perito, com seu grau".
- Use nomes simples: "endereço de depósito na Exchange K", não "cluster 88412".
- Contabilize todo o valor: se entraram 41,6 BTC, mostre para onde foram todos os 41,6 BTC, incluindo taxas, saldos não movimentados e quantias não rastreadas.
Mostrando a incerteza
A incerteza que está clara no relatório muitas vezes desaparece na figura. Indique o grau de cada aresta inferida com os próprios termos do relatório, como "forte suporte" ou "muito provável", e nada mais forte. Mostre intervalos quando os métodos divergirem: se FIFO atribui 2,0 BTC à Exchange K e haircut atribui 0,7 BTC (Aula 3.3), mostre ambos ou o intervalo, não o número mais conveniente. Mostre os candidatos: uma liberação de ponte escolhida entre três é desenhada com suas alternativas ou anotada como "1 de 3 candidatos na janela". Arredonde na figura, seja exato no apêndice: "cerca de 2,95 BTC" na imagem, oito casas decimais na tabela; "1.912.400,000000 USDC" em uma figura sugere uma certeza sobre a atribuição que o valor não proporciona. Date cada valor em moeda fiduciária, com a fonte da cotação e a indicação de que se refere ao momento de cada transferência, do roubo ou do relatório; em um mercado volátil, esses valores podem diferir por múltiplos.
Evitando visualizações enganosas
As visualizações enganam com mais frequência pela disposição do que por dados errados:
- Eixos truncados ou inconsistentes: um gráfico de barras que começa em 900 ETH faz 950 parecer o dobro de 925. Use uma única escala em gráficos destinados à comparação.
- Área versus comprimento: se o raio da bolha representa o valor, dobrar o raio quadruplica a área. Dimensione a área, não o raio.
- Escalas logarítmicas não identificadas são interpretadas como lineares.
- Cor tendenciosa: vermelho para uma entidade apenas suspeita sugere um veredito; reserve cores de alerta para fatos estabelecidos, como um contrato de exploração confirmado.
- Omissão seletiva: mostrar apenas caminhos que chegam ao suspeito e omitir fluxos maiores para outros destinos.
Antes de uma figura entrar no caderno, um revisor que não a produziu realiza uma verificação pré-audiência:
| Verificação | Pergunta a fazer |
|---|---|
| Consistência | A figura afirma ou sugere alguma certeza que o relatório não apresenta? |
| Redação neutra | Os rótulos estão livres de conclusões jurídicas como "lavagem de dinheiro" ou "produto de crime"? |
| Cor neutra | A cor de alerta está reservada a fatos estabelecidos? |
| Completude | Os fluxos que se afastam do suspeito são mostrados com a mesma clareza que os fluxos em sua direção? |
| Teste de imparcialidade | O perito da parte contrária concordaria que a figura reflete os dados, mesmo contestando a inferência? |
| Teste do meio de apresentação | Ela é legível impressa em escala de cinza e projetada a partir do fundo da sala? |
| Legenda | A legenda apresenta a conclusão nos termos do relatório e cita a constatação? |
Uma animação que faz os fundos "correrem" pelos endereços sugere velocidade e certeza que os dados podem não sustentar e não pode integrar um caderno impresso. Prepare uma versão estática de cada sequência animada, disponibilize ambas às partes e faça o quadro final idêntico à figura estática.
Acessibilidade
Relatórios são lidos em celulares, impressos em escala de cinza e lidos por pessoas com deficiência na visão de cores, que afeta aproximadamente 1 em cada 12 homens e 1 em cada 200 mulheres. As Diretrizes de Acessibilidade para Conteúdo Web (WCAG 2.1 e 2.2) fornecem metas úteis mesmo para documentos: contraste de texto de pelo menos 4,5:1 (3:1 para texto grande), pelo menos 3:1 para elementos gráficos significativos, como linhas e faixas, e nunca apenas a cor para transmitir significado. Linhas contínuas para o observado e tracejadas para o inferido também funcionam em escala de cinza. Dê a cada figura um texto alternativo ou uma legenda que apresente a conclusão ("dois terços dos fundos foram para a troca entre blockchains"), não apenas uma descrição ("um diagrama de Sankey"), e inclua a tabela subjacente no apêndice para que usuários de leitores de tela e revisores recebam as mesmas informações.
Foco no exame: adequar a visualização à pergunta (Sankey para valores, grafo de fluxo para caminhos, linha do tempo para ordem, mapa de clusters para resolução de entidades) e uma afirmação por figura; regras do Sankey (conservação, taxas e quantias não rastreadas explícitas, uma unidade, sem ciclos); construção de uma lista de arestas sem unir endereços sem rótulo; disposições em camadas versus dirigidas por força; setas contínuas para transferências registradas, tracejadas e com grau indicado para inferências, e indicação de onde o rastreamento parou; UTC mais horário local informado e eventos na blockchain e fora dela separados nas linhas do tempo; geolocalização de IP como região com fonte, nunca como marcador de rua; uma figura como peça probatória com identificador, versão, limite de coleta, hash da origem e linhas do apêndice, correspondendo à versão disponibilizada às partes; projeto para impressão em escala de cinza e projeção; apresentação de intervalos entre métodos, candidatos à correspondência e valores datados em moeda fiduciária; disposições enganosas e a verificação pré-audiência; versões estáticas de animações; metas WCAG de 4,5:1 para texto e 3:1 para elementos gráficos.