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.
JAM Service for Validating Ethereum Optimistic Rollups #127
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
JAM Service for Validating Ethereum Optimistic Rollups #127
Changes from 9 commits
828fc10
b8649b1
93e26aa
d2c40a9
1eaf537
cfd9b75
1d46810
b96936c
c28b080
2c1a217
File filter
Filter by extension
Conversations
Jump to
There are no files selected for viewing
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.
it'd be better to handle forks than focus on a single "chain". the reason is that finality on Ethereum is slow - if you want to guarantee that a rollup batch won't be reorged out of the Ethereum chain, you would really have to wait for Ethereum's finality. Finality on Polkadot is fast and there is an excess of cores. So it's better to validate all batches from all forks on Ethereum, and get that information to the unfinalized Ethereum chain as fast as possible.
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 assume you mean the case where a optimistic-on-Ethereum/cynical-on-Polkadot rollup uses JAM to prove finality on both ETH+JAM, correct? Clearly, this "grandfathering" is a critically important use case for the CEXes-on-OP Stack cases.
The "simple" solution I have had is that ETH L2 finality is based on Polkadot/JAM finality with the refinement context anchor block based on JAM alone. But if we get the Ethereum finality into JAM chain state (how exactly is not clear?), the
historical_lookup
/ anchor block could include both ETH + Polkadot/JAM finality, and refine would be based on that.The proof that a L2 has been finalized in JAM alone is coming out via C3/Beta, which makes it over to Ethereum slowly. With work packages validating against all of ETH's unfinalized forks preemptively, and then a signal coming in from ETH coming in as to which fork was finalized (how exactly is not clear, same question as above), we have a faster way to get the same answer of "finalized on both". There is an abundance of cores so yes, the preemptive work package submission is super sensible. Thank you for this idea.
But I'm not sure how Ethereum finality gets into JAM chain state though... what is ideal plan?
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.
No, I think you are confusing validity and finality. Finality is about consensus ordering of operations. Validity is what it sounds like. If you want to make Polkadot cores useful for Ethereum rollups, then Polkadot provides validity and Ethereum provides consensus ordering. So the ideal plan for handling Ethereum finality is to just sidestep it entirely.
My broader point is that for Polkadot to treat a rollup as a "chain", you'd either need permissioned sequencers or to follow the ordering of operations on the ETH chain, which is slow. To be clear, I think it's a bad idea to bake in any reliance on Ethereum block ordering and finality for a service that is fundamentally about providing validity guarantees on rollup blocks.
It seems conceptually simpler to just have a service for validating rollup blocks, and to have the rollup machinery itself organize them into a chain. Separate those concerns. That's basically how ZK rollups work: the ZK prover doesn't care about where the block lies in the rollup's chain, just that a specific block is valid. Expose a simple set of APIs to prove validity of your block on Polkadot and then find a way to bridge over a certificate of that validity.
Another bonus to focusing on blocks as opposed to chains is that rollup sequencers can submit blocks to Polkadot before they've even landed on the Ethereum chain at all. That's an important pipelining step. If there are competing sequencers they can all just submit their block to Polkadot in parallel.
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.
Alright, closing this for now, thank you so much for the insights!