Geth sincronizar y salir

Por lo general, no mantengo mi instancia de Geth en ejecución, pero me gustaría mantener sincronizada mi cadena de bloques de Ethereum para que el inicio de Geth no sea lento. Razono que puedo crear un cronjob para esto.

Así que mi pregunta es: ¿cómo puedo saber gethsi hay que iniciar, sincronizar y luego salir de inmediato?

Se agregarán nuevos bloques cada 15 segundos en promedio. Entonces, ¿quieres ejecutar este cronjob cada 15 segundos?
No. No espero que esté perfectamente sincronizado; simplemente sincronizado lo suficiente como para que no tenga que descargar muchos días de bloques al inicio.
Estaba pensando una vez a la semana, para ser honesto.

Respuestas (3)

Usa la clave:

--exitwhensynced(Sale después de que se completa la sincronización de bloques)

Con respecto a https://github.com/ethereum/go-ethereum/wiki/command-line-options

Otra respuesta que no buscaste:parity --mode passive

Lo sé, parityno lo es geth, pero --mode passivehace exactamente lo que pediste.

--mode MODE            Set the operating mode. MODE can be one of:
                       last - Uses the last-used mode, active if none.
                       active - Parity continuously syncs the chain.
                       passive - Parity syncs initially, then sleeps and
                       wakes regularly to resync.
                       dark - Parity syncs only when the RPC is active.
                       offline - Parity doesn't sync. (default: last).

Estoy usando el passivemodo en todos mis dispositivos, porque entra en modo de suspensión después de sincronizarse durante aproximadamente una hora y luego vuelve a buscar nuevos bloques. Esto ahorra muchos recursos la mayor parte del tiempo en mis máquinas.

Ver también:

--mode-timeout SECS    Specify the number of seconds before inactivity
                       timeout occurs when mode is dark or passive
                       (default: 300).
--mode-alarm SECS      Specify the number of seconds before auto sleep
                       reawake timeout occurs when mode is passive
                       (default: 3600).

No sé por qué necesita Geth específicamente, pero es posible que Parity sea la solución que está buscando.

Específicamente, Parity permite la sincronización de modo que el contenido de los bloques no se verifique y su cliente simplemente descargue la versión más actualizada del estado. Esto se puede ejecutar usando parity --warpy eliminará el largo tiempo de sincronización que está experimentando con GETH.

Incluso con --warp, todo el conjunto de datos de la cadena de bloques se descargará eventualmente, solo que la mayoría de los datos se sincronizan en segundo plano. Si el OP quiere un conjunto completo de datos de cadena, entonces --warprealmente no acelera las cosas.
Me parece que el problema de OP es que cada vez que gira su nodo, lleva mucho tiempo. En lugar de tratar de mantener una versión más actualizada de la cadena de bloques de manera constante (con un cronjob), puede sincronizar cada vez que usa --warp, lo que le brinda el mismo corte de tiempo sin siquiera tener que ejecutar esto de manera constante. En última instancia, se trata de confiar en que las confirmaciones que se han producido mientras no estabas son legítimas y no fraudulentas.
Por lo que puedo decir, --warpno disminuye la cantidad de datos de blockchain descargados. Primero sincroniza un subconjunto de los datos en un pase inicial y luego, en segundo plano, llena los espacios vacíos con el resto de los datos. Es el pase inicial que toma un orden de minutos y en el que se basa el titular "sincronizar en 10 minutos". No creo que haya una manera de detener la sincronización después de este paso inicial; si la hubiera, entonces sí, el OP tendría que confiar en este subconjunto de datos. Tal como están las cosas, también tendría que tener en cuenta la segunda etapa de sincronización en segundo plano en su secuencia de comandos cron.