Skip to content
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

L2: hardcode zkvms verification keys in the OnChainProposer contract to take as reference for the verify function #2195

Open
Tracked by #2142
xqft opened this issue Mar 11, 2025 · 0 comments
Labels
L2 Rollup client

Comments

@xqft
Copy link
Contributor

xqft commented Mar 11, 2025

Currently we take the verification keys (also called "image id", "program vkey", "riscv key" depending on the zkvm) as parameters for the verification function on this contract, and not check them at all. This means that any valid zkvm proof of any program (including an empty program) can make the verify() function succeed.

The verification key is unique for every provable program; it summarizes a circuit. Our verifier is only interested in verifying the block execution program of each zkvm. We should hardcode the verification keys for our programs and check that the verification key taken as parameter equals the hardcoded one, this way the contract makes sure that it's verifying block execution proofs coming from the prover client and nothing else.

@xqft xqft added the L2 Rollup client label Mar 11, 2025
@xqft xqft added this to ethrex_l2 Mar 11, 2025
@xqft xqft changed the title L2: hardcode zkvms verification keys in the OnChainProposer contract L2: hardcode zkvms verification keys in the OnChainProposer contract to take as reference for the verify function Mar 11, 2025
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
L2 Rollup client
Projects
Status: No status
Status: No status
Development

No branches or pull requests

1 participant