Skip to content

Conversation

@Giulio2002
Copy link
Contributor

No description provided.

[email protected] and others added 11 commits January 29, 2026 16:45
- Remove code cache creation in exec3.go to prevent stale cache data
  between block generation and execution phases
- Simplify ValidateAndPrepare to only clear on actual hash mismatch
- Remove code cache integration from domain_shared.go GetLatest
  (cache management should happen at higher level)

This fixes TestDeleteRecreateSlotsAcrossManyBlocks which was failing
due to stale cached code being returned after selfdestruct/recreate.

Co-Authored-By: Claude Opus 4.5 <[email protected]>
…appings

This improves the code cache design:
- Level 1: addr→codeHash (262144 entries, mutable, cleared on reorg)
- Level 2: codeHash→code (2048 entries, immutable, never cleared)

Multiple addresses can share the same code (common with proxies/clones),
and code hash is immutable so the same hash always means same code.

Co-Authored-By: Claude Opus 4.5 <[email protected]>
Prints cache sizes and hit rates at the end of each block:
- addr cache: hits/total (hit%) size
- code cache: hits/total (hit%) size

Co-Authored-By: Claude Opus 4.5 <[email protected]>
- Don't populate cache for addresses already dirty in current block
- Capture dirty state at start of GetCode/GetCodeSize before getStateObject
- This prevents re-caching code after Selfdestruct removes the entry
- Fixes TestCVE2020_26265 and TestSelfDestructReceive with cache enabled
- Increase DefaultCodeCacheSize to 10_000

Co-Authored-By: Claude Opus 4.5 <[email protected]>
:qa
Merge remote-tracking branch 'origin/main' into code-cache
@Giulio2002 Giulio2002 changed the title Code cache Add state caches that persist throughuout blocks Jan 30, 2026
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