From d321e6a4aa8677327e64b8a0e7539a450ac76990 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Guilherme=20Guimar=C3=A3es?= Date: Wed, 1 May 2024 10:38:57 -0300 Subject: [PATCH] Added sketch verify endpoint --- orchestration/api_routes.mjs | 2 +- orchestration/api_services.mjs | 38 ++++++++++++++++++++++++++++++++-- 2 files changed, 37 insertions(+), 3 deletions(-) diff --git a/orchestration/api_routes.mjs b/orchestration/api_routes.mjs index 0d76939..7ad962d 100644 --- a/orchestration/api_routes.mjs +++ b/orchestration/api_routes.mjs @@ -41,6 +41,6 @@ router.get("/getBalanceByState", service_getBalanceByState); router.post("/reinstateNullifiers", service_reinstateNullifiers); router.get("/getZKPPublicKey/:address", service_getZKPPublicKey); -router.get("/verify", service_verify); +router.post("/verify", service_verify); export default router; diff --git a/orchestration/api_services.mjs b/orchestration/api_services.mjs index 7a5d1bb..f30f719 100644 --- a/orchestration/api_services.mjs +++ b/orchestration/api_services.mjs @@ -258,9 +258,43 @@ export async function service_getZKPPublicKey(req, res, next) { export async function service_verify(req, res, next) { try { - const { address } = req.body; + const { proof, inputs, verificationKeys } = req.body; + const errors = [] - return res.send({ address }); + if (!Array.isArray(proof)) { + errors.push({ + name: 'proof', + message: `proof is not an array`, + received: proof + }) + } + + if (!Array.isArray(inputs)) { + errors.push({ + name: 'inputs', + message: `inputs is not an array`, + received: inputs + }) + } + + if (!Array.isArray(verificationKeys)) { + errors.push({ + name: 'verificationKeys', + message: `verificationKeys is not an array`, + received: verificationKeys + }) + } + + if (errors.length > 0) { + return res.status(422).send({ errors }); + } + + const verifier = await getContractInstance("Verifier"); + logger.info(`Verifier ${verifier.options.address}`); + logger.info({ proof, inputs, verifier }); + const result = await verifier.methods.verify(proof, inputs, verificationKeys).call(); + logger.info(`VerifierResponse: ${JSON.stringify(result)}`); + return res.send({ result }); } catch (err) { logger.error(err); res.status(400).send({ errors: [err.message] });