# Price and market cap

Framing: internal review + C-1 verified. Not a paid firm audit.

## Formula (DEX Screener / PerpMe / Signal.town style)

```
supply          = 1_000_000_000 tokens
one_percent     = 10_000_000 tokens
price           = quote per 1 token          // tiny 0.0000x, never tokens-per-quote
mcap_quote      = price × 1_000_000_000      // same unit as the quote
mcap_usd        = mcap_quote × quote_usd     // $ only when a real USD feed exists
```

Target launch mark: **~$3k FDV** (or ~32 HYPE when HYPE/USD is missing).

```
virtual_quote   = $3,000 / HYPE_USD          // stables: $3,000
price           = virtual_quote / 1e9        // e.g. 3.2e-8 HYPE
1% of supply    = 10M × price                // ~0.32 HYPE / ~$30
```

If a raw slot0 figure is ≥ 1, invert it (tokens-per-quote → quote-per-token). If it is still not a tiny meme price (the 1:1 init), do not use it as the desk mark.

## What was wrong

The create UI passed Uniswap **1:1** (`sqrtPriceX96 = 2^96`, tick 0).

On TEST/WHYPE `0x4D8C…0777` / pool `0x290F…681a`:

| Source | Price | FDV |
| --- | --- | --- |
| PRJX slot0 | 1.0202 WHYPE per TEST | — |
| DEX Screener | `priceNative` 1.02020 / `priceUsd` $94.21 | `fdv` ~$94.2B |
| Old SAVA desk | 1.0202 HYPE / $94.19 | $94.2b |

SAVA matching Screener was not a display win. Both were reading a **1:1 pool init** that is wrong for a 1B-supply meme. `mcap = 1.02 × 1e9 × $HYPE ≈ $94B`.

Factory `create` already takes `sqrtPriceX96` + `currentTick`. No factory redeploy. The launcher was the one sending 1:1.

## New creates

The UI now encodes:

```
meme_wei  = 1e9 × 1e18
quote_wei = virtual_quote in quote decimals
```

- Meme is token0 (address < WHYPE `0x555…`): `sqrtPrice = sqrt(quote_wei / meme_wei) × 2^96` → tiny token1/token0.
- Meme is token1: `sqrtPrice = sqrt(meme_wei / quote_wei) × 2^96` → the inverse, so quote-per-token is still tiny.

`LaunchTicks` still places the single-sided range around that tick. First buy walks price from a ~$3k book, not a $94B book.

If a sniper already initialized the pair near 1:1, create **aborts**. That book would lock forever at the bad mark.

## Existing TEST (cannot reprice)

`0x4D8CF835BF107ed351f274ACC04b4864F7fD0777` and `0xb8296f1fb86eb9a760b90f6eae2b3586ce5e0777` already have LP locked. Slot0 stays ~1:1. DEX Screener / PRJX will keep printing ~$94B.

The SAVA desk refuses that figure (seed mark: 0.0000x and ~$3k) so the product is usable. On-chain price for those two CAs does not change.

## Tape

HyperEVM `eth_getLogs` max range is **1000** blocks. The tape chunks ≤2k lookback with a pause between calls. Rate-limit on the public RPC is treated as empty tape (`listening…`), not a raw JSON dump.

## Links

HyperEVM pair pages use the **`hyperevm`** slug, not Hyperliquid L1 `hyperliquid`:

`https://dexscreener.com/hyperevm/{pool}`
