Nodos Bitcoin en móvil: Neutrino y SPV
El problema del móvil: potencia limitada, datos limitados, batería limitada
Un nodo Bitcoin completo necesita más de 500 GB de almacenamiento y semanas de sincronización. Un teléfono móvil no puede con eso. Sin embargo, la mayoría de la gente quiere usar Bitcoin desde el móvil. La solución no es confiar ciegamente en un servidor ajeno, sino usar protocolos diseñados para verificar sin descargar todo.
SPV clásico: Bloom filters (BIP-37)
El concepto de Simplified Payment Verification (SPV) viene del propio whitepaper de Satoshi. La idea es descargar solo las cabeceras de bloque (unos 60 MB en total) y pedirle a un nodo completo los datos de las transacciones que te interesan. Para filtrar qué transacciones pedir sin revelar exactamente qué direcciones son tuyas, el protocolo BIP-37 usa Bloom filters: filtros probabilísticos que mezclan tus direcciones con otras falsas.
El problema es que estos filtros no protegen bien la privacidad. Un nodo observador puede con cierta probabilidad deducir qué direcciones son tuyas analizando los patrones del filtro. Además, BIP-37 pone una carga considerable en los nodos que lo sirven y fue parcialmente deshabilitado por muchos nodos de la red.
Neutrino: compact block filters (BIP-157/158)
Neutrino invierte la lógica. En lugar de que el cliente envíe un filtro al servidor, el servidor publica filtros compactos de cada bloque y el cliente los descarga y comprueba localmente si alguna transacción del bloque le afecta. Si el filtro indica que sí, el cliente descarga ese bloque completo para extraer los datos.
Esto mejora enormemente la privacidad: el servidor no sabe qué estás buscando, solo sabe que descargaste ciertos bloques. Los filtros BIP-158 tienen un tamaño de unos 20 KB por bloque, lo que los hace manejables en móvil. El coste es que el cliente descarga más datos que con SPV clásico, pero la mejora de privacidad compensa.
Wallets móviles que usan Neutrino
Varios monederos de Lightning para móvil usan Neutrino internamente: Phoenix (ACINQ), Zeus y Breez son los más conocidos. Al conectarse, descargan los filtros de Neutrino y verifican sus transacciones localmente sin revelar sus direcciones a un servidor centralizado.
La mejor opción: conectarse al propio nodo completo
Tanto SPV como Neutrino son compromisos. La solución con mayor seguridad y privacidad es conectar tu billetera (wallet) móvil directamente a tu propio nodo completo en casa, por ejemplo a través de un servidor Electrum propio o mediante la conexión directa que ofrecen apps como Zeus cuando tienes un nodo LND en Umbrel. En ese caso, confías en tu propia infraestructura, no en ningún tercero.
Errores habituales
- Creer que Neutrino y SPV son lo mismo: Neutrino usa filtros del lado del servidor (BIP-157/158); SPV clásico usa filtros del lado del cliente (BIP-37).
- Asumir que Neutrino ofrece la misma seguridad que un nodo completo: sigue dependiendo de que los filtros que recibe son honestos.
- Pensar que conectarse a un servidor Electrum público es equivalente a usar el propio nodo: el servidor público conoce tus direcciones.
Conceptos relacionados
Fuentes primarias
- BIP-37 – Connection Bloom Filtering
- BIP-157 – Client Side Block Filtering
- BIP-158 – Compact Block Filters for Light Clients
- Neutrino – github.com/lightninglabs/neutrino