Was ist in der Ethereum-Blockchain der Unterschied (und die Beziehung zwischen) (1) dem Prozess zur Validierung einer Transaktion und (2) dem Prozess zur Bestätigung eines Blocks? Es scheint, dass diese Prozesse ziemlich autonom sind, da einige Blöcke mit null Transaktionen bestätigt werden. Aber ein Block kann nur bestätigt werden, wenn alle darin enthaltenen Transaktionen validiert wurden, richtig? Ich würde mir mehr Klarheit über Ähnlichkeiten und Unterschiede zwischen diesen beiden Prozessen wünschen.
Ich kann eine Zusammenfassung auf hoher Ebene bereitstellen, die dazu beiträgt, dass die Dinge sinnvoller werden, wenn Sie nach Details googeln.
Sie sind getrennte Anliegen.
Bei der Validierung geht es um die Entscheidung, ob die Transaktion zulässig ist. Zum Beispiel kann ich eine Transaktion senden, die all Ihre Ether auf mein Konto überweist. Validatoren werden feststellen, dass meine Transaktion nicht mit Ihrer Unterschrift signiert ist, daher ist dies vom Protokoll nicht erlaubt, daher keine Statusänderungen, und ich verliere das gesamte Gas, das ich gesendet habe.
Andere Gründe, eine Transaktion ungültig zu machen. Der Absender verfügt nicht über ausreichende Mittel, der Vertrag hat entschieden, dass die Eingabe nicht akzeptabel ist, der Vertrag hat entschieden, dass die Anfrage nicht akzeptabel ist.
Das Mining eines Blocks ist ein separates Anliegen.
Ein Transaktionsblock ist eine Reihe von Transaktionen in einer bestimmten Reihenfolge . Das Ordnen ist wichtig, da das Netzwerk eine Reihenfolge für die Transaktionsverarbeitung bestimmen muss. Ohne Konsens über die Reihenfolge der Ereignisse ist kein Konsens über die Ergebnisse möglich.
Die Herausforderung hier ist zweifach. Es gibt Netzwerklatenz, sodass Knoten nicht in genau derselben Reihenfolge von ausstehenden Transaktionen erfahren. Und um vollständig dezentralisiert zu sein, kann sich die Lösung nicht auf die Uhr von irgendjemandem verlassen, da die Uhr von niemandem als besser angesehen wird als die von jemand anderem.
Bergleute bestellen die ausstehenden Transaktionen, von denen sie wissen, und wenn sie einen Block „finden“, senden sie die Lösung an das Netzwerk. Dies macht die Reihenfolge der Ereignisse unzweideutig, sodass das Netzwerk einen Konsens über die Reihenfolge der Ereignisse erreichen kann. PoW ist wie eine Lotterie. Der Gewinner darf „annehmen“, dass sich die Transaktionen im Block in einer bestimmten Reihenfolge entwickelt haben. Sie können auch entscheiden, welche Transaktionen durchgeführt werden (sie kennen möglicherweise nicht alle oder die Gebühren sind zu niedrig). Verpasste Transaktionen werden normalerweise in einem nachfolgenden Block verarbeitet.
Bestätigen einer Transaktion
Nach dem Block mit meiner (fehlgeschlagenen) Transaktion besteht eine kleine Möglichkeit, dass ein anderer Miner einen Block mit einer anderen Lösung ankündigt. Diese enthält möglicherweise dieselben Transaktionen, aber in einer anderen Reihenfolge, oder möglicherweise unterschiedliche Meinungen (byzantinische Fehlertoleranz) über die Gültigkeit. Es bedeutet, dass eine Blockade durch eine bessere Idee aufgehoben werden kann. Dennoch kommt etwa alle 15 Sekunden ein neuer Block an, sodass die Wahrscheinlichkeit, dass ältere Blöcke umgeworfen werden, verschwindend gering wird, wenn sich diese häufen. Aus diesem Grund ist es üblich, einige Bestätigungen abzuwarten, um Transaktionen mit hohem Wert zu erkennen.
Jetzt alle zusammen:
Meine lächerliche Transaktion könnte (sagen wir ...) die dritte Transaktion in einem Block sein, mit dem Ergebnis, dass ich mein Benzin verloren habe. Das Netzwerk erreicht durch den Mining-Prozess einen Konsens darüber, dass die Transaktion die dritte vom Netzwerk verarbeitete war und die Transaktion ungültig war und ich dadurch mein Benzin verloren habe. Nachdem ein paar weitere Blöcke ankommen, können wir ziemlich zuversichtlich sein, dass wir das letzte Wort im Netzwerkkonsens über meinen lahmen Exploit gesehen haben.
Ich hoffe es hilft.
lungj