Stellen wir uns vor, ich habe zwei ziemlich gleiche Transaktionen – der einzige Unterschied ist ihr to
Feld. Die erste Transaktion - A
, hat 0x1111....
und die zweite - B
, hat 0x22222....
im to
Feld.
Wenn ich sie gleichzeitig sende - was passiert? Ich sehe zwei verschiedene Wege:
A
Die "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 - A
oder B
geschürft werden, 50/50.
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 gasPrice
für die B
doppelt so groß wie in der einstellen A
.
A
B
Hat B
er 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!
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 A
oder B
wird 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 Nonce
wird in Ethereum verwendet, um eine Transaktion zu ersetzen, die nicht abgebaut wird. Das Senden einer Transaktion mit dem gleichen nonce
und einem höheren Gaspreis ersetzt die alte. Für einen normalen Anwendungsfall nonce
sollte 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.
natewelch_
to
und istgasPrice
. Es wird immer A oder B sein, da sie die gleiche Nonce haben.Rob Hitchens
natewelch_