Ein Pruned Node ist ein Full Node, der Bitcoins Regeln selbst prüft, aber nicht alle alten Blöcke dauerhaft speichert. Er spart Speicherplatz und bietet dafür einen eingeschränkteren Zugriff auf die Vergangenheit. Er zieht keine Bitcoins ab und ersetzt keine Wallet-Sicherung.
Anna möchte Bitcoin nutzen, ohne die Gültigkeit ihrer Zahlungen einem fremden Server zu überlassen. Ihr Heimcomputer hat aber keinen Platz für ein vollständiges Archiv aller Blöcke, also der Pakete bestätigter Transaktionen. Ein Pruned Node kann dazu passen. Beim gewöhnlichen Initial Block Download, der ersten Synchronisierung des Knotens, lädt und prüft er die Geschichte nach und nach und entfernt anschließend ältere, bereits verarbeitete Dateien. Die gesamte Geschichte muss nicht gleichzeitig auf dem Datenträger liegen, wird bei dieser Synchronisierung aber trotzdem durchgearbeitet. [2] [5]
Pruning bezeichnet das kontrollierte Entfernen alter Daten. Bitcoin Core löscht dafür geeignete Blockdateien samt Undo-Daten, mit denen sich die Änderungen eines Blocks rückgängig machen lassen. Stellen Sie sich alte Arbeitsunterlagen vor, deren Ergebnisse bereits in eine laufend aktualisierte Übersicht eingeflossen sind. Die örtlichen Unterlagen verschwinden, die Auswirkungen gültiger Zahlungen bleiben bestehen. Andere Knoten können dieselben Blöcke weiterhin aufbewahren. [3] [7]
Entscheidend ist das UTXO set: die Menge aller noch nicht ausgegebenen Transaktionsausgänge. Jeder Ausgang enthält einen Betrag und die Bedingungen, unter denen er ausgegeben werden darf. Der Knoten aktualisiert diese Menge und erkennt so etwa den Versuch, einen bereits ausgegebenen Ausgang erneut auszugeben. Außerdem behält er einen Blockindex einschließlich der Header, der kurzen Datensätze, die Blöcke miteinander verbinden. Das UTXO set ist weder eine Kontenliste noch eine Übersicht aller früheren Zahlungen. [2] [6]
Das Netzwerk kann kurzzeitig zwei gültige Zweige verfolgen und später auf einem anderen Zweig mit mehr angesammelter Arbeit fortfahren. Diesen Wechsel nennt man Reorganisation. Die angesammelte Arbeit beschreibt, wie aufwendig es ist, gültige Blöcke zu finden. Sie wird durch deren Proof of Work, den Nachweis von Rechenarbeit, belegt. Bei einer Reorganisation muss der Knoten die Auswirkungen einiger Blöcke zurücknehmen können. Deshalb behält er eine Reserve jüngerer Blöcke und Undo-Daten. Reicht der Rückweg weiter als die gespeicherten Daten, können erneute Datenbeschaffung oder ein Neuaufbau des Zustands nötig werden. Eine Speichergrenze macht alte Zahlungen nicht absolut unumkehrbar. [5] [7]
Das automatische Pruning-Ziel in Bitcoin Core betrifft Block- und Undo-Dateien, nicht das gesamte Datenverzeichnis des Knotens. Datenbanken, Wallets und weitere Dateien brauchen zusätzlich Platz. Gelöscht werden ganze Dateien, wobei die nötige Reserve erhalten bleiben muss. Das Ziel ist deshalb keine harte Obergrenze. Planen Sie diesen zusätzlichen Bedarf ein: Das Archivlimit ist nicht die Gesamtgröße des Knotens. [1] [4] [7]
Full in Full Node steht für die eigenständige Prüfung der Regeln, nicht für die Pflicht, jeden Block für immer zu speichern. Archivknoten und Pruned Nodes mit denselben Prüfeinstellungen verwerfen dieselben ungültigen Blöcke. Pruning selbst schaltet keine Prüfung ab. Eine digitale Signatur weist die Berechtigung zur Zahlung nach. Sie wird mit einem privaten Schlüssel erzeugt, also einem geheimen Zahlenwert, der dabei nicht offengelegt wird. assumevalid etwa kann unter bestimmten Voraussetzungen einen Teil der historischen Signaturprüfungen überspringen, ist aber eine separate Einstellung. Sie kann beide Knotentypen betreffen und ergibt sich nicht aus der kleineren Festplatte. [5] [6]
Annas Knoten empfängt und prüft weiterhin neue Transaktionen und verfügbare Blöcke und kann sie weiterleiten. Einen alten Block, dessen Datei er gelöscht hat, kann er nicht mehr liefern. Für neu gestartete Knoten sind deshalb auch vollständige Archive wichtig. Ein Pruned Node ist weder vom Netzwerk getrennt noch bloß eine leichte Wallet, die fremden Prüfungen vertraut; nur sein Angebot an historischen Daten ist begrenzt. [10]
Später stellt Anna eine Wallet wieder her, die sie vor Jahren benutzt hat. Eine Wallet ist eine Anwendung oder ein Gerät zum Empfangen und Senden von Bitcoin. Um ihre Transaktionen erneut zu finden, durchsucht die Software die betreffenden Blöcke. Das heißt Rescan. Fehlen diese Blöcke vor Ort, bringt ein importierter Schlüssel oder Descriptor sie nicht zurück. Ein Descriptor beschreibt, wie Adressen und Ausgabebedingungen aufgebaut sind. Die Wiederherstellung kann daher ein erneutes Beschaffen der Geschichte erfordern. Eine nicht angezeigte alte Zahlung bedeutet für sich genommen keinen Verlust der Bitcoins. [8] [9]
Auch die angeschlossenen Anwendungen sind entscheidend. Ein Explorer für die gesamte Geschichte braucht andere Daten als eine Wallet, die neue Zahlungen verfolgt. Bitcoin Core v29.0 erlaubt beispielsweise Pruning nicht zusammen mit txindex, einem zusätzlichen Suchindex für Transaktionen in gespeicherten Blöcken. Das verbietet nicht sämtliche Indexarten. Prüfen Sie vor der Wahl des Betriebsmodus die Anforderungen Ihrer Anwendung; ein später erhöhtes Limit stellt gelöschte Dateien nicht wieder her. [1]
Ein Pruned Node passt, wenn Sie Bitcoin selbst prüfen möchten, ohne ständig das gesamte Archiv zu durchsuchen. Das gewöhnliche erstmalige Herunterladen der Geschichte entfällt dadurch nicht; AssumeUTXO ermöglicht eine frühere Nutzbarkeit durch einen anderen Mechanismus. Vor allem sichern weder Blöcke noch das UTXO set die privaten Schlüssel, die Ausgaben autorisieren. Eine Wallet-Sicherung und ein erprobter Wiederherstellungsweg bleiben unabhängig von der Archivgröße notwendig. [2] [9]
Für ein möglichst vollständiges Bild lies diesen Eintrag zusammen mit Initial Block Download, AssumeUTXO, Block Propagation, vByte, Bitcoin, Bitcoin Core. Auf diesen Eintrag verweisen außerdem Initial Block Download, AssumeUTXO, Utreexo, Compact Block Filters.