Skip to content

[r3.6] execution/state: skip the domain read when the tx already found no account - #23089

Merged
AskAlexSharov merged 1 commit into
release/3.6from
alex/normalize_absent_skip_36
Aug 7, 2026
Merged

[r3.6] execution/state: skip the domain read when the tx already found no account#23089
AskAlexSharov merged 1 commit into
release/3.6from
alex/normalize_absent_skip_36

Conversation

@AskAlexSharov

Copy link
Copy Markdown
Collaborator

Cherry-pick of #23074 to release/3.6.

…count (#23074)

When the read set holds no account for an address,
`versionedStateReader.ReadAccountData` went to the domain — including
when the read set held an AddressPath entry that says there is no
account. That entry is an answer, not a gap: `readAccountInternal`
records it header-only before the load, and `accountRead` overwrites it
with the account as soon as a load finds one, so a header-only entry
means the load came back empty.

Implication "read set records the address -> the read returns nil", over
`rpc/jsonrpc` + `execution/tests`: **10618/10618**, including the
self-destruct / EIP-161 / CREATE2 family.

**Worth nothing on main today**, measured: apply-loop domain account
reads through the versioned reader are 7506 with and without, whole
`rpc/jsonrpc` suite. `Normalize` still gets the plain domain reader, so
only the finalize IBS uses this path and it never asks for a
recorded-absent address. Once `Normalize` takes the read-set reader
(#23050), the same condition takes those reads 18961 -> 8926
(**-52.9%**).

Divergence not seen in 10618 samples: an account self-destructed by an
earlier tx and revived by a balance-only credit writes no AddressPath
cell, so the old path returned the pre-SD account where this one falls
through to BAL synthesis.

Green: `execution/state`, `execution/stagedsync`, `execution/tests`,
`rpc/jsonrpc`.
@AskAlexSharov
AskAlexSharov added this pull request to the merge queue Aug 7, 2026
Merged via the queue into release/3.6 with commit 60638cd Aug 7, 2026
94 checks passed
@AskAlexSharov
AskAlexSharov deleted the alex/normalize_absent_skip_36 branch August 7, 2026 12:01
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants