Die vollständige Bitcoin-Datenbank ist nicht auf jedem Knoten gleich

Stimmt es, dass eine vollständige Bitcoin-Datenbank nicht auf jedem Knoten gleich ist?

Ich meine Datenbank (Dateien) in blocksdir, die den offiziellen Bitcoin-Client lokal erstellen.

Was ist diese Bitcoin-Datenbank?

Antworten (2)

Nein, sie sind nicht identisch. Dafür gibt es verschiedene Gründe:

  • Verschiedene Knoten können Blöcke in einer anderen Reihenfolge sehen. Immer wenn ein Fork auftritt, haben per Definition einige Knoten im Netzwerk zuerst einen Block gesehen und andere zuerst den anderen. Wenn sie alle zuerst die gleichen Blöcke sehen würden, gäbe es keine Gabelung. Da Bitcoin Core Blöcke in nur angehängten Blockdateien speichert, spiegelt die Reihenfolge auf der Festplatte die Reihenfolge wider, in der diese Blöcke im Netzwerk gesehen wurden. Verzweigungen in Forks, die reorganisiert werden, werden auf der Festplatte gehalten.

  • Verschiedene Knoten sehen möglicherweise nicht einmal alle Blöcke, die ein anderer Block sieht. Wenn es eine Verzweigung zwischen Block A und B gibt und A schließlich weiter aufgebaut wird, werden die Knoten, die A zuerst gesehen haben und nicht mit Peers verbunden sind, die B zuerst gesehen haben, B wahrscheinlich überhaupt nicht sehen. Dies gilt insbesondere für neu synchronisierte Knoten, die normalerweise nichts von historischen Forks erfahren und nur den Zweig heruntergeladen haben, der gewonnen hat.

  • Verschiedene Versionen von Bitcoin Core verwalten die Blockdateien unterschiedlich. Frühere Versionen hinterließen teilweise geschriebene Blöcke in den Dateien, wenn beim Schreiben eines neuen Blocks ein Absturz auftrat. Neuere Versionen verwenden diesen Speicherplatz wieder.

Trotz alledem wird der aktive Zweig der Blockchain (der nach den Konsensregeln die am meisten arbeitende Kette ist) im Laufe der Zeit über verschiedene Knoten hinweg konvergieren. Dies geschieht nicht sofort (da Forks möglicherweise aufgelöst werden müssen, was Minuten oder sogar Stunden dauern kann) und bedeutet aus den oben genannten Gründen nicht, dass die Dateien auf der Festplatte identisch sind.

Warum ist die Datenbank, die Bitcoin Core vor einem Jahr (bis jetzt) ​​heruntergeladen hat, dieselbe wie die Datenbank, die vor einer Woche heruntergeladen wurde?
Es ist nicht. Das habe ich beantwortet. Die beste Kette, auf die sie sich einigen, wird (mit sehr hoher Wahrscheinlichkeit) identisch sein, ihre Datenbank jedoch nicht .
aber ich habe diese beiden Datenbanken (Dateien von blk00000.dat bis blk00974.dat). Und sie sind identisch
Die Dateien, die beim Synchronisieren der historischen Kette erstellt werden, werden. Die erstellten Dateien werden dabei nicht unbedingt normal ausgeführt.
Die Frage bezieht sich also auf Dateien in blocksdir. Sie sind gleich?
Wie ich jetzt schon oft geantwortet habe: Nein, sie sind nicht unbedingt identisch. Ich fürchte, es gibt eine Sprachbarriere, die mich daran hindert, dies zu erklären.
Du sagst The files created while syncing the historical chain will be. Also erzähle ich über diese Dateien.
Ich weiß nicht, was ich noch sagen soll.

Alle Knoten, die zu derselben Kette gehören, haben dieselbe Blockdatenbank. Das ist das Prinzip, das der verteilten Blockchain zugrunde liegt.

Die Datenbanken zweier Knoten können sich im zuletzt gespeicherten Block unterscheiden, wenn ein veralteter Block erstellt wird.

Man kann einen anderen Block oben in der Kette haben, bis es erkennt, dass das Netzwerk einen anderen Block gewählt hat. An diesem Punkt wird der Knoten synchronisiert und seine Datenbank ist die gleiche wie bei jedem anderen vollständigen Knoten.

Bearbeiten

Entschuldigung, mein Fehler, ich hatte irgendwo gelesen, dass alle erstellten veralteten Blöcke nach einer Weile gelöscht wurden, also dachte ich, dass jeder die kleinen *blk-Dateien außer den letzten hatte. Vielleicht hat diese Seite es zu sehr vereinfacht.

Danke, dass du mich korrigiert und mich richtig verstehen lässt.

Ich meine Dateien blk*.dat, außer der letzten (die nicht voll ist). Sind diese Dateien auf allen gleich oder unterscheiden sie sich?
Diese Dateien sind die Blockdatenbank, die, wie ich in meiner Antwort sagte, in allen Knoten gemeinsam und gleich ist
Das ist falsch. Während die längste Kette häufig über Knoten hinweg identisch ist, ist dies bei den blk*-Dateien wahrscheinlich nicht der Fall, da diese auch alle Gabelungen enthalten, die Ihr Knoten gesehen hat, und in welcher Reihenfolge. Unterschiedliche Knoten sehen unterschiedliche Gabeln.
Entschuldigung, ich hatte irgendwo gelesen, dass veraltete Blöcke nach einer Weile gelöscht wurden, also dachte ich, dass die zurückgegebenen Dateien dieselben sind
Beim Ausführen mit Pruning werden alte veraltete Blöcke tatsächlich gelöscht (aber auch nicht veraltete).