¿Cada mensaje x llegará a todos los pares conectados en el tiempo t?

He hecho una pregunta similar aquí: ¿Es perfecto el protocolo de chismes en Bitcoin? Pero no obtuve una respuesta a mi pregunta realmente. Estoy ideando un algoritmo de consenso y necesito una respuesta definitiva.

¿Podemos dar por sentado que si en el período de tiempo t hubo 10 000 pares conectados (sin nuevos pares que se conectan, sin pares que se desconectan), todos con buena conexión a Internet y hardware, entonces si cada uno de esos 10 000 pares originó una transacción (o cualquier tipo de transacción)? mensaje) a sus pares, ¿podemos dar por sentado absolutamente que eventualmente cada uno de esos 10,000 pares conectados tienen en su mempool las 10,000 transacciones, incluidas las suyas y las de otros 9,999 pares y absolutamente ninguna transacción faltará en el mempool de cualquier de esos nodos (todos tendrán el mismo conjunto de datos)? En caso afirmativo, ¿y podría ser el tiempo estimado (segundos, minutos, horas)?

Y ahora: cosas como los gastos dobles, la corrección de transacciones, la conexión y desconexión de pares de la red, etc. que suceden en los sistemas de criptomonedas reales no son relevantes aquí; esta es una pregunta teórica y una situación teórica.

Si descarta todas las razones prácticas por las que la propagación puede no ser perfecta, entonces sí, por supuesto, el resultado será perfecto. No entiendo qué se supone que significa la respuesta en ese caso. Por ejemplo, el objetivo de una criptomoneda es resolver los gastos dobles: si asume que no hay ninguno, ¿por qué le importa?
Relacionado: sistemas distribuidos de resultado de imposibilidad con solo 1 proceso malicioso: groups.csail.mit.edu/tds/papers/Lynch/jacm85.pdf

Respuestas (1)

¿Podemos dar por sentado que si en el período de tiempo t hubo 10 000 pares conectados (sin nuevos pares que se conectan, sin pares que se desconectan), todos con buena conexión a Internet y hardware, entonces si cada uno de esos 10 000 pares originó una transacción (o cualquier tipo de transacción)? mensaje) a sus pares, ¿podemos dar por sentado absolutamente que eventualmente cada uno de esos 10,000 pares conectados tienen en su mempool las 10,000 transacciones, incluidas las suyas y las de otros 9,999 pares y absolutamente ninguna transacción faltará en el mempool de cualquier de esos nodos (todos tendrán el mismo conjunto de datos)?

Si también incluye que nadie está actuando maliciosamente, entonces sí, en estas condiciones perfectas sin actores maliciosos, da por sentado que una transacción llegará a todos los nodos dentro de un tiempo desconocido t. Sin embargo, si hay actores maliciosos, entonces no.

En caso afirmativo, ¿y podría ser el tiempo estimado (segundos, minutos, horas)?

Esto es imposible de saber. Depende del hardware, en qué consisten las transacciones, la conexión a Internet, etc. En el mejor de los casos, probablemente tomaría unos cientos de milisegundos. En el peor de los casos, probablemente unos minutos. Sin parámetros más específicos, es imposible saberlo.

Gracias. Dijiste que para que las condiciones perfectas funcionen, debemos incluir que nadie está actuando maliciosamente. Entonces, dado que una parte de la red funcionaría maliciosamente, digamos entre el 10 % y el 30 % de toda la red, ¿qué efecto tendría en el escenario presentado anteriormente? ¿Se lograría el efecto (que todos los mensajes lleguen a todos los nodos) incluso con algunos nodos maliciosos en la red, solo con más tiempo, o los nodos maliciosos lo evitarían por completo? ¿O tal vez es solo que los nodos maliciosos pueden fingir que no los recibieron de los que hablas?
Lo pregunto porque, según tengo entendido, lo único que puede hacer un nodo malicioso en este escenario dado es NO transmitir mensajes. Tal vez también deba aclarar que en este escenario todos los mensajes están firmados asimétricamente para que ningún nodo malicioso pueda cambiar el mensaje, si eso es lo que piensa. Gracias.
@user84415 Si el nodo honesto solo se conecta a nodos maliciosos, un mensaje podría demorarse indefinidamente. También tenga en cuenta que no todos los nodos mantienen mempools, etc. Por lo general, es más realista y útil asumir condiciones antagónicas que ideales.
Un nodo malicioso puede transmitir mensajes contradictorios. Si ellos mismos originan el mensaje, pueden transmitir un mensaje a la mitad de sus pares y otro mensaje a la otra mitad. Esto significa que al menos algunos nodos recibirán un mensaje antes que el otro y, por lo tanto, darán como resultado diferentes mempools.
Gracias por su respuesta. Eso es exactamente lo que estaba pensando. Pero, incluso si el nodo malicioso envía un mensaje a la mitad de sus pares y diferente a la otra mitad, siempre que haya al menos un nodo honesto en cada mitad, dos mensajes llegarán a la red de todos modos, solo algunos nodos tomarán uno como el primero (que recibieron primero) y otros tomarán al otro como el primero. Ese es (la deduplicación y el pedido de mensajes) el problema del doble gasto que resuelve blockchain. Para mí, esas respuestas son suficientes. Gracias.