Skip to content

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

Closed
@xqft

Description

@xqft

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.

Metadata

Metadata

Assignees

No one assigned

    Labels

    L2Rollup client

    Type

    Projects

    Status

    Done

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions