Glossar / Protokoll und Upgrades
Cluster mempool
- Was ist Cluster mempool?
- Cluster mempool ist die Neugestaltung des Wartebereichs von Bitcoin Core, die jede Gruppe zusammenhängender unbestätigter Transaktionen sortiert hält, sodass der Node stets weiß, welche ein Miner tatsächlich auswählen würde.
Unbestätigte Transaktionen, die sich gegenseitig ausgeben, bilden einen Abhängigkeitsgraphen, und jahrelang konnte die Software nur über grobe Obergrenzen für die Zahl der Vorfahren und Nachfahren eines einzelnen Eintrags darauf schließen. Version 31.0 ersetzte diese durch eine einzige Regel: keine zusammenhängende Gruppe mit mehr als 64 Transaktionen oder 101 kB virtueller Größe. Gebührenerhöhung und Ersetzung wurden dadurch beide berechenbarer.
So funktioniert es
Ein Cluster ist eine zusammenhängende Komponente des Mempools. Nehmen Sie eine beliebige unbestätigte Transaktion, folgen Sie jedem Eltern- und Kind-Link in beide Richtungen, und alles, was Sie erreichen können, gehört zum selben Cluster.
Das alte Design verfolgte Vorfahren und Nachfahren getrennt und begrenzte jeden auf 25, dazu eine Obergrenze für die Größe. Das war günstig zu berechnen und in einem wichtigen Punkt falsch. Es sagte einem Node, wie groß eine Familie war, ohne ihm zu sagen, in welcher Reihenfolge ein rationaler Miner die Familie nehmen würde, sodass der Mempool seine eigene zentrale Frage nicht beantworten konnte: Wenn ich jetzt einen Block bauen müsste, was käme hinein?
Cluster mempool beantwortet das, indem jeder Cluster jederzeit linearisiert gehalten wird. Eine Linearisierung ist eine Reihenfolge, die in Teile unterteilt ist, wobei jeder Teil eine Gruppe von Transaktionen ist, die zusammen gemint würden und eine effektive Gebührenrate teilen. Das Sortieren dieser Teile erzeugt ein Gebührenraten-Diagramm für den gesamten Mempool, und an diesem Diagramm werden Entscheidungen nun gemessen.
Die Grenzen sind 64 Transaktionen und 101 kB virtueller Größe pro Cluster, und sie ersetzten die Zählungen von Vorfahren und Nachfahren vollständig. Der CPFP-Carveout, eine Ausnahme, die früher ein zusätzliches Kind über die Nachfahren-Grenze schlüpfen ließ, wurde zusammen mit ihnen gestrichen, weil nichts die Cluster-Zählung umgehen darf.
Der Nutzen zeigt sich bei der Ersetzung. Die älteren Replace-by-Fee-Regeln waren eine Handvoll aneinandergeschraubter Bedingungen und ließen sich austricksen, indem man billigen Müll an eine gemeinsame Transaktion hängte, bis die Ersetzung absurd teuer wurde. Der Vergleich von Gebührenraten-Diagrammen bietet stattdessen einen einzigen Test: Eine Ersetzung wird angenommen, wenn sie das Diagramm nirgends schlechter und irgendwo besser hinterlässt. Zwei neue RPCs legen den Mechanismus offen, getmempoolcluster für Inhalt und Reihenfolge eines Clusters und getmempoolfeeratediagram für das Diagramm selbst.
Wo Sie es sehen
Cluster mempool erscheint als Fehlermeldung, wenn Sie zu viele unbestätigte Ausgaben aneinanderreihen, und als Gebührenerhöhung, die dort gelingt, wo Sie Probleme erwartet hätten.
Wallet-Nutzer stoßen in einer häufigen Situation an die Grenze: wiederholtes Ausgeben unbestätigten Wechselgelds in einer Phase hoher Aktivität. Vierundsechzig Transaktionen sind großzügig für eine Person und knapp für einen Dienst, der Zahlungen stapelweise bündelt, und ungefähr für diesen wurde die Zahl geschrieben. Wenn eine Wallet eine Ausgabe ablehnt und ein Cluster erwähnt, besteht die Lösung darin, auf eine Bestätigung zu warten, statt die Gebühr zu erhöhen.
Der leisere Vorteil ist, dass Child Pays for Parent jetzt tut, was es verspricht. Erhöhen Sie die Gebühr einer feststeckenden Transaktion, indem Sie ihre Ausgabe mit einer hohen Rate ausgeben, und der Node sieht sofort, ob das Paar übertrifft, was bereits in der Warteschlange steht, sodass Sie in einem Schritt eine klare Antwort statt einer Näherung erhalten.
Cluster mempool vs. mempool
Der Mempool ist die Menge der Transaktionen, die ein Node hält; Cluster mempool ist die Art, wie ein Programm diese Menge intern organisiert. Keine Konsensregel änderte sich, kein Fork fand statt, und ein Node, der noch eine ältere Version ausführt, hält dieselben Transaktionen mit schlechterer Buchführung. Der Unterschied ist wichtig, weil die Änderung manchmal so berichtet wird, als hätte Bitcoin eine neue netzwerkweite Regel über Transaktionsketten erhalten. Das hat es nicht. Dies ist Policy, Node für Node gewählt, und jeder Betreiber kann die Grenzen auf seiner eigenen Maschine mit einem Kommandozeilenargument verschieben.