Nehmen wir an, Sie haben zwei Miner: A und B.
Nehmen wir auch an, Sie haben zwei Transaktionen: eine, die eine Zahl bei einem Smart Contract um eins erhöht (Transaktion X), und eine andere, die dieselbe Zahl um eins verringert (Transaktion Y).
Miner A schürft einen Block, der Transaktion X enthält.
Miner B schürft einen Block, der Transaktion Y enthält.
Miner A ist also der Ansicht, dass sich die Smart-Contract-Nummer erhöht hat, und Miner B ist der Ansicht, dass sich die Nummer verringert hat. Beide haben den Status der Adresse in ihren jeweiligen EVMs aktualisiert.
Diese Blöcke werden gesendet und Knoten aktualisieren ihren Smart-Contract-Status entsprechend. Nehmen wir an, dass schließlich ein Konsens erreicht wird und Miner A als „Gewinner“ hervorgeht.
Werden die Zustandsaktualisierungen von Miner B dann "zurückgesetzt" und die Zustandsaktualisierung von Miner B angewendet?
Nur die Änderungen von A werden berücksichtigt (es gibt nichts zurückzusetzen, da die Änderungen von B in der neuen Blockchain nicht berücksichtigt werden).
Sie beschreiben einen Fork, also die Situation, in der wir verschiedene Versionen der Blockchain-Geschichte und des Zustands haben (eine, in der es die Änderungen von A gibt, und eine, in der es die Änderungen von B gibt).
Sobald wir einen Konsens erzielt haben (unter Verwendung einer Auswahlregel, z. B. der längsten Blockchain), können Sie nach einer Reihe von Bestätigungsblöcken die Blockchain vergessen, die die Änderungen von B angewendet hat.
Vielleicht finden Sie diese Antwort interessant .
Bastien
Briomkez
Bastien
Briomkez