-
Notifications
You must be signed in to change notification settings - Fork 2.2k
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
feat(protocol): Add parent's metaHash to assignment #15498
Conversation
The latest updates on your projects. Learn more about Vercel for Git ↗︎
|
we have optional |
We do not introduce new functionality, we just adding the |
Adding here the related convo from TG: Kirk from SigP.: Dani: Kirk: For adding the parentMetaHash in the assignment it allows the prover to know exactly what the state transition occur in the block and this can only be known if you know the initial state. The inital state is "fixed" once the parentMetaHash is set. You're welcome to debate whether the prover wants to know the exact state transition before they begin proving. The main two cases I think of are if there is an unprovable block or if there are certain efficiency gains for smaller executions which would making proving cheaper and therefore they can ask a lower fee. If you were to set it, it would be the same logic as the remaining fields where we only consider the non zero inputs e.g._
@dantaik @Brechtpd just tagging you as you need to call for action in this case. I do not see it a bug or critical, but i find it a useful feature. |
After reading the comments, I feel like we should remove checking metaHash from
But these change will involve upgrading the current A6 testnet, so we need to create a second AssignmentHook implementation and keep the old one as-is we also need to define a new ProverAssignment object in the new impl. |
Copying my comments from telegram here: a)
I think there's a possible attack vector. Let's say there's some very attractive MEV in an L2 block. If the promise of the prover is easily revertible out of the proposer's control, there's an easy way to make sure you win the game to propose a block:
b)
The parentMetaHash currently does not completely make the L2 block deterministic. That's because inputs like So I think using metaHash is really the only way to make it possible for the prover to accurately predict provers costs. Even more, it's also the only way for the proposer to know how much fees it will collect from the block and so the value being known, while challenging on testnet, is almost inevitably a precondition for proposers to even propose the block (otherwise they risk losing money, unless they have some heuristics to calculate the risk depending on the block and if those values changing could impact the profitability of the block). On mainnet however, in a very competitive environment and with PBS available, I assume within each L1 block time new L2 blocks will be created and proposed for this reason, and so I would assume it would be be fine to depend on this value. |
This is a very good point these fields can also significantly effect proving, especially since they are available in |
Hmm not sure why this was merged in. What is the benefit of having the |
As per SigmaP.:
Proving may vary significantly based on the initial state (including storage variables, nonces, account balances, execution flow paths etc). So it could be worth including the parentHash field for assignments if they want to know transaction execution before agreeing to an assignment. It depends on whether the prover wants / needs to know the execution of a set of transaction before agreeing to an assignment.
+1: We don't need this storage var: