Wie funktioniert die Prune-Zielgröße?

Nach den Dokumenten zu urteilen, verstehe ich, dass das Beschneiden, in Laienbegriffen, nur erlaubt, Informationen loszuwerden, die keine Folgetransaktionen haben können.

Nun, wie/warum ist es möglich, die pruneOption auf einen benutzerdefinierten Wert einzustellen?

Was wäre, wenn 550 MiB zu klein wären und wichtige Informationen "ausschneiden" würden?

Antworten (1)

Nach den Dokumenten zu urteilen, verstehe ich, dass das Beschneiden, in Laienbegriffen, nur erlaubt, Informationen loszuwerden, die keine Folgetransaktionen haben können.

Das ist falsch.

Der Prozess für die Blockvalidierung (vereinfacht) ist:

  • Erhalte einen Block
  • Finden Sie alle Eingaben des Blocks in der Datenbank der nicht verbrauchten Ausgaben (das "UTXO-Set") und überprüfen Sie sie (Signaturprüfung usw.).
  • Entfernen Sie alle Eingänge des Blocks aus dem UTXO-Set (da diese Ausgänge jetzt verbraucht werden).
  • Fügen Sie alle Ausgänge des Blocks zum UTXO-Set hinzu.

Sobald ein Block validiert und seine Effekte auf das UTXO-Set angewendet wurden, benötigen wir im Allgemeinen den Inhalt des Blocks überhaupt nicht mehr. Ausser für:

  • Geben Sie es an andere Knoten im Netzwerk weiter, die versuchen herauszufinden, was in der Vergangenheit passiert ist (was Sie im Pruning-Modus noch nicht tun können).
  • Erneutes Scannen, um historische Transaktionen in der Brieftasche zu finden (z. B. nach dem Importieren einer Adresse oder eines Schlüssels), eine Funktion, die Sie beim Pruning aufgeben.
  • Reorganisationen. Manchmal wird ein Block gefunden, der kein Nachfolger des vorherigen Blocks ist, den wir gesehen haben, sondern einer, der weiter hinten abzweigt. In diesem Fall müssen wir in der Lage sein, die Auswirkungen der letzten Blöcke rückgängig zu machen, bevor wir die neuen Blöcke validieren. Um einen Rollback durchführen zu können, benötigen wir den Inhalt der Blöcke erneut. Aus diesem Grund zwingt Sie der Client, mindestens 550 MB Blockdaten aufzubewahren, damit Sie die letzten Tage immer zurückspulen können.

Also TL;DR: Es ist technisch möglich, einen Client zu erstellen, der auf einen beliebig kleinen Wert reduziert, aber um zu verhindern, dass Clients bei einer Reorganisation darüber stolpern, zwingt Sie der Code, Daten im Wert von ein paar Tagen trotzdem aufzubewahren.