Spaces:
Sleeping
Sleeping
| 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'); | |
| }); |