From e21da286d935089457db651c0e8c2d1b731f218f Mon Sep 17 00:00:00 2001 From: Dmitriy Ryajov Date: Mon, 12 Feb 2024 13:19:10 -0600 Subject: [PATCH] return correct proof --- codex/node.nim | 29 ++++++++++++++++++++--------- 1 file changed, 20 insertions(+), 9 deletions(-) diff --git a/codex/node.nim b/codex/node.nim index a182377c..6a04f927 100644 --- a/codex/node.nim +++ b/codex/node.nim @@ -587,17 +587,28 @@ proc onProve( error "Unable to fetch manifest for cid", err = err.msg return failure(err) - without proof =? await prover.prove(slotIdx, manifest, challenge), err: - error "Unable to generate proof", err = err.msg - return failure(err) + when defined(verify_circuit): + without (inputs, proof) =? await prover.prove(slotIdx, manifest, challenge), err: + error "Unable to generate proof", err = err.msg + return failure(err) - # Todo: send proofInput to circuit. Get proof. (Profit, repeat.) + without checked =? await prover.verify(proof, inputs), err: + error "Unable to verify proof", err = err.msg + return failure(err) - # For now: dummy proof that is not all zero's, so that it is accepted by the - # dummy verifier: - var proof = Groth16Proof.default - proof.a.x = 42.u256 - success(proof) + if not checked: + error "Proof verification failed" + return failure("Proof verification failed") + + else: + without (_, proof) =? await prover.prove(slotIdx, manifest, challenge), err: + error "Unable to generate proof", err = err.msg + return failure(err) + + success proof.toGroth16Proof() + else: + warn "Prover not enabled" + failure "Prover not enabled" proc onExpiryUpdate( self: CodexNodeRef,