Uma blockchain pública mostra cada transação, mas não identifica ninguém. Um endereço é apenas uma sequência de caracteres até que algo o vincule a outros endereços, ou a uma identidade do mundo real. O clustering é o conjunto de técnicas que investigadores usam para dar esse primeiro passo, agrupando endereços que provavelmente pertencem a uma única carteira, entidade ou agente, mesmo quando nada no registro afirma isso explicitamente.
A heurística de titularidade comum de insumos
Essa é a técnica de clustering mais antiga e mais amplamente usada, e ela parte de um fato técnico simples: uma transação no estilo Bitcoin que gasta a partir de múltiplos endereços como insumos (inputs) exige uma assinatura de chave privada válida para cada um desses insumos. Como produzir essa assinatura exige a chave privada, os endereços usados como insumos juntos em uma única transação são, na esmagadora maioria dos casos, controlados pela mesma entidade. Aplicada a um grande histórico de transações, essa heurística sozinha já pode fundir milhares de endereços antes separados em um pequeno número de clusters, cada um representando uma provável carteira ou serviço.
Detecção do endereço de troco
A maioria das transações não gasta um insumo até o último centavo, então a diferença retorna ao remetente como um novo endereço de "troco", tipicamente gerado automaticamente pela própria carteira do remetente. Identificar qual saída de uma transação é o troco, e não o pagamento propriamente dito, permite que um investigador incorpore esse novo endereço ao mesmo cluster dos endereços de insumo. Vários padrões ajudam a distinguir o troco do pagamento: uma saída de troco costuma ser um endereço novo, nunca visto antes no registro, enquanto o endereço de pagamento pode já ter histórico; carteiras frequentemente geram o troco no mesmo formato de endereço e tipo de script dos seus insumos, o que um endereço de pagamento externo pode não seguir; e valores mais redondos e de aparência mais "limpa" tendem a ser o pagamento pretendido com mais frequência do que o troco, que costuma ser uma cifra irregular e residual.
Correspondência de padrões comportamentais
Além dessas regras estruturais, os investigadores também observam comportamentos que tendem a se manter consistentes na atividade de um único agente ao longo do tempo: uma estratégia consistente de seleção de taxas entre transações, um padrão de horário reconhecível, como atividade concentrada em determinadas horas, hábitos de reutilização de endereços, e a assinatura deixada pela forma como um software de carteira específico constrói suas transações. Nenhum desses sinais é conclusivo isoladamente, mas assinaturas comportamentais consistentes, somadas ao clustering estrutural, aumentam de forma significativa a confiança de que clusters separados na verdade pertencem ao mesmo agente subjacente.
Nenhuma heurística de clustering é infalível, e tratar qualquer uma delas isoladamente como prova de titularidade é uma fonte documentada de erro investigativo. Transações no estilo CoinJoin e técnicas de coordenação semelhantes são projetadas especificamente para violar a suposição de titularidade comum de insumos, e uma exchange custodial que agrupa os saques de vários clientes em uma única transação pode fazer usuários sem qualquer relação parecerem falsamente agrupados.
Por que isso é combinado com evidências off-chain
Como qualquer heurística pode gerar falsos positivos nas condições certas, um trabalho de clustering competente raramente é apresentado como uma conclusão isolada. Ele é corroborado, sempre que possível, com evidências off-chain: dados de conheça-seu-cliente (KYC) obtidos por meio de uma solicitação jurídica a uma exchange, dados de IP ou de dispositivo vinculados a uma conta, ou incidentes reportados de forma independente que conectam um cluster a um golpe ou roubo já conhecido. O cluster reduz consideravelmente o campo de candidatos. A evidência corroborante costuma ser o que transforma uma forte probabilidade em algo sobre o qual a equipe de compliance de uma exchange ou um tribunal realmente aja.