Wenn ich die Blockchain zum ersten Mal mit Bitcoin herunterlade, woher weiß ich, wann es fertig ist?

Ich verwende Bitcoin auf Ubuntu, kopflos. Es gibt also keine GUI, die mir sagt, wann es fertig ist.

Woher weiß ich das?

Antworten (7)

Führen bitcoind getinfoSie die Shell Ihrer Wahl aus und vergleichen Sie die Blockanzahl, die nach "blocks" aufgeführt ist, mit der hier aufgeführten Blockanzahl . Wenn die beiden Nummern gleich sind, ist Ihr Client auf dem neuesten Stand.

Hier ist ein Skript, das genau das tut:

echo `bitcoin-cli getblockcount 2>&1`/`wget -O - https://blockchain.info/q/getblockcount 2>/dev/null`

Laufen bitcoind getblocktemplate. Wenn Sie nicht aufgeholt werden, wird es mit einem Fehler von zurückkommen -10.

Das habe ich überprüft, dem ist nicht so. (Ich habe es zwar im Testnet-Netzwerk überprüft, sollte aber in diesem Fall nicht anders sein als das Mainnet.)
Dies ist ein kleiner Hack, aber es funktioniert mehr oder weniger. Groß :)
@StevenRoose, was war das Problem, das Sie bei dieser Methode gefunden haben? Wann hat es nicht funktioniert? Es scheint bei mir zu funktionieren und es tritt ein Fehler auf, wenn ich gerade Blöcke herunterlade.
@ StephenM347 es ist mehr als ein Jahr her, wahrscheinlich gab es damals ein Problem, das inzwischen behoben wurde.

Der bitcoindBefehl zeigt jetzt verschiedene Fehler an.

Die neue Art der Überprüfung ist mitbitcoin-cli getblocktemplate

Die Verwendung von Skripten wurde dort veröffentlicht, wo ich zum ersten Mal auf diese Frage gestoßen bin

Wie überprüfe ich mit Bitcoind oder json-rpc, ob die Blockchain auf dem neuesten Stand ist?

Der einfachste Weg ist zu laufen

bitcoind -blocknotify myscript.sh %s

In den Blöcken, nachdem Bitcoin die Blockchain eingeholt hat, werden Ihre Skripte mit dem neuen Blockhash aufgerufen. Sie können eine Nachricht drucken oder andere in diesem Skript erforderliche Aktionen ausführen

Eine alternative Methode (die mit neueren Versionen arbeitet), die nicht auf externe Websites angewiesen ist, besteht darin , das Feld und das Feld zu verwenden bitcoin-cli getblockchaininfound zu vergleichen .headersblocks

Derzeit werden Header vor den eigentlichen Blöcken heruntergeladen, um die Blockchain schneller zu synchronisieren. Dies wird als Headers-First-Sync bezeichnet. Folglich ist die Anzahl der Blockheader während des anfänglichen Blockdownloads (IBD) höher als die Anzahl der Blöcke. Wenn diese Zahl die Anzahl der Blöcke „einholt“, können wir sagen, dass wir mit der Blockchain, die uns unsere Kollegen beworben haben, „auf dem neuesten Stand“ sind.

Ich habe ein Skript geschrieben, um Bitcoin zu starten und Punkte auszugeben, während es sich noch in der IBD-Phase befindet. Wenn die Blockchain aktuell ist, gibt sie eine Meldung aus. Hier ist das Skript: https://github.com/frz-dev/btcutils/blob/master/bitcoin-core/start-bitcoind.sh

Mit nur einem Webbrowser können Sie http://bitcoinwatch.com/ besuchen , um die aktuelle Blockhöhe oder -anzahl des Bitcoin-Netzwerks zu erfahren.

Oder richten Sie Ihre bitcoin-cli auf einen Produktions-Bitcoind-Server und geben Sie den folgenden Befehl ein (beachten Sie, dass Sie stattdessen die *.conf-Datei verwenden sollten):

% ../bin/bitcoin-cli -conf=mainNet-productionServer.conf getblockcount

Am einfachsten ist es, alle Ihre Peer-Verbindungen nach zahlreichen Details abzufragen, die auch die "Starthöhe" für jede von ihnen enthalten.

% ../bin/bitcoin-cli -conf=mainNet-localServer.conf getpeerinfo

Alternativ liefert der folgende libbitcoin-explorer-Befehl (bx, dient einer analogen Rolle wie bitcoin-cli) nur eine einzige Zahl, wenn der bx-Client eine Verbindung zu einem Produktions -Bitcoin-Server (früher Obelisk genannt) herstellt, um ihn nach der Höhe der Blockchain abzufragen.

% bx Abrufhöhe

Um die aktuelle Höhe Ihres zu erstellenden localServers zu ermitteln, versuchen Sie Folgendes:

% ../bin/bitcoin-cli -conf=mainNet-localServer.conf getblockcount

Im Gegensatz dazu bietet der folgende bitcoin-cli help-Befehl zusätzliche Details für Ihr lokales Blockchain-Image, das Sie erstellen:

% ../bin/bitcoin-cli -conf=mainNet.conf help gettxoutsetinfo gettxoutsetinfo

Gibt Statistiken über den nicht ausgegebenen Transaktionsausgabesatz zurück. Beachten Sie, dass dieser Aufruf einige Zeit in Anspruch nehmen kann.

Ergebnis: { „height“:n , (numeric) Die aktuelle Blockhöhe (index) „bestblock“: „hex“, (string) der Hash des besten Blocks hex „transactions“: n, (numeric) Die Anzahl der Transaktionen „txouts ": n, (numerisch) Die Anzahl der ausgegebenen Transaktionen "bytes_serialized": n, (numerisch) Die serialisierte Größe "hash_serialized": "hash", (string) Der serialisierte Hash "total_amount": x.xxx (numerisch) Die Gesamtzahl Menge }

Ihre Blockchain ist vollständig, wenn die beiden Zahlen übereinstimmen. Dieser Ansatz gibt Ihnen eine gute Vorstellung von Ihrem aktuellen Status.