-
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: txList zk proof #13228
Comments
Given what I know now, I would vote against this feature. @Brechtpd |
I think the main question boils down to how much we are about where the potential MEV in a block goes to.
This is also not possible with the current commit-reveal scheme I think as proposers will always be running behind. They would react to another block being proposed, but because there's an additional delay again for their newly proposed block it seems inevitable that the similar conflicts will happen whenever they can actually submit their updated block. So I don't really think using a proof or not on the proposer side is worse than doing commit-reveal. Depending on how many blocks are being proposed and how long the delay it may be a bit worse or a bit better, but the main problem remains. And it does make the protocol simpler, so would say it's better than commit-reveal for that at least. That's why I think it kind of just boils down to protocol level MEV protection question. There's currently substantial drawbacks by trying to mitigate MEV theft on the protocol level, which I'm not even sure how useful is as there are also offchain methods available that are more powerful and more flexible (currently flashbots which has some drawbacks, but generally fine I think to have as an option proposers can opt to use if they want):
Currently I think we just do away with commit-reveal and only do the proof method if it's very fast to generate (so not yet in any case). |
Some resources I found interesting about flashbots on how they mitigate DOS risks (they use trusted dedicated relayers):
Not only interesting to us because of the the L2 proposing possibilities, but also because the current proving fee system is vulnerable to DOS risks as well. #351 (comment) |
Thank you for your feedback, Brecht. I think I'm more or less convinced that txListProof may be a good idea instead.
|
|
If we do not want to solve any MEV related issues in the protocol, I agree that we should remove commit-and-propose.
If we cannot afford any delay in block proposal, then txListProof is indeed problematic. Don't you think? |
A draft implementation is here: https://github.com/taikoxyz/taiko-mono/pull/13225/files |
If we can come up with something that is better than what can be achieved offchain I'm all for it, but it seems problematic with the current approach for decentralization without a leader.
Yep. Similar to above, if we can find a way to have it without impacting the efficiency of proposing than it'd be a nice thing to have. Perhaps some out of the box thinking of easy ways to prove a block is invalid without the attached txListProof is something to explore (for example an optimistic rollup style fraud proof could be used instead, but that's of course a huge dependency to add so doesn't make sense, although if we add a fraud proof system in our multi-prover setup we would already have that dependency). |
Let's try to implement the txListProof and measure it's time cost asap. Hopefully it's small enough. |
The most problematic part for proving a block has invalid data is the RLP format. But now that I have worked with RLP in the MPT circuit maybe not necessarily super complex to support invalid data as well. Will spend some time looking into the RLP circuit used for decoding the transactions and see what's possible. |
Describe the feature request
When a block is proposed, the protocol can request the proposer to submit a ZKP for the txList called
txListProof
. This txListProof shall cover all the logics insideLibInvalidTxList. verifyTxListInvalid
. txLisher tProof will not be verified on L1 by default, but if other nodes realized that txListProof is invalid, the node can request to verify the txListProof then once the verification failed on L1, the block is immediately marked as proven-as-invalid.When the main ZKP is ready to prove the entire block, it shall also cover whatever txListProof is trying to prove. In other words, the main ZKP is a super set of txListProof.
The benefits
The downside
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: