¿Cuándo debo usar -reindex-chainstate y cuándo -reindex?

¿Cuál es la diferencia entre las opciones -reindexy -reindex-chainstate?

¿Es una de las opciones más rápida?

¿Cuándo se debe usar cada opción?

Respuestas (2)

-reindex:

  • limpia el estado de la cadena (el conjunto UTXO)
  • borra el índice de bloque (la base de datos con información sobre qué bloque está en qué lugar del disco)
  • reconstruye el índice de bloques (revisando todos los archivos blk*.dat y encontrando elementos que parecen bloques)
  • reconstruye el estado de la cadena (rehaciendo toda la validación de bloques) en función de los bloques ahora en el índice

-reindex-chainstate:

  • borra el estado de la cadena
  • reconstruye el estado de la cadena usando los bloques en el índice que tenía antes

Este último debería ser estrictamente más rápido, ya que no necesita reconstruir primero el índice de bloque. Quizás la barra de progreso durante la reindexación lo confunda: ese progreso es solo para reconstruir el índice. La recreación del estado de la cadena ocurre después de que se completa la reconstrucción.

Debe usarlo -reindexsolo cuando estaba ejecutando en modo de poda, o si sospecha que los bloques en el disco están realmente dañados. De lo contrario, cuando solo sospeche que el estado de la cadena está corrupto (que es mucho más probable), use -reindex-chainstate.

Gracias por su respuesta, en realidad estoy ejecutando el nodo en un servidor sin cabeza, por lo que no veo una barra de progreso. ¿Hay una forma definitiva de saber cuándo se completa la sincronización? Actualmente lo estoy haciendo mirando el registro y viendo cuándo la marca de tiempo de los bloques se pone al día.
Para el progreso en una máquina sin cabeza (sin interfaz gráfica de usuario), miré el registro de bitcoind. Había muchos UpdateTipmensajes que mostraban la altura del bloque. Por ejemplo: height=201202. De hecho, el progreso es más rápido cuando el nodo ya tiene los archivos blk*.dat que tener que volver a descargar los bloques.
¿Hay algún otro comando que esté entre estos dos? Tengo problemas en un servidor en el que sigo corrompiendo 1 o 2 archivos. ¿No es posible reparar solo estos archivos .blk o .ldb específicos, por ejemplo?Fatal LevelDB error: IO error: /root/.bitcoin/chainstate/000184.ldb: Bad message
Ambos -reindexy -reindex-chainstatedesechar todos los archivos chainstate/*.ldb y reconstruirlos. Si ve este error después de un -reindex, lo más probable es que tenga un problema de hardware.

si usa reindex-chainstate es más rápido. También tengo un script de colección para monitorear el estado del bloque .

puede ejecutar con crontab y ver cuántos bloques se han sincronizado y comparar con el explorador de bloques de la red principal.