Wie kann man die anfänglichen Blockchain-Datendateien sicher herunterladen?

Ich sehe mehrere Quellen für binäre Downloads der Bitcoin-Blockchain. Können diese sicher verwendet werden?

Hilft Checkblocks überhaupt? - bitcointalk.org/index.php?topic=74858.0
Nein. Auch auf dem höchsten -Checklevel werden Signaturen nicht geprüft.
URL für die Blockchain-Datendateien von Sourceforge: sourceforge.net/projects/bitcoin/files/Bitcoin/blockchain
Ich glaube, die beste Antwort auf diese Frage ist, "Bitcoind es aus dem Netzwerk herunterladen zu lassen" (beachten Sie, dass Sie -addnode oder -connect= verwenden können, um sich direkt mit einem bekannten zuverlässigen Knoten zu verbinden). Außerdem habe ich einen Patch für 0.7.0 bereit, der es ermöglicht, eine blk0000?.dat-Datei direkt zu importieren, mit der gleichen Überprüfung wie für Blöcke, die aus dem Netzwerk heruntergeladen werden. Es ist jedoch kaum langsamer als das Herunterladen, da der Index neu erstellt werden muss.

Antworten (4)

Soweit ich weiß, gibt es kein denkbares Angriffsmodell, wenn Sie die Blockchain verwenden, um den regulären Bitcoin-Client zu impfen. Es akzeptiert keinen ungültigen Block. Und es versteht, dass die „längste“ Blockchain gewinnt. Eine kompromittierte Datei, die länger als die offizielle Blockchain ist, kann also nicht existieren, und eine kompromittierte Datei, die kürzer ist, würde einfach abgelehnt, sobald sich der Client mit dem Netzwerk verbindet.

Beim Start überprüft der Client, ob die Kette grundsätzlich gültig ist und den neuesten Prüfpunkt enthält.

Wenn es einen Angriff gibt, der auf diese Weise funktioniert, handelt es sich um einen Fehler im Client. Denn jemand könnte Ihnen die gleiche „kaputte“ Blockchain auch über das Netzwerk schicken.

An Blöcken, die vom Netzwerk empfangen werden, werden viel mehr Prüfungen durchgeführt als an Blöcken, die von der Festplatte gelesen werden; Der Start wäre unerträglich langsam, wenn bei jedem Start eine vollständige Überprüfung der Blockchain durchgeführt würde.
Ich hatte den Eindruck, dass jeder Block nach dem letzten Kontrollpunkt vollständig überprüft wurde. Wenn das nicht stimmt, ...
Die durchgeführten Prüfungen können in drei Gruppen eingeteilt werden: A) Blockgültigkeit, B) Verknüpfung und C) Skriptgültigkeit. A beinhaltet Regeln wie Proof-of-Work, generierter Betrag, ... B geht es darum, ob Transaktionen keine doppelten Ausgaben sind. C ist, ob Ausgaben mit dem richtigen Schlüssel getätigt werden. Beim Herunterladen von Blöcken werden A und B ausgeführt und C nach dem letzten Prüfpunkt. Beim Start wird nur A an den letzten 2500 Blöcken durchgeführt. Seit 0.6.0 können Sie -checklevel=N (mit N>1) verwenden, um einige der Regeln von B auch beim Start zu überprüfen.

[Aktualisierung: Mit dem Bitcoin-Client v0.7 ermöglicht -loadblock= dem Client, Blockchain-Daten sicher aus einem lokalen Blockchain-Archiv statt aus dem Netzwerk zu importieren. Hierfür kann der Blockchain-Download von BitcoinCharts.com verwendet werden. Kopieren Sie die blk*.dat aus diesem Download in ein temporäres Verzeichnis und starten Sie Bitcoin-qt -loadblock=temp/blk0001.dat und beobachten Sie, wie die Blöcke schnell geladen werden.]

Ich werde versuchen, die Frage selbst zu beantworten.

Aktuelle Kopien der Blockchain-Datendateien werden von einem der Kernentwickler des Bitcoin.org-Teams zur Verfügung gestellt (und digital signiert).

Die URL ist nicht SSL, aber es gibt eine digitale Signatur, die verwendet werden kann, um zu überprüfen, ob die heruntergeladene Binärdatei übereinstimmt.

Wenn ich diese verwende, vertraue ich darauf, dass der Entwickler ehrlich ist und die Blockchain nicht verändert hat. Wenn dieser Entwickler es versuchen würde, könnten ungültige Daten in die Blockchain-Datendatei eingeschleust werden, was dann meinen Client dazu bringen würde, Transaktionen zu verifizieren, die anderswo als ungültig zurückgewiesen würden.

Es gibt sogar ein etwas älteres Archiv der Blockchain von der Bitcoin Sourceforge-Distributionsseite:

Ich sehe jetzt auch andere, die binäre Blockchain-Daten bereitstellen.

Diese Seite verwendet weder SSL noch gibt es eine digitale Signatur, um sicherzustellen, dass der Download derselbe ist wie der, der vom Autor gehostet wird.

