¿Cómo pueden coexistir las bifurcaciones aunque solo una de ellas sea la cadena más larga?

Sabemos que Bitcoin tiene algunas bifurcaciones como Bitcoin Cash y Litecoin. Hacen una nueva rama en la cadena, entonces, ¿cómo pueden coexistir sin que se descarten las ramas más cortas y solo quede la cadena más larga? En el artículo de Satoshi, leemos que solo la cadena más larga es válida. Entonces, si cada uno de ellos tiene una cadena más larga, ¿por qué uno no anula al otro? Por ejemplo, suponiendo que Litecoin tiene la cadena más larga, ¿por qué Bitcoin o Bitcoin Cash siguen funcionando?

Respuestas (1)

Por un lado, Litecoin no es una bifurcación de Bitcoin. Se basa en el mismo código base, pero es una red separada y no comparten el bloque de génesis.

Bitcoin Cash es una verdadera bifurcación de Bitcoin, en el sentido de que se pueden rastrear hasta el mismo bloque de génesis.

Ambas cadenas continúan existiendo ya que siguen diferentes reglas de consenso. Los bloques en la cadena Bitcoin Cash se consideran inválidos por los nodos en la cadena Bitcoin y viceversa. Dado que tienen reglas de consenso en conflicto, cada una de ellas es la cadena válida más larga para su propio conjunto de reglas de consenso.

Editar:

Para incluir información adicional basada en los comentarios, podemos ver por qué no ocurre la comunicación cruzada (en la mayoría de los casos).

Para litecoin, el bloque de génesis, los bytes mágicos de la red (un conjunto de 4 números fijos que identifican los mensajes de protocolo para una red), el algoritmo de prueba de trabajo y una serie de otras cosas han sido diferentes desde el primer día. Esto evitaría que los nodos ltc se comuniquen con los btc, ya que no estarían de acuerdo en casi todo.

Las cosas son un poco más borrosas con Bitcoin Cash. El 1 de agosto de 2017 (¡hace casi exactamente un año!), Bitcoin Cash modificó las reglas de consenso de Bitcoin en ese momento. Lo hicieron aumentando el tamaño de bloque máximo permitido a 8 MB, el algoritmo de ajuste de dificultad y el método de firma tx (para evitar ataques de reproducción).

Estos cambios entraron en vigencia en el bloque #478558. Para todos los bloques extraídos después de eso, Bitcoin y Bitcoin Cash seguían reglas diferentes. Incluso si un nodo de Bitcoin Cash transmitiera un nuevo bloque a la cadena de Bitcoin, sería rechazado como:

  1. Puede haber excedido 1 MB
  2. Las transacciones se firmaron de forma incompatible con las firmas de Bitcoin
  3. La dificultad sería mucho menor que la dificultad de la red Bitcoin (se redujo rápidamente usando el nuevo algoritmo EDA en Bitcoin Cash). Esto significa que incluso si la cadena BTC recibiera 10 bloques BCH por cada bloque BTC, el trabajo total realizado sería mayor en la cadena BTC ya que tiene una dificultad mayor.

Con base en lo anterior, los nodos de Bitcoin rechazarían los bloques de Bitcoin Cash. Además, como MCCCS mencionó en los comentarios, Bitcoin Cash también cambió eventualmente sus bytes de red, lo que evitaría que una transmisión fuera aceptada accidentalmente para empezar, deteniendo el nuevo bloque incluso antes de que alcanzara las verificaciones de validación de consenso.

Ahora, por último, si alguien tomara manualmente los datos de BCH, LTC, Doge o cualquier otra cadena similar a BTC e intentara transmitirlos a través de la red de Bitcoin, todos fallarían en varias verificaciones de consenso.

Mucho después del nacimiento de Bitcoin Cash, quizás en octubre/noviembre, BCH se trasladó a una nueva red mágica, por lo que no se comunican con los nodos de BTC.
@MCCCS Eso es lo que sospechaba, pero tenía un vago recuerdo de haber leído que justo después del bloque de bifurcación, los nodos aún se comunicaban. Tiene sentido si cambiaron más tarde. ¡Gracias!
@RedGrittyBrick ¡Actualicé la respuesta con más detalles basados ​​en esta cadena de comentarios!
Pequeño detalle: hace años, litecoin se habría llamado 'bifurcación de bitcoin', solo más recientemente 'bifurcación' comenzó a significar 'bifurcación dura de la red, usando el mismo bloque de génesis (etc.)'. ¿Tal vez sería útil editar esto ligeramente para mencionar la diferencia entre una bifurcación del código base y una bifurcación de la cadena en sí? Esta pregunta y respuesta tiene como objetivo principal reducir la confusión de términos, por lo que creo que este es un comentario que vale la pena.