Zwei Transaktionen: gleiches „von“, unterschiedliches „bis“. Was wird passieren?

Stellen wir uns vor, ich habe zwei ziemlich gleiche Transaktionen – der einzige Unterschied ist ihr toFeld. Die erste Transaktion - A, hat 0x1111....und die zweite - B, hat 0x22222....im toFeld.

Wenn ich sie gleichzeitig sende - was passiert? Ich sehe zwei verschiedene Wege:

  1. ADie "Welt" wird in zwei Teile geteilt: die Knoten, die zuerst empfangen haben und diejenigen, die empfangen haben B. Also, je nachdem wo "unsere" Miner sind - Aoder Bgeschürft werden, 50/50.

  2. Ethereum-Knoten ermöglichen das Ersetzen von Transaktionen, wenn sie nicht bestätigt werden. Wenn also eine Transaktion noch nicht abgebaut wurde und der Knoten eine neue erhält, wird sie ersetzt.

Und die zweite Frage. Lassen Sie uns die gasPricefür die Bdoppelt so groß wie in der einstellen A.

  1. Ich sendeA
  2. Warten zB 2 Sekunden
  3. SendenB

Hat Ber Chancen, dieses Rennen zu gewinnen? Ich meine, gibt es solche Regeln wie: "Wenn es eine Transaktion von einer Adresse im TX-Pool gibt, aber eine andere Transaktion von derselben Adresse und es teurer ist - die erste Transaktion sollte durch die zweite ersetzt werden."

Vielen Dank im Voraus!

Antworten (2)

Wenn ich sie gleichzeitig sende - was passiert?

Ein Knoten ersetzt keine Transaktionen mit derselben Nonce, es sei denn, der Gaspreis der neuen Transaktion ist höher als ein bestimmter Wert ( Standard: 10 %, Min: 1 % ). Infolgedessen hängt Aoder Bwird abgebaut, davon ab, welche Transaktion der Miner zuerst erhalten hat. Beachten Sie, dass die nicht geschürfte Transaktion entfernt wird, wenn ein Knoten den geschürften Block empfängt.

Hat B Chancen, dieses Rennen zu gewinnen?

Ja. Account Noncewird in Ethereum verwendet, um eine Transaktion zu ersetzen, die nicht abgebaut wird. Das Senden einer Transaktion mit dem gleichen nonceund einem höheren Gaspreis ersetzt die alte. Für einen normalen Anwendungsfall noncesollte jedes Mal, wenn Sie eine Transaktion senden, um 1 erhöht werden, damit ein Konto mehrere Transaktionen gleichzeitig senden kann.

Es ist keines dieser Dinge.

Die gesendeten Transaktionen landen in der Warteschlange für ausstehende Transaktionen. Ja, die Netzwerkknoten entdecken die anstehenden Transaktionen in ihrer eigenen Zeit, sicherlich nicht gleichzeitig, aber es spielt keine Rolle.

Der Mining-Prozess legt eine eindeutige Reihenfolge für die Transaktionen fest, die in die Kette aufgenommen werden. Es kann A, dann B oder B, dann A sein. In jedem Fall werden die Transaktionen von allen Knoten in derselben Reihenfolge verarbeitet.

Ein Block ist eine geordnete Menge von Transaktionen. Eine Blockchain ist eine geordnete Menge von Blöcken. Im weiteren Sinne ist eine Blockchain ein geordneter Satz von Transaktionen. Jeder wird die Transaktionen früher oder später tatsächlich in der gleichen Reihenfolge verarbeiten .

Ich hoffe es hilft.

Es wird niemals A dann B oder B dann A sein, da der einzige Unterschied zwischen A und B tound ist gasPrice. Es wird immer A oder B sein, da sie die gleiche Nonce haben.
Ich nehme an, das meinten Sie mit "der einzige Unterschied". Das Abfeuern von zwei Transaktionen mit derselben Nonce ist höchst ungewöhnlich und nicht so, wie ich Ihre Frage interpretiert habe. Die Welt teilt sich nicht in zwei Teile. Höchstens eine Kettensanierung. Letztendlich ist eine Ihrer Transaktionen „in“ und die andere „out“.
(Hinweis: Ich war nicht derjenige, der die Frage gestellt hat.) Ich habe nur darauf hingewiesen, dass OP impliziert, dass die Nonce dieselbe war, auch bekannt als TX-Ersatz. Es ist nicht so seltsam, wenn Sie versuchen, den Benzinpreis zu erhöhen. Passiert ständig, Metamask hat sogar eine Option dafür.