¿Cómo funciona exactamente SPV?

Esto es lo que tengo hasta ahora:

  1. Un móvil se conecta a un nodo usando rpc.
  2. Luego, el móvil le pide al nodo que le dé un conjunto de transacciones para un conjunto de claves públicas.
  3. Luego, el nodo busca cualquier transacción que coincida con las claves públicas proporcionadas y la devuelve al móvil.

¿El móvil puede configurar un filtro de floración, para que algunas de las teclas incluidas no sean suyas?

Además, cuando el nodo recibe una solicitud, ¿necesita escanear la cadena de bloques nuevamente para obtener el historial de transacciones?

Respuestas (1)

Un móvil se conecta a un nodo mediante rpc.

Los nodos no se conectan entre sí mediante RPC. RPC es para propietarios de nodos y, por lo general, tiene una contraseña larga.

Luego, el móvil le pide al nodo que le dé un conjunto de transacciones para un conjunto de claves públicas.

No exactamente. En primer lugar, los encabezados de bloque tienen una parte denominada "raíz de Merkle" que permite a los clientes verificar si una transacción estaba en el bloque. En teoría, como se describe en el documento técnico, los nodos SPV pueden mantener encabezados de bloque y solicitar a otros nodos una prueba de Merkle de su transacción. En la práctica, es más complicado. Actualmente el 99% de los nodos SPV utilizan BIP 37 . Además, se están investigando mejores métodos SPV como BIP 157 y Neutrino .

Además, cuando el nodo recibe una solicitud, ¿necesita escanear la cadena de bloques nuevamente para obtener el historial de transacciones?

Los nodos necesitan escanear toda la cadena de bloques en busca de una transacción si no conocen la altura del bloque, a menos que usen txindex=1, etc. Si lo saben, acceder a ella es trivial.

Si los clientes móviles/ligeros no usan rpc, ¿cómo es posible que consulten los nodos usando comandos como gettxout? ¿U otras personas para consultar nodos usando gettxout? Además, si le doy al nodo la clave pública y no una transacción, ¿debería escanear toda la cadena? Porque las billeteras ligeras dan claves públicas al nodo completo y no transacciones, según tengo entendido.
gettxoutEllos no usan Esto es lo que usan . Además, los SPV nunca entregan las claves públicas, eso dañaría la privacidad.
Oh, pensé que filteradd era un comando rpc. Si no entregan claves públicas, entonces, cuando un spv se haya ido por un tiempo, descargará los encabezados una vez que regrese y luego, ¿qué envía al nodo para obtener la información relevante? Veo datos en filteradd, pero ¿cuáles son los datos? Gracias de nuevo por la ayuda
En realidad, mi error. Entregan claves públicas junto con algunas claves públicas falsas. (Solo los nodos de descarga de todo anteriores a Bip37 no comparten claves públicas, también conocidas como "podadas"). Como se describe en la tabla a continuación merkleblock, los nodos envían [todas las transacciones en esos bloques] hashes. Filteradd le dice a los nodos qué claves públicas le interesan al SPV. Si el bloque no pasó el filtro de floración, los nodos pueden omitir los hash tx y guardar los datos. Puede dar más detalles: bitcoin.stackexchange.com/a/11721/38618
Ahh bien, la tabla es muy útil. Gracias por la información