Nobody sees the trade.
Everyone sees the print.
A non-displayed venue on Robinhood Chain. Positions private while they're live, provable after they're closed.

Committed before you open. It cannot be changed after you see the result.
Prints here after the audit report is published — not before. The address is announced on @lateprint and on this page. Anywhere else, it is not ours.
Follow @lateprintThree things, one vault
Position privacy while you are exposed. Proof once you are not. A free way to find out why you need either.
One address trades for everyone.
Deposit once. Every trade after that executes from the vault's own address, so on-chain there is one large book and no line of it belongs to anyone.
- Deposits public, positions not
- Batches released on a randomised window
- Same-owner withdrawals, enforced by the contract
- No admin, no pause, no upgrade path
Proof that publishes late.
Close a position and a signed, verifiable receipt drops on the delay you committed to before opening — an hour, a day, a week, or never.
- Return, hold time, Merkle proof
- Never your address or balance
- Delay committed before, not after
- Losses print too
Is anyone copying you?
Paste an address, no wallet, no signup. Read who repeatedly bought after you, how far behind, and which position they copied hardest. Clean results are reported as clean.
- Chain data only
- Free, forever, un-degraded
- Live now, before the vault
- Nothing stored, ever
Eight steps. Two are public on purpose.
The chain records that you funded the vault and that you withdrew from it. It records nothing about what you did in between.
You send ETH or USDG to the vault from your own address. This step is public and we never pretend otherwise: the chain records that you funded the vault, and nothing about what you do next.
The deposit becomes a note — a commitment in the vault's Merkle tree, bound to your depositing address.
You submit an intent. The vault executes it against Robinhood Chain pools. The transaction's sender is the vault: the same address for every user, every trade.
Intents are collected and released in batches on a randomised window, so arrival time cannot be matched to execution time.
The output becomes a new note. On-chain there is one large book and no way to attribute any line of it to any depositor.
You exit the position. It becomes a note again.
A signed, provable record of that round trip publishes on your timer: 1 hour, 24 hours, 7 days, or never.
Funds leave only to the address that deposited them, or to an allowlist you registered publicly at deposit time.
What is hidden. What is not.
Anyone who tells you a public blockchain can hide more than this without a proof system is selling something.
- Which position belongs to which depositor
- Your balance inside the vault
- What you hold, what you sold, what you are still in
- Your entries and exits while a position is live
- Any link between one print and another, unless you link them
- That you deposited to the vault, and how much
- That you withdrew from it, and how much
- The vault's total book, in aggregate, at any moment
- Every trade the vault makes — just not who asked for it
- The sequencer sees transactions before ordering. True of every app on this chain
- In Phase 0, the relayer sees who authored an intent. It cannot move funds to anyone you did not register — but it can refuse to sign; the 30-day escape hatch covers a relayer that goes silent
Money only ever comes home
Value entering the vault from address A can only leave to address A, or to an address A registered publicly the moment it deposited. Enforced by the contract — not by policy, not by a form, not by our discretion.
This rule is not a setting. Adding a “send to another address” feature would change what the product is. It will not be added.
Amounts snap to standard denominations so size alone is a weak fingerprint. You register withdrawal addresses now; that list is public and permanent per note.
The transaction's sender is the vault — the same address for every user, every trade. Intents release on a randomised 30 s – 5 min window.
Or to the allowlist it registered at deposit. No path exists to anyone else, including us. No withdrawal fee.
Give your position a dark room
The naive version of this product is trivially broken: an address deposits 4.0 ETH at 12:00:03 and the vault buys 4.0 ETH of one token at 12:00:06. No cryptography was defeated — a clock did the work.
One vault + a randomised batch = a trade nobody can attribute
Invisible while you're exposed. Provable afterwards.
A print is a signed statement about one closed position. You set its delay before you open — choosing after you see the result would make the tape a highlight reel. Committing first is what makes it a record.
{
"asset": "<token>",
"return_bps": <entry → exit, %>,
"held_s": <how long it was held>,
"proof": "<merkle path vs vault>",
"release_at": "<committed before open>",
"pseudonym": "<optional · unlinkable>"
}Reputation without identity
Reputation is usually built by being watched. Here it is built by publishing, later, on purpose. A pseudonym accumulates prints, hit rate, median hold and largest drawdown — and nothing connects it to an address without a viewing key you handed over.
A tape that only prints winners is a brochure. Hit rate is shown against every position a pseudonym opened, not the ones it chose to release — and “never” is a visible choice.
Is anyone copying you?
A free scan, no wallet, no signup, built from public chain data only. It creates the realisation the product depends on — and if the result is clean, it says so. A scanner that always finds a problem is an advertisement.
Live now, before the vault. Public data only; nothing is stored. Mention @lateprint if it finds something.
Stake buys capacity. Never a discount, never privacy.
The fee is the same for everyone. The anonymity set is shared, not sold. The token buys resources we have to provision anyway — and it launches only after the audit report is public.
- Full vault access
- Market intents
- Standard batch position
- Limit orders inside the vault
- Priority ordering within a batch
- Scheduled prints
- Raised API limits
- Programmatic intents
A tiered discount means the largest holders pay the least, so revenue falls exactly as the token succeeds.
The anonymity set is a shared good. Selling a bigger set to large holders makes new users weaker at the moment they are most exposed.
$PRINT buys capacity and features. It confers no ownership, no revenue right, no vote over the same-owner rule.
One fee. Sixty percent of it leaves circulation.
Nothing the relayer can see is ever sold — not order flow, not scanner data. Permanently off the table, and the docs say so.
0.25% of notional on every executed intent, charged inside the vault at execution, identical for every user and tier. Printed in the quote before you submit.
Programmatic viewing-key verification for desks and funds. Per-call pricing, no account relationship required.
The free scan stays free and un-degraded. The paid tier watches an address continuously and alerts on new followers.
Fee assets are swapped to $PRINT on Robinhood Chain and burned. Every burn posted with its hash, weekly.
Audit, the zero-knowledge circuit, relayer gas, infrastructure, the people building it.
Incident response. Balance published. A commitment, not an insurance policy — the docs say exactly that.
Fees are collected inside the vault at execution in the input asset. The burn is weekly, the hash is public, the timing is not discretionary. This is arithmetic on a number you typed, not a forecast.
Four parts. One can move money.
The relayer pays gas and orders batches. The vault holds funds. Nothing else touches them, and the contract has no admin path for us either.
Wallet signing. Viewing key derived locally, never transmitted. Positions render client-side.
Collects intents, forms batches, randomises release, pays gas. No privileged path to funds.
Holds deposits, keeps the note tree, enforces same-owner withdrawal, executes swaps, emits print commitments.
Builds the tape from released prints. Serves aggregates only. Powers the scanner from public chain data.
- —accept deposits and record note commitments
- —execute batched swaps against approved pools
- —release withdrawals to registered addresses only
- —record print commitments with their release timestamps
- —no owner, no admin, no pause, no upgrade proxy
- —no sweep, no fee-recipient change
- —no path that moves a user's value to a non-registered address — including for us
- —no way to alter a print's committed release time
Product first. Audit second. Token last.
Every phase has a done-when. Nothing on this page is written in the present tense that is not already true.
- · Fork-test pool hooks, contract-initiated swaps, real slippage
- · Vault v0: deposits, notes, same-owner withdrawal, batches, no admin surface
- · Adversarial timing test against our own testnet traffic
- · Landing page, docs, the honesty page — live
- · The scanner — free, public, chain data only — live
- · The tape, seeded with labelled testnet prints — pending the vault
- · External audit, report published in full
- · Mainnet with deliberately low caps
- · Prints and the viewing-key reader live
- · Fair launch on the chain's launchpad
- · Staking for capacity tiers
- · Burn ledger live from the first week of fees
- · Zero-knowledge circuit: ownership proof + nullifier
- · Relayer orders traffic it cannot read
- · Voluntary migration; Phase 0 notes keep working
- · Limit orders resting inside the vault
- · Verify API, Scanner Pro, programmatic intents
Where this wins, where it can lose
- Privacy improves with every depositor — a real network effect a later competitor starts without
- We own the contract. Not an API key, not a partner integration
- The same-owner rule makes this structurally not a mixer, legible to anyone who reads the code
- A pseudonym's printed record cannot be imported anywhere else
- The scanner and the prints distribute the product as a by-product of using it
- The vault holds funds. An audit reduces that risk; it does not remove it
- Privacy is weak until the set is large, so the earliest users get the least protection — the app must keep saying so
- Chain liquidity is thin; vault-executed trades will show slippage that gets blamed on us
- The sequencer sees flow before ordering. No application on this chain can change that
- Phase 0 asks you to trust a relayer not to log. Cryptography replaces that trust in Phase 5, not before
Deliberately not watched: token price, follower counts, anything a screenshot can inflate.
Asked before it launches
Is this a mixer?+
No. Value that enters from an address can only leave to that address or an allowlist it registered publicly at deposit. There is no way to move funds to a third party, including for us. That constraint is enforced by the contract and it is what the product is.
So what is actually hidden?+
Which position belongs to which depositor, for as long as the position is live. Deposits and withdrawals are public; the vault's aggregate book is public; the vault's trades are public. The attribution is not.
Can you see my trades?+
In Phase 0, the relayer that orders batches can see who authored an intent. It cannot move funds. This is stated before your first deposit, not in a footnote. Phase 5 replaces that trust with a proof the relayer cannot read.
Why would I ever publish a print?+
Because a burner wallet destroys the one thing worth keeping: a record you can prove. A print is invisible while you are exposed and verifiable afterwards. You choose the delay before you open, so the tape is a record, not a highlight reel.
What does $PRINT do?+
It buys capacity — balance caps, withdrawal-address slots, priority, limit orders, API access. It never buys a fee discount and it never buys better privacy.
When is the token?+
After the vault's external audit is published. Not before.
What happens if the vault is hacked?+
A reserve funded by 15% of fees exists for incident response, with its balance published. It is small and it will not cover a worst case. Deposit only what you can afford to lose entirely.