Si un cliente SPV (ligero) solicita a un nodo completo la sucursal de Merkle que contiene una transacción específica (o el valor de una dirección), ¿cómo encuentra el nodo completo esta transacción (o los UTXO) en la cadena de bloques? ¿El nodo completo escanea linealmente a través de toda la cadena de bloques o hay una forma más rápida de vincular transacciones y bloques?
Puede leer la especificación bip37 para todos los detalles arenosos.
¿Cómo encuentra el nodo completo esta transacción (o los UTXO) en la cadena de bloques?
El cliente crea un filtro que contiene lo que le interesa, ya sea un script de salida (direcciones), claves públicas o TXID. Luego envían esto al nodo al que están conectados. Cuando solicitan datos para un bloque en particular, el nodo los filtra para que solo contengan cosas que coincidan con el filtro de floración de los clientes y se los envía. Para encontrar todo su UTXO no gastado, solicitan cada bloque de la cadena por turno y buscan cosas que podrían ser suyas. Como ha descubierto en su mayoría, esto implica para cada cliente que el nodo cargue 80 GB de bloques del disco y realice operaciones de filtrado extremadamente costosas en ellos.
Los nodos modernos reconocen cuán terrible es esta idea y permiten a los usuarios deshabilitar la funcionalidad por completo debido a la carga masiva y el riesgo de denegación de servicio involucrado. Con transacciones especialmente diseñadas, un par remoto con un solo comando de menos de 50 bytes puede hacer que un nodo cargue un bloque de 1 MB del disco, lo haga un millón de veces y luego no devuelva nada.
Por lo general, el cliente ligero pregunta "¿está esta transacción en este bloque?" y no "en qué bloque está esta transacción". Esto último se puede hacer sin demasiados problemas si hay un txindex (índice de transacciones), que es algo para lo que bitcoind tiene una opción.
txindex
valor predeterminado porque crecería constantemente y tendría un costo prohibitivo (habilitar esta opción reduce significativamente la velocidad de inserción de bloques y aumenta las escrituras en disco).
muro
claris