bob is a single-sided Uniswap v4 liquidity manager for holders who count tokens, not dollars. This is the whole machine — the mechanism, the dial, the proof on real history, and the contract surface.
You hold one asset you believe in. You don’t want to sell it, babysit a liquidity range, or measure your net worth in dollars. bob puts a slice of your coin to work as liquidity on a deep, correlated Uniswap v4 pool, keeps the rest as an untouched reserve, and buys the trading fees back into your asset. Deposit and withdraw in a single token — your reserve, your slice, and every fee, all denominated in the coin you actually want.
Your deposit splits into a protected reserve and a deployed slice. The slice earns fees in the paired asset; bob buys them back into your belief asset on-chain. You accumulate coins, never fiat.
10% to 50%. The only decision you make.
The dial sets the fraction of your deposit bob puts to work as liquidity. The rest stays as an untouched reserve that rides every price move exactly like simply holding. Stronger belief means a smaller slice working and a bigger reserve riding.
“Max conviction — my coin moons.”
90% rides untouched. Tiny fee exposure, smallest possible downside.
“Bullish, happy to earn while I wait.”
A modest slice harvests fees; the bulk stays exposed to your asset.
“Choppy or sideways ahead.”
The most bob will deploy at entry — half works, half always rides.
Power-user warning
The 50% cap is a deposit-time guardrail, not a perpetual limit. Repeated dialUp can push your deployed share past 50%, at which point you are no longer majority-reserved and a rally in your coin can cost more than the dial implies. bob does not stop you — keep dialUp modest unless you specifically want concentrated exposure.
A single pool serves two kinds of believer at once — each an isolated vault, each paid in their own coin. Whichever coin is underperforming gets accumulated; the other pays only the small, pre-chosen toll.
“BTC outperforms ETH”
“ETH outperforms BTC”
The same pattern works on any correlated crypto pair — LINK/ETH, AAVE/ETH, an alt against ETH. You pair against a correlated crypto, not a stablecoin, so the pool sells far less of your stack.
The live WBTC/ETH pool, Jan → May 2026.
Forked tests replay the real on-chain price path while a BTC maxi and an ETH maxi each run a 10-coin position. Over the window BTC outperformed ETH ~24% — so the BTC side pays a small toll while the ETH side accumulates. Every figure below is straight from the test logs.
| Strategy | BTC maxi (10 WBTC) | ETH maxi (10 ETH) |
|---|---|---|
| Just hold | 10.000 WBTC | 10.000 ETH |
| bob · left untouched | 9.787 WBTC (−2.1%) | 10.237 ETH (+2.4%) |
| bob · position adjusted | 9.839 WBTC (−1.6%) | 10.418 ETH (+4.2%) |
| LP everything | ~8.99 WBTC (−10%) | ~11.12 ETH (+11%) |
bob is risk shaping, not free yield: the reserve caps the BTC maxi’s worst case from −10% (all-in) to ~−2%. Model it yourself in the simulator.
Measured in coins, not dollars.
bob is non-custodial in the meaningful sense: withdrawals are gated solely by your position and immutable logic.
Only your position can withdraw your funds. The one admin role can move just two tracked balances — rounding dust and an optional protocol fee on yield — never your reserve or earned fees.
bob reads only the pool’s own price, and attaches only to hookless pools — a pool hook could manufacture a delta against bob’s commingled balances, so those pools are rejected.
Off by default. When on, it takes a cut of the post-bounty buyback — i.e. of yield. Principal and reserves never pass through that path, so they are never taxed.
Every admin-movable balance is tracked explicitly, so balance == reserves + LP fees + dust + protocol fees holds for every belief currency.
Everything routes through a single periphery manager that drives an existing pool through Uniswap v4’s permissionless unlock flow. Each mutating call takes slippage minimums and a deadline.
depositOpen a position with one asset at a chosen dial (10–50%).withdrawExit liquidity and reserve, paid in your belief asset.harvestBuy pending fees back into your asset. Permissionless, pays a bounty.dialUpDeploy belief from your reserve into the slice.dialDownPull liquidity from the slice back into your reserve.withdrawReserveTake untouched reserve out — no pool interaction, no slippage.positions / sweepableRead a position’s liquidity and reserve, or the tracked dust.No. Deposit one asset and bob converts and pairs it internally. You enter and exit with a single coin.
No — only in flat or down markets for your coin. In a strong rally you’ll come back with slightly fewer tokens, but your reserve rode the rally and the dial caps how much that can cost.
A correlated coin moves with yours, so the pool sells far less of your stack. Pairing against fiat taxes you hardest exactly when you’re right. bob wants crypto vs. correlated crypto.
No meaningful sense — only your position can withdraw your funds. The admin can move only rounding dust and an optional protocol fee on yield, never your reserve or earned fees.
Yes. Dial up or down to rebalance between reserve and slice in place, or withdraw reserve without unwinding any liquidity — no full exit-and-redeposit needed.
No. Harvesting is permissionless and bounty-incentivized, so others do it — and it also happens automatically on deposits and withdrawals.