¿Qué va a pasar con las transacciones que están tanto en cadenas rechazadas como aceptadas?

He estado leyendo sobre bifurcaciones de blockchain y las situaciones de cadena más larga y realmente no puedo entender qué sucederá en la situación en la que la transacción se incluyera en bloques aceptados Y rechazados. Si las transacciones en bloque rechazado regresan al mempool, ¿significa que habrá bloques con transacciones duplicadas? He dibujado algo para una mejor comprensión de esto: https://imgur.com/a/3ViIu Supongo que me estoy perdiendo algo fundamental aquí. ¡Gracias de antemano!

Respuestas (2)

En primer lugar, no solo hay un único mempool, cada nodo mantiene su propio mempool en función de las transacciones y los bloques que ha visto. Dado que estos mempools generalmente coincidirán bastante bien, este hecho a veces se abrevia hablando de "el mempool" y significando el cuerpo general de transacciones no confirmadas que la mayoría de los nodos conocen. Si pudiéramos garantizar que todos tuvieran el mismo mempool, no necesitaríamos una cadena de bloques. El objetivo principal de la cadena de bloques es dar una decisión entre diferentes versiones del mempool.

En segundo lugar, desde la perspectiva de cada punta de cadena, la otra punta de cadena no es válida y se trata como si no existiera. Agregando la observación de que cada nodo tiene su propio mempool y suponiendo que la red está bien conectada, puede averiguar el estado de cada nodo con respecto a la punta de la cadena que siguen actuando como si la otra cadena no existiera.

ingrese la descripción de la imagen aquí

Con respecto a su imagen:

  • Un nodo cuya punta de cadena es C tiene TX10 en el mempool mientras que TX3 y TX4 están confirmados.
  • Un nodo cuya punta de cadena es D considera que TX4 y TX10 están confirmados y tiene TX3 en el mempool.

Cuando se descubre el bloque G, todos los nodos se reorganizarán en el extremo inferior de la cadena DFG. En ese momento, volverán a B, agregarán TX14, TX15, TX3 y TX4 a su mempool, luego aplicarán el bloque D, eliminarán TX4 y TX10 del mempool, aplicarán el bloque F, eliminarán TX9 y TX15 del mempool, y luego aplicando el bloque G, eliminando TX21 y TX20 del mempool. TX3 permanece en el mempool, porque aún no está confirmado en la cadena inferior.

Wow, ¡esa fue una explicación realmente genial! ¡Gracias!

Mensaje Tx Regla n.º 8: https://en.bitcoin.it/wiki/Protocol_rules Rechazar si ya tenemos tx coincidentes en el grupo o en un bloque en la rama principal.

¡Gracias por la respuesta! Entonces, si lo entiendo correctamente, los bloques rechazados (y todas las transacciones en ese bloque) volverán al mempool. Entonces, si alguien intenta incluir la transacción que ya está en la sucursal principal (sucursal aceptada), ¿se rechazará esa transacción? ¿Es eso correcto? ¿Qué va a pasar con la transacción rechazada (simplemente se eliminará de mempool)?
1) Sí, si alguien intenta gastar cualquier transacción de la cadena principal, será rechazada. Eso es el doble gasto. Si se rechaza un bloque (supongo que se rechaza de acuerdo con los protocolos de bloque adjuntos anteriormente, y no se refiere a la cadena lateral), las transacciones permanecerán en el grupo de miembros, nunca se agregarán a la cadena de bloques. 2) Si la transacción fue inválida acc. a los protocolos, nunca hará a la piscina. Espero que lo entiendas, todos mantienen sus propias cadenas y listas de transacciones. No se comparte y podría ser asíncrono con otros nodos en un período de tiempo determinado