ethereum / execution-specs

Specification for the Execution Layer. Tracking network upgrades.
Creative Commons Zero v1.0 Universal
870 stars 241 forks source link

Contract address made warm on aborted create call #1019

Open benSepanski opened 1 month ago

benSepanski commented 1 month ago

Metadata

What was wrong?

In the execution python specs, a contract_address is added to the accessed_addresses before the check validating that the sender nonce is small enough, the sender has enough balance, and the call-stack-depth has not overflowed.

This does not appear to match the behavior of CREATE as specified in Appendix H of the yellow paper. go-ethereum also appears to not include the new contract address if the aforementioned checks fail before loading the account at the address of the to-be-created account.

Sources

Authors

@sleepingshell, @benSepanski

SamWilsn commented 3 weeks ago

Thanks for the report! This certainly looks like a bug.