Description
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
Labels
Type
Projects
Status