Deposit an ERC-20, receive shares 1:1. Market makers pay premium on-chain in whitelisted stablecoins; exercise is escrowed by the MM and approved by the Ivy multisig. No oracle, no on-chain strike — and no pretending otherwise.
TWO CONTRACTS · ~300 LINES · EVERY POWER DOCUMENTED BLUNTLY
deposit()
LP / DEPOSITOR
Asset in, shares credited 1:1 with the balance delta.
depositPremium()
MARKET MAKER
Premium in a whitelisted stable, credited pro-rata.
proposeExercise()
MARKET MAKER
MM escrows the exercise payment and names the amount it buys.
approveExercise()
IVY MULTISIG
Payment to depositors pro-rata, underlying to the MM. Or reject — escrow refunded.
fulfillWithdraw()
IVY MULTISIG
Principal returns, sized against what is genuinely idle.
Nothing about strike, expiry or spot lives on-chain. The MM's escrowed terms are the price, and the multisig's approval is the price check.
An LP (covered call) or a crowd (cash-secured put) puts an ERC-20 in. Shares match the amount actually received; the first deposit pins the asset permanently. Shares are an internal accounting entry, not an ERC-20 and not transferable — deliberately, since each depositor's row carries its own premium baseline and intent.
Anyone can pay premium in a whitelisted stablecoin. A MasterChef accumulator credits it pro-rata; depositors pull it with claim() any time.
In the money? The MM escrows real payment and names the underlying it buys. The multisig approves — or rejects and the escrow refunds. Two parties, always.
fulfillWithdraw debits shares and returns asset to the depositor, sized against what is genuinely idle. There is no other exit for principal.
multiDeposit = false
A single curated LP deposits the underlying. MMs buy upside against it; the LP keeps the premium either way.
multiDeposit = true
A crowd of depositors posts stablecoin collateral. If the put lands in the money, the vault buys the underlying at the strike.
The Ivy multisig is fully trusted. LPs are curated and settlement is manual — disclosed in the README, the docs, and here. What the multisig can do alone is small and bounded by construction.
FULL DISCLOSURE →Manual settlement, curated LPs, no oracle. Disclosed everywhere, not hidden behind decentralization theater.
Its unilateral powers are exactly fulfillWithdraw (asset → a depositor, debiting shares) and rejectExercise (escrow → its proposer).
Asset reaches a non-depositor only via proposeExercise (MM signs, escrows real payment) then approveExercise (multisig signs). A compromised Safe key cannot move underlying on its own.
It sweeps only balance above principal + owed premium + live escrows — rebases, strays, dust. It can never reach depositor money.
A token that can freeze this address (USDT-style) bricks any vault holding it. A more trustless 2-of-3 design is sketched as v2 and out of scope.