Descripción General
Un nodo SPV implementa el método de Verificación Simplificada de Pagos descrito en el whitepaper de Bitcoin para verificar transacciones sin almacenar la blockchain completa. En lugar de descargar cada bloque (cientos de gigabytes), un nodo SPV solo descarga los encabezados de bloque (aproximadamente 80 bytes por bloque), lo que hace práctico ejecutarlo en teléfonos móviles y dispositivos con recursos limitados.
Cómo Operan los Nodos SPV
Nodo Completo Nodo SPV
┌─────────────────────┐ ┌─────────────────────┐
│ Todos los Encabezados│ │ Todos los Encabezados│
│ Todas las Transacc. │ │ (solo ~60 MB) │
│ Conjunto UTXO compl.│ │ │
│ Validación completa │ │ Pruebas Merkle para │
│ (~500+ GB) │ │ propias transacc. │
└─────────────────────┘ └─────────────────────┘
| |
Valida todo Confía en que la cadena
independientemente más larga tiene tx válidas
Cuando un nodo SPV necesita verificar una transacción, se conecta a uno o más nodos completos y solicita una prueba de Merkle que demuestre que la transacción está incluida en un bloque específico. El nodo SPV verifica esta prueba contra la raíz de Merkle del encabezado del bloque.
Compromisos de Seguridad
Los nodos SPV se basan en la suposición de que la cadena con más prueba de trabajo acumulada contiene solo transacciones válidas. No pueden verificar de forma independiente:
- Si las entradas de una transacción son válidas y no están gastadas
- Si el subsidio del bloque es correcto
- Si todas las reglas de consenso se siguen correctamente
Esto significa que los nodos SPV son vulnerables a ataques de mineros deshonestos que podrían incluir transacciones inválidas en bloques con prueba de trabajo válida.
Preocupaciones de Privacidad
Las implementaciones SPV tradicionales utilizaban filtros Bloom (BIP37) para solicitar solo transacciones relevantes de los pares, pero se demostró que estos filtros filtraban información sustancial sobre las direcciones del usuario. Las alternativas modernas incluyen filtros de bloque compactos (BIP157/158, también llamados Neutrino), que invierten el modelo: el nodo completo crea un filtro compacto para cada bloque, y el cliente ligero descarga y verifica estos filtros localmente.
Casos de Uso Comunes
Los nodos SPV se utilizan ampliamente en billeteras móviles donde ejecutar un nodo completo no es práctico. Proporcionan un equilibrio razonable entre verificación y uso de recursos para transacciones cotidianas, aunque los usuarios que requieren máxima seguridad deberían considerar conectarse a su propio nodo completo.