Ich habe Bitcoin ABC installiert, bitcoin.conf so eingestellt, dass es auf eine Kopie meines Verzeichnisses von Bitcoin Core zeigt, und es mit dem Netzwerk synchronisieren lassen. Alles war gut, bis es an der Gabelung einfror (1. August 2017, 6:23 Uhr). Der Client reagiert, aber mein Fortschritt rührt sich nicht und die "Geschätzte verbleibende Zeit bis zur Synchronisierung" bleibt bei "Berechnung ...". Zuerst dachte ich, ich hätte eine Art Netzwerkfehler, aber das scheint nicht der Fall zu sein Fall. Ich habe 8 aktive Verbindungen. Warum wird es nicht über diesen Punkt hinausgehen und die Post-Fork-Transaktionen herunterladen?
Bitcoin ABC, v0.16.2.0-unk auf Ubuntu 17.10 (Mate).
Sie haben auch den gesamten Kettenstatus kopiert, was den Knoten verwirrt und dazu führt, dass er die Synchronisierung nicht fortsetzen kann, da der Kettenstatus besagt, dass die Bitcoin Cash-Kette ungültig ist und die Knotendinge, die die Kette derzeit verwendet, ebenfalls ungültig sind. Sie können dies beheben, indem Sie den Kettenstatus entfernen. In diesem Fall beginnt die Neuindizierung.
Dies behebt jedoch möglicherweise nicht alle Ihre Probleme, da sich die Bitcoin-Kette immer noch auf der Festplatte befindet und dies weiterhin indiziert und überprüft wird. Daher müssen Sie möglicherweise einige der blk*.dat- und rev*.dat-Dateien (die höher nummerierten) löschen, damit sie in einen Zustand vor dem Fork zurückkehren, und dann Bitcoin Cash ab diesem Zeitpunkt synchronisieren.
Details sind, dass wir das .bitcoin
Verzeichnis kopieren, aber das .bitcoin/chainstate
Verzeichnis entfernen. Wenn Sie den Client jetzt ausführen, friert er wieder ein, wenn er zu den blk*.dat
Dateien gelangt, die sich hinter dem Fork befinden. Indem Sie es ausführen, während es auch läuft:
watch -n 1 'sudo lsof -c bitcoin | egrep -o "bitcoin/blocks/(blk|rev).*dat" | uniq | sed -E "s/^.+$/& `date`/" | tee -a recent.blk'
Und
watch tail recent.blk
,
Ich konnte feststellen, dass die zu löschenden Dateien .bitcoin/blocks/{blk,rev}00953.dat
und höher sind. Das heißt, halten Sie 00000 bis 00952. Als ich dann den Client erneut ausführte, funktionierte es. Nach dem Fork wurde es mit dem Netzwerk synchronisiert. Sie können sich die zweimalige Ausführung ersparen, indem Sie einfach sowohl das chainstate/-Verzeichnis als auch die relevanten Dateien in blocks/ löschen. Wenn Sie den Client ausführen, wird er sagen: "Fehler beim Laden der Blockdatenbank, möchten Sie jetzt neu erstellen?" Antworten Sie mit „Ja“, und dann heißt es „Reindexing the blocks on disk“, gefolgt von „Syncing the Headers (478436)“. Diese letzte Zahl ist die Anzahl der Blöcke in blk00000.dat
bis blk00952.dat
und geht der Abzweigung bei 478558 voraus.
watch -n 20 'sudo lsof | egrep -o "bitcoin/blocks/(blk|rev).*dat" | uniq | tee -a recent.blk'
. Auf diese Weise erhalte ich eine Liste der geöffneten Block- und Rev-Dateien, die in aufgeführt sind recent.blk
, und ich kann sehen, welche zuletzt geöffnet war. Wenn dies erledigt ist, und wenn es sein muss, werde ich von da an einfach löschen.
Andreas Chow
Diagonale