Unterschied zwischen einer beschnittenen und einer unbeschnittenen Blockchain

Auf dem Berliner Blockchain-Meetup hat Gustav Simonsson die baldige Veröffentlichung von Homestead (tm) angeteasert und wir haben über Blockchain-Bloat und die aktuelle Größe der Ethereum-Blockchain diskutiert.

Berliner Blockchain-Treffen

Wir haben die beschnittene und nicht beschnittene Blockchain und die Geth-Fast-Sync- Option besprochen. Jetzt frage ich mich:

  1. Was ist der Unterschied zwischen einer beschnittenen und einer unbeschnittenen Blockchain? Besteht die beschnittene Blockchain noch aus Blöcken? Ist es überhaupt eine „Blockchain“ ?
  2. Was ist der Unterschied im Platzbedarf? Die vollständige, unbeschnittene Kette ist derzeit 7 GB groß. Wie viel Platz benötigt eine beschnittene Kette?
  3. Wie wäre es mit beschnittenen Fast-Sync-Clients zu Light-Clients? Wenn der Platzbedarf geringer ist, ist es nicht besser, Fast-Sync-Clients zu verwenden als unsichere Light-Clients?

Könnten Pruned-Chain-Clients als Light-Clients betrachtet werden?

Antworten (2)

Lass uns einen Schritt nach dem anderen machen.

Blockchains funktionieren im Allgemeinen, indem sie einen Ursprungszustand (Genese) mit ein paar Konten mit Geldern haben, und dann verschiebt jeder Block, den Sie oben auf der Kette platzieren, diese Ursprungsgelder und gewährt dem Miner auch ein bisschen mehr. Wann immer Sie also einen neuen Block in Ihre bestehende Kette importieren, um einen Blick auf Ihre Sicht (Zustand) der Welt zu werfen und diesen Zustand entsprechend den im Block enthaltenen Transaktionen umzuwandeln, gelangen Sie zu einer neuen Sicht dessen, was Sie glauben Welt aussieht. Sie verwerfen Ihre vergangene Sicht auf die Welt nicht, denn wenn es eine Gabelung in der Blockchain gibt (z. B. ein Miner taucht mit einem besseren Block oder vielleicht zwei besseren Blöcken auf), dann müssen Sie Ihre Sicht von diesem vergangenen Zustand auf transformieren die bessere Variante. Dies führt dazu, dass alle vergangenen Zustände, die ihr durchgemacht habt, für die Ewigkeit angesammelt werden.

Wichtig ist, dass Sie sich meistens nicht darum kümmern, wie viel Guthaben ein Konto vor 3 Jahren hatte, Sie interessieren sich nur dafür, wie der aktuelle Stand ist (vielleicht auch vor ein paar Tagen). Warum also all diesen extrem alten Übergangszustand der Vergangenheit beibehalten? State Pruning nimmt im Wesentlichen all diesen Zwischenzustand und spült ihn die Toilette hinunter. Es ist wichtig zu erkennen, dass Sie nur die Zwischenweltansicht wegwerfen, niemals die Blöcke selbst oder andere Daten, die für das Netzwerk ungesund sein könnten (dh ein beitretender Knoten benötigt diese Daten zum Synchronisieren). Durch das Beschneiden Ihres Zustandsversuchs verlieren Sie also die Möglichkeit, den Kontostand der Vergangenheit abzufragen , haben jedoch den Vorteil, dass Ihre gespeicherte Datenmenge auf etwa 1/5 bis 1/6 ihrer ursprünglichen Größe reduziert wird.

Ok, was ist mit der schnellen Synchronisierung? Nun, nach dem vorherigen Denkmuster, wenn Sie sich nicht um den Kontostand eines zufälligen Kontos von vor 3 Jahren kümmern, warum sollten Sie dann den gesamten Transaktionsverlauf der Blockchain wiederholen wollen, nur um zum aktuellen Stand zu gelangen. Was Fast Sync also bewirkt, ist, dass es die gesamte Blockchain herunterlädt, aber nicht die Transaktionen ausführt, die das Weltbild Block für Block generieren. Stattdessen verifiziert es nur den Proof-of-Works, und wenn die gesamte Kette heruntergeladen ist, schaut es sich den Zustandsstamm an (Hash, der die aktuelle Weltanschauung definiert) und lädt die Zustandsdatenbank direkt aus dem Netzwerk herunter, wobei der endgültige Zustand von Anfang an rekonstruiert wird , ohne dafür die transienten Zustände zu benötigen. Dies bedeutet, dass neben dem Herunterladen der Blöcke weitere heruntergeladen werden müssenDaten, der Zustand versucht sich selbst, also tauscht er Bandbreite gegen Rechenleistung aus (dh ich lade den Zustand herunter, erzeuge ihn nicht). Das Endergebnis der schnellen Synchronisierung ist eine in jeder Hinsicht bereinigte Datenbank, nur auf andere Weise. Die aktuelle Größe einer solchen Datenbank beträgt 1,2-1,3 GB.

Nur eine Anschlussfrage: Wenn Sie vor 3 Jahren einen Kontostand für ein zufälliges Konto generieren wollten, konnten Sie dies immer noch mit der beschnittenen Kette tun. Sie müssten nur die Transaktionen wiederholen, die zu dem Block führen, an dem Sie interessiert sind. Ist das richtig?

Ich kann nichts dazu sagen, aber dies wird jetzt in EIP-4444 vorgeschlagen .