zkp_verification / index.js
Junaidb's picture
Create index.js
6b4baf6 verified
import express from 'express';
import cors from 'cors';
import * as snarkjs from 'snarkjs';
import fs from 'fs';
const app = express();
app.use(cors());
app.use(express.json({ limit: '10mb' }));
app.post('/verify', async (req, res) => {
try {
const { zkProof, publicSignals, walletPublicKey } = req.body;
console.log("Received ZK proof for verification");
console.log("Wallet:", walletPublicKey);
const vKey = JSON.parse(fs.readFileSync('verification_key.json', 'utf8'));
console.log("Starting verification...");
const startTime = Date.now();
const isValid = await snarkjs.groth16.verify(vKey, publicSignals, zkProof);
const endTime = Date.now();
console.log(`Verification complete in ${endTime - startTime}ms:`, isValid);
res.json({
valid: isValid,
wallet: walletPublicKey,
verificationTime: endTime - startTime,
message: isValid ? "ZK proof verified!" : "Invalid proof"
});
} catch (error) {
console.error("Verification error:", error);
res.status(500).json({ valid: false, error: error.message });
}
});
app.listen(7860, () => {
console.log('ZK Verification server running on 7860');
});