hip-03hypercore v1.3.0-hip3
hip-03 on X
hyperliquid-dex/hyperliquid → hip-03/hypercore

We forked Hyperliquid and made HIP-3 the whole chain.

hip-03 is a fork of Hyperliquid's HyperCore. HIP-3 — Hyperliquid Improvement Proposal 3, launched October 2025 — let third-party builders deploy their own perpetual futures markets on the same L1 order books. On Hyperliquid that is an upgrade. On hip-03 it is the base layer. Anyone can deploy a coin that longs or shorts any crypto Hyperliquid already lists.

Read the protocol docsDeploy a market

2,114 commits ahead of upstream · HIP-3 enshrined · AGPL-3.0

~/src/hip-03bash — 96×24
hip-3 share of hl volume
30–40%
peak share
50%
builder markets live
214
matching latency p50
38 μs
builder bond
500,000 HYPE
listed underlyings
186
what hip-3 actually is

Permissionless perps on HyperCore, without asking the core team

HIP-3 is the upgrade Hyperliquid shipped in October 2025. Before it, every perpetual market on HyperCore was listed by the core team. After it, any builder who posts a HYPE bond can open a market: crypto, commodities, equities, FX. The market sits on the same high-performance L1 order book and the same unified matching engine. It is not a sidechain and it is not an isolated AMM. It is another book in the same engine.

That is why HIP-3 is frequently cited as 30% to 40% of total Hyperliquid trading volume, and up to 50% in peak windows. The liquidity is shared. The matching is shared. The only thing a builder brings is the market definition, the oracle binding, and the stake they can lose if they misbehave.

We forked Hyperliquid because we wanted that primitive as the default, not as an opt-in afterthought. hip-03 does not have a privileged listing process. Every perpetual on this chain is a HIP-3 market. Every coin you deploy is a long or a short on an underlying Hyperliquid already prices.

crates/hip3/src/market.rsthe market record consensus stores
pub struct Hip3Market {
    pub market_id: MarketId,
    pub builder: Address,
    pub underlying: HlIndex,      // any Hyperliquid-listed crypto
    pub side: PositionSide,       // Long | Short
    pub max_leverage: u32,        // 1..=50
    pub oracle: OracleBinding,
    pub fees: FeeSchedule,        // deployer-set, protocol floor
    pub bond: StakeAccount,       // 500_000 HYPE, slashable
}

pub enum PositionSide {
    Long,  // coin rises with the Hyperliquid index
    Short, // coin rises as the index falls
}
mechanics

Four properties, none of them optional

HIP-3 is not a listing form. It is four consensus rules that have to hold at the same time or the market does not exist.

Permissionless deployment
Builders launch custom perp markets for crypto, commodities, equities and FX without central-team approval. On hip-03 the same path opens a coin that is hard-wired long or short any Hyperliquid-supported crypto.
Shared liquidity
The book is Hyperliquid's L1 order book. There is one matching engine. A HIP-3 BTC-long coin and the native BTC-USD book compete for the same engine ticks, not for a separate pool of liquidity that has to be bootstrapped from zero.
Staking requirement
500,000 HYPE locked as a builder bond. The bond is a security deposit, not a listing fee. Equivocation, oracle fraud, or a frozen book that should have liquidated slashes it. Alignment is expensive on purpose.
Fee customization
Deployers set maker and taker on their book, run the front-end, pick the oracle, and recruit market makers. A protocol floor is burned; the rest is split between the builder and the validators who keep the engine live.
crates/engine/src/match.rsshared L1 matching — hip-03 fork
/// A HIP-3 book is not a guest. It is another BookId in the same
/// matching loop that clears BTC-USD. Priority is price-time across
/// the whole engine, not per-builder.
pub fn match_once(engine: &mut Engine, now: Timestamp) -> Vec<Fill> {
    let mut fills = Vec::new();
    while let Some((bid, ask)) = engine.best_cross() {
        if bid.px < ask.px { break; }
        let qty = bid.qty.min(ask.qty);
        fills.push(engine.fill(bid.id, ask.id, qty, now));
        engine.apply_hip3_pnl(bid.market, ask.market, qty);
    }
    fills
}

fn apply_hip3_pnl(engine: &mut Engine, market: MarketId, qty: i64) {
    let m = engine.market(market);
    let mark = engine.hl_index(m.underlying);
    let signed = match m.side {
        PositionSide::Long  => mark,
        PositionSide::Short => -mark,
    };
    engine.settle_coin(m.market_id, qty, signed);
}
the coin

Deploy a coin. It is already long or short.

On Hyperliquid, HIP-3 gives you a perpetual market. On hip-03 we wrap that market in a coin. You pick an underlying Hyperliquid already supports — BTC, ETH, SOL, HYPE, a meme, an equity index — and you pick a side. The coin's mark is the Hyperliquid index, or its negation.

Holding the long coin is holding a long perp. Holding the short coin is holding a short perp. There is no separate position object for the casual holder; the balance is the position. Traders who want leverage still use the book. Everyone else can just hold the coin.

That is the product. Not another listing form. A permissionless factory for coins whose only job is to be long or short something Hyperliquid already prices.

Open the deployerWatch the books
end to end

Opening a BTC-short market from a cold node

terminal session — testnetcaptured 2026-09-19
$ hip03d --daemon --hip3 --oracle hl-main
hip-03 HyperCore daemon v1.3.0-hip3
engine: ready  |  books: 214  |  hl index feed: 186 underlyings
bond registry: 41 builders, 20,500,000 HYPE locked

$ hip03-cli hip3 deploy \
    --underlying BTC --side short --leverage 20 \
    --symbol sBTC --name "hip-03 short BTC" \
    --maker-bps 1 --taker-bps 4
{
  "market_id": "0x0b3c…a91e",
  "coin": "sBTC",
  "underlying": "BTC",
  "side": "short",
  "bond": "500000.0 HYPE",
  "book": "shared-l1",
  "txid": "0x7a1c…e04d"
}

$ hip03-cli info ticker sBTC
{ "mark": 108241.5, "index": 108241.5, "funding": -0.000012, "oi": 18422000 }

$ hip03-cli hip3 volume-share --window 30d
{ "hip3_notional": "0.37", "peak_1h": "0.51", "native_notional": "0.63" }