Obwohl diese Methoden im Allgemeinen nicht als sicher gelten, kann es Situationen geben, in denen die Sicherheit zugunsten der Bequemlichkeit eingetauscht werden kann. Wenn Sie beispielsweise nur zuvor erhaltene Coins ausgeben und nicht erhalten, besteht bei der Verwendung einer dieser Blockchain-Dateien nur ein geringes Risiko.

Kurze Antwort: Wenn der Client die Blöcke überprüft, ist es in Ordnung. Clients tun dies normalerweise nicht, und der Mangel an Gewissheit über die Datenbank ist riskant. Welche Angriffe möglich sind, hängt von den Besonderheiten des Clients ab, aber höchstwahrscheinlich gibt es Angriffe.

Sie müssten dieser Person entweder vertrauen und über eine Datenintegritätsmaßnahme verfügen oder die heruntergeladene Kette selbst erneut validieren. Denken Sie daran, dass der Standardclient bereits heruntergeladene Blöcke ziemlich anders behandelt als heruntergeladene Blöcke.

Eine „Low-Tech“-Lösung könnte darin bestehen, den Bitcoin-Client zweimal auszuführen, einmal mit und einmal ohne die heruntergeladene Kette. Richten Sie sie so ein, dass sie sich miteinander verbinden. Jetzt wird einer der beiden die Kette lokal herunterladen und verifizieren. Nicht der effizienteste Weg, aber so vertrauenswürdig wie das Herunterladen aus dem Internet.

Bearbeiten: Nach einer Diskussion mit Pieter Wuille bin ich mir sicher, dass ich mir nicht sicher bin, wie sicher heruntergeladene Ketten sind, und entfernte Sicherheitsansprüche.

Ich stimme nicht ganz zu: Wenn eine beliebte Blockchain-Download-Site eine beschädigte Blockchain ausgeben würde und ein erheblicher Teil des Netzwerks diese verwenden würde, besteht das Risiko einer Teilung in der Sekunde, in der die beschädigten Transaktionen aufgeteilt werden.
Ich verstehe nicht ganz, was du meinst. Machen Sie sich bewusst, dass die Miner in Pools organisiert sind und dass diese Pools legitime Ketten haben werden. Der Beitrag dieser Pools bestimmt die längste Kette, nicht die Endnutzer. Nach einigen Bestätigungen kann eine Transaktion wie bei allen anderen Transaktionen ziemlich vertrauenswürdig sein.
Aber wenn 10 % der Benutzer denselben beschädigten Download in ihren Knoten verwenden, könnte ihnen eine Transaktion ungültig erscheinen, woraufhin sie die wirklich längste Kette ignorieren. Wenn sie auch etwas Mining-Power haben (z. B. p2pool-Benutzer), werden sie eine Blockchain-Fork erstellen (wenn auch anfangs sehr langsam).
Aha. Der Client muss die Skripte auswerten, aber das ist das Standardverhalten. Eine so beliebte Kette könnte leicht entdeckt werden, aber das ist ein schwaches Argument. Es ist ziemlich heimlich, da viele Transaktionen noch normal verarbeitet werden könnten. Das ist eine berechtigte Gefahr. Die Überprüfung, ob der neueste Mercle-Hash mit dem irgendwo veröffentlichten übereinstimmt, sollte diesem Angriff entgegenwirken. Checkpoints töten auch diese schlechten Ketten, da sie sich nicht mehr aneinanderreihen. Tägliche Checkpoints einführen?
Aha. Sollte die Verbindung mit zufälligen anderen Knoten Ihnen nicht die legitimen Blöcke bringen, als ob Sie sich auf einer beliebigen Gabel befinden? Die Blockchain gabelt sich die ganze Zeit ein wenig, das wird sehr anständig gelöst. Der Teil nach dem letzten Kontrollpunkt muss als potenzieller Fork betrachtet werden, heruntergeladen oder nicht.
Merkle-Hashes befinden sich innerhalb von Transaktionen, wir sprechen von Blöcken. Und alle Prüfpunkte garantieren, dass beim Herunterladen eines bestimmten Blocks sein Hash korrekt ist, wodurch dieser und jeder Teil davor in der Kette gesperrt wird. Wenn Sie jedoch die gesamte Blockdatenbank in endgültiger Form herunterladen, wurden alle diese Überprüfungen bereits durchgeführt. Sie werden beim Start nach dem Download nicht erneut ausgeführt ... 0.7.0 wird eine Möglichkeit einführen, Blöcke aus einer Datei zu laden (während sie vollständig überprüft werden). Ohne dies sollte das Herunterladen einer Blockdatenbank als riskant angesehen werden.
Die Interaktion mit anderen Knoten hilft nichts. Wenn Ihre Blockchain-Datenbank beschädigt ist, haben Sie die Blöcke bereits. Sie werden nicht erneut heruntergeladen, da Ihr Kunde nicht erkennt, dass die, die Sie bereits haben, ungültig sind.

Es gibt ein aktuelles Archiv mit Blockchain-Rohdaten und Anweisungen, wie Sie Ihren bitcoin-qt-Client schnell zum Laufen bringen unter:

Ich habe mich an die Anleitung gehalten und es hat einwandfrei funktioniert. Ich hatte meinen Client in weniger als 3 Stunden zum Laufen gebracht