Wäre es möglich, eine herunterladbare Blockchain bereitzustellen, die von einer Masse von Menschen aktualisiert und verifiziert wird?

Ab November 2012 ist die Blockchain fast 3 GB groß mit einem nahezu linearen Wachstum von etwa 500 MB/Monat (vermutlich vom exponentiellen Wachstum durch die fest codierte Blockgrößenbegrenzung abgeschnitten).

Ich möchte Bitcoin auf meinem durchschnittlichen Notebook installieren: Das Herunterladen und Überprüfen der neuesten bootstrap.dat von Bitcoincharts dauerte einige Stunden (5–9, schätze ich), aber das waren nur 2,3 GB! Jetzt habe ich darauf gewartet, dass Bitcoin die letzten 2–3 Monate nachholt, in denen die Blöcke erheblich größer waren und jeder Block etwa 5 Sekunden für die Verarbeitung benötigt, mit meiner CPU bei ~25% und meiner Festplatte bei maximale Arbeitsbelastung.

Das ist, gelinde gesagt, nicht nachhaltig.

Wir brauchen ein System, in dem eine bereits verifizierte Blockchain heruntergeladen und direkt in den Bitcoin-Ordner kopiert werden kann, vielleicht in inkrementeller Form. Der Quelle muss vertraut werden, dafür braucht man ein Verifizierungssystem, in dem jeder die Korrektheit der Blockchain kontrollieren und dann signieren kann, ich würde vorschlagen, dafür gpg-Schlüssel zu verwenden.

Die Quelle kann dann beispielsweise über servergestützten Torrent verteilt werden.

Ist das technisch möglich und wie?

Bearbeiten: Da ich das mit einer falschen Denkweise angegangen bin, habe ich eine Art Folgefrage zu den Sicherheitsrisiken von Lightweight-Clients gestellt. Sollte ein Endbenutzer die gesamte Blockchain herunterladen? Oder reicht ein „Lightweight“-Client aus?

Antworten (3)

Es gibt bereits herunterladbare Versionen der Blockchain. Es ist grundsätzlich kein Problem, sie von mehreren Vertrauenspersonen GPG-signieren zu lassen. Jedoch:

  1. Es schwächt etwas die Sicherheit. Mit der Software selbst können Sie den Signaturen vertrauen und den Code einsehen. Mit der Überprüfung von Blockchain-Daten ist dies nicht machbar.

  2. Zukünftige Versionen werden ein anderes DB-Format verwenden, das eine viel schnellere Überprüfung ermöglicht, sodass es keinen großen Vorteil für ein System gibt, bei dem die Überprüfung umgangen wird, aber das Herunterladen der Daten immer noch erforderlich ist.

  3. Langfristig werden Endbenutzer keinen vollständigen Client verwenden, sondern (bestenfalls) einen SPV-Client, der nicht die gesamte Blockchain herunterladen oder verifizieren muss.

Bitcoin ist also absoluter Mist, sagte Nuff? Ist ein SPV-Client nicht noch unsicherer als das Herunterladen einer Blockchain, die von mehreren Personen mit ihren gpg-Schlüsseln und damit ihren E-Mail-Adressen verifiziert wurde?
@Profpatsch: Das habe ich nicht gesagt. Full Nodes sind von entscheidender Bedeutung und ihre Leistung wird sich bald verbessern. Sie sind jedoch nicht für die Verwendung durch Endbenutzer vorgesehen.
@profpatsch SPV ist nicht weniger sicher. Es hat weniger Funktionen, aber diese Funktionen werden von den meisten Endbenutzern nicht benötigt.
Natürlich ist es weniger sicher ... es verifiziert keine Transaktionen, sondern nur einen Arbeitsnachweis. Bei Transaktionen ohne Bestätigung ist der Sicherheitsunterschied sehr signifikant. Tiefer in der Kette ... weniger.
Ich habe gerade eine sehr ähnliche Frage gestellt. Wo sind diese heruntergeladenen Versionen?

Das ist technisch sicherlich möglich (mit ausführen -detachdbund dann das Datenbankverzeichnis kopieren), aber die Frage ist, ob man das möchte.

Treten Sie zunächst einen Schritt zurück. Bitcoin ist so konzipiert, dass es mit angemessener Sicherheit auf leichtgewichtigen Knoten funktioniert (siehe „Vereinfachte Zahlungsüberprüfung“ in Satoshis Artikel ). Die einzige Voraussetzung für Trust Lightweight Nodes ist, dass die Kette mit der meisten Arbeit auch gültige Transaktionen enthält. Solche leichtgewichtigen Knoten erfordern einige Megabyte an Downloads zum Synchronisieren und verursachen fast keine CPU- oder Festplattenlast. Beispiele für solche Node-Implementierungen sind Multibit oder Bitcoin Wallet für Android .

