¿Existe un consenso real sobre la punta de la cadena de bloques o solo hasta el siguiente bloque?

Usando este escenario https://bitcoin.stackexchange.com/a/40435

Digamos que tenemos dos consejos de blockchain que compiten entre sí: ambos comienzan desde el bloque A como padre, pero luego se encuentran dos bloques diferentes al mismo tiempo: el bloque B1 y el bloque B2. Ambos bloques tienen el mismo nivel de dificultad y, como aprendimos anteriormente, esto es independiente de cuándo se encontraron exactamente. Por lo tanto, la dificultad total del Bloque A + Bloque B1 = Bloque A + Bloque B2. Una de las dos cadenas tendrá una mayor dificultad total una vez que se encuentre el Bloque C1 o el Bloque C2.

¿Hay consenso en que la punta sea B1 o B2, o solo hasta que se encuentre C1 o C2? Si 2 exploradores de cadenas de bloques tienen B1 y B2, ¿pueden elegir aleatoriamente cualquiera de ellos para ser la punta de la cadena de bloques y ambos se considerarán correctos?

Respuestas (2)

No, no hay consenso hasta que se encuentra el siguiente bloque. La red está experimentando una bifurcación de blockchain. Solo se reparará una vez que una de las puntas avance agregando otro bloque. Luego, todos los nodos se reorganizarán en la cadena más larga y se restablecerá el consenso. La cadena perdedora se convierte en una rama extinta, válida pero no parte de la cadena más larga.

No puede haber consenso antes porque desde la perspectiva de un nodo no hay forma de saber con certeza cuál de los dos bloques es más popular en la red. Podrían preguntar, pero obtendrían respuestas mixtas y podrían ser engañados a través de un ataque de sybil de todos modos. Por lo tanto, los nodos aceptan el primer bloque válido del que escuchan como la punta actual de la cadena de bloques hasta que se demuestre lo contrario; la única prueba válida es mostrar una cadena más larga. Sin embargo, aún mantendrían el bloque de la competencia y se propagarían si luego se necesitara para una reorganización.

De hecho, tales bifurcaciones de blockchain pueden incluso persistir durante varios bloques cuando se encuentran bloques competidores posteriormente. Por ejemplo, en 2012 hubo una bifurcación de blockchain con cuatro bloques .

Durante una bifurcación de blockchain, existe un mayor riesgo de gastos dobles porque los bloques que compiten a la misma altura pueden confirmar transacciones diferentes. Sin embargo, si ocurren por casualidad aleatoria natural (en lugar de un ataque), estarían trabajando desde el mismo conjunto de transacciones no confirmadas y deberían contener un conjunto en su mayoría coincidente. Como cada sugerencia de blockchain considera que la otra no es relevante, no dividen las transacciones para confirmarlas, sino que ambas intentan confirmar todo el conjunto.

Entonces sí. Ambos son consejos válidos de blockchain, cualquiera puede convertirse en parte de la cadena más larga a largo plazo, pero un buen explorador de blockchain debería mostrar ambos hasta que quede claro cuál seguirá siendo parte de la cadena más larga.

No hay una diferencia sustancial entre tener un bloque encima o no. Bitcoin no logra consenso, nunca. Cada nodo hace una suposición individual sobre qué cadena aceptar, y los nodos pueden estar en desacuerdo durante períodos de tiempo arbitrariamente largos. Cuantos más bloques haya en la parte superior, mejor será la suposición, pero siempre sigue siendo una suposición.
" Podrían preguntar, pero obtendrían respuestas mixtas y podrían ser engañados a través de un ataque de sybil de todos modos ". El bloque "ganador" podría ser una minoría extrema en este momento, tal vez incluso una tercera.

Solo una vez que se encuentra C1 o C2. Antes de eso, algunos nodos tendrán B1 como punta, mientras que otros tendrán B2 como punta. También tenga en cuenta que la mayoría de los nodos ni siquiera conocerán necesariamente B1 y B2: la mayoría solo conocerá B1 o B2. Como tal, esos nodos ni siquiera son conscientes de que no existe un consenso global.

Esa es una razón por la cual para cantidades más grandes de dinero realmente desea esperar múltiples confirmaciones. 6 es un número comúnmente aceptado como seguro.

¿No se siguen propagando los bloques competidores porque pueden ser necesarios para una reorganización? ¿O solo se solicitan una vez que queda claro que se necesitan?
Sí, no estoy seguro, pero creo que en realidad lo son (estaba un poco confundido por los gastos dobles de transacciones que no lo son). Pero incluso entonces hay un (pequeño) período de tiempo en el que el nodo no lo sabe. Tampoco creo que los clientes de SPV conozcan el estado sin consenso.
Nodo solo retransmite bloques que se convierten en parte de su mejor cadena. No tienen ningún interés racional en ayudar a que una cadena competidora tenga éxito. Cuando hay una reorganización, todos los bloques en el nuevo lado de la bifurcación se retransmiten a la vez.