Docs / Using Lethe

Dark pool

Private perps hide who is trading. The Lethe dark pool goes further and hides the trade itself. Orders are matched against each other inside Lethe at Hyperliquid's mid price, so most of the flow never reaches a public order book at all.

In beta, on test funds. The dark pool is running in paper mode while we test it. Balances are test USDC and nothing is sent to Hyperliquid yet. Real deposits come after the matcher has been run hard and reviewed.

At a glance

  • Price Hyperliquid mid
  • Matching Inside Lethe, off the book
  • Leftover Hedged on Hyperliquid in small pieces
  • Status Beta, paper mode

Why a dark pool

On a public order book everyone sees every order. A large buy moves the price before it's done filling, bots step in front of it, and anyone watching can work out your size, your entry and where you'd be liquidated. Traditional markets solved this with dark pools: venues where orders meet without being shown first.

Hyperliquid has no hidden orders, so Lethe runs the dark pool itself and uses Hyperliquid only for the price and for whatever is left over.

How an order fills

01You send an order to Lethe

Your trading wallet signs the order and sends it to Lethe, not to Hyperliquid. Nobody outside Lethe sees it.

02It meets other orders at the mid

If someone else in the pool wants the other side, the two orders are matched at Hyperliquid's mid price. No spread, no slippage and nothing on the public book.

03Unmatched size goes to the house

Anything still unmatched after a short window fills against Lethe's house account at the mid, so you're never left waiting.

04Only the net reaches Hyperliquid

The house hedges its total exposure on Hyperliquid, cut into random-sized pieces across many unrelated wallets at different times. The market sees scattered small trades, not your order.

Buyers and sellers cancel each other out. If the pool has $10M of buys and $9M of sells in a coin, $9M is matched privately and only the $1M difference is ever hedged. That $1M is mixed with everyone else's flow and split up before it touches the book.

Dark pool vs private perps

Private perpsDark pool
Who you areHiddenHidden
Your order on the bookPublicHidden
Your sizePublicHidden
Fill priceBook price and slippageHyperliquid mid
CustodyYou hold the keyLethe holds the margin

What you're trusting

Private perps never take custody: you hold the trading wallet's key. The dark pool is different. To match orders off the book, Lethe has to hold the margin and keep the ledger of positions, so you're trusting Lethe's matcher to be honest and stay solvent.

We're working to shrink that trust step by step:

Risk checks

Leverage is capped at 20x. Every order checks your margin before it's accepted, open orders reserve margin as if they'd filled, and positions are closed at the mid if your equity falls under half of the margin they need. You're never matched against yourself.

API

Every write is a JSON message signed by your trading wallet with personal_sign. It includes your address, a random nonce and the time. Each message works once and expires after five minutes.

const message = JSON.stringify({
  action: "order", coin: "ETH", side: "buy", sz: 1, // limit: 2400 (optional)
  address: account.address, nonce: crypto.randomUUID(), time: Date.now(),
});
await fetch("/api/dark/order", { method: "POST",
  body: JSON.stringify({ message, signature: await account.signMessage({ message }) }) });

// Reads need no signature
await fetch("/api/dark/account?address=" + account.address);
await fetch("/api/dark/stats"); // internal match share, house exposure, hedge

Other actions are cancel (with id) and, in paper mode, faucet for 10,000 test USDC.

Independent project, not affiliated with Elysium or Kinetiq. · X · Telegram