Werden nach dem Neustart eines Knotens verpasste Transaktionen in Mempool wiederhergestellt? (v0.14.1)

Ab v0.14.0 wird der Mempool nun beim Herunterfahren eines Knotens gespeichert und nach dem Hochfahren neu geladen. Wenn ein Knoten weniger als 20 Minuten ausgefallen ist, versucht der Bitcoin-Knoten, die verpassten Transaktionen wiederherzustellen, oder wartet er, bis er ihn in einem Block sieht, bevor er verpasste Transaktionen von einem Peer anfordert?

Danke schön!

Antworten (1)

Bitcoin Core (v0.14+) versucht nicht aktiv, etwas über verpasste Transaktionen zu erfahren.

In der Vergangenheit wurde dies nicht getan, da dies die Lebensdauer von Transaktionen im Mempool unnötig und unbeabsichtigt verlängern würde. Dies ist kein Problem mehr, da der Mempool begrenzt ist und korrekt mit Ablauf und Räumung umgeht.

Es existiert jedoch kein effizientes Protokoll, um die Mempool-Synchronisierung zu erreichen. Wir könnten nach allen txids von allen Peers fragen, aber dies würde mehrere hundert MB an Daten bedeuten, von denen die meisten redundant sind (da sie zwischen Peers identisch wären). Es wurden einige Untersuchungen zu Set-Reconciliation-Protokollen durchgeführt, die effizient Unterschiede zwischen den Mempools finden und die Unterschiede einfach übertragen. Nichts davon ist jedoch in der Nähe des Einsatzes.

Dies ist, was ich dachte, ist der Fall. Gibt es einen Bedarf für ein Protokoll, das Mempools aktiv synchronisiert, wenn Knoten nach einer angemessenen Ausfallzeit (z. B. 20–120 Minuten) neu gestartet werden, sodass der Mempool noch nicht vollständig umgestürzt ist? Können Sie mich auch auf Forschungsergebnisse zum Mempool-Set-Abgleich hinweisen? Danke
Ich habe High-Level-Protokolle für die Synchronisierung bitcointalk.org/index.php?topic=1377345.0 und weitere technische Details unter people.xiph.org/~greg/mempool_sync_relay.txt beschrieben. Bitcoin benötigt keine aktive Synchronisierung aber ich hoffe, dass wir es nutzen können, um die vom Relay verwendete Bandbreite zu verringern.