← work
[defi]2022-07-01

JpeX

Winner, EthGlobal HackMoney 2022. Options markets for NFTs — epoch-based vaults that let holders hedge floor risk, write covered calls, or speculate on collection movements. 72 hours, two repos, fully on-chain.

SoliditySvelteTypeScriptEthereum

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 start
  • claimEarningForStrike — claim payout if your strike finished in the money
  • withdrawFromOptionBuyersVault — exit after epoch ends

Sellers Vault — deposit NFT, write covered calls and earn premium

  • depositNftAndMintOption — lock your NFT, receive option tokens representing covered calls
  • settle — at epoch end, either reclaim NFT or accept ETH settlement
  • liquidateNFT — 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.