Skip to content

@noir:verify

Verify an UltraHonk proof off-chain against a verification key, with no deployed verifier needed. The transcript (keccak or poseidon) is auto-detected from the proof JSON; the vkey must come from @noir:vkey with the matching oracle.

⚗️ Experimental — available at next.evmcrispr.com.

Returns: bool

@noir:verify(proof vkey)
NameTypeDescription
proofstringProof JSON string bound by noir:prove
vkeystringVerification key as 0x-hex bytes (from @noir:vkey)
set $src <<<NOIR
fn main(x: Field, y: pub Field) {
assert(x != y);
}
NOIR
noir:prove $proof --noir $src --inputs [x:3 y:5]
print "Valid:" @noir:verify($proof @noir:vkey($src))

No deployed contract is needed — verification runs locally through Barretenberg. The proof JSON records which transcript it used, so a keccak proof is checked against a keccak vkey and a poseidon proof against a poseidon one; supply the vkey from @noir:vkey with the matching oracle:.