A multi-pool market for related assets on Robinhood Chain.
WoolFi by Urufu Labs is a Uniswap v4 hook that turns a pool into a continuously-rebalancing pair-trade vehicle. The pool looks like an ordinary v4 pool from the outside. You swap, add liquidity, collect fees. The hook quietly enforces a peg between the pool's internal price and an oracle-derived fair price, weaving related assets into a venue for trading their relationship rather than just one against the other.
One hook serves an exact 18-pool catalog: six stock/USDG oracle-guided spot pools, five stock/WETH crypto-beta pools (including PLTR/WETH), six stock/stock relative-value spreads, and always-open WETH/USDG. The coordinated rollout is all 18 ready or no launch.
If you wanted to express "the MSTR premium is too wide" on-chain today, you'd need a perp short on the equity side, spot on the crypto side, two collateral accounts, ongoing funding, and counterparty risk in two venues. Or you'd manage two concentrated-liquidity positions and rebalance them by hand every time the underlying moves.
WoolFi collapses all of that into a swap. You buy or sell the spread. The liquidity providers on the other side of your trade collect the fee. When the spread mean-reverts, LPs win; if it doesn't, the underwriting vault funds the rebalance back to fair.
Each WoolFi pool is a full-range v4 pool with a dynamic LP fee. The hook runs at every callback.
In one paragraph: every swap routes through beforeSwap. The hook reads two oracle prices, computes the pool's drift from fair, and returns an asymmetric fee. Swaps that pull the pool back toward fair get a discount; swaps that push it further away pay a premium. The discount draws arbitrageurs in. The premium prices out adversarial flow. Mean-reversion stops being something a keeper has to do and becomes something the market does to itself.
A few things make this work without anyone actively managing the pool:
- Drift is computed on-chain, from primitive math against a Chainlink (or compatible) price feed. No off-chain solver, no transaction queue, no trusted operator.
- The fee scales with drift, not time. A pool sitting at fair earns the base fee. A pool 800 bps out of band might charge four times that to push it further out and a quarter to pull it back. The further the drift, the steeper the asymmetry.
- Liquidity providers stay passive. There's no concentrated-range maintenance. A full-range v4 mint is the whole UX.
Correlations break. A balance sheet gets restated, an issuer halts redemptions, the link that looked fundamental turns out to be circumstantial.
WoolFi handles this with a per-pool underwriting vault capitalized with external URU. The hook caches the fair price that triggered the break, allows only corrective swaps against that target, blocks new deposits, and can trigger a capped vault drawdown. A configurable post-open stabilization interval keeps asymmetric fees off until the session settles. URU underwriting does not imply URU-based WoolFi governance.
LPs are insulated from the haircut; their tokens stay where they are, and withdrawals remain open the entire time.
The vault doesn't make breaks impossible. It makes them survivable.
Market hours are configured per pool. A stock-token pool cannot honestly promise convergence while its referenced market is closed and its underlying quote is not updating.
The hook handles this directly. When a configured underlying market is closed, the pool drops the asymmetric mechanic and reverts to flat, symmetric fees. The pool stays tradable without claiming to mean-revert until its market reopens. WETH/USDG is always open.
If you integrate tokenized real-world assets into an AMM, this is the detail that matters most. The pool's behavior changes when the underlying stops trading, and that change is enforced on-chain.
The frontend is configured exclusively for Robinhood Chain and presents the exact catalog with explicit pending and live states. Today every pool is pending: no WoolFi protocol contract or pool is live on Robinhood Chain. Pending pools cannot be traded or funded. The protocol is unaudited.
| Spec | PROJECT_SPEC.md v1.0-draft |
| Source | Solidity 0.8.26, Foundry, BUSL-1.1 hook, MIT elsewhere |
| Tests | 181 passing · 100k invariant calls clean · CI |
| Network | Robinhood Chain |
| Catalog | Exact 18 pools; all currently pending |
| Audit | Not done; bug bounty pending audit |
| Dashboard | Next.js 14, wagmi/viem, reads configured live contracts |
Deployment state is read from the Robinhood Chain manifest and surfaced by the dashboard. Its current zero core addresses and empty pool list are the canonical “not deployed” state.
WoolFiHook beforeSwap / afterSwap, asymmetric fee, structural-break flag,
auto-realizes fees on every swap
WoolFiPositionManager ERC-6909 LP shares, fee accumulator, vault and buyback routing
WoolFiUnderwritingVault per-pool URU vault, drawdown bound to the hook
WoolFiGovernor pool authorization, parameter updates, fee config
WoolFiSwapRouter minimal IUnlockCallback wrapper for EOA swaps with slippage
oracle/ Chainlink adapter, dual-oracle adapter, NyseHoursOracle (on-chain
NYSE calendar; production market-hours choice pending verification)
keeper/ permissionless break checks from the Robinhood manifest
URU external underwriting asset for per-pool vaults
Every external entry point has NatSpec and a test file in test/integration/ (round-trip behavior against a real v4 PoolManager) or test/unit/ (math primitives).
Robinhood Stock Tokens provide economic exposure to referenced securities but do not provide ownership, voting rights, or other shareholder rights in the underlying securities. Issuer terms and geographic restrictions apply. WoolFi does not determine eligibility; users must confirm they may hold and trade each token.
WoolFi v1 is administered by a multisig. It can authorize pools, update supported parameters, and use emergency controls within the contracts' permissions. URU underwriting does not imply URU voting rights.
PROJECT_SPEC.md- protocol specificationdocs/robinhood-deployment.md- Robinhood deployment requirementsSECURITY.md- disclosure policyCONTRIBUTING.md- development setup and style
Prerequisites: Foundry, Node 20+, and a Robinhood Chain RPC URL.
git clone https://github.com/sp0oby/woolfi.git
cd woolfi
forge install
forge build
forge testThe frontend lives in frontend/:
cd frontend
npm install
npm run dev # http://localhost:3000The splash and docs render at / and /docs; the multi-pool dashboard is at /app. Once the
coordinated launch is approved, live pools will read Robinhood Chain state and expose swap,
liquidity, and URU underwriting actions. Until then all 18 remain read-only.
src/WoolFiHook.sol is Business Source License 1.1 with a two-year conversion to MIT, matching the Uniswap v4 model. Everything else is MIT.
Uniswap Labs for v4 and the hooks framework.