-
Notifications
You must be signed in to change notification settings - Fork 146
fix(l1,l2): make GuestProgramState more strict when information is missing #5707
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
base: main
Are you sure you want to change the base?
Conversation
Lines of code reportTotal lines added: Detailed view |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Pull request overview
This PR fixes handling of incomplete execution witnesses when querying non-ethrex nodes in ethrex-replay. Instead of failing when witness nodes are missing for accounts or storage slots that aren't critical to block execution, the code now defaults to empty values and logs debug messages to aid in troubleshooting.
Key Changes:
- Modified error handling in
get_account_stateandget_storage_slotto return empty values instead of propagating errors when trie nodes are missing - Added debug logging to help identify incomplete witnesses when debugging state root mismatches in the L2 Prover
💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.
Motivation
Now, given that it turns out to be a vulnerability for the L2 we will change the approach, it's more important to guarantee safety in the Guest Program than to replay with non-ethrex nodes for now. We will try to achieve both though.
Description
Description of Replay with non-ethrex nodes problem:
Before this PR we were doing for accounts and storage "If you don't find them, default to empty values because they are not important". This works for replay but is a vulnerability in production (e.g. for an Ethrex L2) so we are going to be strict and see if we can be loose with replay only.