Es „Pending“ wirklich eine netzwerkweite Tatsache?

Ein Wallet kann eine Dusk-Transaktion als „pending“ kennzeichnen, während ein anderer Knoten überhaupt keinen entsprechenden Mempool-Eintrag hat.

Das ist nicht unbedingt eine Unstimmigkeit. Das ergibt sich daraus, wie Dusk Transaktionen behandelt, bevor sie zum Ledger-Status werden.

Jeder Peer führt seine eigenen Zulassungsprüfungen durch und verwaltet seinen eigenen Mempool. Die Abfrage „mempoolTxs“ von Dusk zeigt daher den realen Mempool des abgefragten Knotens – nicht eine netzwerkweite Warteschlange, die von jedem Peer gemeinsam genutzt wird.

Die Handhabung in Boreas-Ära Moonlight macht das noch weniger intuitiv. Eine gültige Transaktion, deren Nonce vor der aktuellen Sequenz des Kontos liegt, kann aufgeschoben werden, während die fehlenden Nonces eintreffen. In dieser Zeit liegt sie außerhalb des vom Knoten sichtbaren realen Mempools. Daher kann es sogar sein, dass der Knoten, der die Transaktion erhalten hat, sie in „mempoolTxs“ noch nicht anzeigt.

Ablaufzeiten bringen noch eine weitere lokale Komponente hinzu: Das ist eine Knotenrichtlinie, nicht eine Lebensdauer, die direkt in die Transaktion selbst kodiert ist.

Das verändert, wie ich das Wort „pending“ lesen würde. Vor dem Konsens liefert Dusk keinen einen autoritativen globalen Transaktionsstatus, den alle beobachten können. Verschiedene Knoten können legitimerweise unterschiedliche Informationen über dieselbe Transaktion halten.

Daher ist ein Wallet-Status ein Bericht aus einem Beobachtungspunkt – keine Aussage darüber, dass das Netzwerk bereits auf eine geteilte Zwischen-Tatsache einig geworden ist.

Der Konsens ist der Ort, an dem aus diesen fragmentierten lokalen Ansichten nach und nach eine gemeinsame Ledger-Historie wird.

@Dusk $DUSK #dusk