[r3.5] execution/state, execution/stagedsync: retain AuRa SystemAddress in all EIP-161 empty-removal paths#21938
Merged
Conversation
…ll EIP-161 empty-removal paths The AuRa hack — never EIP-161-remove the empty SystemAddress (0xff…fe), to match the reference implementation — lived only in the serial executor's updateAccount. Extract it into a shared EIP161EmptyRemoval helper and apply it at every empty-account-removal decision site: - updateAccount (serial executor) — refactored onto the helper - printAccount (debug mirror) - StateV3.applyVersionedWrites balance-increase apply (rw_v3.go) - calcFees coinbase and burnt fee accounts (parallel executor) - normalizeWriteSet, per touched account (parallel executor) The parallel-executor sites (calcFees, normalizeWriteSet, applyVersionedWrites) are EIP-7928/BAL paths that AuRa does not exercise today, so the change is correctness-by-construction / consistency there; the serial path is the consensus-relevant one for AuRa chains. Adds a table test for the helper and a normalizeWriteSet test pinning that an empty SystemAddress is retained under AuRa and removed otherwise.
yperbasis
approved these changes
Jun 22, 2026
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Cherry-pick of #21937 to release/3.5.
Completes the AuRa EIP-161 family on r3.5: #21931 (already merged) shipped the block-0 ZeroAddress-at-genesis carve-out (chiado #21712); this PR adds the SystemAddress carve-out for AuRa across all empty-account-removal sites.
r3.5-specific adaptations
TestAsBlockAccessList_Selfdestructed*tests fromversionedio_test.gothat exist only on main.TestNormalizeWriteSet_GenesisBypass*/TestNormalizeWriteSet_PostGenesisEmptyAccountTriggersEIP161(landed in r3.5 via [r3.5] execution/stagedsync: AuRa genesis bypass for parallel-exec emptyRemoval #21931) to pass the newisAura boolarg.Verification
TestNormalize|TestFlushToUpdates|TestApplyWrites|TestSD|TestEIP161EmptyRemovaltests green on r3.5.make lint+make erigonclean.Fixes the gnosis tip-tracking failure observed on release/3.5 QA runs (e.g. https://github.com/erigontech/erigon/actions/runs/27832904647).