|
|
const router = require('express').Router(); |
|
|
const StrikeHistory = require('../models/StrikeHistory'); |
|
|
const crypto = require('crypto'); |
|
|
|
|
|
|
|
|
router.get('/verify/:date', async (req, res) => { |
|
|
try { |
|
|
const dayStart = new Date(req.params.date); |
|
|
dayStart.setHours(0,0,0,0); |
|
|
|
|
|
const dayEnd = new Date(dayStart); |
|
|
dayEnd.setHours(23,59,59,999); |
|
|
|
|
|
const strike = await StrikeHistory.findOne({ |
|
|
date: { $gte: dayStart, $lte: dayEnd } |
|
|
}).lean(); |
|
|
|
|
|
if (!strike) { |
|
|
return res.status(404).json({ error: 'No strike found for this date' }); |
|
|
} |
|
|
|
|
|
|
|
|
const recomputedHash = crypto |
|
|
.createHash('sha256') |
|
|
.update(JSON.stringify(strike.audit_payload)) |
|
|
.digest('hex'); |
|
|
|
|
|
res.json({ |
|
|
date: strike.date, |
|
|
target_price: strike.target_price, |
|
|
winning_digits: strike.winning_digits, |
|
|
audit_hash: strike.audit_hash, |
|
|
recomputed_hash: recomputedHash, |
|
|
is_valid: recomputedHash === strike.audit_hash, |
|
|
audit_payload: strike.audit_payload, |
|
|
winners: strike.winners.map(w => ({ |
|
|
tier: w.tier, |
|
|
amount: w.amount, |
|
|
rank: w.rank, |
|
|
kus_id: w.kus_id |
|
|
})) |
|
|
}); |
|
|
|
|
|
} catch (err) { |
|
|
console.log(err); |
|
|
res.status(500).json({ error: 'Verification failed' }); |
|
|
} |
|
|
}); |
|
|
|
|
|
module.exports = router; |
|
|
|