Instalé Bitcoin ABC, configuré bitcoin.conf para que apunte a una copia de mi directorio de Bitcoin Core y dejé que se sincronice con la red. Todo iba bien hasta que se congeló en la bifurcación (1 de agosto de 2017, 6:23 a. m.). El cliente responde, pero mi progreso no se mueve y el "Tiempo restante estimado hasta la sincronización" permanece en "calculando..." Al principio pensé que tenía algún tipo de error de red, pero ese no parece ser el caso. Tengo 8 conexiones activas. ¿Por qué no se moverá más allá de este punto, descargando las transacciones posteriores a la bifurcación?
Bitcoin ABC, v0.16.2.0-unk en Ubuntu 17.10 (Mate).
También copió todo el estado de la cadena, lo que confundirá al nodo y hará que no pueda continuar con la sincronización porque el estado de la cadena dice que la cadena Bitcoin Cash no es válida y las cosas del nodo que la cadena está usando actualmente tampoco lo son. Puede solucionar esto eliminando el estado de cadena, en cuyo caso comenzará a reindexarse.
Sin embargo, es posible que esto no solucione todos sus problemas porque la cadena de Bitcoin todavía está en el disco y aún indexará y verificará eso. Por lo tanto, es posible que deba eliminar algunos de los archivos blk*.dat y rev*.dat (los de mayor número) para que vuelva a un estado anterior a la bifurcación y luego sincronice Bitcoin Cash desde ese punto en adelante.
Los detalles son que copiamos el .bitcoin
directorio, pero eliminamos el .bitcoin/chainstate
directorio. Si ejecuta el cliente ahora, se congelará nuevamente cuando llegue a los blk*.dat
archivos que están más allá de la bifurcación. Al ejecutarlo mientras también se ejecuta:
watch -n 1 'sudo lsof -c bitcoin | egrep -o "bitcoin/blocks/(blk|rev).*dat" | uniq | sed -E "s/^.+$/& `date`/" | tee -a recent.blk'
y
watch tail recent.blk
,
Pude encontrar que los archivos que deben eliminarse son .bitcoin/blocks/{blk,rev}00953.dat
y superiores. Es decir, mantenga 00000 a 00952. Luego, cuando volví a ejecutar el cliente, funcionó. Después de la bifurcación, se sincronizó con la red. Puede ahorrarse ejecutarlo dos veces simplemente eliminando el directorio chainstate/ y los archivos relevantes en bloques/. Cuando ejecute el cliente, dirá: "Error al cargar la base de datos de bloques, ¿desea reconstruir ahora?" Responda "Sí", y luego dirá "Reindexando los bloques en el disco", seguido de "Sincronizando los encabezados (478436)". Ese último número es el número de bloques hasta blk00000.dat
, blk00952.dat
y justo precede a la bifurcación en 478558.
watch -n 20 'sudo lsof | egrep -o "bitcoin/blocks/(blk|rev).*dat" | uniq | tee -a recent.blk'
De esa manera, obtengo una lista de archivos de bloque y rev que se han abierto, enumerados en recent.blk
, y puedo ver cuál se abrió en último lugar. Cuando esto esté hecho, y si es necesario, lo eliminaré de ahí en adelante.
andres chow
Diagon