Proof of Data
App
Open the app
Seal, rent, verify, waitlist.
Seal a plate
Encrypt a file in this browser to the enclave key.
402
Rent a query
Quote an aggregate and pay it over x402 in USDG.
Verify the enclave
Check a TDX quote against the onchain registry.
The Armour
The model its uploaders own. Trains when the enclave is live.
Join the waitlist
Uploads open in waves, in sign-up order.
Read
Protocol
Documentation
Dev log
X
Docs · How it works

Plates and sealing

A plate is one file and its type. It is encrypted in the browser before it leaves your phone or computer, and only the enclave can open it.

Your phoneHPKE sealThe siterelays ciphertextEnclaveopens, storesenc, ctenc, ctPlates.register(hash, type, size, owner)
Sealing. The plaintext exists on the phone and inside the enclave, and nowhere in between.

Plate types

TypeWhat it holdsLimit
Voice noteaudio, transcribed inside the enclaveup to 2 minutes
Dashcam ridetrack, framesGPS track and one frame a second, 20 MB
Typing rhythmkey intervalscaptured on the typing test
Dream journalentriestext
Receiptimage, texta photo, read inside the enclave
Screen timeapps, minutesthe CSV or screenshot a phone gives

The encryption

Each plate is sealed with HPKE (RFC 9180) in base mode: DHKEM over X25519 with HKDF-SHA256, then AES-128-GCM. The browser makes a fresh ephemeral key for every plate, so two plates never share a key. The plate type and the enclave id are bound in as associated data: a ciphertext moved to another type or another enclave fails to open.

The code is the same in the app, the SDK and the enclave, and it is tested against an independent HPKE implementation. You can run it now in the app's Seal tab with a local test key.

The onchain record

The Plates contract stores the SHA-256 of the ciphertext, the type, the size in bytes, the enclave id and the owner. Only an active enclave signer can register a plate, and only with the owner's EIP-712 signature over exactly those fields. Contents never touch the chain.

Deleting a plate

The owner calls remove(id), or signs a Remove message that the relayer submits. The plate leaves the next epoch's set and the next Armour training, and the enclave drops its ciphertext.