sealing(7)
How your browser seals an order, layer by layer. No server takes part.
Synopsis
order = { batchId, market, side, qty, limit, salt, owner }
inner = ECDH(ephemeral, room key of the day) + Poseidon keystream over the order
commit = Poseidon(inner) posted onchain
sealed = tlock(inner, quicknet round of the close), padded to 896 bytes
seal(batchId, commit, sealed) one transaction, about 150k to 190k gasThe two layers
+-------------------------------------------------------------+ | time lock: drand quicknet, round r = the batch close | | +-----------------------------------------------------+ | | | room key: Baby Jubjub ECDH, Poseidon keystream | | | | +---------------------------------------------+ | | | | | market | side | qty | limit | owner | batch | | | | | | +---------------------------------------------+ | | | +-----------------------------------------------------+ | +-------------------------------------------------------------+
The outer layer is a time lock to the quicknet round whose time is the batch close (rounds every 3 s since genesis 1692803367; chain hash 52db9ba7…e971; scheme bls-unchained-g1-rfc9380). It opens only with that round's signature, which the League of Entropy publishes at the close and not before. The client is pinned to that chain hash and verifies every beacon.
The inner layer is encrypted to the room's public key for the day: an ephemeral Baby Jubjub key, a shared point, and a Poseidon keystream over four field elements. It uses these primitives, and not X25519, because the proof has to open this layer inside the circuit. After the close, anyone can remove the time lock; only the room can read what is under it.
The room key
The room generates one key per UTC day and posts its public half on DarkRoom at least a day ahead with setRoomKey. A posted key can never be changed. The secret half sits on the room's machine (mode 600, never in a repository, never on the web host) and is deleted once every batch of that day is settled or expired, so a later leak of the machine opens no past order. If no key is posted for today, sealing is closed and nothing is lost.
Your order file
Your browser keeps each sealed order (order, salt, ephemeral secret, inner ciphertext, commitment) in local storage and offers a download. That file is what lets you check where your order went on check, from any device, and contest if the room flagged it.
/ search · [ ] previous and next page