Problem
Payment reports submitted via POST /api/report are trusted at face value. A malicious actor could submit fake digests, inflating a server's transaction count and volume.
Currently acceptable because:
- Only known servers report (t2000 gateway)
- Low volume means manual spot-checking is feasible
Won't scale when multiple independent servers are reporting.
Solution
Verify reported payment digests on-chain before recording them.
Verification steps
Implementation options
- Synchronous — verify on-chain during the
POST /api/report request (adds latency)
- Async queue — accept the report, mark as
pending, verify in background cron
- Hybrid — accept with
verified: false, cron upgrades to verified: true
Acceptance criteria
Context
Deferred from Phase 4. Related to #2 (digest replay protection). Both can share the same on-chain lookup.
Problem
Payment reports submitted via
POST /api/reportare trusted at face value. A malicious actor could submit fake digests, inflating a server's transaction count and volume.Currently acceptable because:
Won't scale when multiple independent servers are reporting.
Solution
Verify reported payment digests on-chain before recording them.
Verification steps
suiClient.getTransactionBlock({ digest })to confirm the tx existsImplementation options
POST /api/reportrequest (adds latency)pending, verify in background cronverified: false, cron upgrades toverified: trueAcceptance criteria
Context
Deferred from Phase 4. Related to #2 (digest replay protection). Both can share the same on-chain lookup.