KALYPSOOpen app →

Private data on a public chain

On Arkiv, deleteEntity only clears current state. Kalypso encrypts on your device, proves facts in zero knowledge, and makes deletion real by destroying the keys.

Live on Arkiv Rabdi · chain 7794095

What it does

Four primitives, one library

◈01

Encrypt

Plaintext never leaves your device.

  • AES-256-GCM in the browser, padded to size buckets
  • Fresh key per record, split 2-of-3: device + two guardians
  • Shares travel wrapped in hybrid post-quantum KEM
  • Files go to Swarm under the same key scheme
◎02

Prove

Use your data without showing it.

  • Salted Poseidon2 commitment published on Arkiv
  • Noir circuits prove ranges and equality
  • Anyone verifies from Arkiv, no wallet, no key
  • The verifier learns the claim, nothing else
✕03

Shred

Delete the key, not the data.

  • Device and both guardians destroy their shares
  • Each guardian signs a destruction attestation
  • One tx deletes entities and writes a public receipt
  • Old copies remain; nothing can open them
⌕04

Query

A database on ciphertext.

  • Exact, range and COUNT on encrypted fields
  • Blind foreign keys: 1:N, M:N, JOIN, cascade
  • Atomic multi-record inserts
  • Planner with explain(), IN-batching, keyset paging

How it works

From write to provable erasure

  1. 01

    Put

    Encrypt on device, commit, split the key, write ciphertext to Arkiv.

  2. 02

    Prove

    Generate a ZK proof over the commitment and publish it.

  3. 03

    Verify

    Anyone checks it from Arkiv in the browser. No keys.

  4. 04

    Shred

    All shares destroyed and signed. Receipt goes on-chain.

  5. 05

    Break it

    An archive node replays old calldata. Decryption fails.

Encrypted queries

Query it like a database

Arkiv can't filter values it can't read, so we never ask it to. Each query compiles to equality checks on HMAC tags that Arkiv's own index answers. Measured live on Rabdi, with the same results as decrypting everything.

Full comparison →
QueryArkiv alone, on ciphertextWith Kalypso
Range on an encrypted fieldDownload + decrypt all · 3,034 ms1 query · 497 ms
COUNT on an encrypted fieldDecrypt every record1 count query · 0 rows
Children of 5 parents (JOIN)5 queries · 1,826 ms1 query · 389 ms
Insert patient + doctor + visit + lab4 txs, not atomic1 atomic tx
Delete a parent and its childrenk+1 txs, found by scan1 tx, keys destroyed
Proofs of 45 records45 queries3 queries