¿Cuándo transmite el cliente principal su conocimiento de TX en el mensaje INV?

El invmensaje se utiliza para transmitir el conocimiento de uno de los bloques y correos txelectrónicos a otros clientes en la red. Cuando un nuevo Cliente se conecta a la Red, primero recibe información sobre todos los bloques en forma de invmensaje, como respuesta a los getblocksmensajes. Como no hay gettxmensaje, supongo que la información sobre las transacciones se transmite en la última invrespuesta a getblocks. ¿Es esa la forma en que opera el Cliente estándar, o simplemente transmite los txmensajes solo cuando llegan, lo que hace que los Clientes recién conectados esperen para ponerse al día con la información sobre los txs?

Respuestas (2)

ThreadMessageHandler2() llama a SendMessages() cada 100 segundos, lo que hace invque se envíen mensajes a los compañeros del cliente.

Se elige un par al azar para recibir invmensajes que hacen referencia a todas las transacciones pendientes que conocemos y no, incluidas las que creamos nosotros mismos. El resto de los pares reciben invmensajes que solo hacen referencia a alrededor del 25% de las transacciones pendientes que conocemos y ellos no, sin incluir ninguna de las que creamos.

Un comentario en el código explica que este "goteo" del inventario de transacciones es para proteger la privacidad.

Editar: acabo de notar este hilo que también describe el proceso de transacciones publicitarias. Afortunadamente, está de acuerdo con mi descripción aquí.

Sleep(100) significa 100 milisegundos, no segundos.

El proceso de anunciar y enviar datos es el mismo tanto para transacciones como para bloques: invanuncia el hash de un objeto, getdatase usa para solicitar el objeto en sí y txse blockusa para enviarlos.

getblockses un paso previo a este proceso: solicita los anuncios de bloques recientes vía inv.