Rastreamento e grafos de transações · Aula 2 de 6
Rastreamento segundo um padrão probatório
13 min de leitura
Qualquer analista pode acompanhar uma transação em um explorador. Um rastreamento forense é diferente: um promotor pode lê-lo antes de decidir sobre uma acusação, um tribunal pode se apoiar nele para bloquear o patrimônio de alguém, e um perito da parte contrária pode refazê-lo linha por linha. Esta aula aborda o que um rastreamento afirma, como classificá-lo e delimitá-lo, como registrar cada salto para que ele possa ser verificado e como a reexecução independente transforma um rastreamento em prova.
Rastreamento para a frente e para trás
O rastreamento para a frente parte de uma origem conhecida, como um endereço de furto, um pagamento de resgate ou uma carteira sancionada, e segue as arestas de saída para descobrir quais serviços receberam os fundos, quais endereços ainda os mantêm e se algum valor pode ser bloqueado. O rastreamento para trás parte de um destino, normalmente um depósito em uma exchange, e segue as arestas de entrada para responder à pergunta "de onde veio esse dinheiro?". As equipes de risco das exchanges fazem isso nas verificações de origem dos fundos: um depósito a um salto de um mercado da darknet representa um risco diferente daquele de um depósito a dez saltos, passando por uma grande exchange.
Ambas as direções medem a distância em saltos, o número de transferências entre dois pontos. Exposição direta significa que a contraparte está a um salto de distância; exposição indireta significa que a ligação passa por endereços intermediários. A contagem de saltos só tem significado em um grafo cuidadosamente definido (Aula 3.1): um salto em um grafo de entidades pode corresponder a dez em um grafo de endereços.
O que um rastreamento afirma
Um rastreamento é uma afirmação sobre o fluxo de valor: o valor que saiu do endereço A chegou ao endereço B por um caminho declarado, segundo um método de alocação declarado, conforme observado até um bloco declarado. Não é uma afirmação sobre identidade. "Os valores do resgate chegaram a um endereço de depósito da Exchange K" é uma constatação de rastreamento. "O suspeito recebeu o resgate" combina uma constatação de rastreamento, uma atribuição e, normalmente, registros obtidos por meio de procedimento legal (Aula 4.5).
Essas afirmações falham de maneiras diferentes. Qualquer pessoa com uma cópia da blockchain pode verificar um fluxo; uma atribuição se apoia em rótulos, registros ou heurísticas que podem estar errados ou desatualizados. Misture-os em uma única frase e um perito da defesa só precisará refutar a afirmação mais fraca para desacreditar ambas. Divida cada constatação em três perguntas:
| Pergunta | Evidência típica | Fragilidade típica |
|---|---|---|
| Fluxo: o valor se moveu de A para B? | Dados da transação verificados em um nó | Quase nenhuma depois que o bloco é finalizado |
| Alocação: quanto desse valor é o valor de interesse? | Um método de rastreamento declarado | O resultado depende do método escolhido |
| Controle: quem controla A ou B? | Heurísticas, rótulos, registros de provedores | Taxas de erro, rótulos desatualizados, endereços compartilhados |
Três tipos de ligação
Cada salto se apoia em um de três tipos de ligação.
Uma ligação determinística está registrada nos próprios dados da blockchain. Em uma blockchain UTXO, uma entrada que gasta uma saída anterior liga as duas transações. Em uma blockchain baseada em contas, uma transação bem-sucedida que transfere valor para um endereço, ou um evento Transfer emitido pelo contrato do token em uma transação bem-sucedida, é determinística. Qualquer pessoa que execute um nó obtém a mesma resposta.
Uma ligação heurística aplica uma regra que normalmente se confirma, mas tem exceções conhecidas: a heurística de propriedade comum das entradas, a detecção de troco ou o encaminhamento de um endereço de depósito para uma carteira quente (Aulas 4.1 e 4.2). Cada uma tem modos de falha documentados, como transações CoinJoin ou carteiras que aleatorizam o troco.
Uma inferência é uma conclusão baseada em padrões circunstanciais: um saque de valor semelhante 20 minutos após um depósito, um padrão coincidente de horário do dia, um financiador de gas em comum. Inferências são pistas. Elas justificam uma solicitação de registros; raramente se sustentam sozinhas como constatações.
Uma ligação determinística prova que o valor se moveu de um endereço para outro. Ela não prova que a mesma pessoa controla as duas pontas e, quando várias entradas se unem em uma transação, não indica qual parte de uma saída é "o dinheiro furtado". Essas são questões de controle e alocação.
Contaminação e regras de parada
A contaminação é a parcela de um saldo ou de uma transferência que o analista atribui à origem de interesse. Não é uma propriedade das moedas; é o resultado de uma regra aplicada pelo analista. Quando valores contaminados e limpos se encontram em um endereço ou transação, uma regra de alocação decide qual valor de saída carrega a contaminação:
| Regra | Pressuposto | Conserva o valor? |
|---|---|---|
| FIFO (primeiro a entrar, primeiro a sair) | Os fundos se comportam como uma fila | Sim |
| LIFO (último a entrar, primeiro a sair) | Os fundos se comportam como uma pilha | Sim |
| Haircut (proporcional) | Os fundos se misturam perfeitamente | Sim |
| Poison | Qualquer contato contamina todas as saídas posteriores | Não |
Poison e haircut receberam esses nomes em um estudo inicial de pontuação de risco para Bitcoin (Möser, Böhme e Breuker, 2014); FIFO toma emprestada a convenção contábil para contas bancárias com fundos misturados. Nenhum é "correto"; cada um é um modelo, e eles podem apontar destinatários diferentes para os mesmos fundos furtados. A Aula 3.3 demonstra esses métodos em um livro-razão e aborda como escolher e defender um método. Em escala, as diferenças se tornam expressivas: em "Bitcoin Redux" (2018), Anderson, Shumailov, Ahmed e Rietmann rastrearam os 46.653 BTC furtados no caso Linode de 2012 e constataram que o haircut contaminou cerca de 93% dos endereços de seu conjunto de dados, enquanto o FIFO contaminou cerca de 1,3%. O poison se espalha ainda mais rápido, razão pela qual é adequado para sinalizações de contato, nunca para quantias. Quando um resultado for importante, execute o rastreamento com dois métodos: se ambos apontarem para o mesmo serviço, a confiança aumenta; se divergirem, informe o intervalo.
Todo rastreamento também precisa de regras de parada, definidas previamente e registradas nas anotações do caso:
- Serviço alcançado: os fundos entram em uma exchange, processador de pagamentos ou outro serviço de custódia, onde o rastreamento on-chain termina e os registros passam a ser a fonte (Aula 3.4).
- Limiar de diluição: a parcela contaminada cai abaixo de um nível definido, por exemplo, 1%.
- Limite de saltos: uma distância máxima, por exemplo, de 3 a 6 saltos, além da qual as ligações são fracas demais para serem relatadas.
- Valor mínimo: quantias pequenas demais para serem relevantes, como dust abaixo de uma fração fixa da soma original.
- Janela temporal: transferências que ocorreram antes da chegada dos fundos não podem carregá-los.
A última regra é fácil de esquecer em uma consulta. Um endereço que recebeu fundos furtados em 10 de março e pagou alguém em 2 de março não fez esse pagamento com os fundos furtados.
Classificação das ligações
Um rastreamento precisa de uma escala de classificação declarada, para que cada ligação tenha um grau que o leitor possa interpretar. As unidades elaboram suas próprias escalas; a escala abaixo é ilustrativa, não uma norma publicada, e este curso a utiliza em todas as aulas (as Aulas 4.5 e 5.3 a estendem à atribuição e às ligações entre blockchains).
| Grau | Fundamento | Exemplo |
|---|---|---|
| A, registrado on-chain | Ligação determinística verificada em um nó | Uma entrada gasta a saída 0 da transação anterior |
| B, corroborado | Uma heurística confirmada por evidência independente, como registros de provedores ou uma segunda heurística não relacionada | Um suposto endereço de depósito confirmado pelos registros da exchange |
| C, heurística única | Uma heurística com modos de falha conhecidos | Uma saída de troco escolhida pela correspondência do tipo de script |
| D, inferência | Apenas correlação ou padrão | Valor semelhante sacado pouco depois de um depósito |
Duas regras tornam a escala útil. Primeiro, um caminho é tão forte quanto sua ligação mais fraca: um rastreamento de cinco saltos com um salto de grau C é um caminho de grau C para qualquer afirmação que dependa desse salto. Segundo, classifique cada afirmação, não cada transação: o mesmo salto pode ter um fluxo de grau A e uma afirmação de controle de grau C. A formulação da probabilidade e da confiança no laudo é abordada na Aula 9.2.
Um exemplo de trilha
Uma vítima pagou um resgate de 2,50000000 BTC. O perito o rastreia para a frente:
| Salto | Transação | Observação | Fluxo | Afirmação de controle |
|---|---|---|---|---|
| H1 | a71f…09d2 | A carteira da vítima paga 2,50000000 BTC para bc1q…ra5m | A | O registro de pagamento da vítima confirma o remetente (B) |
| H2 | 5d07…e310 | Gasta a saída de 2,5 BTC mais 0,80000000 BTC de bc1q…x8w2; uma saída de 3,29990000 BTC para bc1q…c0n1; taxa de 0,00010000 | A | bc1q…x8w2 controlado pelo mesmo agente: heurística de entradas comuns (C) |
| H3 | 9c1e…44ab | bc1q…c0n1 paga 1,20000000 BTC para bc1q…dx7e e 2,09980000 BTC para bc1q…p3e9; taxa de 0,00010000 | A | bc1q…dx7e é um endereço de depósito da Exchange K: fundos recolhidos junto com depósitos conhecidos (C) |
Os valores conferem: 2,5 + 0,8 = 3,3 BTC de entrada, 3,2999 de saída mais 0,0001 de taxa; depois, 1,2 + 2,0998 + 0,0001 = 3,2999. O fluxo do endereço do resgate até bc1q…dx7e é de grau A em cada salto e não depende da heurística de entradas comuns em H2: o valor se moveu independentemente de quem controlava bc1q…x8w2. O que muda o cenário é a alocação. Os 2,5 BTC foram unidos a 0,8 BTC de origem desconhecida, de modo que a parcela do depósito de 1,2 BTC considerada como proveniente do resgate depende do método. Pelo haircut, ela é de 1,2 × 2,5 ÷ 3,3 = 0,90909091 BTC; por qualquer método que conserve o valor, ela não pode exceder 1,2 BTC. O rótulo de endereço de depósito permanece no grau C até que os registros da Exchange K o confirmem, quando sobe para B.
Casos públicos mostram a mesma estrutura. Em junho de 2021, investigadores anunciaram a apreensão de 63,7 BTC dos cerca de 75 BTC de resgate pagos após o ataque à Colonial Pipeline. Segundo o comunicado oficial, eles acompanharam várias transferências no livro-razão público até um endereço cuja chave privada estava em poder dos investigadores. O rastreamento estabeleceu para onde o valor foi; a apreensão dependeu de evidências separadas sobre o controle da chave.
Documentação de cada salto
Cada salto é incluído em um registro estruturado, escrito quando o salto é examinado, e não reconstruído no momento de elaborar o laudo. Um registro mínimo para H3:
{
"case_id": "CF-2026-0142",
"hop_id": "H3",
"chain": "bitcoin-mainnet",
"txid": "9c1e…44ab",
"spends": "5d07…e310:0",
"output_ref": "9c1e…44ab:0",
"block_height": 939011,
"block_hash": "0000…3f9a",
"block_time_utc": "2026-03-02T14:07:51Z",
"from": "bc1q…c0n1",
"to": "bc1q…dx7e",
"amount_sat": 120000000,
"allocation": {"method": "haircut", "traced_sat": 90909091},
"grades": {"flow": "A", "control": "C"},
"basis": "saída 0; fundos do destinatário recolhidos junto com depósitos conhecidos de K (ver ATTR-11)",
"source": "nó próprio, Bitcoin Core 29.0, verificado em 2026-03-05T09:12Z",
"examiner": "EX-07"
}
O registro identifica a saída exata, porque uma transação pode pagar várias partes; armazena o valor como um número inteiro de satoshis para evitar desvios de arredondamento; e mantém tanto o hash do bloco quanto sua altura para que uma reorganização ou um erro de digitação possa ser detectado. Ele separa a alocação e os graus dos fatos observados, cita o fundamento de cada afirmação não determinística e registra a fonte dos dados e quando ela foi verificada, em UTC. Em blockchains baseadas em contas, um índice de log ou uma posição no trace substitui a referência da saída. A geração de hashes e a preservação desses registros são abordadas nas Aulas 8.2 e 8.3.
Expansão de saltos em SQL
Um rastreamento para a frente delimitado pode começar como uma consulta recursiva sobre uma lista de arestas (Aula 3.1). A maioria dos mecanismos oferece suporte a CTEs recursivas, mas nem todos; em alguns data warehouses, a alternativa é iterar salto por salto a partir de um notebook.
WITH RECURSIVE hops AS (
SELECT dst AS address, 1 AS hop, block_number
FROM edges
WHERE src = '0xa1b2…9f' -- semente: o endereço do furto, em minúsculas
UNION ALL
SELECT e.dst, h.hop + 1, e.block_number
FROM hops h
JOIN edges e ON e.src = h.address
AND e.block_number >= h.block_number -- o tempo avança
WHERE h.hop < 4 -- limite de saltos
AND NOT EXISTS (SELECT 1 FROM labels AS l -- parar nos serviços
WHERE l.address = h.address
AND l.category IN ('exchange_deposit', 'exchange_hot_wallet',
'payment_processor'))
)
SELECT address, MIN(hop) AS first_hop, COUNT(*) AS paths
FROM hops
GROUP BY address;
A parte recursiva segue as arestas de saída apenas no bloco em que os fundos chegaram ou depois dele, para em quatro saltos e não se expande por endereços rotulados como serviços de custódia na tabela labels da Aula 2.7: três regras de parada incorporadas à consulta. Ela encontra endereços alcançáveis, mas não aloca valores, o que exige as entradas e saídas de cada endereço em ordem. A contagem de caminhos cresce explosivamente em torno de endereços movimentados, mais um motivo para parar nos serviços.
Reexecução independente
A evidência em blockchain tem uma vantagem incomum: os dados subjacentes são públicos e idênticos para todos que validam a blockchain. Portanto, um rastreamento pode ser reexecutado por outra pessoa, a partir dos dados brutos, e deve ser.
A ISO/IEC 27037 distingue repetibilidade, obter os mesmos resultados com o mesmo procedimento no mesmo ambiente, de reprodutibilidade, obter os mesmos resultados com o mesmo método em um ambiente diferente, como outro perito com outro nó ou ferramenta. A reexecução testa a reprodutibilidade, em dois níveis de rigor:
- Verificação: um segundo perito confere cada registro de salto em seu próprio nó: o txid existe, a saída e o valor coincidem, o hash do bloco coincide, o bloco está finalizado.
- Reexecução independente: o segundo perito parte apenas das sementes, do escopo, do método e das regras de parada, sem ver o caminho do primeiro perito, e rastreia novamente. A concordância, então, significa mais do que uma conferência aritmética, e trabalhar às cegas reduz o viés de confirmação.
Quando os resultados diferirem, encontre o primeiro salto em que divergem e registre a causa: uma identificação diferente de troco, um método de alocação diferente, um bloco de corte posterior, uma transferência interna não identificada. Resolva a divergência a partir dos dados brutos e mantenha a discordância e sua resolução nos autos do caso. Um rastreamento que um segundo perito competente não consegue reproduzir não está pronto para servir de fundamento. A validação de ferramentas e a reexecução de rastreamentos fora da ferramenta são abordadas na Aula 3.6.
Foco no exame: rastreamento para a frente versus para trás, saltos e exposição direta versus indireta; o fato de que um rastreamento afirma um fluxo de valor, não identidade, e a separação entre fluxo, alocação e controle; ligações determinísticas, ligações heurísticas e inferências, e o que uma ligação determinística não prova; contaminação como resultado de uma regra declarada, quais regras conservam o valor e a disseminação por haircut versus FIFO em escala; regras de parada, especialmente o fato de que saídas anteriores a uma entrada não podem carregá-la; uma escala de classificação declarada e a regra da ligação mais fraca; conferência de valores e taxas salto por salto; os campos de um registro de salto; repetibilidade versus reprodutibilidade (ISO/IEC 27037) e verificação versus reexecução independente.
Questões de prática
Verifique o que você aprendeu. Estas questões não contam para o exame.
Entre para salvar seu progresso e continuar de onde parou. É grátis. Entrar