Search projects, hackathons, sponsors and tech

    ← All projects

    MAMORI

    A safer haven for traders to earn more, manage risk better, and lose less.

    Demo

    About

    Mamori lets you trade options on ETH without a traditional options exchange behind it. Instead of building a separate order book, it reuses Uniswap's own liquidity pools: when you "sell" an option, you're really just providing liquidity to a Uniswap pool at a specific price range (the strike). If the market stays away from that range, you earn trading fees as your premium, real money paid by real traders swapping through the pool, not a number made up by a formula. If the price moves through your range, you get assigned the underlying asset, exactly like a traditional short option. Buying an option works the same way in reverse: you're paying to pull that liquidity out of the pool, taking on the price exposure the seller was carrying. Because you're buying an existing position rather than sourcing new capital, you only need to post about 10% of the position's value, enough to cover what you owe in ongoing premium. The pricing isn't set by an oracle or a manual quote. A smart contract watches how much the pool has been moving and how much of the option book has already been bought up, and adjusts the trading fee (your premium) accordingly. Calmer markets and quieter books mean cheaper premium, while volatile markets and heavily traded strikes mean richer premium, all computed from the pool's own activity. Sellers also don't have to lock their money away the moment they make an offer. Using 1inch's Aqua system, you can commit funds to back an option while they stay sitting in your own wallet, fully usable elsewhere. They're only pulled out the instant someone actually takes you up on the trade. That means one pool of capital can back offers across many different strikes at once, instead of splitting it into separate locked-up deposits for each one.

    How it's made

    The core insight: a concentrated Uniswap v4 LP position already has the payoff shape of a short option. Hold USDC in a range below spot, earn fees, get assigned ETH if price falls through it. That's a short put. So writing an option is literally minting v4 liquidity, and buying one is literally removing that liquidity from the pool, which hands the buyer the inverted payoff. No separate options order book, no separate liquidity to bootstrap. The AMM's own liquidity and pricing are reused directly. Uniswap v4 is used as the settlement and accounting layer itself, not just a price feed. OptionsManager is an ERC-1155 that batches every mint/burn/swap into a single unlock/unlockCallback round-trip so v4's flash-accounting stays atomic across multi-leg structures (spreads, strangles, condors written in one tx). OptionsHook enforces that only OptionsManager can ever be an LP (beforeAddLiquidity/beforeRemoveLiquidity), which turns "every unit of liquidity in this pool is a written option" from a convention into an on-chain invariant. That's what lets feeGrowthInside be attributed entirely to option writers. The hook also overrides the LP fee per-swap (beforeSwap + OVERRIDE_FEE_FLAG) with a dynamic premium: realised volatility estimated straight from the pool's own tick path (ticks are log-price, so squared tick-delta over time is variance with no logarithm needed, just an EWMA in one storage slot), widened by a utilisation spread as more of the written book gets bought out by longs. No oracle, no signed quote. The only inputs are the pool's price history and the protocol's own open interest. 1inch Aqua is what makes selling capital-efficient. Aqua is a self-custodial registry where a maker "ships" a strategy that registers wallet balance as backing for an app. Tokens never move until the app actually pulls them. We scope the Aqua strategy hash to the market, not a single strike/side, so one shipped wallet balance backs every leg a seller writes across the whole ladder. Their worst case is bounded by one registered number no matter how many structures they run, and the capital stays liquid and usable elsewhere right up until the moment a v4 mint actually needs it. sellOptionViaAqua is callable by anyone, since shipping the offer is the maker's commitment. Aqua enforces the cap, not us. Hacky/notable bits: hook addresses are mined via HookMiner against Foundry's CREATE2 deployer proxy (v4 hooks encode their permission flags in the deployed address itself, so the address has to be brute-forced pre-deploy). The whole demo runs against a real Anvil fork of Base mainnet rather than mocks, with genuine deployed PoolManager and Aqua addresses. It also has a churn.sh loop that reads live ETH mid-price off Hyperliquid's public API and walks the frozen fork's price toward it so premium (which is literally the swap fee, and pays nothing on an untouched book) keeps accruing during a live demo. The fork also deliberately advertises chain id 31337 instead of Base's real 8453, because a wallet that recognizes "real mainnet" applies Base's own gas heuristics instead of calling eth_estimateGas, and silently sends a gas limit ~15x too low.