Creé una red de registro que consta de 2 nodos: node0 y node1.
Me gustaría tener una bifurcación en la cadena de bloques común y aparentemente lo logré al hacerlo:
addnode
invalidate <hash>
getchaintips
devuelve una matriz con hash de bloque invalidado 5d8b... con estadoAhora mis preguntas:
a) ¿Cómo puedo lograr un estado " valid-fork
" en la salida de getchaintips para la bifurcación previamente invalidada? [SOLUCIONADO]
La cadena válida más larga siempre se elige automáticamente. Por lo tanto, la forma de hacer que cambie con fuerza es usar el invalidateblock
RPC oculto.
Volví a leer la Guía para desarrolladores de Bitcoin y volví a leer la sección de ayuda getchaintips:
Cada nodo completo de la red Bitcoin almacena de forma independiente una cadena de bloques que contiene solo bloques validados por ese nodo . Cuando varios nodos tienen los mismos bloques en su cadena de bloques, se considera que están en consenso. Las reglas de validación que siguen estos nodos para mantener el consenso se denominan reglas de consenso.
y
Valores posibles para el estado:
[..]
"bifurcación válida": esta rama no es parte de la cadena activa, pero está completamente validada
[..]
Para a) Entonces, para lograr un estado de bifurcación válido para un hash de bloque previamente invalidado, node0 debe reconsiderar ese mismo hash de bloque para que esté completamente validado en su copia de blockchain. Esto se puede lograr por reconsiderblock <block hash>
.
Nota: reconsiderblock
aparentemente "cierra" la bifurcación ya que getchaintips
devuelve el mismo hash de bloque para la punta de la cadena activa para ambos nodos.
Para b) Nada averiguado todavía.
Con respecto a a) no estoy muy familiarizado con la forma en que valida el bloque, pero supongo que no.
en cuanto a b) es posible renunciar a su propia cadena de la otra cadena es la cadena válida más larga.
Los bloques en cadenas más cortas (o cadenas inválidas) no se usan para nada. Cuando el cliente de bitcoin cambia a otra cadena más larga, todas las transacciones válidas de los bloques dentro de la cadena más corta se vuelven a agregar al grupo de transacciones en cola y se incluirán en otro bloque. La recompensa por los bloques en la cadena más corta no estará presente en la cadena más larga, por lo que prácticamente se perderán, razón por la cual existe un tiempo de maduración de 100 bloques impuesto por la red para generaciones.
jonas schnelli
Aliakbar Ahmadi