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:
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?
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.
Richard Horrocks