(P)Protocol · edition of 24 October 2026

Your data,
paid by the query.

The whole mechanism in one page: who holds what, what the room checks, where every USDC goes, and how a leak is proved and paid back to you.

Roles

Owners seal files on their phone and get paid when queries read them. Buyers (AI labs and agents) pay per query in USDC and get answers, never files. Operators run a room, an Intel TDX machine, and stake $DARKROOM behind it. The keeper watches for leaked trap rows; the relayer claims payouts for owners who ask it to; the publisher, inside the room, posts the daily payouts. Parameters change only through a 48 hour public timelock.

Your data

Every upload is one file and its kind: a negative. The browser seals it with HPKE (DHKEM X25519, HKDF-SHA256, AES-128-GCM) to the room's verified key, with kind|room as associated data, so a negative only opens inside that room and only as that kind. The public record holds its hash, kind, size and owner, never its contents. Deleting a negative takes one signed message: it leaves the next payout and the next training, and its ciphertext is dropped from the room's disk.

The room

A room is a confidential VM on Intel TDX. Its quote binds the measurements of the image it runs (MRTD and RTMR0 to RTMR2) and, in its report data, the hash of the room's encryption key. Anyone can check a quote in the browser with the verifier. A room may hold negatives only once its quote is published, its image is on the allowlist, and its operator's stake is in. Until then the site runs room 0 with a test key and keeps every sealed file on the owner's device.

Queries

A buyer prices a query for free, then pays it over x402: the room answers 402 Payment Required with the price in USDC, the buyer signs a USDC transfer on Solana, and asks again with the payment attached. A query reading n negatives costs ceil(n) × 100 micro-USDC (0.01 USDC per 100 negatives). The room refuses before any charge when n is below 25, or when it holds fewer than n negatives of the kinds asked. Each query runs once, inside the room, and only the answer leaves, with a receipt signed by the room.

The split

Share Query Model call
Owners, through the daily payouts 70% 100%
Model treasury 10% 0
Operator of the room 5% 0
Burn reserve 15% 0

Owners and burn round down; the model treasury takes the remainder, so the parts always add up to the price.

Daily payouts

Once a day the publisher, inside the room, turns the day's receipts into each owner's total, pro rata to the negatives each query read, and posts a merkle root of the totals on Solana. Owners claim their total in USDC to the wallet they choose, or let the relayer claim for them. A root never commits more than the payout wallet holds.

Trap rows

Each buyer's view carries its own trap rows: fake records (names, emails, phone numbers, URLs) with a random secret that exists nowhere else. The room posts the merkle root of a view's trap rows before the view answers its first query. Whoever finds a trap row outside reveals its secret with its proof: that opens a case and freezes the buyer's deposit. The buyer has 48 hours to dispute; otherwise the whole deposit goes to the owners. A trap row leaked by the room itself slashes its operator's stake instead.

The stake

Every room stakes 100,000 $DARKROOM before it may hold a negative. Unstaking takes 7 days and the stake can be slashed until it is withdrawn. A slash burns half and pays the other half to the owners.

The burn

15% of every query goes to the burn reserve. At most once an hour, and for at most 0.5% of the pool's depth, the reserve buys $DARKROOM and burns it with the SPL burn instruction, so the supply really shrinks. The burned total is read from the chain on the site.

The private model

A LoRA adapter (rank 8) on Qwen2.5 0.5B Instruct, trained each week on CPU inside the room on live text negatives, trap rows and deleted negatives excluded. Its weights never leave the room. A call costs 0.002 USDC and pays 100% to the owners whose text trained it. First training once 25 text negatives are in.

Parameters

Parameter Value
Price per 100 negatives 0.01 USDC
Model call 0.002 USDC
Least negatives per answer 25
Minimum buyer deposit 5 USDC
Challenge window 48 hours
Unstaking delay 7 days
Stake per room 100,000 $DARKROOM
Payment asset USDC on Solana

Where it stands

Darkroom runs in two phases, and the site always says which one is live. Phase 1, now: the site, browser sealing, query pricing, the verifier and the waitlist are live; room 0 runs with a test key, uploads stay on owners' devices, and no query can be paid yet. Phase 2, with wave 1: the room boots on a TDX machine and publishes its quote, uploads open, queries settle over x402, and payouts, trap roots and stakes are posted on Solana. The contracts behind stakes, deposits and payouts are not audited yet; this page will link the audit when there is one.

$DARKROOMCA at launch