The Problem: Single Points of Failure
Your video recordings live in storage you control. But the proof that those recordings are authentic—the SHA-256 hash chain, timestamps, and cryptographic signatures—lives in our attestation database. If that data were ever lost, your recordings would lose their chain of custody.
We don't accept any single point of failure for data this important. That's why we implement a three-tier redundancy strategy that ensures your attestation records survive even catastrophic infrastructure failures.
Three-Tier Redundancy
Every attestation record is protected at three levels, each designed to survive different failure scenarios:
Primary Database (D1)
Real-timeActive attestation records in Cloudflare D1 (distributed SQLite). Fast queries for verification. This is where we read from during normal operation.
Hot Backup (R2)
Write-throughEvery attestation is also written to Cloudflare R2 object storage as JSON files. Same provider, different storage system. Survives database corruption or accidental deletion.
Off-Provider Backup (B2)
WeeklyComplete database exports are uploaded weekly to Backblaze B2—a different cloud provider entirely. If Cloudflare were to disappear tomorrow, all attestation data would still exist.
What Each Tier Protects Against
| Scenario | D1 | R2 | B2 |
|---|---|---|---|
| Database corruption | Lost | Safe | Safe |
| Accidental deletion | Lost | Safe | Safe |
| Bad deployment/migration | Affected | Safe | Safe |
| Cloudflare outage | Unavailable | Unavailable | Safe |
| Cloudflare account termination | Lost | Lost | Safe |
| Need to migrate providers | Exportable | Portable | Portable |
Automated Verification
We don't just back up data—we verify it. Every day, an automated process compares attestation counts between D1 and R2, checking for discrepancies. Any mismatch triggers an alert and automatic repair.
Weekly, we verify that B2 backups are complete and can be successfully restored. This isn't theoretical—we actually test the recovery process.
Long-Term Archival
Evidence may be needed years after recording. A traffic stop video might be relevant to a lawsuit filed two years later. A journalist's footage might become evidence in a trial that takes a decade to reach court.
We implement archival to ensure attestation data persists indefinitely:
- 90-day active window — Recent attestations stay in our fast database for quick verification
- Automatic archival — Older records are compressed and moved to long-term storage
- Same verification — Archived records are still verifiable through our API; the lookup just checks a different source
- No deletion — We never delete attestation records, only archive them
Indefinite Retention
Your attestation records will remain verifiable for as long as Verity exists—and the B2 backups ensure they're recoverable even if we don't. We're committed to never sunsetting attestation data.
What's Protected
Attestation records contain only cryptographic hashes and metadata—no video content:
{
"session_id": "abc123def456",
"sequence": 1,
"content_hash": "sha256:e3b0c44...",
"previous_hash": "sha256:0000000...",
"timestamp_device": "2026-02-01T14:30:00.000Z",
"timestamp_relay": "2026-02-01T14:30:00.150Z",
"destinations_ok": ["google_drive"],
"relay_signature": "sig:..."
}No video content. No personally identifiable information. Just hashes, timestamps, and signatures. This means:
- Attestation data is small (about 500 bytes per chunk)
- Backups are cheap to store indefinitely
- A data breach would only expose hashes—meaningless without the corresponding video
Recovery Procedures
We maintain documented recovery procedures for every failure scenario:
Recent corruption (< 30 days)
Use D1 Time Travel (Cloudflare's built-in point-in-time recovery) to restore the database to a known-good state. Recovery time: minutes.
Older corruption (> 30 days)
Restore from R2 monthly archives or B2 weekly backups. Import the SQL dump into a fresh D1 database. Recovery time: under an hour.
Complete provider loss
Download latest B2 backup (complete SQL dump). Set up new infrastructure on any SQLite-compatible platform. Recovery time: hours to days depending on scale.
Zero Trust Philosophy
We don't trust any single provider with the only copy of your attestation data. Even though Cloudflare is excellent infrastructure, we maintain off-provider backups because:
- Companies can change policies
- Accounts can be terminated (even incorrectly)
- Outages happen
- Verity might need to migrate providers someday
The B2 backup exists precisely so that Verity isn't locked in to any single infrastructure provider. Your evidence verification shouldn't depend on a business relationship.
Technical Specifications
| Primary Database | Cloudflare D1 (distributed SQLite) |
| Hot Backup | Cloudflare R2 (S3-compatible) |
| Cold Backup | Backblaze B2 |
| Backup Format | Compressed SQL dumps (.sql.gz) |
| Weekly Backup Retention | 12 weeks |
| Monthly Backup Retention | Indefinite |
| B2 Encryption | SSE-B2 (server-side encryption) |
| Active Window | 90 days in primary database |
Questions about our data redundancy strategy? Contact our security team.