// time-lock encryption · drand quicknet
Sealed until the clock says so.
Status:
Ticker (placeholder, no token exists):
drand round now
…
Solana slot now
…
// the working app
Seal it. Share it. Wait.
Sealing uses tlock — identity-based encryption on BLS12-381 where the “identity” is a future drand round number. The key that opens it is the signature the drand network publishes for that round, so it does not exist anywhere until the round arrives.
Loading tlock-js from jsDelivr…
1 Seal a message
Encrypted locally to a future drand round. After sealing, even you cannot read it back early.
0 / 4000
The link carries the ciphertext in the URL fragment (after #), which browsers do not send to the server. The plaintext is not in it — only the sealed bytes.
2 Open a sealed message
Paste a Slotlock / tlock ciphertext (or open a share link). The countdown is read from the ciphertext header; opening only works once drand has published that round.
// how it works
A key that does not exist yet
- drand is a threshold network (the League of Entropy) that publishes a BLS signature over every round number. On quicknet a round is produced every 3 seconds, so round
rappears atgenesis + (r−1)·3 s. No single node can produce a round signature alone. - When you seal, Slotlock picks the first round at or after your chosen time and runs tlock (Boneh–Franklin identity-based encryption on BLS12-381): the round number is the “identity”, drand's public key is the master key. Only the future round signature works as the decryption key.
- Your text is encrypted with ChaCha20-Poly1305 under a random file key, and that file key is wrapped with tlock — the standard
agefile format with atlockstanza, compatible with the drandtletool. - To open, the page fetches round
r's signature from a drand relay, checks it in-page (BLS on G1 oversha256(r)against the pinned quicknet public key, andrandomness = sha256(signature)), then uses it to unwrap the file key. Before the round exists the relay has nothing to give — that is the lock. - The Solana slot shown next to the round is an estimate only: current slot from mainnet (read-only) plus elapsed time ÷ ~400 ms. Slot pace drifts, so the real slot at unlock time will differ. Locking is driven by drand, not Solana.
// privacy model
Who can read what, and when
Visible to anyone holding the ciphertext
- The target drand round number and chain hash (they are in the header), hence the unlock time
- Approximate message length (ciphertext size grows with the text)
- That it is an age/tlock file
Hidden until the round is published
- The message itself — from everyone, including the author after they close the tab
- The file key wrapping it
- After the round: anyone with the ciphertext can open it. Timelock is not access control.
What our server sees
- Only the page load and, if enabled, a read-only
getSlotcall through/api/rpc. - Never your message or ciphertext: sealing and opening run in the browser.
What drand relays see
- Your IP address and which round you asked for — only when opening, probing, or showing the live round. Sealing uses the pinned quicknet key and makes no request. Relays never see the message.
- Relays used: api.drand.sh, api2.drand.sh, api3.drand.sh, drand.cloudflare.com.
Known limitations — please read
- Trust in drand's threshold. If a threshold of League of Entropy nodes colluded, they could compute a future round signature and open messages early. Slotlock inherits drand's security assumptions.
- If drand stops, the message is stuck. A round that is never published means a ciphertext that never opens. Far-future seals depend on quicknet still running then. Keep your own copy of anything important.
- The author is locked out too — but only after the tab closes. Until you reload or close this page, the plaintext is still in your textarea and in browser memory. Anyone who saw your screen saw it.
- Unlock time is approximate to ~3 s, and the countdown uses your device clock; a skewed clock shows a wrong countdown but cannot open anything early — the round signature must exist.
- The Solana slot is an estimate, not a commitment. Nothing is written to Solana; Slotlock does not interact with any program.
- Reduces information exposure, not anonymity. Timelock hides content until a time; it does not hide who sent or received the ciphertext, and does not make anyone anonymous.
- Experimental and unaudited. This page wraps the open-source
tlock-jslibrary; neither this page nor its integration has had a security review. Do not rely on it for anything valuable.