Overview
NFT holders face a problem: their assets are illiquid and binary — you either hold or sell. JpeX introduces options on NFTs: structured products that let you hedge your NFT position, speculate on floor price movements, or earn yield by writing options.
Won EthGlobal HackMoney 2022. Two repos: jpex-contracts (Solidity, 13 stars) and jpex-app (Svelte frontend, 11 stars) — shipped in 72 hours.
How it works
The protocol has two vault types per NFT collection (e.g. BAYC, CryptoPunks):
Buyers Vault — deposit ETH, gain exposure to call options for an epoch
depositInOptionBuyersVault— deposit capital before epoch startclaimEarningForStrike— claim payout if your strike finished in the moneywithdrawFromOptionBuyersVault— exit after epoch ends
Sellers Vault — deposit NFT, write covered calls and earn premium
depositNftAndMintOption— lock your NFT, receive option tokens representing covered callssettle— at epoch end, either reclaim NFT or accept ETH settlementliquidateNFT— if writer doesn't post settlement, their NFT is liquidated
The factory pattern (NftOptionBuyersVaultFactory, NftOptionSellersVaultFactory) allows permissionless market creation for any NFT collection.
Protocol design
The epoch model is central: all options for a given collection and strike expire together, creating natural liquidity concentration. Pricing is not done on-chain (oracle problem) — instead, the protocol uses a simple premium rate set at epoch start, which keeps gas costs low and avoids manipulation.
The hardest part was the settlement logic: at epoch end, you need to know the NFT floor price to determine which strikes are in the money. The v1 implementation uses a trusted oracle; decentralizing this was planned for v2.
What I'd do differently
On-chain options pricing is hard. The v1 oracle approach works but creates a trust assumption. The right path is a TWAP from a decentralized NFT AMM (like Sudoswap's pool) — available now but not when we built this.