Der Grund dafür ist, dass leichte Nodes davon ausgehen, dass es vollständige Nodes gibt, die alles verifizieren, und dass kein Miner das Risiko eingehen wird, Blöcke zu erstellen, die ungültige Transaktionen enthalten (eine sehr vernünftige Annahme, da in einem gesunden Netzwerk solche Blöcke ignoriert werden). von allen anderen). Diese Full Nodes bilden das Sicherheits-Backbone des Netzwerks, und da sie alles verifizieren, erfordern sie im Wesentlichen Zero Trust. Das ist so etwas wie eine Kerneigenschaft von Bitcoin, die es in kaum einem anderen Zahlungssystem gibt: das Privileg, niemandem vertrauen zu müssen.

Wenn Sie eine vorindizierte Blockchain herunterladen, geben Sie dieses Privileg auf. Sie werden im Wesentlichen einer Person vertrauen (vielleicht ein paar, wenn Sie sich tatsächlich die Mühe machen, Signaturen zu überprüfen), um Ihnen zu sagen, welche Transaktionen in der Geschichte von Bitcoin gültig waren. Dies ist eine viel stärkere Annahme als die, die Sie beim Ausführen eines Lightweight-Clients treffen. Wenn jemand in der Lage wäre, einen solchen Download (sogar unbeabsichtigt!) zu beschädigen, und er von vielen Personen verwendet wurde, könnte das Risiko ein gegabeltes Netzwerk sein. Das könnte eine Katastrophe werden.

Wenn Sie also der Meinung sind, dass Ihr System die aktuelle Last des Ausführens eines vollständigen Knotens nicht bewältigen kann, führen Sie bitte einfach einen leichten Knoten aus. Wenn leichte Software nicht die gewünschten Funktionen bietet, ermutigen Sie sie, sie zu implementieren – sie werden mit der Zeit benötigt.

Als Randnotiz sollte die nächste Version (0.8) von Bitcoind/Bitcoin-Qt viel schneller sein, insbesondere auf Hardware mit langsamer Ein-/Ausgabe.

Es gibt also im Grunde kein Sicherheitsrisiko beim Ausführen eines Lightweight-Clients – sieht aus, als wäre ich ein Idiot.
@Profpatsch: Nicht signifikant, nein. Dies beruht jedoch auf der Annahme, dass es auch viele vollständige Knoten gibt.
Es gibt einen signifikanten Unterschied zwischen dem Nichtvertrauen und dem Vertrauen, dass die längste Kette nur gültige Transaktionen enthält. Ob man das riskieren will, ist eine wirtschaftliche Frage. Aber es ist sicherlich eine kleinere Annahme, als eine vorindizierte Datenbank zu akzeptieren.
Da es diese Frage nicht gab und ich denke, dass mehr Leute es wissen wollen, habe ich sie hier gestellt: bitcoin.stackexchange.com/questions/5478/…
Ich habe ein kleines Problem mit dieser Antwort. Angenommen, ich lade eine fehlerhafte (manipulierte) Blockchain herunter. Werden die Coins, die ich generiere (vorausgesetzt, es gelingt) nicht von den Bitcoin-Peers abgelehnt? Entschuldigen Sie meine Unwissenheit, ich versuche nur, mich damit zu beschäftigen.
Wenn Sie eine fehlerhafte Blockchain herunterladen, wird Ihr eigener Client sie nicht einmal importieren. Wenn Sie eine fehlerhafte vorindizierte Datenbank herunterladen (die nicht die Kette selbst, sondern den resultierenden Satz nicht ausgegebener Münzen enthält), gibt es mehrere Gefahren. Sie können Sie glauben machen, dass bestimmte eingehende ungültige Transaktionen gültig sind (was Sie als Händler nicht wollen), und andere Knoten werden diese tatsächlich ablehnen - aber vielleicht haben Sie ihnen im Gegenzug bereits Waren geschickt? Das größere Problem ist, wenn viele Nodes die gleiche fehlerhafte Datenbank bekommen ... dann landen sie möglicherweise auf einem eigenen Fork und denken, dass die reale Welt falsch ist.

Sie können wählen, wo Sie herunterladen möchten!

Weitere Informationen finden Sie unter Wie kann die Blockchain am schnellsten heruntergeladen werden?

Ich habe beschrieben, wie man dem Bitcoin-Client mitteilt, sich mit benutzerdefinierten Knoten zu verbinden. Auf diese Weise können Sie Bitcoin beispielsweise anweisen, sich mit den wichtigsten Hub-Knoten zu verbinden.

Das hat 2 Vorteile:

A) volle Kontrolle, wem man vertrauen kann

B) Flammender, fetter Bitcoin-Blockchain-Download.