Back to Docs

Data Redundancy

How we protect attestation records so your evidence remains verifiable forever.

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:

1

Primary Database (D1)

Real-time

Active attestation records in Cloudflare D1 (distributed SQLite). Fast queries for verification. This is where we read from during normal operation.

2

Hot Backup (R2)

Write-through

Every attestation is also written to Cloudflare R2 object storage as JSON files. Same provider, different storage system. Survives database corruption or accidental deletion.

3

Off-Provider Backup (B2)

Weekly

Complete 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

ScenarioD1R2B2
Database corruptionLostSafeSafe
Accidental deletionLostSafeSafe
Bad deployment/migrationAffectedSafeSafe
Cloudflare outageUnavailableUnavailableSafe
Cloudflare account terminationLostLostSafe
Need to migrate providersExportablePortablePortable

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.

Daily
D1 vs R2 verification
Weekly
B2 backup creation
Monthly
Full restore test

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 DatabaseCloudflare D1 (distributed SQLite)
Hot BackupCloudflare R2 (S3-compatible)
Cold BackupBackblaze B2
Backup FormatCompressed SQL dumps (.sql.gz)
Weekly Backup Retention12 weeks
Monthly Backup RetentionIndefinite
B2 EncryptionSSE-B2 (server-side encryption)
Active Window90 days in primary database

Questions about our data redundancy strategy? Contact our security team.