fix(hot): avoid panic when bytecode_hash is None during revert writes#44
Merged
fix(hot): avoid panic when bytecode_hash is None during revert writes#44
Conversation
Account::from(AccountInfo) sets bytecode_hash to None when code_hash equals KECCAK256_EMPTY. However, the AccountInfo can still have code = Some(...) in this case. The .expect() on bytecode_hash then panics because it assumes code presence implies a non-empty hash. Replace the .expect() with an if-let that skips storing bytecode when the hash is None (i.e. empty code), fixing the panic in both write_plain_revert_sorted and write_changeset_account. Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Member
|
use a an option combinator on the initial binding instead of nesting if let bindings |
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
prestwich
approved these changes
Apr 3, 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.
Summary
write_plain_revert_sortedandwrite_changeset_accountwhere.expect("info has bytecode; hash must exist")crashes when anAccountInfohascode = Some(...)butcode_hash == KECCAK256_EMPTYAccount::from(AccountInfo)correctly setsbytecode_hash = Nonefor empty code hashes, but the downstream.expect()didn't account for this.expect()calls withif let Some(code_hash)— empty-code bytecode doesn't need to be stored anywayContext
Observed in production on
signet-sidecarrunningsignet-hot0.6.8:Test plan
cargo fmt --checkpassescargo clippy -p signet-hotpassescargo test -p signet-hot— all 107 tests pass🤖 Generated with Claude Code