Sincroniza con bitcoin-qt muy lento (0,01%)

Tengo el problema de que la sincronización de mi nodo es muy lenta. Tengo 14 semanas de retraso y se estima que tardará 12 semanas en sincronizarse. La tasa de sincronización por hora es solo del 0,01%. Tengo una conexión de banda ancha rápida y ningún otro problema con esta PC. Debería poder descargar toda la cadena de bloques en unas pocas horas. Sin embargo, la tasa de transferencia promedio es de aproximadamente 0,5 KB/s. ¿Alguna idea de cuál podría ser el problema? Estoy ejecutando v0.14.2 y la cantidad de conexiones salientes es 3. Ya cambié la memoria caché a 800 MB, pero eso no cambió nada.

¿Cuántas conexiones entrantes ves? ¿Estás en Windows, Linux o macOS? Por lo que vale, tengo el mismo problema. Estoy en 0.4.2 en Windows 10 en una conexión de red de 100 Mbit/seg. El primer 25% aproximadamente de la cadena de bloques se sincronizó rápidamente, pero las cosas se pusieron muy lentas después de eso. Recibo un bloque nuevo cada 20 segundos. Aproximadamente 2 entradas, 4 conexiones salientes.
Lo uso en Windows 8.1. Tengo 8 conexiones salientes ahora (necesitaba eliminar un archivo de cadena de bloques porque era un problema aparte después de haber hecho esta pregunta). Actualmente se tarda 3 años en descargar todo lo que es una tontería.
Probablemente no sea la descarga real de bloques lo que lo hace lento. Según la experiencia personal en una computadora portátil Core i5 de 2,5 GHz con Bitcoin Core v0.15.1, tomó más de cinco días realizar la sincronización inicial. La mayoría de los lentos parecían estar validando bloques. Ciertamente no fue tan lento inicialmente, por lo que sospecho que un BIP se activó en algún lugar a lo largo de la cadena de bloques que hace que la validación se ejecute lentamente después de eso. Me di cuenta de que parecía más rápido por un tiempo si salía de manera segura y dejaba que Bitcoin Core se apagara bien antes de volver a encenderlo.
Hola Willtech, gracias. Resultó que Bitcoin Core no funciona muy bien con la unidad de red. He mapeado los datos desde entonces con iscsi y esto funcionó bien. Aún así, toda la sincronización es lenta en general por diseño, lo cual es malo, pero parece que no hay nada para evitarlo.
@michL Gracias. Eso lo haría. Si mi respuesta a continuación le ha ayudado, le agradecería que la marcara como aceptada para que la pregunta no quede "sin respuesta".
Mi firewall de Windows 10 lo estaba bloqueando

Respuestas (5)

Sincronización de Bitcoin Core muy lenta

Bitcoin Core es capaz de realizar una sincronización completa en un período de tiempo relativamente corto, dependiendo principalmente del hardware.

La mayor parte del trabajo realizado no es descargar los bloques, sino validarlos y cada transacción que contienen. No solo depende de la descarga de los bloques sino también de la cantidad y complejidad de cada transacción. La descarga de los bloques en sí no suele ser un problema si está conectado (saliente) a varios nodos. Puedo descargar bloques generalmente en cuarenta y cinco segundos cada uno (lo que incluye el tiempo de solicitud, etc. y la validación, así como la transferencia) cuando he estado desconectado y me estoy poniendo al día con mi enlace local restringido de 256 Kbps. Mi velocidad de carga es baja y la latencia es alta. A razón de un bloque cada cuarenta y cinco segundos, actualmente se necesitarían más de doscientos sesenta y tres días para completar toda la cadena de bloques, ya que hay más de 506822 bloques en el momento de la escritura.

Según mi experiencia personal, la sincronización inicial en realidad tardó más de cinco días en completarse en una computadora portátil Core i5 de 2,5 GHz con 4 GB de RAM que ejecutaba Fedora con Bitcoin Core v0.15.1. Para eso, usé ADSL2+ y nunca percibí que la descarga real de los bloques fuera el problema.

Rendimiento de la sincronización inicial

El rendimiento de la sincronización inicial se reduce en gran medida al rendimiento individual de su computadora, siempre que su Internet esté bien.

Utilice siempre la última versión de lanzamiento de Bitcoin Core (incluye bitcoin-qt y bitcoind) descargada del sitio oficial en www.bitcoin.org . Una actualización es segura y fácil, simplemente salga de forma segura de Bitcoin Core primero y haga una nueva copia de seguridad segura wallet.datantes de actualizar.

Ajuste de parámetros

Hay algunos parámetros que puede mirar y considerar dependiendo de su sistema. Siempre haga una copia de seguridad de su billetera antes de realizar cualquier cambio. Los parámetros se pueden ingresar en la línea de comando o, en general, en su bitcoin.confarchivo, que necesitaría para salir y reiniciar Bitcoin Core en ese caso para ver el efecto. Algunas cosas a considerar que podrían marcar la diferencia:

Supongo aquí que está ejecutando bitcoin-qt, que es la versión GUI y no bitcoind.

