Glosario / Nodos y software
Verificación de pago simplificada
También se conoce como SPV.
- ¿Qué es la verificación de pago simplificada?
- La verificación de pago simplificada comprueba que una transacción está en un bloque respaldado por prueba de trabajo real, usando solo encabezados de bloque y una rama de Merkle.
Satoshi Nakamoto describió el método en la sección 8 del whitepaper de 2008, como la forma de usar bitcoin sin ejecutar un servidor. Es barato porque un encabezado de bloque ocupa 80 bytes: con alrededor de 960.000 bloques, toda la cadena de encabezados pesa aproximadamente 77 MB, frente a los 759 GB de los propios bloques en agosto de 2026. Le da la prueba de que los mineros incluyeron su pago, y absolutamente nada sobre si ese pago era válido.
Cómo funciona
La verificación de pago simplificada responde a una sola pregunta con dos elementos de prueba.
El primero es la cadena de encabezados. Cada encabezado de bloque ocupa exactamente 80 bytes y contiene el hash del encabezado anterior, la raíz de Merkle de las transacciones que incluye, una marca de tiempo y el objetivo de dificultad que el minero tuvo que cumplir. Un cliente descarga solo los encabezados, comprueba que cada uno se encadena al anterior y que cada hash queda realmente por debajo de su objetivo declarado, y acaba con una cadena a la que puede poner precio en electricidad. Falsificarla no es cuestión de mentir de forma convincente; supone rehacer la minería.
El segundo es la rama de Merkle. Las transacciones de un bloque se combinan por pares calculando su hash hasta que solo queda una raíz, así que demostrar que una transacción concreta está en un bloque solo requiere el puñado de hash hermanos a lo largo de la ruta hasta esa raíz. La cantidad es logarítmica: un bloque con 4.096 transacciones necesita 12 hash, que son 384 bytes, y duplicar el bloque solo añade uno más. Su cliente sube por la rama calculando un hash tras otro, compara el resultado con la raíz de Merkle del encabezado en el que ya confía, y o la transacción está en ese bloque o no lo está.
Si se juntan los dos, se obtiene la afirmación que hace la verificación de pago simplificada: esta transacción quedó incluida en un bloque, y desde entonces se ha acumulado encima una cantidad medible de trabajo.
Ahora, las lagunas, porque son la parte útil. Inclusión no es validez. El método no puede decirle que las monedas que se gastan existían, que las firmas eran válidas, que el bloque concedió al minero el subsidio correcto ni que esas mismas monedas no se gastaron en otra rama. Tampoco puede demostrar un hecho negativo: un servidor que simplemente omite un pago no deja ninguna prueba. Satoshi escribió la advertencia directamente en el whitepaper, al señalar que la técnica es fiable mientras los nodos honestos controlen la red y que las empresas que reciben pagos frecuentes seguirán queriendo ejecutar su propio nodo.
Por qué importa cuando compra bitcoin
La marca de verificación verde de una billetera de teléfono no suele ser verificación en absoluto.
La mayoría de las billeteras que la gente instala tras su primera compra en un exchange nunca construyen una cadena de encabezados. Preguntan al servidor de una empresa cuánto tiene usted, muestran la respuesta y la etiquetan como confirmada. Es una garantía más débil que el método del whitepaper, y el método del whitepaper es a su vez más débil que un nodo. Para saldos pequeños del día a día, esa cadena de confianza está bien, y fingir lo contrario no ayuda a nadie. Deja de estar bien en el punto en que el monto ya le dolería.
La pregunta práctica es en quién confía usted y durante cuánto tiempo. Nuestras reseñas de exchanges indican lo que exige cada plataforma antes de liberar un retiro, y cada uno de esos números de confirmaciones es un informe del propio nodo de ese exchange. Cuando llegan las monedas, la billetera que se las muestra vuelve a informar desde el nodo de otra persona. Es poco probable que alguna de las dos partes mienta. Ambas pueden equivocarse, estar desconectadas o servir una cadena que les hicieron llegar, y ninguna le avisará cuando eso ocurra.
También hay una dimensión de privacidad. El estudio de 2014 sobre los clientes con filtros de Bloom descubrió que los filtros destinados a ocultar qué direcciones le interesaban a una billetera delataban la mayoría de ellas. Por eso Bitcoin Core desactivó esa funcionalidad de forma predeterminada en la versión 0.19.0, en noviembre de 2019, y por eso las billeteras ligeras más recientes descargan filtros compactos en lugar de subir solicitudes.
Lo que la verificación de pago simplificada habría pasado por alto en septiembre de 2018
CVE-2018-17144 es la ilustración más clara de la diferencia entre inclusión y validez en la historia de bitcoin.
Una optimización añadida en Bitcoin Core 0.14.0 omitía una comprobación que se había considerado redundante, con el resultado de que las versiones afectadas procesaban en parte un bloque que contuviera una transacción que gastaba dos veces la misma entrada. Tratado de una manera, hacía caer el nodo. Tratado de otra, permitía a un minero crear bitcoin de la nada. El fallo se notificó el 17 de septiembre de 2018 y se corrigió en Bitcoin Core 0.16.3 al día siguiente. Nadie lo explotó en la red real.
Imagine que alguien lo hubiera hecho. Un minero produce un bloque que infla el suministro, con un encabezado que lleva una prueba de trabajo totalmente auténtica y un árbol de Merkle perfectamente correcto. Un nodo completo actualizado analiza el bloque, encuentra la entrada duplicada, lo rechaza y desconecta al par que se lo envió. Un cliente que hace verificación de pago simplificada comprueba el encabezado, comprueba la rama y da por confirmado el pago que contiene, porque todos los elementos de prueba de que dispone son válidos. No tiene acceso a la entrada que se gasta, así que la pregunta nunca se plantea.
Esa es toda la contrapartida. La verificación de pago simplificada hereda sus reglas de quien esté minando. Un nodo, no.
Verificación de pago simplificada frente a Neutrino
La verificación de pago simplificada y Neutrino permiten ambos que una billetera funcione sin la cadena completa, y orientan el filtrado en sentidos opuestos. El enfoque clásico con BIP37 envía sus intereses a un par: usted sube un filtro, el par busca por usted y se entera, a grandes rasgos, de qué direcciones posee usted. Neutrino, la implementación de BIP157 y BIP158 que usan la mayoría de las billeteras Lightning móviles, hace que el nodo publique un filtro compacto por bloque para todo el mundo; su billetera descarga los filtros, los comprueba en privado y solicita solo los bloques que coincidieron. La verificación que usted hace después es la misma aritmética de Merkle y de encabezados. Lo que cambia es que nadie en el otro extremo se entera de lo que usted buscaba.