Eigene bootstrap.dat erstellen?

Da ich in letzter Zeit viel Bitcoin-Clients für einige Experimente heruntergerissen und eingerichtet habe, habe ich mich gefragt, ob es eine einfache Möglichkeit gibt, die Synchronisation mit dem Netzwerk zu beschleunigen. Eine Methode, die mir in den Sinn kommt, ist die bootstrap.datDatei, die von einigen Leuten verteilt wird. Das Problem ist, dass die letzten 40'000 Blöcke, die am teuersten zu bekommen und zu verifizieren sind, nicht enthalten sind.

Jetzt habe ich mich gefragt, wie bootstrap.datich selbst eine solche erstellen kann, aus einer guten Kopie, die ich auf einem anderen Computer habe. Irgendeine Idee?

Antworten (6)

Die Blockdateien haben das gleiche Format wie die Bootstrap-Datei. Ihr Format ist wirklich einfach: Verketten Sie einfach alle Blöcke, nachdem Sie ihnen die Netzwerknummer (um ein Mischen der Testnetze zu vermeiden) und die Blocklänge vorangestellt haben.

[network number] [length] [block header] [block transactions]
[network number] [length] [block header] [block transactions]
[network number] [length] [block header] [block transactions]
... repeat for all blocks

Um eine Bootstrap-Datei zu erstellen, müssen Sie nur die Daten blk00001.datbis zu Ihrer letzten Blockdatei (hier das ist blk000054.dat) greifen und alles in die bootstrap.datDatei einfügen, vorzugsweise sortiert, damit sie alle auf einmal importiert werden können ohne Blöcke tauschen zu müssen.

Ich denke, Sie können sogar die Blockdateien selbst einfach verketten, da sie bereits im richtigen Format vorliegen und das Format die Verkettung unterstützt.

Ich kannte diese Funktionalität nicht und frage mich, was der Sinn dieser Dateien ist, da Sie immer ein Archiv mit allen blkXXX.datDateien herunterladen und im entsprechenden Verzeichnis dekomprimieren können, wobei Sie genau die gleichen Ergebnisse erhalten, außer ohne die Umbenennung in ".old" at die Enden
Hinweis: Dies ist keine bevorzugte Methode mehr. Das Verketten der Dateien führt zu Problemen mit verwaisten Branches. Siehe die Antwort von Peter Josling unten.