Si se utilizan parámetros en el bitcoin.confarchivo, omita el -.

  • -datadir=Podría tener su datadir en un disco rápido. Si mueve toda su carpeta .bitcoin, deberá especificar este parámetro en la línea de comando. Tenga en cuenta que si cambia su directorio de datos y no copia primero la carpeta .bitcoin a la nueva ubicación, se creará una nueva billetera y comenzará a descargar la cadena de bloques nuevamente desde el principio.
  • -dbcache=El valor predeterminado para esto es 450. Si tiene 8 GB de RAM, puede configurarlo fácilmente en 4096
  • par=El valor predeterminado para esta configuración es automático, pero no sé qué hace la configuración automática. Puede intentar establecer esto en -1, lo que deja un núcleo libre.
  • -banscore=Puede intentar establecer esto en 10 para iniciar antes los nodos que se comportan mal.
  • -listen=Puede configurar esto temporalmente en 0 para deshabilitar las conexiones entrantes mientras realiza la sincronización inicial. Su nodo ocupado no necesita el trabajo adicional.

Después de la sincronización inicial, puede revertir esta configuración a sus valores predeterminados, pero probablemente deje su directorio de datos donde sea que lo coloque.

Algunos de estos parámetros están disponibles como opciones en el menú Configuración > Opciones de bitcoin-qt.

TLDR; La respuesta corta si lo quieres rápido es conseguir una computadora rápida, mucha RAM, un disco duro rápido e Internet rápido. Lo mismo que cuando quieres algo rápido en una computadora.

En el mundo real, y por experiencia personal, el uso de una SSD aumentó la velocidad de sincronización más de 10 veces en mi sistema de ejemplo con respecto al rendimiento mencionado anteriormente.

anécdotas

Ejemplo de la vida real de rendimiento variable del sistema: Conozco personalmente a alguien que tuvo que trabajar en un archivo de Illustrator bastante grande, pero no extraordinariamente grande. Lo abrió en su Mac de especificaciones superiores de ~ 12 meses, que generalmente funciona muy bien y era prácticamente inutilizable (respuesta lenta). Solo por diversión, pensó que probaría el mismo archivo en una PC estándar, lo abrió en Illustrator y fue completamente normal. Algunas compilaciones de hardware/software tienen cuellos de botella para algunos procesos. El resultado opuesto es probablemente cierto para algunas operaciones.

También tenga en cuenta que he observado que salir y reiniciar Bitcoin Core durante la sincronización inicial parece acelerarlo un poco por un tiempo una vez que se conecta a los nodos nuevamente.

Haciendo referencia nuevamente a la experiencia personal, la sincronización en Windows 10 de 64 bits parece ser mucho más rápida que la sincronización en Linux en el mismo hardware; incluso si Windows se ejecuta en Gnome-Boxes, se agita fácilmente a través de 100 bloques por segundo durante las etapas iniciales. de descarga

Alternativas

Si tiene serios problemas esperando para sincronizar Bitcoin Core (un cliente de nodo completo) y no necesita las características adicionales que proporciona Bitcoin Core, puede considerar probar Electrum (no es un cliente de nodo completo) que no necesita hacer el sincronización inicial. En Fedora 27, obtener Electrum es tan simple como sudo dnf install electrum.

Tuve el mismo problema en una máquina muy antigua (con 4 GB de RAM y una CPU Intel Core 2 Duo E8400) con Debian GNU/Linux. Leí la muy útil respuesta de @Willtech y derivé el siguiente comando:

./bitcoin-qt -banscore=10 -dbcache=1024 -listen=0

Esto resultó en un tiempo de sincronización de aproximadamente 2 semanas en esa PC. Mucho tiempo, pero mucho mejor que tener que comprar hardware nuevo...

Perdón por necro esta publicación, pero estos problemas persisten hasta el día de hoy, incluso en Satoshi: v0.20.x.

Aquí hay una solución rápida para aliviar sus problemas. Especifique manualmente las direcciones IP de los pares en la consola. Si está usando Bitcoin-qt, use ctrl+t para abrir la consola y escriba:

addnode <node IP>:<node port, almost always 8333> onetry

por cada IP que quieras.

Puede obtener IP de nodo de un directorio de nodo público, como Bitnodes . Elija un grupo de nodos aleatorios y asegúrese de que no estén todos en la misma ubicación geográfica y/o de algún proveedor de VPS (es decir, Amazon, Google, etc.) e intente diversificarlos. Debería aumentar un poco su velocidad, ya que esos nodos lo ayudarán con el descubrimiento de pares.

Supongo que tu computadora es demasiado lenta.

Use la última versión (0.15.1 por ejemplo) y no cambie los valores de caché a menos que su RAM sea inferior a 8 GB (800 MB es menos que la configuración predeterminada, por lo que al configurarlo realmente lo empeoró).

Mirando Bitcoin Core v0.15.1 dice que el valor predeterminado dbcachees 450 MB

Por alguna razón, algunos nodos no le brindan ningún bloqueo cuando está conectado a ellos. Para ver si esto le está sucediendo, abra Peers (Ventana > Peers) y verifique cuánto se recibe por cada nodo. Si un nodo no le brinda ningún dato, simplemente prohíbalo haciendo clic derecho y seleccionando "Prohibir por 1 hora". Haga esto hasta que esté conectado a un nodo que realmente le envíe bloqueos.

bitcoind se conecta a 10 nodos como estándar, pero si no tiene suerte, se conectará a 10 nodos que no le darán ningún bloqueo. Normalmente, solo esperar resolverá este problema, pero prohibir los nodos hasta que se conecte a algunos rápidos es una forma mucho más rápida.