Closed gurukamath closed 7 months ago
Attention: 2112 lines
in your changes are missing coverage. Please review.
Comparison is base (
bf47143
) 69.96% compared to head (4938522
) 69.83%. Report is 25 commits behind head on forks/cancun.
:umbrella: View full report in Codecov by Sentry.
:loudspeaker: Have feedback on the report? Share it here.
The question of whether BEACON_ROOTS_ADDRESS
gets cleared is verifiably moot, because the account is not empty and cannot become empty. My recollection is that it was decided to remove the test from execution-spec-tests
, rather than force everyone to implement this. If that's the case I don't see why we should be added code to the specs.
The question of whether
BEACON_ROOTS_ADDRESS
gets cleared is verifiably moot, because the account is not empty and cannot become empty. My recollection is that it was decided to remove the test fromexecution-spec-tests
, rather than force everyone to implement this. If that's the case I don't see why we should be added code to the specs.
The way the ethereum/tests
for cancun are currently filled, this account can end up being touched and empty. Will check with the team. @marioevz Any comments on this?
Execution spec tests fix: https://github.com/ethereum/execution-spec-tests/pull/425
Still looking into ethereum/tests.
Opened issue for this to be fixed in the ethereum/tests
repo
EIP-7523 fixes this because then the BEACON_ROOTS_ADDRESS
cannot be empty in the pre-state.
but can it be non existent?
and if it is non existent then if no code exists at BEACON_ROOTS_ADDRESS, the call must fail silently
meanin the current ethereum/tests are correct
Exactly. Most of the tests don't have the BEACON_ROOTS_ADDRESS
code in the state and they work fine. The system call works as a call to a non-existent account.
but then there is this option which is also legal - to just write storages without a silent call. it creates double reading. because writing storages directly is not a call so it does not fail.
I think it would be better if:
if there is no contract in the state. deploy contract to the state. make silent call / write storages if contrac alsready in the state verify it has nonce = 1, code = CODE
What was wrong?
The current implementation of EIP-4788 did not delete the account at
BEACON_ROOTS_ADDRESS
if it is empty after being touched by the system message call. For example, in a case where the contract has not been deployed yet. EIP-4788 does not explicitly mention this deletion but it is implied post EIP-161How was it fixed?
Delete the account at
BEACON_ROOTS_ADDRESS
if it is empty.