Estoy ejecutando un nodo geth en hardware lento. Al ritmo actual de progreso, podrían pasar varios días antes de que pueda descargar toda la cadena de bloques. ¿Hay alguna forma de que se sincronice más rápido?
Si puede, usar un SSD NVMe es aún mejor.
Si tiene espacio limitado en SSD, consulte ¿Se pueden dividir los datos de cadena en dos (o más) ubicaciones?
Dicho esto, el estado de Ethereum es grande y cada vez más grande. Ten paciencia y valdrá la pena.
Respuesta previa
--cache
Todos mencionan --fast
pero probablemente también necesites--cache=1024
. Sin él, está ejecutando con el valor predeterminado que es --cache=128
(Geth 1.6.7).
Es posible un aumento de velocidad del 50% simplemente aumentando el caché.
Si está comenzando desde el principio, use:geth --fast --cache=1024
Si ya tiene algo de blockchain, use:geth --cache=1024
Dependiendo de su RAM, también puede probar con valores más altos, como --cache=2048
.
Si está utilizando el cliente geth, hay algunas cosas que puede hacer para acelerar el tiempo que lleva descargar la cadena de bloques de Ethereum. Si elige usar el indicador --fast para realizar una sincronización rápida de Ethereum, no conservará los datos de transacciones anteriores.
Nota
No puede usar este indicador después de realizar toda o parte de una operación de sincronización normal, lo que significa que no debe descargar ninguna parte de la cadena de bloques de Ethereum antes de usar este comando. Consulte esta respuesta de Ethereum Stack.Exchange para obtener más información.
A continuación se muestran algunas banderas para usar cuando desee sincronizar su cliente más rápidamente.
--rápido
Este indicador permite una sincronización rápida a través de descargas de estado en lugar de descargar los datos del bloque completo. Esto también reducirá drásticamente el tamaño de su cadena de bloques. NOTA: --fast solo se puede ejecutar si está sincronizando su cadena de bloques desde cero y solo la primera vez que descarga la cadena de bloques por razones de seguridad. Consulte esta publicación de Reddit para obtener más información.
--caché=1024
Megabytes de memoria asignados al almacenamiento en caché interno (mínimo 16 MB / base de datos forzada). El valor predeterminado es 16 MB, por lo que aumentarlo a 256, 512, 1024 (1 GB) o 2048 (2 GB) según la cantidad de RAM que tenga su computadora debería marcar la diferencia.
La --fast
opción de línea de comando se sincronizará más rápidamente. Sin embargo, debe usarlo desde cero, no puede usarlo si la cadena de bloques ya se ha descargado. Si tiene un nodo que ya está sincronizado, puede usar la interfaz de Javascript y los comandos exportChain e importChain para sincronizar su nodo.
--fast
debe hacerse antes de que se haya sincronizado nada.Hay 2 formas de usar geth
, que yo sepa
1. sincronizar con el--fast
que puede comenzar con geth --fast
el que permite la sincronización rápida a través de descargas de estado
2. use import
el comando en geth para hacer esto, necesita una cadena de bloques ya sincronizada de geth y debe exportarse con geth export filename
, que se puede importar ageth import filename
Para sincronizar geth de la manera más rápida, recomiendo usar geth 1.4.6. Las versiones anteriores son mucho más lentas.
Spoiler : la sincronización de HDD es muy lenta.
Hay dos modos de sincronización:
Consejo 1 : si ya tiene un geth sincronizado en una computadora, puede hacer una copia de seguridad del directorio chaindata y copiarlo para otra computadora. Compruebo OS X, Linux y Windows (todos en versión de 64 bits).
Consejo 2 : el método de exportación/importación funciona. La duración de la importación es muy larga porque verifica todas las transacciones.
Consejo 3 : si tiene suficiente RAM y no tiene SSD, use su RAM como ramdisk y seleccione su ramdisk con la opción --datadir. Necesita 4,2 GB para una sincronización rápida. Cuando se complete la sincronización, copie los datos de la cadena del directorio en su lugar original:
Hice muchos puntos de referencia en diferentes versiones para esta pregunta: ¿Cuánto más rápido es sincronizar con --jitvm?
Nota 1: si usa un HDD, parece que la sincronización es más lenta. El método rápido fue de 4 horas en mi sistema.
Nota 2: RAMDiskCreator en OS X es un programa gratuito para crear un disco RAM.
Las opciones de jitvm y caché tienen un impacto menor en mi banco
--fast
está en desuso y --jitvm
se elimina. ¿Necesitamos banderas alternativas?--fast
se reemplaza por , por
lo --syncmode fast
que no está realmente en desuso para usarlo, solo necesita convertirlo al nuevo parámetro.3. sincronice en una máquina rápida y copie el directorio chaindata a su máquina lenta Chaindata es portátil entre arquitecturas. Entonces, sincronice, detenga el nodo limpiamente, transfiera el directorio chaindata (reemplazando el anterior) e inicie el nodo en otra máquina. Para minimizar el riesgo, use versiones idénticas de geth en ambas máquinas. (Hice esto para x86_64 -> armv7h con éxito con Geth 1.4.5, otros también lo hicieron ).
cámaras de barney
ética
justin
fast
, y el valor predeterminadocache
es 1024.