⛓️ Blockchain Learning Path GitHub

🔎 Explorador analítico de actividad blockchain

Navegación: 🏠 Programa · 📚 Clases 57–58 · Data Analytics on-chain · 🧪 Catálogo de prácticas · 📖 Glosario

Proyecto final de las clases 57–58 (práctica 83). Integra en una sola herramienta lo construido en los once laboratorios previos: importar un dataset, consultar bloques y transacciones, buscar direcciones, calcular indicadores, construir el grafo, filtrar, detectar patrones, dibujar los resultados y exportar un informe que declara sus propias limitaciones.

⚠️ Qué es y qué no es. Es material educativo sobre datos sintéticos. No es una herramienta certificada para acusar, bloquear ni identificar a nadie. Los patrones que marca son indicadores compatibles con explicaciones legítimas, no pruebas. Una dirección no es una persona. No hay red, ni claves, ni fondos, ni datos personales.

Cómo se ejecuta

pnpm lab:explorador

Con filtros (todos combinables):

node projects/explorador-analitico/explorador.mjs --desde 20 --hasta 40 --activo token
Opción Qué hace
--desde N / --hasta N Acota el rango de bloques
--dia AAAA-MM-DD Restringe a un día concreto
--activo token|nativo|todos Filtra por tipo de activo
--direccion 0x… Solo transferencias donde participa esa dirección
--informe ruta.md Exporta el informe en Markdown a esa ruta

Salida esperada (resumida):

🔎 Explorador analítico de actividad blockchain — datos SINTÉTICOS, sin red ni fondos.

Transferencias que cumplen el filtro: 210 de 210
Bloque 0: 1 transacciones, 1 eventos, día 2026-01-05

Perfil de 0x9002ed11ed11…: recibió 9, envió 0, 9 contrapartes distintas (papel en el dataset: coleccion)

Grafo: 3 componente(s) conexa(s). Direcciones más conectadas: …
Patrones: fan-in 10 · fan-out 6 · pelado 1 · rápidas 67 · anomalías 12
Calidad de las anomalías: precisión 0.25, recall 1.00 (medible SOLO porque el dataset es sintético).

Ese resultado es la lección central de la unidad: recall 1,00 con precisión 0,25 significa que encuentra las tres anomalías plantadas… y arrastra nueve falsos positivos. Bajar el umbral encuentra más y ensucia más. Ese compromiso no se elimina, se decide y se declara.

Qué reutiliza (y por qué no reimplementa nada)

Cada capacidad viene del laboratorio donde se enseñó. Si un cálculo cambia allí, cambia aquí: no hay dos versiones de la misma fórmula compitiendo.

Capacidad De dónde viene
Dataset sintético y verdad de campo cadena-sintetica.mjs
Transferencias y grafo (nodos, aristas, grados, componentes) Laboratorio 78 · grafo-direcciones.mjs
Fan-in, fan-out, pelado y transferencias rápidas Laboratorio 80 · patrones-fan.mjs
Anomalías, evaluación y explicación Laboratorio 81 · deteccion-anomalias.mjs
Indicadores, serie diaria, panel y CSV Laboratorio 82 · panel-indicadores.mjs
Tenencias del token desde eventos Laboratorio 77 · eventos-token.mjs

El informe

explorador.informe(filtro) devuelve un Markdown con seis secciones: consulta, indicadores observados, grafo, patrones detectados con su calidad de detección, clasificación de las afirmaciones y limitaciones. Las dos últimas no son opcionales y las pruebas lo verifican:

Tipo Qué sostiene el informe
Hecho Movimientos, importes y bloques: están en los datos y se verifican
Indicador Los patrones: compatibles con varias explicaciones
Inferencia El papel de una dirección; depende de supuestos declarados
Hipótesis Cualquier atribución a una persona: el informe no la sostiene

Verificación

node --test projects/explorador-analitico/explorador.test.mjs

20 pruebas que comprueban, entre otras cosas, que los filtros se combinan bien, que el perfil de una dirección no contiene campos de identidad, que solo se cuentan como anomalías las observaciones marcadas (el error de composición más fácil de cometer), que el informe incluye siempre sus limitaciones, que el HTML del panel es autocontenido y que dos ejecuciones producen exactamente el mismo informe.

Ideas para extenderlo


🧭 Navegación

🏠 Programa · 📚 Clases 57–58 · 🧪 Cuaderno del bloque · 🎓 Capstone