Bitcoin Core txindex im Vergleich zum Standardmodus im Vergleich zum beschnittenen Modus im Detail

Sie können Bitcoin ausführen in:

  • txindex-Modus: Damit können Sie jede Transaktion in der Blockchain mit getrawtransactions abfragen (andere Vorteile?). Das nimmt am meisten Platz ein

  • Standardmodus: Damit können Sie nur Transaktionen für Ihre eigene Transaktion abrufen

  • Beschnittener Modus: Wie der Standardmodus, aber Sie behalten nur ein paar GB der letzten Transaktionen. Sie laden die Blöcke herunter, überprüfen sie und werfen sie dann weg.

Aber ich würde gerne die Unterschiede zwischen den Modi genauer kennenlernen.

Welchen Teil der Bitcoin-Blockchain speichert jeder Modus auf dem lokalen Computer? Was wird heruntergeladen und überprüft? Was verwirft es? Welche Fähigkeiten verlierst du mit den verschiedenen Modi?

Kurzer Kommentar: getrawtransaction funktioniert nur für unbestätigte Transaktionen (oder alle, wenn Sie txindex haben). Um Ihre eigenen Transaktionen abzufragen, müssen Sie verwenden gettransaction(was immer funktioniert und mehr Informationen liefert).

Antworten (1)

TxIndex

Die meisten Anwendungsfälle erfordern keinen tx-Index. Das Wallet verfolgt die relevanten Transaktionen (wenn Sie ein Wallet betreiben). Ein vollständiger tx-Index kann für Block-Explorer-ähnliche Schnittstellen oder für die Recherche usw. nützlich sein. Er benötigt etwas Speicherplatz.

Pruning & TxIndex : Sie können keinen txindex mit einer beschnittenen Blockchain verwenden. Beim Beschneiden werden gescannte Blöcke weggeworfen. Einen Index zu haben, der auf einen TX in einem Block zeigt, der sich nicht mehr auf Ihrer Festplatte befindet, scheint eine Verschwendung zu sein.


Beschneidung

Autopprune (-prune=550) ermöglicht es Ihnen, Ihre historischen Blockchain-Daten auf ein bestimmtes Ziel zu reduzieren (in MB verwendet das Beispiel 550, was das Minimum ist). Sie können nicht alle Blöcke wegwerfen, da Sie möglicherweise "ein paar Blöcke zurücksetzen" müssen, wenn es eine Kettenreorganisation gibt.

Wenn Sie prune=1(== manueller Modus) einstellen, können Sie Ihre Blockchain manuell beschneiden (RPC-Aufruf verwenden pruneblockchain <height>) [seit 0.14]

Der einzige Grund, alte Blöcke (z. B. tiefer als 144 Blöcke) beizubehalten, besteht darin, anderen Peers zu ermöglichen, die Blockchain zu booten und (gefilterte) Blöcke an den SPV-Client zu liefern. Es gibt wenige "Endbenutzer" -Anwendungsfälle (mit Ausnahme des txindex), um den alten Block beizubehalten.

UTXO-Set

Wichtig zu wissen ist, dass Ihr Full Node alle nicht ausgegebenen Transaktionen verfolgt (nur diese sind für die Validierung von Blöcken/der Kette relevant). Diese Datenbank ist (derzeit) ca. 2GB groß und wird (und muss) auch im Pruning-Modus vorhanden sein. Diese Datenbank ist für einen vollständigen Knoten unerlässlich.


Standardmodus

Behalten Sie alle Blöcke bei (beanspruchen ~80 GB Speicherplatz). Dadurch können andere Peers die Blockchain überprüfen und SPV-Peers können in allen möglichen Blöcken nach relevanten Transaktionen fragen. Wenn niemand in diesem Modus ausgeführt wird, kann der Blockchain-Verlauf verloren gehen (übertrieben).

FYI heute nimmt die Blockchain ungefähr 250 GB Speicherplatz ein. Es wird schwierig, einen vollständigen Knoten zu betreiben ...λ MEC-MBP scripts → λ git master* → du -sh ~/Library/Application\ Support/Bitcoin/{blocks,chainstate} 228G /Users/mec/Library/Application Support/Bitcoin/blocks 2.7G /Users/mec/Library/Application Support/Bitcoin/chainstate