Al pasar main.cpp
, no pude entender completamente el propósito de una doble barrera codificada como declaraciones condicionales:
me refiero a...
if (pto->setInventoryKnown.count(inv))
y
if (pto->setInventoryKnown.insert(inv).second)
¿Cuál es la idea detrás de verificar si un inventario es conocido dos veces por el par de destino?
Soy consciente de que if (pto->setInventoryKnown.count(inv))
solo verifica si el par de destino conoce la entrada e if (pto->setInventoryKnown.insert(inv).second)
inserta el elemento del inventario después de verificar su singularidad.
Quiero decir, ¿no podría uno usar solo una combinación de declaraciones if?
Tampoco veo ninguna razón para la segunda if
afirmación. No estoy hablando de ninguna forma de autoridad aquí, pero me parece un (pequeño) error de eficiencia.
La segunda if
declaración ha existido desde la primera confirmación . La primera if
declaración se insertó aproximadamente un año después cuando se agregó el "goteo" de mensajes tx inv, presumiblemente para verificar la membresía del conjunto antes para evitar ejecutar la lógica de goteo cuando no es necesario. Supongo que la eliminación del segundo if
simplemente se pasó por alto.
No estoy seguro si el segundo si es inútil.
El segundo si hace una verificación más detallada (ver mruset.hL50
https://github.com/bitcoin/bitcoin/blob/3fce72eaa3ea75aa911e32c4d96313848338cede/src/mruset.h#L51 ) que creo que reduce el tamaño del conjunto, etc.
Christopher Gurnee
true
. ¿Mi respuesta necesita actualizarse?jonas schnelli