Wenn ein Block als Hauptbuch für Transaktionen fungiert, wie viele Transaktionen passen dann in einen Block?
Ich muss ein privates Testnetz einrichten, in dem nur eine Maschine minen darf, während (viele) andere Transaktionen auf ihrer Blockchain durchführen (der Miner richtet auch den Genesis-Block ein). Was passiert, wenn die Anzahl der Transaktionen die maximal zulässige Anzahl von Transaktionen in einem Block überschreitet?
Das Folgende ist eine vereinfachte Erklärung dessen, was Geth tut.
Es gibt zwei Hauptorte, an denen sich Transaktionen befinden können: in einem Block oder im Transaktionspool (txpool).
Wenn ein Knoten zum ersten Mal von einer Transaktion hört, legt er sie in den Txpool. Dies sind im Wesentlichen Transaktionen ohne Bestätigung. Es gibt eine Reihe von Möglichkeiten, darauf zuzugreifen, insbesondere den "ausstehenden" Pseudoblock in web3.
Wenn ein Node mit dem Mining beginnt, nimmt er die bestbezahlten Transaktionen im Txpool, eine nach der anderen, und führt sie aus. Wenn das gasLimit oder die Transaktionen im Pool aufgebraucht sind, verpflichtet es sich, diesen bestimmten Block abzubauen. (Dies erscheint in der Konsole als etwas wie "commit new work on block X with Y txs...") Dann fährt es mit dem Hashen dieses Blocks fort, bis es einen Hash findet, der ausreichend selten genug ist, damit der Block vom Netzwerk akzeptiert wird.
Jede andere Transaktion, ob sie empfangen wurde, bevor sie mit der Arbeit am Block begann, sie aber aus irgendeinem Grund nicht verwenden konnte, oder ob sie sie danach erhalten hat, bleibt im Txpool, bis sie abgebaut wird, oder wird aus einem anderen Grund dauerhaft ungültig.
Normalerweise werden in einem privaten Testnetzwerk periodisch leere Blöcke abgebaut. Die maximale Anzahl von Transaktionen im Block hängt von der maximalen Blockgröße ab. Informationen zur maximalen Blockgröße in Ethereum finden Sie unter diesem Link
Benutzer1870400
Matthäus Schmidt