ethereum-optimism / ethereum-optimism/specs

Research Area: Validity Proofs to Improve Interop Scalability

Open
#79 2 comments 0 reactions 0 assignees View on GitHub
Dominant language
Python
Stars
178
Forks
206
Avg merge
5d 2h
Merged PRs (30d)
6

Description

Can validity proofs be utilized to improve the scalability of the interop protocol? It isn't immediately clear if they can without first shipping the devnet and then seeing how much throughput the system can handle safely. After that, it should be more clear where the bottlenecks are and then we can benchmark various ways of integrating zkps into the protocol if necessary.

Right now it is assumed that there will be heavy load in unsafe to safe progression described in the [derivation pipeline](https://github.com/ethereum-optimism/specs/blob/main/specs/interop/verifier.md#derivation-pipeline) - the problem can be modeled using a [graph](https://github.com/ethereum-optimism/specs/blob/main/specs/interop/messaging.md#message-graph). There will also be heavy load for the sequencer when accepting incoming transactions to [build blocks](https://github.com/ethereum-optimism/specs/blob/main/specs/interop/sequencer.md#block-building).

These are two different problems and zkps can be applied for both.

For unsafe to safe progression, the sequencer could send proofs via the p2p network so that the derivation pipeline doesn't need to query for as much remote data. This idea has been explored in by adding a [commitment](https://github.com/ethereum-optimism/specs/pull/259) to the L2 blocks themselves and sending the proofs via [p2p](https://github.com/ethereum-optimism/specs/blob/main/specs/interop/rollup_node_p2p.md). This solution doesn't require zkps but there could be a way to improve our current thinking with them.

For the sequencer accepting transactions, the a zkp could be given to the sequencer along with the user's transaction that removes the need for the sequencer to verify the existence of the initiating message before including in a block. This seems like a more promising application, although it isn't immediately clear if this would be a huge gain given the state of zkp proof generation times. Given slight spec changes, it may be possible to make the proof generation times fast enough for this to work. Instead of using an absolute log index, a tx index + relative log index can be used in the identifier and it will greatly speed up zkp proof generation time.

An example of using sp1 for the sort of proof that is required for these solutions can be found here: https://github.com/puma314/verified-logs/

We also need to be very mindful of the downsides if people are able to create fraudulent proofs. No user funds can ever be at risk if a fraudulent proof can be generated.

Contributor guide

Open the contributing guide

Research direction

Start by reading the interop derivation pipeline, message graph, block-building, and rollup_node_p2p specifications linked in the issue, then review the commitment proposal in specs pull request 259 and the verified-logs SP1 example. Measure devnet throughput and identify bottlenecks in unsafe-to-safe progression and sequencer transaction acceptance. Done means benchmarking feasible proof integrations while documenting proof-generation costs and ensuring fraudulent proofs cannot endanger user funds.

Written by the indexing model from the issue text.

Assessment

Domain
cryptography, distributed-systems
Issue type
Feature
Difficulty
5/5
Estimated time
Over a week
Activity status
Stale
Clarity
Needs clarification
Newbie friendliness
25/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.