Ich verstehe, dass Bitcoin in mehreren Bedeutungen skaliert ( Skalierbarkeit ), und Beschneiden ist ein wichtiges Konzept davon ( SE-Frage ). Ich verstehe auch, dass eine "Simplified Payment Verification" (SPV) dem Peer, von dem er die Blockchain bezieht, sehr vertrauen muss.
Ein sehr konservatives Pruning (z. B. Transaktionen älter als sechs Monate und verbraucht) würde nicht viel schaden, insbesondere wenn es nur eine Konfigurationsoption für bitcoin-qt wäre. Auf diese Weise ist der Standardwert der vollständige Knoten, aber es ist einfach, einen "kleinen Knoten" zu haben.
Aber ich sehe es sowieso nicht so bald kommen. Gibt es einen Grund? Ist es im Moment so wichtig, Full Nodes zu haben, dass die Entwickler sagen "entweder alles oder nichts"? Oder ist der Entwicklungsaufwand der Flaschenhals? IMHO ist ein großes Netzwerk von Nicht-SPV-Knoten wichtiger als ein kleines Netzwerk von vollständigen Knoten.
Bearbeiten: Lassen Sie es uns konkreter sagen: Gibt es ein großes Sicherheitsproblem, wenn Sie nicht die vollständige Transaktionshistorie der Welt bis zum Genesis-Block zurück haben?
Pruning wird in Betracht gezogen, tatsächlich wurde es beim Entwerfen des 0.8-Datenbankformats berücksichtigt. Die nicht verbrauchten Transaktionsausgaben (die die einzigen wesentlichen Daten sind, die für die Validierung erforderlich sind) werden bereits in einer separaten Datenbank gespeichert, sodass das technische Entfernen alter Blöcke durchaus möglich ist. Wahrscheinlich sind einige kleine Änderungen erforderlich, um sicherzustellen, dass der Code nicht beschädigt wird, wenn nicht mehr vorhandene Blockdaten angefordert werden, aber das ist einfach.
Der Grund, warum es nicht implementiert wird, liegt in der Auswirkung auf das Netzwerk als Ganzes. Wenn eine große Anzahl von Knoten damit beginnt, alte Blockdaten zu entfernen, wird es für neue Knoten, die starten, schwieriger, die zu überprüfenden historischen Daten zu finden. Dies ist an sich kein Problem - ich gehe davon aus, dass genügend Kopien verbleiben werden, dass dies kein echtes Problem ist -, aber wir brauchen einen Erkennungsmechanismus, damit Knoten nicht willkürlich Peers ausprobieren müssen, bis sie zufällig einen erreichen, der die benötigten Blöcke enthält . Tatsächlich wird auf der Bitcoin-Development-Mailingliste über dieses Recht diskutiert .
EDIT: Pruning wurde in Bitcoin Core 0.11 implementiert und ist seit 0.12 voll funktionsfähig.
AFAIK, alle Transaktionsausgaben werden aus der Datenbank gelöscht, wenn sie ausgegeben werden. Allerdings nicht aus der Bock-Datenbank, aber es macht einfach nicht viel Sinn, es aus der Block-Datenbank zu entfernen, da es die Leistung des Knotens nur verschlechtern würde.
Und Sie können aus ganz offensichtlichen Gründen nicht verbrauchte Ausgaben löschen, egal wie alt sie sind.
Borph
Borph
snapfractalpop
Pieter Wuille