How rli8145/provenance works
Provenance captures and signs photos on-device, anchors attestations to Solana, and verifies exact or recompressed images. The graph includes the app, browser extension, backend, chain program, and registry mirror. Backend routes and some app/extension wiring are represented from the README and file tree; unsampled implementation details are not inferred beyond documented behavior.
Main entry points: http.ts HTTP API · server.ts Backend Server · background.js Verification Worker · registry.ts App Registry API
Components 25
Mobile App
- Capture Screen
app/(tabs)/capture.tsx - Canonical Manifest
lib/manifest.ts - Device Key
lib/deviceKey.ts - App Registry API
lib/registry.ts - Verify Screen
app/(tabs)/verify.tsx - Verdict Logic
lib/verdict.ts - Registry Screen
app/(tabs)/registry.tsx - Record Detail
app/record/[hash].tsx
Browser Extension
- Extension Popup
extension/popup.js - Page Content Script
extension/content.js - Feed Badge Scanner
extension/badges.js - Verification Worker
extension/background.js
Backend Services
- Backend Server
backend/src/server.ts - HTTP API
backend/src/http.ts - Image pHash
backend/src/imagePhash.ts - pHash Vector Search
backend/src/phashVector.ts - Lookup Logic
backend/src/lookup.ts - Chain Client
backend/src/chain.ts - Mongo Client
backend/src/mongo.ts
Solana Attestation
- Solana Ledger
- Attestation Program
program/programs/provenance/src/lib.rs
Registry Mirror
- Mongo Registry
Other components
- Camera User
- Browser User
- Solana Explorer
Connections 33
- Camera User → Capture Screen: captures photo
- Capture Screen → Canonical Manifest: builds manifest
- Capture Screen → Device Key: signs manifest
- Capture Screen → App Registry API: hashes and attests
- App Registry API → Backend Server: POST /attest
- Backend Server → HTTP API: dispatches requests
- HTTP API → Image pHash: computes pHash
- HTTP API → Chain Client: submits attestation
- Chain Client → Attestation Program: submits transaction
- Attestation Program → Solana Ledger: writes PDA
- HTTP API → Mongo Client: indexes record
- Mongo Client → Mongo Registry: writes mirror
- Verify Screen → Verdict Logic: requests verdict
- Verdict Logic → Solana Ledger: reads derived PDA
- Verdict Logic → Backend Server: requests fallback match
- Backend Server → HTTP API: dispatches lookup
- HTTP API → Lookup Logic: routes lookup
- Lookup Logic → Mongo Client: searches candidates
- Lookup Logic → Chain Client: confirms match
- Mongo Client → Mongo Registry: reads candidates
- Registry Screen → App Registry API: loads attestations
- Record Detail → App Registry API: loads record
- App Registry API → Backend Server: requests recent records
- Browser User → Extension Popup: enables scanning
- Extension Popup → Feed Badge Scanner: toggles badges
- Page Content Script → Verification Worker: requests image verdict
- Feed Badge Scanner → Verification Worker: requests image verdict
- Verification Worker → Backend Server: fetches lookup and verify
- Verification Worker → Solana Ledger: checks exact hash
- Verification Worker → Solana Explorer: links transaction
- Record Detail → Solana Explorer: links transaction
- pHash Vector Search → Mongo Registry: searches pHash index
- HTTP API → pHash Vector Search: requests similar images