213 lines
6.8 KiB
Markdown
213 lines
6.8 KiB
Markdown
# Txoko Node Dashboard
|
|
|
|
Suite de auditoría de privacidad Bitcoin para nodos propios.
|
|
|
|
**your node, your rules** — ninguna consulta sale de tu red.
|
|
|
|
---
|
|
|
|
## Qué es
|
|
|
|
Txoko es una herramienta de auditoría de privacidad Bitcoin que corre sobre tu propio nodo. Analiza tus transacciones y te explica qué puede deducir un observador externo sobre tu actividad on-chain.
|
|
|
|
No es un explorador de bloques genérico. Es una herramienta para que el propietario de un nodo audite su propia privacidad con total control sobre sus datos.
|
|
|
|
Lo esencial: **ninguna consulta sale de tu red**. Todo el análisis ocurre en tu nodo y en tu navegador. No dependes de servicios externos ni expones qué transacciones o direcciones estás investigando.
|
|
|
|
---
|
|
|
|
## Qué NO hace
|
|
|
|
Tan importante como saber qué hace es saber qué no hace:
|
|
|
|
- **No envía datos a ningún servidor externo** — ni analíticas, ni telemetría, ni consultas a APIs de terceros
|
|
- **No identifica a otras personas** — es una herramienta de auto-auditoría, no de vigilancia
|
|
- **No da consejos de inversión** — analiza privacidad on-chain, nada más
|
|
- **No afirma más de lo que sabe** — distingue siempre entre CERTEZA, PROBABLE e POSIBLE
|
|
- **No tiene número de score exacto** — muestra bandas (ALTA/MEDIA/BAJA); la precisión numérica sería falsa
|
|
- **No muestra el contenido de OP_RETURN** — solo informa de su presencia y tamaño
|
|
|
|
---
|
|
|
|
## Cómo verificar que nada sale de tu red
|
|
|
|
El código es un único archivo HTML autocontenido. Puedes auditarlo tú mismo:
|
|
|
|
```bash
|
|
# Buscar cualquier llamada a dominios externos
|
|
grep -E "fetch\(|XMLHttpRequest|src=\"http|href=\"http" dashboard.html
|
|
```
|
|
|
|
Verás que todas las llamadas van a rutas relativas (`/api/`, `/system/`) que apuntan a tu propio nodo vía nginx. No hay ninguna llamada a dominios externos en el código de análisis.
|
|
|
|
Las únicas dependencias externas son las librerías del frontend (React, Babel) que se cargan desde CDN al abrir la página. Estas no reciben ningún dato de tus transacciones — solo sirven el código de la interfaz.
|
|
|
|
---
|
|
|
|
## Funcionalidades
|
|
|
|
**Auditoría de privacidad**
|
|
- Análisis de transacción con más de 20 heurísticas ponderadas
|
|
- Detección de CoinJoin: Whirlpool (denominaciones fijas), WabiSabi (estructura de mezcla), CoinJoin genérico
|
|
- Detección de OP_RETURN: presencia y tamaño, sin mostrar contenido
|
|
- Detección de tipo legacy (P2PKH/P2SH) vs SegWit/Taproot
|
|
- Wallet fingerprinting: Bitcoin Core, Sparrow, BlueWallet, Taproot nativo y otros
|
|
- Detección de entidades: OFAC, pools de minería, exchanges conocidos (~745 direcciones)
|
|
- Rastro de procedencia: sigue cada input hacia atrás salto a salto, bajo demanda
|
|
- Distancia a entidad: a cuántos saltos está lo más cercano de cada tipo marcado
|
|
- Informe narrativo: qué puede deducir un analista, en prosa, sin jerga
|
|
- Bandas de privacidad con distinción explícita CERTEZA / PROBABLE / POSIBLE
|
|
- Exportación del informe en JSON y Markdown
|
|
|
|
**Exploración on-chain**
|
|
- UTXO Map con score de privacidad por moneda, exportable a CSV
|
|
- Explorador de bloques y búsqueda on-chain
|
|
- Mempool: stats, fees, fee intelligence, bloques proyectados
|
|
|
|
**Monitor del nodo**
|
|
- Estado de Bitcoin Core, sistema (CPU, RAM, disco) y logs en tiempo real
|
|
- Checklist de seguridad del nodo
|
|
|
|
**Herramientas**
|
|
- Conversor sat/BTC/fiat
|
|
- Validador de dirección
|
|
- Detector OP_RETURN
|
|
- Decodificador PSBT y transacción raw
|
|
|
|
---
|
|
|
|
## Filosofía
|
|
|
|
- **Sin dependencias externas de datos** — todo viene de tu propio nodo
|
|
- **Honestidad sobre la certeza** — siempre distingue hechos de inferencias
|
|
- **Informa, no aconseja** — da el dato y la consecuencia; tú decides
|
|
- **Calibrado al riesgo real** — no alarma por lo normal; reserva la alerta para lo que importa
|
|
- **Ligero por defecto** — el rastro de procedencia es bajo demanda para no estresar el nodo
|
|
|
|
---
|
|
|
|
## Requisitos
|
|
|
|
- Bitcoin Core con `txindex=1`
|
|
- [Mempool.space self-hosted](https://github.com/mempool/mempool) (backend API)
|
|
- [Fulcrum](https://github.com/cculianu/Fulcrum) (índice Electrum, recomendado)
|
|
- nginx como proxy inverso
|
|
- Acceso via Tailscale, red local o similar
|
|
|
|
Probado sobre Ubuntu Server 24.04 con HP EliteDesk (i5, 32GB RAM, 2TB NVMe).
|
|
|
|
---
|
|
|
|
## Instalación
|
|
|
|
### 1. Clonar el repositorio
|
|
|
|
```bash
|
|
git clone https://git.bitcointxoko.org/pikaro/txoko-dashboard.git
|
|
cd txoko-dashboard
|
|
```
|
|
|
|
### 2. Copiar el dashboard
|
|
|
|
```bash
|
|
cp dashboard.html /var/www/txoko/dashboard.html
|
|
# o donde lo sirvas con nginx
|
|
```
|
|
|
|
### 3. Copiar el backend de métricas
|
|
|
|
```bash
|
|
cp system-metrics.js /home/armg/txoko/system-metrics.js
|
|
```
|
|
|
|
Editar `system-metrics.js` y añadir tus credenciales RPC de Bitcoin Core
|
|
(el archivo del repo usa placeholders).
|
|
|
|
### 4. Configurar el servicio systemd
|
|
|
|
```bash
|
|
sudo cp txoko-metrics.service /etc/systemd/system/
|
|
sudo systemctl daemon-reload
|
|
sudo systemctl enable txoko-metrics
|
|
sudo systemctl start txoko-metrics
|
|
```
|
|
|
|
### 5. Configurar nginx
|
|
|
|
Añadir a tu configuración de nginx:
|
|
|
|
```nginx
|
|
# Dashboard
|
|
location /dashboard {
|
|
alias /var/www/txoko/dashboard.html;
|
|
}
|
|
|
|
# API Mempool (ajusta el puerto según tu instalación)
|
|
location /api/ {
|
|
proxy_pass http://localhost:8999;
|
|
}
|
|
|
|
# Métricas del sistema
|
|
location /system/ {
|
|
proxy_pass http://127.0.0.1:4082;
|
|
}
|
|
```
|
|
|
|
### 6. Abrir en el navegador
|
|
|
|
```
|
|
http://TU-IP-TAILSCALE:4080/dashboard
|
|
```
|
|
|
|
Introduce la URL de tu Mempool en el modal de configuración y empieza a analizar.
|
|
|
|
---
|
|
|
|
## Estructura del repositorio
|
|
|
|
```
|
|
txoko-dashboard/
|
|
├── dashboard.html # Frontend completo (HTML + CSS + JS en un solo archivo)
|
|
├── system-metrics.js # Backend de métricas del nodo (Node.js)
|
|
├── txoko-metrics.service # Servicio systemd
|
|
├── README.md
|
|
├── SETUP.md
|
|
├── CHANGELOG.md
|
|
└── LICENSE
|
|
```
|
|
|
|
El frontend es un único archivo HTML autocontenido. Sin bundler, sin npm, sin proceso de build. Babel transpila el JSX en el navegador. Puedes auditarlo todo abriendo el archivo.
|
|
|
|
---
|
|
|
|
## Limitaciones conocidas
|
|
|
|
- **Análisis de transacción aislada** — sin seguir el grafo completo, algunas heurísticas tienen techo. El rastro de procedencia amplía el contexto pero es bajo demanda y no exhaustivo
|
|
- **Base de datos de entidades parcial** — ~745 direcciones de exchanges, OFAC y minería. Cubre los casos más comunes; no es completa
|
|
- **Fingerprinting conservador** — requiere varias señales coincidentes; prefiere no detectar antes que detectar mal
|
|
- **Sin análisis de red** — no cruza datos con otros nodos ni mempool distribuida
|
|
|
|
---
|
|
|
|
## Historial de cambios
|
|
|
|
Los cambios de cada versión se documentan en [CHANGELOG.md](CHANGELOG.md).
|
|
|
|
---
|
|
|
|
## Contribuir
|
|
|
|
Proyecto en desarrollo activo. Issues y PRs bienvenidos.
|
|
|
|
Si encuentras un falso positivo en alguna heurística o tienes un caso de prueba interesante, abre un issue con el txid y lo que esperabas ver.
|
|
|
|
---
|
|
|
|
## Licencia
|
|
|
|
MIT — ver [LICENSE](LICENSE)
|
|
|
|
---
|
|
|
|
*₿ txoko · your node, your rules*
|