Ich suche nach einer detaillierten Erklärung (Video wäre am besten), wie und wann Transaktionen im Ethereum-Netzwerk (theoretisch) abgebaut werden, seit sie mit erstellt wurden web3.eth.sendTransaction()
.
Genauer gesagt: Annahmen: Zeit zum Minen des Ethereum-Blocks = 16 Sekunden. Wenn Block Nr. 99 wurde bei t = 0 mit dem Mining begonnen und bei t = 16 beendet, Block 100 begann bei t = 16 und wird immer noch abgebaut, und ich erstelle die Transaktion (t = 17) und sie befindet sich im PendingTransactions-Pool.
Ich habe nach Antworten auf meine Fragen gesucht und viele verwandte Themen gefunden, über Gas, GasPrice, GHOTS-Protokoll gelesen, aber das scheint mir immer noch nicht ganz klar zu sein.
Danke!
Nach meinem Verständnis möchte ich auf einige Dinge hinweisen, die Sie meiner Meinung nach vermissen.
Es gibt keine Garantie dafür, dass das Mining eines Blocks genau alle t Sekunden durchgeführt wird (bei Ihren Annahmen t = 16 Sekunden). Die durch t definierte Zeit ist die durchschnittliche Zeit für das Mining eines Blocks, und das Netzwerkprotokoll behält den Durchschnitt bei, indem es die Schwierigkeit entsprechend ändert, nachdem ein Block geschürft wurde. Das Mining eines Blocks umfasst das Generieren eines Hashs, der der Schwierigkeit (der Anzahl der Nullen vor dem Hash-Wert) zu diesem Zeitpunkt entspricht (das Generieren dieses Hashs ist der Wettbewerb zwischen den Knoten).
Das Generieren von Blöcken wird immer stattfinden, unabhängig davon, ob Transaktionen ausstehen oder nicht, um die Wachstumsrate der Blockchain beizubehalten, wodurch verhindert wird, dass Angreifer eine längere Blockchain generieren, ohne mindestens 51 % der Rechenleistung des Netzwerks zu besitzen.
Eine Transaktion, die ausgewählt wird, um in einen Block aufgenommen zu werden, hängt von dem Gaspreis ab, den Sie zu zahlen bereit sind. Dies liegt daran, dass der Miner Ihre Transaktion nicht berücksichtigt, wenn er eine Transaktion findet, die mehr bezahlen möchte. Verweisen Sie auf die Antwort auf diese Frage (Wenn die Transaktionen jedoch von derselben Kontoadresse stammen, ist die Nonce von Bedeutung, um doppelte Ausgaben zu vermeiden).
In Bezug auf Ihr Szenario kann die Transaktion in jeden Block aufgenommen werden, beginnend mit dem 100. (dh einschließlich dem 100.), abhängig von dem von Ihnen definierten Gasreis und anderen ausstehenden Transaktionen und deren Gaspreisen. Sobald jedoch ein Block abgebaut ist, sendet der Miner-Knoten ihn an das Netzwerk und nach Erhalt der Nachricht, dass der Block abgebaut ist, validieren die anderen Knoten ihn und stoppen das Mining für diesen Block und beginnen mit dem Mining des nächsten Blocks. Daher erfahren die Knoten von den Transaktionen, die im vorherigen Block enthalten sind.
Das Whitepaper von Ethereum erklärt dies gut. Sie können sich auch auf das Bitcoin-Whitepaper beziehen