Bitcoin Core enthält ein Tool, um dies richtig zu tun (alle verwaisten Blöcke herauszufiltern, alles in die richtige Reihenfolge zu bringen – was viel besser funktioniert, als nur die Blockdateien zu verketten. Es ist in einer eigenen README dokumentiert, hier: https://github .com/bitcoin/bitcoin/tree/master/contrib/linearize

Zusamenfassend:

  1. Starten Sie Bitcoin mit einem rpcuserund rpcpasswordin Ihrer Konfigurationsdatei mit dem richtigen Speicherort gemäß https://en.bitcoin.it/wiki/Running_Bitcoin#Bitcoin.conf_Configuration_File
  2. Überprüfen Sie die Bitcoin-Quelle von Github und cdauf contrib/linearize.
  3. Kopieren Sie es example-linearize.cfgnach linearize.cfgund aktualisieren Sie es mit Ihren rpcuser/ rpcpassword-Werten, zusammen mit der maximalen Blockhöhe, die Sie ausgeben möchten ( max_height), und dem Pfad zu Ihrem Datenverzeichnis ( input) sowie dem Pfad zu Ihrer gewünschten Ausgabedatei ( output_file).
  4. Ausführen ./linearize-hashes.py linearize.cfg > hashlist.txtgefolgt von ./linearize-data.py linearize.cfg.
Nachdem er sehr viel Zeit mit diesem Thema verbracht hat, muss die Antwort von Peter Josling mehr positiv bewertet werden. Das Verketten der Dateien von einem Knoten ohne Bereinigung führt zu unerwarteten Ergebnissen, z. B. dazu, dass der synchronisierende Client zum Netzwerk-Download springt, nachdem ein verwaister Zweig erkannt wurde. Mein Vertreter wird mir nicht erlauben, Kommentare oder positive Stimmen abzugeben, aber jeder, der eine Bootstrap-Datei erstellt, muss sich wirklich der Fallstricke bewusst sein, die mit der einfachen Verkettung der blk*.dat-Dateien verbunden sind
2019 sollte dies die richtige Antwort sein. Vielen Dank

 Vom Mac

  1. Terminal öffnen
  2. Gehen Sie zu dem Ordner, in dem sich die Blöcke befinden. In diesem Fall der Ordner von Bitcoin (dasselbe gilt für andere Bitcoin-Forks)

    cd "Library/Application Support/Bitcoin/blocks/"
    
  3. Führen Sie diesen Code aus, der alle blk-Dateien verkettet. Stellen Sie sicher, dass Sie alle nummerierten Blöcke enthalten, die Sie in Ihrem Bitcoin-Ordner finden. In diesem Fall sind es 4

    cat blk000*.dat > bootstrap.dat
    
  4. Fertig.

Das Erstellen Ihrer eigenen bootstrap.dat ist ziemlich einfach. Wechseln Sie in Windows zu Ihrer Eingabeaufforderung und verwenden Sie den folgenden Befehl.

Copy /b blk00000.dat+blk00001.dat+blk00002.dat bootstrap.dat

Sie sollten mit den + blk*.dat-Dateien weitermachen, bis Sie die letzte erreichen. Um es Ihnen einfacher zu machen, führen Sie einfach eine Batch-Datei aus, die sich darum kümmern kann, sie alle hinzuzufügen, ohne jede blk*.dat-Datei eingeben zu müssen. Kopieren Sie einfach den folgenden Code und fügen Sie ihn in eine Textdatei ein, nennen Sie ihn etwa Create_Bootstrap.cmd und führen Sie ihn aus Ihrem /blocks-Ordner aus.

@echo off 
setlocal enableDelayedExpansion 

set BITCOINDIR=%APPDATA%\bitcoin\blocks
for /F %%x in ('dir /B/D/ON %BITCOINDIR%\blk*.*') do (
  IF NOT [!B!] == [] set B=!B!+
  set FILENAME=%BITCOINDIR%\%%x
  set B=!B!"!FILENAME!"
)
copy /b %B% bootstrap.dat

oder verwenden Sie einfach "copy /b blk*.dat bootstrap.dat"

Gehen Sie zu en.blockchaindownload.nl und laden Sie den neuesten Chaindownload herunter. Auf der Website ist auch eine Anleitung, die Ihnen erklärt, wie es funktioniert.

Legen Sie diese Datei einfach auf einen USB-Stick und Sie können sie immer wieder verwenden. Die Nutzung ist kostenlos und aktualisiert den Download zweimal pro Woche. Es verwendet Torrents mit 2 oder 3 (je nach gewähltem Torrent) Webseeds für die Geschwindigkeit, die Sie benötigen.

Es ist ziemlich intuitiv, welche Dateien kopiert werden müssen und wohin, sobald Sie einen vollständigen Knoten erstellt haben. Was nicht so intuitiv ist, ist das Bootstrap eines vollständigen Knotens, bevor Sie Ihren ersten vollständigen Knoten erstellt haben. Zunächst müssen Sie wissen, wo die Dateien für die verschiedenen „ Betriebssysteme “ abgelegt werden müssen. Ich bin mir nicht sicher, ob es Little- oder Big-Endian-Probleme beim Kopieren der rohen Blockchain-Knotendateien zwischen verschiedenen Betriebssystemen gibt.

Ein anderer Ansatz besteht darin, das Protokoll das Problem behandeln zu lassen. Sekundäre und tertiäre Knoten bauen sich sehr schnell auf, wenn sie sich in Ihrem eigenen LAN mit hoher Bandbreite befinden. Richten Sie einfach einen sekundären Knoten (indem Sie seine bitcoind.conf-Datei anpassen) auf den primären Knoten, der bereits mit „connect=Your_IPv4_LAN_Address“ erstellt wurde. Solche Builds bewegen sich sehr schnell ... Sie finden es vielleicht schneller, als das Hauptbuch auf einen USB-Stick zu schreiben und es auf einen anderen Computer zu kopieren.