Recovery
If something breaks, here is what survives.
orangecheck runs on one database. The parts that hold money and identity are copied to a second one every day at 04:00 UTC. Every signed receipt is timestamped on Bitcoin every hour, so it can be checked without us.
On this page
The backup
- Where it lives
- Upstash Redis
- Copied
- Every day at 04:00 UTC, into Postgres
- Covers
- 92 kinds of money and identity records. Any that carry secrets are encrypted first, or left out.
- Kept for
- 30 days
- Last snapshot
- 2026-10-15 04:00 UTC · 102 keys
- Worst-case loss
- Up to a day of state since the last snapshot
What survives without the backup
Every signed receipt is timestamped on Bitcoin through OpenTimestamps every hour, and a salted commitment to it goes to these Nostr relays (kind 30087). Anyone holding a receipt older than the last run can check it without us. The relays hold commitments, not receipts: a receipt names a person, so it is never published.
relay.damus.ionos.lolrelay.snort.socialrelay.ochk.io
So the relays cannot rebuild a lost store.
Recovery is the copy above. The public record proves what happened; putting it back is done by hand.
Restoring
- 01Stop writesThe app has no maintenance switch, so it is taken offline first. A restore over live traffic overwrites balances that moved since the snapshot.
- 02Rehearse itRead the newest snapshot and list everything it would write back, changing nothing.
- 03RestoreOnly records missing from the store are written back, so nothing newer is rolled back. Restoring the snapshot exactly is a separate, deliberate choice.
- 04Check the booksBalances are recomputed from envelopes on every read, and /audit re-checks each event against its project's published prices.
No restore has been timed or drilled yet.
So there is no recovery-time target we can stand behind.
Live health is on Status. What we store, and why, is on Security.
Never backed up
Some things cannot leak from a backup, because we never have them.
- Private keys
- A Bitcoin wallet's key never reaches orangecheck. Email users hold none here; orangecheck signs for them.
- Recovery phrases
- We never see one.
- Real names, cards, addresses
- We do not collect them.