Zweifel an der Übertragung von Transaktionen und dem Konzept des Sendepools

Das wird lang und einige Fragen mögen dumm klingen. Aber lassen Sie uns damit fortfahren.

Nach meinem Verständnis geht eine Transaktion, sobald wir sie an die Blockchain senden, mit anderen Transaktionen in den Transaktionspool. Sobald die Transaktion von einem Miner ausgewählt und in einen Block aufgenommen wurde, wird die Transaktion aus dem Transaktionspool entfernt (Mempool, Bitcoin-Analogie).

  1. Ist der Transaktionspool (oder Mempool oder Warteschlangenpool) spezifisch für einen Ethereum-Knoten oder den Ethereum-Client (geth, prity)?
  2. Was ist der Unterschied zwischen dem TX-Pool von Geth und dem TX-Pool meines Knotens (wenn sie unterschiedlich sind, bin ich mir dessen nicht sicher)?
  3. Woher weiß ich, ob sich die Transaktion im TX-Pool befindet? Können wir davon ausgehen, dass sich alle Transaktionen, die nicht abgebaut werden, im TX-Pool befinden?
  4. Wenn sich die Transaktion auf keinen Fall im TX-Pool befindet und nicht abgebaut wird, können wir dann davon ausgehen, dass diese Transaktion es niemals zu einem Block schaffen kann? oder Wann kann ich sicher sein, dass meine Transaktion vollständig verworfen und nicht geschürft wird?
  5. Ich kann viele ausstehende/in die Warteschlange gestellte Transaktionen auf meinem Knoten sehen.
      Werden diese Transaktionen nur von meinem Knoten gesendet?
      Was passiert mit diesen Transaktionen, wenn:
      a) Ich stoppe den Geth-Knoten für einige Zeit und starte neu
      b) Ich entferne db, aktualisiere geth und resynchronisiere mit Light/Fast Sync
  6. Angenommen, das Ethereum-Netzwerk ist stark ausgelastet. In welchen Fällen wird meine Transaktion niemals in einen Block aufgenommen (vorausgesetzt, der Transaktion geht kein Gas aus und es wird ein ausreichender Gaspreis bereitgestellt).

  7. Wie kann ich sicher sein, dass die Transaktion erfolgreich an das Netzwerk übertragen wird, wenn ich sie in Block-Explorern wie Etherscan nicht sehen kann (nicht einmal im Pending Transaction Pool).

Antworten (1)

Technisch gesehen sollte es "ein Transaktionspool" sein, nicht "der Transaktionspool": Jeder Knoten hat eine Reihe von Transaktionen, die er kennt (oder wissen möchte), die darauf warten, von allen Benutzern (nicht nur Ihren eigenen) bestätigt zu werden. -- ein eigener Transaktionspool. Wenn es also n Ethereum-Knoten gibt, gibt es n Transaktionspools. Transaktionen können aus TX-Pools verschwinden, wenn dem Knoten der Speicher ausgeht, der seinem TX-Pool zugewiesen ist, oder er filtert sie, nehme ich an, heraus, wenn er sie empfängt (z. B. wenn er seine Gaspreisanforderung nicht erfüllt, könnte er sie herausfiltern). ). Beachten Sie, dass der TX-Pool speziell für ausstehende Transaktionen vorgesehen ist (Ihre Frage 7 deutet auf Verwirrung in Bezug auf diesen Punkt hin).

Wenn Ihre Transaktion an das Netzwerk gesendet wurde, erscheint sie aus mehreren Gründen möglicherweise nicht auf einem bestimmten Knoten, selbst ohne böswillige Akteure. Diese beinhalten

Um Ihre Frage genauer zu beantworten, nein, Sie können nicht davon ausgehen, dass sich ein nicht abgebauter TX in einem TX-Pool befindet (nicht einmal in Ihrem eigenen). Selbst wenn sich Ihre Transaktion in keinem TX-Pool befindet, können Sie nicht sicher sein, dass sie nicht abgebaut wird, es sei denn, Sie senden eine "stornierende" Transaktion mit derselben Nonce und diese Transaktion wird abgebaut (obwohl jemand das Netzwerk immer noch zurücksetzen könnte ) . . Der Grund, warum Sie nicht davon ausgehen können, dass die Transaktion ansonsten nicht abgebaut wird, liegt darin, dass jemand Ihre Transaktion möglicherweise gespeichert hat und sie zu einem späteren Zeitpunkt erneut übertragen könnte. Oder, weniger böswillig, ein Knoten kann beispielsweise während einer Zeit mit hohen Gebühren offline gegangen sein, während er Ihre Transaktion zwischengespeichert hat, und dann zurückgekehrt sein, wenn die Gebühren niedrig sind.

Bis Sie einen Knoten finden, auf dem Ihre Transaktion anders als Ihre eigene erscheint, können Sie nicht sicher sein, dass sie übertragen wurde. Sie können mehrere Knoten im Internet einrichten und sehen, ob sie in einem ihrer Transaktionspools erscheinen.