La construcción del filtro SPV Bloom, son falsos positivos tomados de la cadena de bloques o simplemente debido a la coincidencia con otras direcciones

Tengo entendido que las direcciones falsas positivas generadas por un filtro de floración SPV no tienen que estar necesariamente en la cadena de bloques (es decir, ser direcciones que ya se han utilizado). ¿Es esa una forma correcta de pensar sobre los filtros de floración SPV?

Respuestas (2)

Los filtros Bloom son probabilísticos, cada intento de coincidencia que realice tiene una probabilidad específica de ser un falso positivo. La tasa de falsos positivos está determinada por la construcción del filtro (cuán ancho es y cuántos elementos se le han agregado). Una transacción probablemente coincida o ciertamente no coincida con un filtro de floración dado.

BIP37 no incluye las direcciones de Bitcoin en el sistema de coincidencia de filtros, sino que para cada transacción en el bloque, un filtro determinado se compara con el TXID, cada script de salida, cada script de entrada y cada elemento de datos en el script de entrada. Si algún elemento coincide, la transacción se envía al cliente, el falso positivo o no es decisión del cliente.

Tengo entendido que las direcciones falsas positivas generadas por un filtro de floración SPV no tienen que estar necesariamente en la cadena de bloques (es decir, ser direcciones que ya se han utilizado).

El filtrado BIP37 SPV solo devolverá transacciones de un bloque (incluida la ruta del árbol Merkle al encabezado del bloque) o transacciones de su grupo de memoria que coincidan con el filtro dado. Los falsos positivos no se crean de la nada, simplemente son otras transacciones que se ajustan a un criterio dado por el cliente.

Originalmente, la intención era que los clientes ajustaran el nivel de transacciones falsas positivas para ocultar su verdadera intención al par con el que están hablando, pero en la práctica esto parece ser completamente ineficaz .

direcciones de falsos positivos... no es necesario que estén necesariamente en la cadena de bloques

Puede pensar en la coincidencia de filtros de floración como una función.

def matches(tx, filter):
    ...

Puede realizar una transacción que devuelva verdadero para esta función con un filtro determinado, que tampoco estaba destinado a devolver verdadero para esa transacción, por lo que pueden existir falsos positivos fuera de los datos de la cadena de bloques. Pero para verlo en la práctica, un falso positivo casi siempre vendrá de la red blockchain/p2p.