Skip to content
Hookshade
LiveLive on chain 4663: the Shade hook, the shaded pool and a WETH/USDG market under them. Watch hooks run in your browser; the first shielded cast has already settled on chain.

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 server
02

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 only
03

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 residual
04

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 tree
05

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 indexer
06

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.

  1. 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.

  2. 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.

  3. 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.

  4. 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

Runs on

Plain infrastructure, named

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.