¿Qué significa el término "Cadena más larga"?

¿Qué significa el término "Cadena más larga", ya que solo existe una cadena de bloques "correcta"? ¿Cómo otra cadena más larga invalidaría la cadena 'correcta'?

Respuestas (2)

El sistema de cadena de bloques de Bitcoin es en realidad dos sistemas bastante separados, y se confunden fácilmente. El primero es el árbol de bloques y el segundo es la cadena activa .

El árbol de bloques consta de todos los bloques válidos cuya ascendencia completa se conoce, hasta el bloque de génesis. Las reglas de validez incluyen no duplicar gastos, firmas válidas, no introducir más moneda de la permitida,... Estas son las reglas de la red, y cada nodo completo de Bitcoin las verifica.

La cadena activa es un camino desde el bloque de génesis en la parte superior hasta algún nodo hoja en la parte inferior del árbol de bloques. Cada uno de esos caminos es una opción válida, pero se espera que los nodos elijan el que tenga más "trabajo" que conozcan (donde el trabajo se define vagamente como la suma de las dificultades). La relatividad y las restricciones tecnológicas nos impiden realizar una comunicación instantánea en todo el mundo, por lo que no se puede esperar que dos nodos elijan la misma cadena que el activo. Esto no es un problema: el mecanismo de minería se asegura de que la posibilidad de que dos nodos no estén de acuerdo sobre los bloques en el pasado disminuya exponencialmente a medida que son más antiguos.

Entonces no, no hay una "cadena derecha", hay muchas. Los nodos eligen por sí mismos, pero el sistema está diseñado para garantizar que el consenso surja rápidamente.

Las reglas en la práctica son las siguientes: cuando llega un nuevo bloque y extiende la cadena activa anterior, simplemente lo agregamos a la cadena activa. Si no, depende de si la rama que extiende ahora tiene más trabajo que la rama actualmente activa. Si no, guardamos el bloque y paramos. Si tiene más trabajo, hacemos una "reorganización": desactivamos bloques de la rama anterior y activamos bloques de la nueva rama.

Señor, cómo un nodo selecciona el bloque más reciente en el camino más largo; por ejemplo, suponga que el nodo conoce dos subcadenas, ¿cómo identifica cuál es más larga? ¿Es solo comparar sus longitudes (número de bloques)? Gracias.
Observamos la cantidad de trabajo en cada cadena: la cantidad esperada de hashes que fueron necesarios para construirlos. Esto corresponde aproximadamente a la suma de las dificultades de los bloques en ambas cadenas (que casi siempre es lo mismo que comparar la longitud, a menos que la bifurcación abarque un nuevo objetivo).
Esta respuesta no define con precisión "trabajo". El trabajo de un bloque en realidad se define como piso (2 ^ 256 / (objetivo + 1)), donde 'objetivo' es el umbral objetivo convertido del campo 'nBits' del encabezado del bloque. (Consulte la función GetBlockProof en src/pow.cpp).
Comentario útil de @DairaHopwood, aunque técnicamente el comentario justo encima del tuyo lo define ("número esperado de hashes...") :). Para aquellos que se preguntan de dónde viene la fórmula: el número esperado de hashes es 1/p donde p es la probabilidad de llegar al objetivo o menos, por lo que p = (objetivo + 1) / 2^256. (el "+1" es para contar el hash con todos 0).

Imagine que la cadena de bloques tiene 210000 bloques de largo y DOS mineros encuentran bloques válidos con unos pocos segundos de diferencia y los transmiten a la red.

Esto es perfectamente normal ya que la red Bitcoin es global y de igual a igual.

Ahora tiene dos cadenas, cada una de longitud 210001. Ninguna de estas es más larga que la otra. Algunos nodos bitcoind verán el bloque del primer minero y algunos nodos bitcoind verán el segundo.

Temporalmente, tiene dos bifurcaciones de la cadena de bloques, cada una de 210001 bloques de longitud. Son idénticos para los bloques 210000, pero el 210001 es diferente en las dos horquillas.

Algún tiempo después, otro minero encuentra otro bloque válido, el bloque 210002nd, y se adjuntará exactamente a una de las bifurcaciones.

Esta cadena es ahora la más larga con 210002 bloques y se convierte en la cadena más larga. Se convierte en la cadena de bloques "definitiva".

(Las transacciones en la bifurcación alternativa no desaparecen, simplemente se vuelven a colocar en el grupo de transacciones no confirmadas y los mineros las colocarán en un bloque posterior).

¿Pero se otorga ese bloque que estaba en la cadena 210001? La red eligió la cadena 210002 y las transacciones de la cadena 210001 se reciclan para el siguiente bloque (¿210003?) y el 210001 desaparece.
Tengo entendido que, en la mayoría de las circunstancias, las transacciones en cada una de las bifurcaciones son casi las mismas. Cualquier transacción que pague una tarifa en el (próximamente) bloque huérfano (por ejemplo, 210001B) probablemente se incluirá en el bloque inmediatamente siguiente (es decir, 210002) porque los mineros que trabajan en su propia bifurcación consideran que esas transacciones aún están disponibles (210001A) . No tendrían que esperar al bloque 210003, como implica el párrafo final.
Esta excelente descripción me aclaró las cosas, ¡gracias! y la respuesta que estaba buscando es: puede ser que en el bloque N se transmitan dos bloques casi al mismo tiempo, pero es muy poco probable que suceda dos veces seguidas, y es muy probable que suceda tres veces seguidas, por lo tanto las cosas convergen rápidamente. Mi siguiente pregunta es: ¿alguna vez sucedió (o sucedió recientemente) que sucedió dos veces seguidas, por lo tanto, había 3 o cuatro cadenas cada una de la misma longitud y los mineros comenzaron a trabajar en cada una? Supongo que encontraré un explorador de cadenas de bloques y empezaré a buscar...
¡Esta es una buena respuesta!