A computed cross-section of nacre. Offset courses of aragonite tablets are coloured by the interference of light in each tablet’s own layer stack; tablets thicken with depth, from about 408 nanometres at the top to 492 at the bottom, so the overtone walks from teal through green to mauve. Pointing at the panel reads out the thickness of the tablet under the pointer, the colour it reflects and the reflectance curve behind that colour, and tilts the surface — which shortens the optical path and shifts every colour, as a real shell does.
Computed · transfer matrix, n=1.68 · CIE 1931 · move to probe · —
A nacre fishing hook hangs on a dark line from above the panel and sinks into a computed cross-section of shell; the panel’s probe rests on the point of the hook and reads the tablet under it.
Hooks · Pools · Privacy · Chain 4663
Private hooks. Private pools. In the shade.
Hookshade is a privacy workspace for Uniswap v4 on Robinhood Chain. Watch hooks that run in your own browser and never leave it. A batch-settled hook that lets the chain record one net swap instead of yours. And a shielded pool the trade comes out of, so the batch is settled by the pool and not by you.
The watch hooks are real. The Shade hook, its gate and the shaded pool are deployed on chain, with one WETH/USDG market seeded under them, and they pass 80 checks against the singleton’s own bytecode on every build. Nothing here has been audited, and the proving key is a development one. Each claim on this site says which of those it is.
$HOOKSHADE contractPublished at launch, on pons.No address until then
Capabilities
What Hookshade does
Six properties. Three are running in your browser as you read this; three are in a contract you can read.
01
A hook that never leaves the browser
A watch hook is a rule: when a balance, a block or a pool price crosses a line, fire. The rule is sealed under a key your browser generated and will not export, and the only thing it ever sends anywhere is a read.
AES-GCM · No account · No server02
One read for every rule
Every thirty seconds, while the tab is visible, all of your rules become one multicall. The RPC sees a list of addresses and slots. It does not see which rule asked, what the line is, or what happens when it is crossed.
Multicall3 · 30 s · Visible tab only03
The chain sees the batch, not you
A pool under the Shade hook cannot be swapped directly. Orders are cast into a batch; when it settles, buys and sells are matched at the pool’s own price and only the residual touches the pool. One swap per batch is what the ledger records.
beforeSwap gate · Matched at spot · Net residual04
Trades come out of the shade
A cast can be paid from a shielded note. The pool unshields into the batch and re-shields the output to a one-time key, so the address that settled the batch is the pool, not the person.
Groth16 · One-time keys · Poseidon tree05
Pools, with their hooks named
160 pools on Robinhood Chain with 79 of them under a hook. The hook address itself says what it is allowed to do — the lowest fourteen bits are its permissions — and the pools page decodes them.
Live reads · Flag bits decoded · No indexer06
Nothing to sign until you act
Reading a chain needs no wallet, so the site asks for none. A wallet is connected for one transaction and the connection is not remembered. Your keys, your transactions, and your rules.
EIP-6963 · Not persisted · Wallet-approved
How it works
Four steps, named after what they are
Shade, Cast, Settle, Surface. One call each, and each one a transaction you can look up.
01
Shade
Deposit a token into the pool of notes. What you hold is a commitment in a Merkle tree, encrypted to your own viewing key, that nobody can spend but you.
02
Cast
Prove you own a note and cast its value into the open batch of a hooked pool. The pool, not you, is the address the batch sees — and the output is already addressed to a fresh one-time key.
03
Settle
Anyone closes a batch once its window ends. Buys and sells are matched at the pool’s price, fee-free; only what is left over is swapped, as a single swap, through the pool.
04
Surface
Spend the output note to any address, or keep it shaded and cast again. One proof, no queue, no address that can stop it.
Only Settle touches the pool, and it touches it once per batch. Two orders that match each other exactly leave the pool’s price and liquidity where they were — a property the test suite reads back from the singleton’s storage, one of 80 checks that run against its real bytecode.
Privacy
Three things hidden, and what each one still shows
Privacy that does not say what it leaks is marketing. Each layer here names its own edge.
Watch hooks
Running now
Hidden
The rule itself: name, line, edge, what it means to you
Which address belongs to which rule
That a rule fired, and when
Still visible
A public RPC sees the addresses and slots it is asked to read
Your IP address, as with any read from a browser
The Shade hook
Deployed
Hidden
Your footprint on the pool: its price, its Swap event and its storage see the batch’s net residual, not your swap
What each order paid: one blended price per side, so a cast is not a price point
Who traded against whom
Still visible
The cast itself — size, direction, recipient — unless it comes from the shaded pool
The batch total, the residual and its output, on the ledger
The shaded pool
Deployed
Hidden
Who cast: the pool is the batch’s counterparty and the spender is a nullifier
Who received: the output goes to a one-time key
Balances and transfers inside the pool
Still visible
Shield and unshield amounts, in and out of the pool, and the size of a shielded cast
The set of addresses that have ever shielded
Comparison
What changes
The same workspace — hooks, pools, a chain — without the parts that were watching you back.
A monitoring workspace
Rules kept in plain localStorage, readable by any script on the page
One request per rule per tick, each one naming what it watches
Every swap you make is your swap: size, direction, address, on the ledger
Liquidity from anyone, so the pool’s LP set is public
A wallet connected on load and remembered
With Hookshade
Rules sealed under a non-extractable browser key; export needs a passphrase
One multicall per tick for all rules, naming addresses and slots only
The pool records one net swap per batch; the matched side pays no fee and no impact
Liquidity only through the gate, so the pool has one LP: the shade
A wallet for one transaction, forgotten on reload
Pools
Every v4 pool on the chain, with its hook named
The list is a snapshot; every number beside it is read live from the singleton by your browser when you open the page.
Pools in the list160snapshot at block 96,027,693
Under a hook79permissions decoded from the address
Without a hook81plain v4 pools
Servers of ours involved0your browser, a public RPC
No indexer, no API key, no account and no server of ours between you and the chain.
Chain
Robinhood Chain
Chain ID 4663
Native ETH and ERC-20 pairs
Pool
Uniswap v4 singleton
Any pool, any fee tier
Hooks read from the address
Storage
Your browser, sealed
IndexedDB key, never exported
Export under a passphrase
Wallets
Any injected EVM wallet
EIP-6963 discovery
Reads need no wallet at all
Your keys. Your rules. Your browser, and nobody else’s.
A rule you set here is yours in the plainest sense: it exists in one place, sealed, and the only trace it leaves is the read it makes. Set one and watch it work.