Track 5 / 5
Más allá: tracepoints y peer-observer
Cómo se observa todo esto en tiempo real y a escala: tracepoints USDT, eBPF, peer-observer y el ecosistema de monitoreo.
Todo lo que hicimos se puede llevar más lejos. Este track no tiene ejercicios: son las herramientas que vimos en la charla.
Tracepoints
Los binarios oficiales de Bitcoin Core para Linux traen tracepoints USDT: puntos del código donde un programa externo se puede enganchar con eBPF para ver cada evento en el momento, sin modificar Core. En 31.1 hay tracepoints para:
net: cada mensaje P2P que entra o sale, conexiones que se abren, se cierran o se desalojan.mempool: txs agregadas, removidas, reemplazadas o rechazadas.validation: bloques conectados.utxocacheycoin_selection.
La lista completa está en doc/tracing.md. Hay ejemplos en contrib/tracing, como p2p_monitor.py, que muestra el tráfico por peer.
peer-observer
peer-observer es "tooling to monitor for P2P anomalies and attacks using Bitcoin Core honey pot nodes". Lo que hicimos a mano, pero escalado:
Bitcoin Core ─┬─ tracepoints ─► ebpf-extractor ─┐
├─ RPC ─────────► rpc-extractor ──┤
├─ P2P ─────────► p2p-extractor ──┼─► NATS ─► metrics · websocket · logger · archive · alerts
├─ debug.log ───► log-extractor ──┤
└─ IPC ─────────► ipc-extractor ──┘ (experimental)Los extractores publican eventos en NATS y cada herramienta se suscribe a los que necesita. El tool alerts detecta comportamientos anómalos por peer:
PingSpammer: más pings de los esperables en una ventana de tiempo.AddrSpammer: demasiados mensajesaddr/addrv2.
c12d
c12d es un dashboard en tiempo real que consume el WebSocket de peer-observer: tipos de mensajes, tasa de mensajes, conexiones por tipo y mempool.
El mapa
El Map of Bitcoin Monitoring reúne los proyectos de monitoreo del ecosistema. Por ejemplo:
- fork-observer: compara las puntas que ven varios nodos para detectar forks.
- mainnet-observer: estadísticas de la blockchain.
Ningún nodo ve "todo Bitcoin". Comparar observadores revela lo que uno solo no ve.