Werden ausstehende Transaktionen "verworfen" und "reaktiviert"?

Ich habe eine einfache Übertragung von Ether zwischen zwei Konten mit Geth versucht, aber einen ziemlich niedrigen Gaspreis (2 Gwei) festgelegt. Nach zwei Stunden wurde die Transaktion immer noch in Geth Under angezeigt eth.pendingTransactions- ich nahm an, dass dies an der mangelnden Nachfrage nach Minen zu diesem Gaspreis lag.

Zu diesem Zeitpunkt überprüfte ich jedoch beide Konten auf Etherscan , um festzustellen, ob die Transaktion von meinem lokalen Computer gesendet wurde. Die Transaktion wurde als ausstehend angezeigt, jedoch mit einem Alter von nur 40 Minuten . Etwa zehn Minuten später habe ich aktualisiert, und die Transaktion war von beiden Etherscan-Seiten verschwunden – wurde aber immer noch in Geth angezeigt. Ein paar Minuten später war die Transaktion wieder auf Etherscan erschienen, aber das Alter wurde auf 2 Minuten zurückgesetzt . Von diesem Zeitpunkt an überprüfte ich zeitweise, bis die Transaktion schließlich abgeschlossen war (vier Stunden nach dem Senden), ohne Etherscan erneut abzubrechen.

Da ich kurzzeitig besorgt war, dass die Transaktion verschwunden war, würde ich gerne den zugrunde liegenden Prozess etwas besser verstehen. Mein Verständnis wäre ungefähr so:

  1. Transaktion gesendet
  2. Erste Shows als ausstehend in Geth
  3. Wird an den Rest des Netzwerks weitergegeben – schließlich auf allen aktuellen Knoten als ausstehend sichtbar
  4. "Ausgewählt", um als Teil eines bestimmten Blocks abgebaut zu werden (von mehreren Minern oder nur einem?).
  5. Sobald der Block abgeschlossen ist, wird der aktualisierte Transaktionsstatus an den Rest des Netzwerks weitergegeben
  6. Wenn meine lokale Kopie von Geth mit diesem Block synchronisiert wird, wird die Änderung des Kontostands angezeigt

Meine heutige Erfahrung deutet jedoch darauf hin, dass es möglicherweise nicht so einfach ist, da meine ausstehende Transaktion verschwand und dann von Etherscan wieder auftauchte (ein Knoten?). Was wäre eine genauere Abfolge von Ereignissen?

Antworten (1)

Mein Verständnis ist, dass Ihr Verständnis richtig ist, außer dass Ihnen eine bestimmte Eigenschaft der Ethereum-Knotensoftware fehlt. Als Teil von #3 wird nämlich die Transaktion im Transaktionspool des Knotens gespeichert (vgl. Bitcoins Mempool). Normalerweise verbleiben die Transaktionen dort, bis sie abgebaut werden, aber da Computer über begrenzten Speicher und begrenzte Verarbeitungsleistung verfügen, hat der Transaktionspool zwangsläufig auch eine begrenzte Größe. Transaktionen, die nicht abgebaut wurden, können aus dem Speicher entfernt werden, wenn der Transaktionspool voll ist (ich gehe davon aus, dass die Reihenfolge von der Implementierung abhängt – vermutlich werden Transaktionen mit höherem Wert beibehalten). Ihre Transaktion wurde also wahrscheinlich aus dem Transaktionspool von Etherscan entfernt, aber von einem anderen Knoten „umgewälzt“, nachdem der Transaktionspool von Etherscan etwas Speicher freigegeben hatte.

Ist es nicht schön zu beobachten, wie der Markt auf die Grundprinzipien von Angebot und Nachfrage reagiert? Ich liebe Open-Source-Geld total.
Mein Problem ist genau das Gegenteil, ich möchte, dass meine ausstehende Transaktion endgültig gelöscht wird, aber jetzt sind mehr als 24 Stunden vergangen und sie ist immer noch ausstehend. Was ist, wenn der Mempool nie endet, das bedeutet, dass meine ausstehenden Transaktionen für immer dort bleiben, solange Platz im Mempool vorhanden ist?? Ich möchte nur, dass es fallen gelassen wird, aber ich fürchte, es wird für immer da sein. Und das ist ein wirklich großes Problem, weil ich nichts anderes mit meinem Aave-Vertrag machen kann, bis etwas damit passiert. Mein Geld steckt nämlich in einem Aave-Vertrag fest, bis diese Transaktion erfolgreich ist oder fallen gelassen wird.
@MoisésBriseñoEstrello Anscheinend haben Sie eine andere Frage. Ich denke jedoch, dass ethereum.stackexchange.com/questions/25866/… helfen kann. Siehe "Transaktion umbuchen".