Rastreo y grafos de transacciones · Lección 2 de 6
Rastreo con rigor probatorio
14 min de lectura
Cualquier analista puede seguir una transacción en un explorador. Un rastreo forense es diferente: un fiscal puede leerlo antes de decidir si presenta cargos, un tribunal puede basarse en él para inmovilizar los bienes de una persona y un perito de la parte contraria puede repetirlo línea por línea. Esta lección aborda qué afirma un rastreo, cómo graduarlo y delimitarlo, cómo registrar cada salto para que pueda comprobarse y cómo la repetición independiente convierte un rastreo en evidencia.
Rastreo hacia adelante y hacia atrás
El rastreo hacia adelante parte de un origen conocido, como una dirección de un robo, un pago de rescate o una billetera sancionada, y sigue las aristas salientes para averiguar qué servicios recibieron los fondos, qué direcciones aún los conservan y si es posible inmovilizar alguno. El rastreo hacia atrás parte de un destino, normalmente un depósito en un exchange, y sigue las aristas entrantes para responder a la pregunta «¿de dónde provino este dinero?». Los equipos de riesgo de los exchanges lo utilizan para las comprobaciones del origen de los fondos: un depósito situado a un salto de un mercado de la darknet presenta un riesgo distinto al de uno situado a diez saltos y que ha pasado por un exchange de gran tamaño.
Ambas direcciones miden la distancia en saltos, el número de transferencias entre dos puntos. La exposición directa significa que la contraparte está a un salto; la exposición indirecta significa que el vínculo pasa por direcciones intermedias. El número de saltos solo tiene sentido en un grafo cuidadosamente definido (lección 3.1): un salto en un grafo de entidades puede equivaler a diez en un grafo de direcciones.
Qué afirma un rastreo
Un rastreo es una afirmación sobre el flujo de valor: el valor que salió de la dirección A llegó a la dirección B por una ruta indicada, conforme a un método de asignación declarado y según lo observado hasta un bloque determinado. No es una afirmación sobre la identidad. «Los fondos del rescate llegaron a una dirección de depósito del Exchange K» es un hallazgo de rastreo. «El sospechoso recibió el rescate» combina un hallazgo de rastreo, una atribución y, normalmente, registros obtenidos mediante un procedimiento legal (lección 4.5).
Estas afirmaciones pueden fallar por motivos distintos. Cualquiera que tenga una copia de la cadena puede verificar un flujo; una atribución se apoya en etiquetas, registros o heurísticas que pueden ser erróneos o estar desactualizados. Si se mezclan en una sola frase, al perito de la defensa le bastará con refutar la afirmación más débil para desacreditar ambas. Descomponga cada hallazgo en tres preguntas:
| Pregunta | Evidencia habitual | Debilidad habitual |
|---|---|---|
| Flujo: ¿se movió valor de A a B? | Datos de transacciones verificados en un nodo | Prácticamente ninguna una vez que el bloque es definitivo |
| Asignación: ¿qué parte de ese valor corresponde al valor de interés? | Un método de rastreo declarado | El resultado depende del método elegido |
| Control: ¿quién controla A o B? | Heurísticas, etiquetas, registros de proveedores | Tasas de error, etiquetas desactualizadas, direcciones compartidas |
Tres tipos de vínculo
Cada salto se apoya en uno de tres tipos de vínculo.
Un vínculo determinista está inscrito en los propios datos de la cadena. En una cadena UTXO, una entrada que gasta una salida anterior vincula las dos transacciones. En una cadena de cuentas, una transacción exitosa que transfiere valor a una dirección, o un evento Transfer emitido por el contrato del token en una transacción exitosa, es determinista. Cualquiera que ejecute un nodo obtiene la misma respuesta.
Un vínculo heurístico aplica una regla que suele cumplirse, pero tiene excepciones conocidas: la heurística de propiedad común de las entradas, la detección de cambio o el reenvío desde una dirección de depósito a una billetera caliente (lecciones 4.1 y 4.2). Cada una tiene modos de fallo documentados, como las transacciones CoinJoin o las billeteras que aleatorizan el cambio.
Una inferencia es una conclusión basada en patrones circunstanciales: un retiro de un importe similar 20 minutos después de un depósito, un patrón coincidente de horas del día o una fuente común de fondos para gas. Las inferencias son pistas. Justifican una solicitud de registros; rara vez se sostienen por sí solas como hallazgos.
Un vínculo determinista demuestra que se movió valor de una dirección a otra. No demuestra que una misma persona controle ambos extremos y, cuando varias entradas se combinan en una transacción, no indica qué parte de una salida es «el dinero robado». Esas son cuestiones de control y asignación.
Contaminación y reglas de detención
La contaminación es la proporción de un saldo o una transferencia que el analista atribuye al origen de interés. No es una propiedad de las monedas; es el resultado de una regla que aplica el analista. Cuando el valor contaminado y el limpio coinciden en una dirección o transacción, una regla de asignación determina qué valor saliente lleva la contaminación:
| Regla | Supuesto | ¿Conserva el valor? |
|---|---|---|
| FIFO (primero en entrar, primero en salir) | Los fondos se comportan como una cola | Sí |
| LIFO (último en entrar, primero en salir) | Los fondos se comportan como una pila | Sí |
| Haircut (prorrateo) | Los fondos se mezclan perfectamente | Sí |
| Poison | Cualquier contacto contamina todos los flujos salientes posteriores | No |
Los métodos poison y haircut recibieron sus nombres en un estudio temprano sobre la puntuación de riesgo de Bitcoin (Möser, Böhme y Breuker, 2014); FIFO toma prestada la convención contable para cuentas bancarias con fondos mezclados. Ninguno es «correcto»; cada uno es un modelo y pueden señalar a distintos destinatarios para los mismos fondos robados. La lección 3.3 los desarrolla con un libro de movimientos y aborda cómo elegir y defender un método. A gran escala, las diferencias se vuelven drásticas: en «Bitcoin Redux» (2018), Anderson, Shumailov, Ahmed y Rietmann rastrearon los 46.653 BTC robados en el robo de Linode de 2012 y descubrieron que haircut contaminaba aproximadamente el 93% de las direcciones de su conjunto de datos, mientras que FIFO contaminaba alrededor del 1,3%. Poison se propaga aún más rápido, por lo que es adecuado para marcar contactos, nunca para determinar importes. Cuando un resultado sea importante, ejecute el rastreo con dos métodos: si ambos apuntan al mismo servicio, aumenta la confianza; si divergen, informe del intervalo.
Todo rastreo también necesita reglas de detención, decididas de antemano y consignadas en las notas del caso:
- Servicio alcanzado: los fondos entran en un exchange, un procesador de pagos u otro servicio de custodia, donde termina el rastreo en cadena y los registros toman el relevo (lección 3.4).
- Umbral de dilución: la proporción contaminada cae por debajo de un nivel establecido, por ejemplo, el 1%.
- Límite de saltos: una distancia máxima, por ejemplo, de 3 a 6 saltos, más allá de la cual los vínculos son demasiado débiles para incluirlos en el informe.
- Importe mínimo: importes demasiado pequeños para ser relevantes, como el polvo por debajo de una fracción fija de la suma original.
- Ventana temporal: las transferencias que se produjeron antes de que llegaran los fondos no pueden contenerlos.
Es fácil olvidar la última regla en una consulta. Una dirección que recibió fondos robados el 10 de marzo y pagó a alguien el 2 de marzo no le pagó con esos fondos robados.
Graduación de los vínculos
Un rastreo necesita una escala de graduación declarada para que cada vínculo tenga un grado que el lector pueda interpretar. Las unidades diseñan sus propias escalas; la siguiente es ilustrativa, no una norma publicada, y este curso la utiliza de forma sistemática (las lecciones 4.5 y 5.3 la amplían a la atribución y a los vínculos entre cadenas).
| Grado | Fundamento | Ejemplo |
|---|---|---|
| A, registrado en cadena | Vínculo determinista verificado con un nodo | Una entrada gasta la salida 0 de la transacción anterior |
| B, corroborado | Una heurística confirmada por evidencia independiente, como registros del proveedor o una segunda heurística no relacionada | Una presunta dirección de depósito que confirman los registros del exchange |
| C, heurística única | Una heurística con modos de fallo conocidos | Una salida de cambio seleccionada por coincidencia del tipo de script |
| D, inferencia | Solo correlación o patrón | Un importe similar retirado poco después de un depósito |
Dos reglas hacen que la escala sea útil. Primero, una ruta solo es tan sólida como su vínculo más débil: un rastreo de cinco saltos con un salto de grado C es una ruta de grado C para cualquier afirmación que dependa de ese salto. Segundo, gradúe cada afirmación, no cada transacción: el mismo salto puede tener un flujo de grado A y una afirmación de control de grado C. La formulación de la probabilidad y la confianza en el informe se aborda en la lección 9.2.
Ejemplo de una ruta de rastreo
Una víctima pagó un rescate de 2,50000000 BTC. El examinador lo rastrea hacia adelante:
| Salto | Transacción | Observación | Flujo | Afirmación de control |
|---|---|---|---|---|
| H1 | a71f…09d2 | La billetera de la víctima paga 2,50000000 BTC a bc1q…ra5m | A | El registro de pago de la víctima confirma al remitente (B) |
| H2 | 5d07…e310 | Gasta la salida de 2,5 BTC más 0,80000000 BTC de bc1q…x8w2; una salida de 3,29990000 BTC a bc1q…c0n1; comisión de 0,00010000 | A | bc1q…x8w2 está controlada por el mismo actor: heurística de entradas comunes (C) |
| H3 | 9c1e…44ab | bc1q…c0n1 paga 1,20000000 BTC a bc1q…dx7e y 2,09980000 BTC a bc1q…p3e9; comisión de 0,00010000 | A | bc1q…dx7e es una dirección de depósito del Exchange K: sus fondos se consolidan junto con los de depósitos conocidos (C) |
Los importes cuadran: 2,5 + 0,8 = 3,3 BTC de entrada, 3,2999 de salida más 0,0001 de comisión; después, 1,2 + 2,0998 + 0,0001 = 3,2999. El flujo desde la dirección del rescate hasta bc1q…dx7e es de grado A en cada salto y no depende de la heurística de entradas comunes en H2: el valor se movió independientemente de quién fuera el propietario de bc1q…x8w2. Lo que cambia el panorama es la asignación. Los 2,5 BTC se combinaron con 0,8 BTC de origen desconocido, por lo que la parte del depósito de 1,2 BTC que se considera procedente del rescate depende del método. Con haircut es 1,2 × 2,5 ÷ 3,3 = 0,90909091 BTC; con cualquier método que conserve el valor, no puede superar los 1,2 BTC. La etiqueta de dirección de depósito permanece en el grado C hasta que los registros del Exchange K la confirmen, momento en el que asciende a B.
Los casos públicos muestran la misma estructura. En junio de 2021, los investigadores anunciaron la incautación de 63,7 BTC de los aproximadamente 75 BTC del rescate pagado tras el ataque a Colonial Pipeline. Según el comunicado oficial, siguieron múltiples transferencias en el libro de registro público hasta una dirección cuya clave privada estaba en poder de los investigadores. El rastreo estableció adónde fue el valor; la incautación dependió de evidencia independiente sobre el control de la clave.
Documentación de cada salto
Cada salto se incorpora a un registro estructurado, redactado cuando se examina el salto, no reconstruido al elaborar el informe. Un 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": "salida 0; los fondos del destinatario se consolidan junto con los de depósitos conocidos de K (véase ATTR-11)",
"source": "nodo propio, Bitcoin Core 29.0, comprobado 2026-03-05T09:12Z",
"examiner": "EX-07"
}
El registro identifica la salida exacta, porque una transacción puede pagar a varias partes; almacena el importe como un número entero de satoshis para evitar desviaciones por redondeo; y conserva tanto el hash del bloque como su altura para que pueda detectarse una reorganización o un error de escritura. Separa la asignación y los grados de los hechos observados, cita el fundamento de cada afirmación no determinista y registra la fuente de los datos y cuándo se comprobó, en UTC. En las cadenas de cuentas, un índice de registro o una posición de traza sustituye a la referencia de salida. El cálculo de hashes y la preservación de estos registros se abordan en las lecciones 8.2 y 8.3.
Expansión de saltos en SQL
Un rastreo hacia adelante acotado puede comenzar como una consulta recursiva sobre una lista de aristas (lección 3.1). La mayoría de los motores admiten CTE recursivas, pero no todos; en algunos almacenes de datos, en su lugar se itera salto a salto desde un cuaderno.
WITH RECURSIVE hops AS (
SELECT dst AS address, 1 AS hop, block_number
FROM edges
WHERE src = '0xa1b2…9f' -- semilla: la dirección del robo, en 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 -- el tiempo avanza
WHERE h.hop < 4 -- límite de saltos
AND NOT EXISTS (SELECT 1 FROM labels AS l -- detenerse en los servicios
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;
La parte recursiva sigue las aristas salientes únicamente a partir del bloque en el que llegaron los fondos, se detiene a los cuatro saltos y no se expande a través de direcciones etiquetadas como servicios de custodia en la tabla labels de la lección 2.7: tres reglas de detención incorporadas a la consulta. Encuentra direcciones alcanzables, pero no asigna importes, para lo cual se necesitan los flujos entrantes y salientes ordenados de cada dirección. El número de rutas se dispara en torno a las direcciones con mucha actividad, otra razón para detenerse en los servicios.
Repetición independiente
La evidencia de la cadena de bloques tiene una ventaja poco habitual: los datos subyacentes son públicos e idénticos para todos los que validan la cadena. Por tanto, otra persona puede repetir un rastreo a partir de los datos en bruto, y debería hacerlo.
ISO/IEC 27037 distingue la repetibilidad, obtener los mismos resultados con el mismo procedimiento en el mismo entorno, de la reproducibilidad, obtener los mismos resultados con el mismo método en un entorno diferente, por ejemplo, con otro examinador que utilice otro nodo o herramienta. La repetición pone a prueba la reproducibilidad con dos niveles de rigor:
- Verificación: un segundo examinador comprueba cada registro de salto con su propio nodo: el txid existe, la salida y el importe coinciden, el hash del bloque coincide y el bloque es definitivo.
- Repetición independiente: el segundo examinador parte únicamente de las semillas, el alcance, el método y las reglas de detención, sin ver la ruta del primer examinador, y vuelve a realizar el rastreo. La concordancia significa entonces más que una comprobación aritmética, y trabajar a ciegas reduce el sesgo de confirmación.
Cuando los resultados difieran, localice el primer salto en el que divergen y registre la causa: una identificación distinta del cambio, un método de asignación diferente, un bloque de corte posterior o una transferencia interna omitida. Resuélvalo a partir de los datos en bruto y conserve el desacuerdo y su resolución en el expediente del caso. Un rastreo que un segundo examinador competente no pueda reproducir no está listo para servir de fundamento. La validación de herramientas y la repetición de rastreos fuera de la herramienta se abordan en la lección 3.6.
Enfoque del examen: rastreo hacia adelante frente a rastreo hacia atrás, saltos y exposición directa frente a indirecta; que un rastreo afirma un flujo de valor, no una identidad, y la separación entre flujo, asignación y control; vínculos deterministas, vínculos heurísticos e inferencias, y lo que no demuestra un vínculo determinista; la contaminación como resultado de una regla declarada, qué reglas conservan el valor y la diferencia de propagación entre haircut y FIFO a gran escala; reglas de detención, en especial que los flujos salientes anteriores a un flujo entrante no pueden contenerlo; una escala de graduación declarada y la regla del vínculo más débil; conciliación de importes y comisiones salto a salto; los campos de un registro de salto; repetibilidad frente a reproducibilidad (ISO/IEC 27037) y verificación frente a repetición independiente.