¿Puedo interrumpir y reiniciar de forma segura la sincronización rápida en geth?

Soy nuevo en Ethereum y trato de configurar un nuevo nodo con geth (usando 1.6.5-estable).

Estoy ejecutando geth --fast --cache=1024y hasta ahora he estado sincronizando durante unos 3 días (Win 7, 6 GB de RAM). Veo muchas advertencias en el registro y algunos errores, pero el proceso siempre parece continuar.

Sin embargo, cuando las cosas parecen moverse lentamente, he dejado de sincronizar periódicamente con Ctrl+C. Esto parece conducir a un cierre limpio de geth. Luego reinicié nuevamente geth --fast --cache=1024y la sincronización parece retomar desde el mismo punto. Estado hasta ahora a través eth.syncingde la consola de javascript:

{
  currentBlock: 3294258,
  highestBlock: 3899534,
  knownStates: 47242,
  pulledStates: 3041,
  startingBlock: 3293182
}

¿Esta bien? Concretamente mis preguntas son:

  1. ¿Funcionará? ¿Terminará la sincronización correctamente dando un nodo utilizable si continúo con esta práctica?
  2. ¿Es seguro reiniciar con la --fastbandera después de interrumpir? He leído en otra parte que la bandera no debe usarse con una descarga parcial de la cadena de bloques, pero no estoy seguro de si esto se refiere a una "sincronización completa" histórica o a cualquier tipo de sincronización parcial.

Respuestas (3)

Sí, puede reiniciar la sincronización de la cadena con la --fastbandera tantas veces como desee, pero debe asegurarse de que se use cada vez. Cuando sincronizaste solo durante unos segundos sin el indicador rápido, no puedes reiniciarlo en modo rápido (bueno, puedes, pero se apagará automáticamente).

hm... alguna idea de por qué me sale Blockchain not empty, fast sync disableddespués de un reinicio? --fastsiempre se ha usado.

Además, cuando finaliza la sincronización rápida, es decir, se sincroniza con la red y al menos uno de los bloques completos se actualiza, la sincronización rápida ya no será posible (a menos que comience de cero). Al menos así es como funcionó en mi experiencia.

Señalaré que ambas respuestas anteriores son algo correctas:

geth --fast solo funciona si chaindata está vacío, la única vez que geth está en modo rápido real es cuando lo ejecuta con chaindata vacío. Las versiones más nuevas de geths tienen el modo rápido de forma predeterminada, pero eso no significa que en realidad seas más rápido que el modo completo. esto tiene varias implicaciones:

  1. si lo está sincronizando por primera vez, geth --fast funciona, descarga una instantánea del historial
  2. si no está sincronizando por primera vez, geth --fast no generará errores, pero verá un mensaje de registro que dice "blockchain no vacío, sincronización rápida deshabilitada". Esto significa que aunque está ejecutando con --fast, porque chaindata no está vacío, en realidad no está sincronizando rápidamente.

    2.a Si la sincronización rápida se completó antes, está bien, ha hecho su trabajo y puede continuar sincronizado

    2.b Si la sincronización rápida no se completó, no hay forma de reanudarla, debe eliminar los datos de la cadena y reiniciar la sincronización rápida nuevamente desde cero