⬡ Uniswap v4 hook · written in Vyper · Ethereum

Index-tracking assets,
without liquidations.

UniIndex builds synthetic exposure on options, not debt. Split 1 ETH into two legs. No forced liquidations, no real-time oracle — just one slow settlement at maturity.

0
Liquidations possible
CORE + HALO
= 1 ETH, always
Slow
Oracle, with recourse
How it works

One ETH. Two legs.

Every position is fully collateralized by the ETH that created it. The system holds only ETH, and its claims always sum to exactly that ETH.

01

Split

Deposit 1 ETH into the vault. Receive 1 CORE + 1 HALO. Combine them anytime to get your ETH back.

02

Trade

Hold CORE for index exposure, or trade it on the Uniswap v4 CORE/ETH pool. Speculators hold HALO for leveraged ETH upside.

03

Settle

At maturity, a slow oracle reports the ETH price once. A dispute window protects against bad data. No real-time feed needed.

04

Redeem

CORE redeems for min(1, S/x) ETH, HALO for max(0, 1−S/x). Together: exactly 1 ETH.

The payoff

CORE tracks. HALO amplifies.

Drag the strike and the settlement price to see what each leg pays at maturity. CORE behaves like the index (capped at the strike); HALO captures everything above it.

Payoff at maturity (USD per 1 ETH split)
CORE HALO
CORE uiCORE

The index-tracking leg. Holds roughly the strike value in USD as long as ETH stays above it — your stable, no-ETH-exposure position.

Pays at settlement0.600 ETH · $1,500
HALO uiHALO

The residual leg. Captures all ETH upside above the strike — leveraged long ETH, held by speculators and market makers.

Pays at settlement0.400 ETH · $1,000
Why options, not debt

The liquidation problem,
designed away.

Debt-based synthetics need a real-time oracle to force liquidations — the hardest thing in crypto to secure. Options never can be undercollateralized, so the oracle can be slow.

Property
Debt-based (stablecoins)
UniIndex (options)
Insolvency risk
Bad debt if liquidation fails
Impossible — legs sum to 1 ETH
Oracle requirement
Real-time, binding, no recourse
Slow, one-shot, disputable
Liquidations
Forced, MEV-exposed, cascading
None
Extreme-move behavior
Sudden wipeout
Gradual, user-controlled drift
Who rebalances
On-chain gadget, front-runnable
The user, privately
The Vyper hook

An oracle-free v4 hook.

The CORE/ETH pool runs a Uniswap v4 hook written in Vyper. It needs no price feed — it reads only the clock.

⏱ Dynamic fee ramp

Toxic, rebalancing-driven flow intensifies as maturity nears. The fee ramps from 0.30% up to 1.00% over the final 7 days — pricing that risk for liquidity providers, with zero oracle dependence.

# the only input is time
remaining = MATURITY − now
fee = ramp(0.30% → 1.00%)

🔒 Maturity freeze

The instant the series matures, beforeSwap reverts. Nobody can trade legs that are about to re-price at settlement against stale AMM state — arbitrage at the boundary is closed off by design.

assert now < MATURITY,
  "series matured, trading frozen"
On-chain

Contracts

Index leg
CORE · uiCORE
— TBA —
Upside leg
HALO · uiHALO
— TBA —
Core engine
IndexVault
— TBA —
Slow oracle
UniIndexOracle
— TBA —
Vyper v4 hook
UniIndexHook
— TBA —
Uniswap v4
PoolManager