Skip to content

db/kv: fix code cache hash key computation#18965

Merged
AskAlexSharov merged 2 commits into
erigontech:mainfrom
yyhrnk:db-kvcache-fix-code-hash-key
Feb 6, 2026
Merged

db/kv: fix code cache hash key computation#18965
AskAlexSharov merged 2 commits into
erigontech:mainfrom
yyhrnk:db-kvcache-fix-code-hash-key

Conversation

@yyhrnk

@yyhrnk yyhrnk commented Feb 4, 2026

Copy link
Copy Markdown
Contributor

Previously kvcache used hash.Hash.Sum incorrectly when computing code cache keys, passing a preallocated 32-byte slice and ignoring the returned slice. As a result all code entries were effectively cached under the all-zero key and OnNewBlock pre-population of the code cache did not work as intended.

Use the Sum(nil) result as the code hash key for UP SERT_CODE and CODE actions in OnNewBlock, so each bytecode is cached under its real Keccak-256 hash while avoiding the extra make([]byte, 32) allocation.

@AskAlexSharov AskAlexSharov enabled auto-merge (squash) February 5, 2026 01:38
@AskAlexSharov AskAlexSharov merged commit 7f72d8a into erigontech:main Feb 6, 2026
17 of 18 checks passed
mattevans added a commit to ethpandaops/erigone-legacy that referenced this pull request Feb 6, 2026
* upstream/main: (91 commits)
  perf(cl/block_collector): optimize encodeBlock buffer allocation (erigontech#18980)
  db/kv: fix code cache hash key computation (erigontech#18965)
  Fix hive tests 0302 (erigontech#18986)
  perf(execution/types): optimize EIP-7685 request encoding (erigontech#18985)
  refactor: replace interface{} with any for clarity and modernization (erigontech#18978)
  refactor: replace interface{} with any for clarity and modernization (erigontech#18977)
  Rework Dockerhub API call authorization mechanism. (erigontech#18989)
  claude: add erigon-network-ports skill (erigontech#18992)
  PersistentBlockCollector: assert on inserting gap (erigontech#18979)
  qa-tests: add Geth test to the RPC Historic Performance Tests (erigontech#18895)
  a bit less debug logs (erigontech#18974)
  ProcessFrozenBlocks: to support `isDomainAheadOfBlocks` (which we have in `fcu`) (erigontech#18981)
  qa-tests: fix summary in RPC Performance Tests Latest (erigontech#18984)
  handle edge case for genesis block in SeekCommitment (erigontech#18960)
  db/preverified: remove redundant assertSorted in Get (erigontech#18967)
  txnprovider/shutter: fix identity preimage DecodeSSZ error length (erigontech#18938)
  perf(cl/sentinel): use stack allocation for light_client response prefix (erigontech#18961)
  Add debug.SetupSimple, and improve torrent client status info log (erigontech#18953)
  Refactor worker count calculation to remove redundant bounds check (erigontech#18415)
  fix: remove duplicate TxPoolBlobPriceBumpFlag check in setTxPool (erigontech#18472)
  ...
Giulio2002 pushed a commit that referenced this pull request Feb 6, 2026
<!-- в чем причина правок? тоесть понятным образом обьясняешь что не так
было до наших правок -->
Previously kvcache used hash.Hash.Sum incorrectly when computing code
cache keys, passing a preallocated 32-byte slice and ignoring the
returned slice. As a result all code entries were effectively cached
under the all-zero key and OnNewBlock pre-population of the code cache
did not work as intended.

<!-- Четкое и лаконичное общее описание изменений, вносимых этим PR -->
Use the Sum(nil) result as the code hash key for UP SERT_CODE and CODE
actions in OnNewBlock, so each bytecode is cached under its real
Keccak-256 hash while avoiding the extra make([]byte, 32) allocation.
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