Ich habe ein paar Fragen und werde versuchen, sie hier zu erklären.
Nehmen wir also an, wir haben 4 Knoten im gesamten Netzwerk.
Einer der Knoten (Knoten A) hat Transaktionen aus dem Pool übernommen. Bevor sie es in einen Kandidatenblock stecken, validieren sie zuerst jede Transaktion, richtig? Wenn ja, schätze ich, dass sie den Kontostand und die Unterschrift überprüfen. Noch etwas ? und wenn alles gut ist, stecken sie jede gültige Transaktion in einen Kandidatenblock und danach beginnen sie mit dem Mining dieses Blocks ... Ich denke, ungültige Transaktionen verschwinden oder so ...
Nehmen wir an, Knoten A hat den Block am schnellsten abgebaut. Es hat den Block in sein Ledger gelegt und diesen Block auch an andere Nodes weitergegeben, damit sie ihn auch zu ihrem eigenen Ledger hinzufügen können. Ich weiß, dass andere Nodes es nicht einfach zum Hauptbuch hinzufügen, bis sie bestätigen, dass dieser neue Block wirklich abgebaut wurde (nimmt den Hash des Headers und prüft, ob er unter dem aktuellen liegt). Ist das richtig ? Wenn ja, dann ist die Frage, ob sie auch eine Validierung für jede Transaktion aus diesem Block durchführen werden? wenn ja - warum? wenn nein - warum?
Wenn ich 2 Transaktionen nacheinander mache, obwohl ich nur für eine Transaktion Guthaben habe, gehen diese 2 zuerst in den Pool. und ich schätze, wenn mein Node die Validierung von Transaktionen überprüft, bevor er sie in einen Kandidatenblock einfügt, werden sie sehen, dass das, was sie zuerst überprüfen, gültig ist und das zweite nicht mehr gültig ist, da sie bereits die erste überprüft haben. Rechts ?
Im Allgemeinen wird jede Transaktion validiert, wenn sie dem Mempool des Knotens hinzugefügt wird. Dies geschieht, wenn der Knoten die Transaktion zum ersten Mal sieht, er wartet nicht, bis sie zu einem Kandidatenblock für das Mining hinzugefügt wird. Der Kandidatenblock für das Mining würde aus den Transaktionen gebildet, die sich bereits im Mempool befinden – diejenigen, die bereits vom Knoten validiert wurden.
Wenn ein anderer Knoten einen Block erhält, dann ja, validiert er den Proof of Work und andere Faktoren wie den Zeitstempel, und er validiert auch jede Transaktion im Block, die er zuvor noch nicht gesehen hat. Diejenigen, die es zuvor gesehen hat, werden einfach aus seinem Mempool entfernt und müssen nicht erneut validiert werden.
Zu 3. akzeptieren Knoten keine zwei widersprüchlichen Transaktionen in ihrem Mempool. Jeder Knoten akzeptiert die gültige Transaktion, die er zuerst sieht. Dies ist möglicherweise nicht diejenige, die letztendlich im Block landet, aber der Knoten wird dies korrigieren, sobald eine der beiden widersprüchlichen Transaktionen abgebaut wurde.
GN.