Was sind die Unterschiede (und Beziehungen) zwischen den Schritten, die verwendet werden, um (1) eine Transaktion zu validieren und (2) einen Block zu bestätigen?

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.

Vielleicht ist meine Terminologie falsch, aber ich habe noch nie davon gehört, dass Blöcke bestätigt (validiert/verifiziert, ja) werden. Ich habe davon gehört, dass Transaktionen (getrennt von der Validierung) basierend auf der Anzahl der Blöcke in der "gewinnenden" Kette, in der sie erscheinen, bestätigt werden. Blöcke werden verifiziert/validiert, bevor sie an die Blockchain angehängt werden. Beziehen wir uns auf dasselbe mit unterschiedlichen Begriffen?

Antworten (1)

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.

Das war sehr hilfreich, Rob, danke! Jetzt verstehe ich also, dass die Validierung einer Transaktion im Grunde ein evidenzbasierter Prozess ist (dh die Feststellung, dass ausreichende Mittel vorhanden sind, dass die Transaktion unterzeichnet ist usw.). Und das ist unabhängig davon, ob es bestätigt wird oder nicht. Die Bestätigung einer Transaktion erfolgt also nur, wenn der Block oft genug bestätigt wird? Ich wollte nur sichergehen, dass ich das richtig verstanden habe.
Ich möchte eine andere Sache überprüfen ... Ich bin auch richtig, dass die Bestätigung eines Blocks (1) das Lösen des mathematischen Rätsels + (2) das schnellere Verbreiten der Lösung im Netzwerk als andere, die es ungefähr gleich lösen, beinhaltet Zeit? Ich bin mir immer noch nicht ganz klar über die Beziehung zwischen (a) dem Ordnen der Transaktionen in einer bestimmten Reihenfolge und (b) dem Lösen des mathematischen Rätsels. Wie hängen sie mit dem Bestätigungsprozess zusammen?
Aufgrund der Netzwerklatenz erfahren Knoten in unterschiedlichen Reihenfolgen von ausstehenden Transaktionen. Aufgrund der Physik können wir nicht erwarten, dass alles schneller ist als alles andere. Aufgrund der Dezentralisierung ist die Uhr von niemandem besser als die der anderen, also können wir sie nicht verwenden. Das Puzzle ist eine Möglichkeit, die richtige Reihenfolge von Ereignissen innerhalb eines Blocks eindeutig zu machen. Der Miner, der das Rätsel zuerst löst, erhält das Privileg, die Auftragstransaktionen anzukündigen, die bearbeitet werden (wurden). Zusätzliche Details behandeln das Szenario, wenn zwei oder mehr Miner mehr oder weniger gleichzeitig eine Lösung ankündigen => eventueller Konsens
@RobHitchens: Danke für die wunderbar einfache Sprache, die verwendet wird, um dies zu erklären. Irgendwelche Quellen, wo ich mehr über einen möglichen Konsens lesen kann, falls 2 oder mehr Miner gleichzeitig einen neuen Block lösen/ankündigen? Ich habe erfahren, dass dies eine Gabelung in der Kette erzeugt, die gelöst werden kann, indem auf eine festgelegte Anzahl von Bestätigungen gewartet wird (6 im Falle von Ethereum, wie ich gelesen habe - aber ich könnte mich irren) - aber was ist, wenn die Gabelung über diese Menge hinausgeht? Nummer?
Proof-of-Work ist eines dieser Dinge, bei denen man ein wenig Zeit damit verbringt, Erklärungen aus vielen Blickwinkeln zu betrachten, bis es klick macht. Die von Ihnen beschriebene "Gabelung" ist richtig. Es wird durch die Regel der längsten Kette gelöst. Wenn sich Blöcke stapeln, beobachtet der Knoten, welche Kette den meisten Beweis für die meiste Arbeit hat und diese als kanonische Kette betrachtet.
Eine nicht offensichtliche Eigenschaft, die ich für wichtig halte, ist, dass keine Transaktion unbedingt verloren geht, wenn ein Block abgelehnt wird, weil „hey … wir folgen jetzt dem anderen Fork“. Beide gültigen Ketten haben gültige Transaktionen aus demselben ausstehenden Mempool. In den meisten Fällen haben die Ketten die gleichen Transaktionen in einer anderen Reihenfolge.