Skip to content

Anonymisation

The live market shows other people’s trades. The data is public on Hyperliquid, but we still keep addresses and transaction hashes off the page.

All of this happens inside a Web Worker, before anything reaches the page:

  1. Tags instead of addresses. An address becomes # plus the first four hex digits of SHA-256(salt ‖ address). The salt is 16 random bytes, drawn once per page load.
  2. Rounding. Amounts to two significant figures, prices to four, times to the second.
  3. Dropping. Transaction hashes, trade ids and addresses are never put into the events the page receives.

Example. A trader buys 1.2345 BTC at 61,234.56 at 14:03:07.412. The page shows #3fa1 · buy 1.2 BTC · 61,230 · 14:03:07. After a reload the same trader is #91c0.

  • Addresses in the page, the DOM, screenshots and screen recordings.
  • Following one trader across visits: the tag changes on every reload, and the salt never leaves your browser.
  • Looking a tag up: without the salt, #3fa1 maps to no address.
  • Matching against the public tape. Hyperliquid publishes every trade. Someone who matches a rounded size, price and second against the public trade stream can often find the trade, and from it the address.
  • Collisions. Four hex digits are 65,536 tags. Among 100 traders on screen, the chance that two share a tag is about 7%. That only affects the display.

So: anonymised for display, not secret. The point is not to put names on a page, not to hide what is public.

Backtest and Watch take an address you type. It goes into the requests to Hyperliquid and nowhere else: not stored, not logged, not in a URL, not sent to us. Watch drops it when you stop.