In the Ethereum whitepaper, it says:
“If a message execution runs out of gas, then that message's execution, and all other executions triggered by that execution, revert, but parent executions do not need to revert.”
Suppose we have the following contract call chain:
- Contract A calls Contract B
- B calls Contract C
- C runs out of gas and reverts
In this scenario:
Do only C and B revert, while A's execution, and its state changes (before the call to B) persist?
Or does the revert in C cause the entire call chain, including A, to revert?