-
Notifications
You must be signed in to change notification settings - Fork 9
STR-1308: EVM state diff(snapshot) prototype #800
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
Conversation
Codecov ReportAttention: Patch coverage is
@@ Coverage Diff @@
## main #800 +/- ##
==========================================
+ Coverage 52.23% 52.43% +0.20%
==========================================
Files 298 304 +6
Lines 32747 33319 +572
==========================================
+ Hits 17106 17472 +366
- Misses 15641 15847 +206
🚀 New features to boost your workflow:
|
Commit: 38ba260 SP1 Execution Results
|
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.
I'm not sure what from this design comes out of how the exex API is designed. Including tracking in the BatchStateDiff
structure feels undesirable, see comments
I know this is a prototype and that's why we're using serde for it, but that seems like a huge overhead. At least adding #[serde(rename = ...)]
to fields to make them encode as single chars would slim this down and skipping serializing entries in AccountInfo
if they're unchanged.
Should we also include in the prototype a checker/applicator that applies the diff on top of a previous state and ensures it matches a final state? It would be nice to have that since that's how I imagine the flow in the proof would be more like, instead of recomputing the diff while checking the blocks and checking it matches a hash passed.
d5e9a14
to
aef42c7
Compare
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.
Somewhat more minor changes.
I am curious about how this will lead into DA based sync? Do we have an alternate set of processing stages for that? I'm not sure what infra there is.
…e root based off state diffs.
df53270
to
2f573bf
Compare
@delbonis I have taken a deep look at it, but it seems we gotta build a set of processing stages (given that we have plans to allow DA based sync) |
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.
I think all the major issues I looked at earlier have been dealt with so I'm approving this now, but I'm not sure what the next steps are and if those maybe make sense to do here and now. Do you have an idea of what else is needed here?
Like obviously sync is a next step but that feels like we'd want it to be a different PR. And/or making a more advanced RPC control interface. |
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.
Just got a chance to look closely into this today. Seems like a lot of things are already in place. Great work!
@delbonis Next steps:
|
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.
ACK 1edbb1d
LGTM! |
Description
A prototype impl of EVM DA using state "snapshot" (without compression).
What's meant by "snapshot" is: current impl of EVM DA does not use diffs, but rather sets a new state every time (without diffing currently).
The impl also:
P.S. Once basic DA diff library is settled, an additional lift to use diffs should be somewhat minimal.
Type of Change
Notes to Reviewers
Checklist
Related Issues