-
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): Open multi-proof for Proposer & Prover #15413
Comments
Should be left to the prover I think because the proposer only cares about maximizing profits, so the prover with the lowest fee will be selected. So the prover decides what proofs to generate that minimizes his costs and will be accepted by the rollup smart contract.
My opinion is that all blocks should have the same requirements, so no random minimal tier. That solves the deterministic problem and also makes things very easy for the proposer because the proposer does not have to care about proofs at all, the proposer just has to find a prover willing to prove its block. The prover will do so for a fee, and at the risk of losing his bond will generate the required proofs to get its bond back.
If we have to do check the validity in a smart contract, following the definition of Vitalik, it would still fall under a closed system I believe. But #15376 would be a good way to still use it in some way. The interesting thing is that the open system seems incompatible with validity proofs because they require strict and known rules to function. So that narrows things down how we could use it without this enshrined precompile being available on L1. And when it's available on L1, it will be tricky to prove on L2 because we cannot verify it directly in a validity proof, so we would have to propagate these enshrined EVM proofs done on L2 back to L1 for verification I think. |
I guess I say it because I think it's a way to circumvent the TierProvider, feel like when we get rid of this centralized thing a mid-way solution is to let proposer choose, while the protocol specify a minimum requirement. But if there's no tier system at all if we just wanna multiplex proof soundness, it's also okay that we just require a bond which will be taken away if the minimum criteria is not met. In this way we don't really care who's making decision of proof type.
You're right in strict definition, as long as there is precompiled deploy then the system is closed. However we should certainly leverage Taiko being type1 and our prover market being opened to approach openness in the proof supply chain. Like in #15376, use cryptoecohomy backed verifier or something to decrease the "enshrinement".
This I don't follow 🤔 can you explain? |
The enshrined precompile depends on those claim blobs when following the design set out by Vitalik. And the proofs accepted by the protocol for those claim blobs in the open system are without known verifiers, and so not part of the Ethereum spec directly (only indirectly as in those proofs should verify that the spec was correctly implemented, but how that is done is left open and so clients can choose). So if you want to create a validity proof for this precompile (and so for those claims), you can't really write code that is able to support that really because you don't know what proofs should be accepted. There is no code that can be general enough to support the verification of all possible proofs that can show the correctness of a state transition. You could write code that supports the proof types supported by all major Ethereum clients, but even then you run into the problem that when one of those proofs get updated you would have to update the validity proof as well. So you're back to a closed system. That's why I say that if somebody would call this precompile on L2, we can't directly create a validity proof for it. The only way to really implement it in an open way is to collect all claims from the L2, repost them to L1 and then let the L1 decide on those claims instead, because that way we avoid having to prove the precompile directly on L2 and instead make use of the open system on L1. |
I see ... so literally Zk L2 is a precursor to Zk L1. If Ethereum wants open multi-SNARKed without enshrining anything from let's say PSE, then they'd have to leverage the rollup ecosystem which already has battle-tested ZKP for clients. Naturally the major Zk rollup's validity proof will be picked by the community to installed in their verification client. That's cool! Yooo i think there's some big alpha here :) Although I now agree with you on L2s validity proofs can only be closed. But we should def ride the tide and articulate this idea from Vitalik to the public. And say that our system (although it's closed) is the most suitable for testing validity proofs for open client systems. |
Considerations for Alternatives: Selecting the most appropriate alternative would depend on the specific goals, use cases, and considerations of the blockchain protocol in question. |
Great work good people!! |
This issue is stale because it has been open for 30 days with no activity. |
This issue was closed because it has been inactive for a week since being marked as stale. |
Describe the feature request
Description of the feature request here.
From discussions with @Brechtpd and Vitalik's enshrined ZK-EVM
Background
Taiko's current proof system relies on a tier oracle that impose a centralized control of proof type. Such implementation corresponds to a "close" multi-client system under Vitalik's definition:
On the contrary, an "open" multi-client system is also proposed:
The obvious difference differences between these two is whether the protocol has some enshrined precompiles for verification. Vitalik also proposes an "in-protocol ZK-EVM feature" for L1, which implies more nuances for the proof supply chain:
To illustrate:
Propose Change
We should implement a semi-open multi-client system on the prover to builder side, while keeping the enshrined verification. For the following rationals:
We could require the Taiko proposer to specify the proof type at proposal time, more than one types of preferable proofs can be required to get the benefit of multiplexing (the more proofs the better). If the type or amount does not meet the tier requirement,
proposeBlock()
reverts. Another potential benefit is simplifying proving fee calculation since the proof type is deterministic and uniform; we only need to check the TKO bond.Further implementation details may need to be considered, but moving in this direction alligns with ZK team's road map with compilation, and will make us the first rollup explicitly practicing the open design of "in-protocol ZK-EVM feature".
Describe alternatives you've considered
Description of the alternatives you've considered here.
Additional context
Additional context here.
The text was updated successfully, but these errors were encountered: