Wie und wann finden Block- und Transaktionsvalidierungen statt?

Ich habe ein paar Fragen und werde versuchen, sie hier zu erklären.

Nehmen wir also an, wir haben 4 Knoten im gesamten Netzwerk.

  1. 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 ...

  2. 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?

  3. 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 ?

Das habe ich mich auch schon gefragt. Jedes Tutorial betont, wie Pow-Hashing funktioniert, und sagt wenig darüber aus, wie TX tatsächlich validiert wird.

Antworten (1)

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.

1) Wenn also eine Transaktion durchgeführt wird, bevor sie dem Mempool hinzugefügt wird, wird sie zuerst validiert, oder? und wenn es richtig ist, dann fügt der Knoten es dem Mempool hinzu. Richtig ? 2) Wie überprüft der Knoten, ob der Benutzer das richtige Guthaben hat? Es scheint, als müsste der Knoten die UTXO-Transaktionen der gesamten Blockchain durchlaufen, ist das nicht lästig? Ich erinnere mich, dass es etwas anderes gibt, um schnell zu überprüfen, ob der Benutzer über ein gültiges Guthaben verfügt.
@NikaKurashvili Computer sind ideal für diese Art von "langweiliger" Aufgabe geeignet. Es ist genau das, was für sie fast trivial ist. Das ist zum Beispiel genau das, was jede Suchmaschine tut. Und der Prozess der Erstellung von Indizes, um die Suche effizient zu gestalten, ist ein gelöstes Problem.
@NikaKurashvili Das ist richtig, Validierungsknoten speichern den gesamten Satz nicht ausgegebener Transaktionsausgaben (UTXOs), um zu überprüfen, ob alle Eingaben für eine Transaktion gültig sind (nicht nur der Saldo, sondern auch, dass sie alle anderen Bedingungen erfüllen, z. B. das Überprüfen des Skripts oder Unterschrift erforderlich ist vorhanden).