En una red blockchain privada, ¿podemos eliminar los primeros N bloques y reasignar el bloque N+1 como el bloque de génesis?

Soy consciente de la pérdida de datos causada por la eliminación de los primeros N bloques. Pero tengo curiosidad por saber si tal tarea es posible o no. Si es así, ¿cómo implementarlo en la práctica?

En un cambio de consenso de un sistema, todo es posible si todos los participantes están de acuerdo: simplemente todos cambian a un software diferente. Entonces, la respuesta es obviamente sí, pero quizás eso no sea lo que quieres saber. ¿Podría aclarar por qué querría hacer eso, o qué esperaría lograr al hacerlo?

Respuestas (1)

Con blockchains, básicamente puedes hacer cualquier cosa con una bifurcación dura. En el caso de cadenas de bloques privadas, será mucho más fácil obtener consenso para una bifurcación dura, tal vez tan fácil como que la autoridad que ejecuta la cadena de bloques dicte que todos deben aceptar una actualización.

El bloque de génesis está codificado en el software. Para reasignar un bloque posterior para que sea el nuevo bloque de génesis, deberá codificar ese bloque en una versión más nueva del software. Esto solo será reconocido como válido por los nodos que ejecutan la versión más reciente del software. Asumiendo que obtener el consenso no es un problema, esto es posible.

Otra cosa a tener en cuenta es la altura del bloque y todos los cálculos basados ​​en ella. Es fácil modificar el cliente para comenzar a contar en N+1, pero es posible que esto también deba tenerse en cuenta cuando se realizan los cálculos. Esto afectará cosas como objetivos de dificultad y mitades. Si modifica todo el código relevante para tener esto en cuenta, debería poder mantener las cosas funcionando correctamente.

¿Puede especificar algunas cosas más sobre cómo hacer la implementación?
No precisamente. Esta es solo una descripción general de lo que debería hacerse, y probablemente me perdí algunas cosas. Personalmente, siento que esta es una forma extraña de resolver un problema. Mi conjetura es que cualquier problema que tenga podría resolverse mejor de otra manera.
También debe considerar si hay una estructura de datos asociada, como el conjunto UTXO, que se necesita para validar nuevos bloques. Si la hay, esa estructura de datos deberá llegar a los nuevos nodos de alguna manera, preferiblemente descargándola de los nodos existentes y comparando los datos con un hash distribuido con el cliente de actualización.