¿Puede la cadena de bloques ser superada por una cadena de bloques de baja dificultad?

Digamos que alguien crea una bifurcación de blockchain a partir del bloque de génesis, cuando la dificultad era absurdamente baja en comparación con la actualidad; luego comienza a extraer nuevos bloques desde allí hasta el índice de bloque actual.

Normalmente, esto requeriría tal cantidad de tiempo para que sea completamente imposible ponerse al día con la cadena de bloques real; incluso si usara el poderoso hardware de minería actual, el aumento de dificultad lo compensaría rápidamente. Pero aquí está el problema: él personaliza su software de minería para que nunca aumente la dificultad, incluso si está extrayendo cientos de bloques por segundo; las marcas de tiempo de bloque simplemente se falsifican para que parezca que se generaron en un intervalo de ~ 10 minutos.

Cuando la cadena de bloques falsa es más larga que la real (actualmente ~300000 bloques), comienza a transmitirla; parece ajustarse a todas las reglas y es más largo que el actual, por lo que todos los clientes y mineros lo tratan como una bifurcación ganadora y pasan a trabajar en él. Por supuesto, la dificultad aumenta abruptamente tan pronto como se le aplica toda la potencia de hash de la red, y después de un tiempo, la generación de bloques vuelve a los niveles normales.

Pero ahora el creador de la cadena de bloques falsa posee todos los Bitcoins que se generaron desde el bloque de génesis hasta el momento en que lo lanzó.

¿Es este escenario realmente posible? Si no, ¿por qué? ¿Cómo reaccionarían los nodos de Bitcoin a una bifurcación de 300000 bloques de largo? ¿Hay un límite en cuanto a la longitud de un tenedor?

"personaliza su software de minería para no aumentar nunca la dificultad". Esto haría que los bloques fueran incompatibles con los clientes estándar de Bitcoin.
No si los bloques tienen marcas de tiempo falsas que hacen que parezca que se generaron cada 10 minutos; esa tasa de generación no desencadenaría un aumento de dificultad. Cuando se lanza la cadena de bloques falsa completa, parecería que fue generada por una cantidad constante de poder de hash que nunca requirió aumentar la dificultad.
Hm, supongo que tienes razón, con un gran problema: para generar 300 000 bloques cada 10 minutos con dificultad constante (baja) y marcas de tiempo falsificadas, necesitarías que el período de tiempo total fuera más largo que el tiempo real de la cadena de bloques. período. Esto causa problemas, pero como señala Nate, el verdadero criterio es la dificultad, no la duración, por lo que es irrelevante.

Respuestas (2)

Hay dos problemas con esto:

  • La cadena de bloques "más larga" no se selecciona por el número total de bloques, sino por la dificultad total . Una cadena con una gran cantidad de bloques de baja dificultad no ganaría.

  • (Antes de 2014) El cliente de referencia de Bitcoin codifica los hashes de un bloque relativamente reciente como un "punto de control" y rechazará cualquier cadena que no contenga ese bloque a la altura correcta. Por lo tanto, se ignorará cualquier cadena que diverja antes del punto de control.

Genial, exactamente la respuesta que estaba buscando :)
"El cliente de referencia de Bitcoin codifica los hashes de un bloque relativamente reciente como un "punto de control" y rechazará cualquier cadena que no contenga ese bloque a la altura correcta", esto no ha sido así desde el bloque 295000 en 2014.
Sí, y te gustaría ver la fecha de mi respuesta... :-)

Nate dio una buena respuesta sobre el significado moderno de "cadena más larga": como curiosidad histórica, el software de Bitcoin lanzado originalmente se comportó como usted esperaba y ese ataque realmente funcionaría. Más tarde se cambió para determinar "más largo" en términos de trabajo. Esto parece un error bastante grande, pero durante el primer año de Bitcoin, la dificultad fue constantemente mínima. La cuenta por cuenta y por trabajo más largas dan el mismo resultado si todos los bloques tienen la misma dificultad.

Incluso si finalmente hiciera coincidir el trabajo total de la cadena 'real', de alguna manera su bifurcación sería ignorada por las implementaciones actuales porque codifican las identidades de algunos de los primeros bloques (hasta 2014, pero no más recientemente). Hubo varias debilidades históricas que motivaron esto, pero casi todas ellas están resueltas hace mucho tiempo. La razón por la que existe la fijación residual es porque con el advenimiento de los ASIC de minería modernos se ha vuelto tan barato hacer bloques diff=1 que sería plausible ejecutar un nodo sin memoria con bloques diff bajos mientras estaba ocupado tratando de averiguar si eventualmente suman suficiente trabajo en total. Hay varias formas conocidas de mitigar este ataque restante, pero todas son mucho más complicadas de implementar que el simple recurso de reparar la cadena anterior.

Hay un ataque teórico interesante relacionado con este tema: si asumimos que el hashrate aumenta exponencialmente para siempre debido a los avances en el poder de cómputo y asumimos que un atacante tiene una fracción constante arbitrariamente pequeña de poder de minería (porque también se beneficia de las mejoras tecnológicas) y intenta extraer una bifurcación que comienza arbitrariamente hacia atrás y ajusta sus marcas de tiempo para obtener la más altadificultad que puede obtener, eventualmente terminará con más trabajo aparente que la cadena real con una probabilidad de 1. Esto se debe a que su alta dificultad da como resultado una gran variación y, finalmente, tiene una suerte arbitraria y salta adelante. El supuesto crecimiento exponencial significa que su falta de suerte en el pasado solo necesita una cantidad relativa constante de suerte en el presente para superarla, sin importar cuánto se retrasó en el pasado. El ataque es solo teórico porque si conecta números realistas, las tasas de éxito para este tipo de ataque solo se vuelven no despreciables después de una cantidad de años para los que no tenemos palabras. :)