Documentation

Kyte Docs

Everything about covered options on Robinhood Chain: how a position is created, what it costs, where the fees go, and the addresses behind it all.

Start here

Overview#

Kyte is a non-custodial options market for the tokens on Robinhood Chain, including every Robinhood Stock Token. Every option is fully collateralised from the moment it is listed: a call locks the tokens, a put locks the ETH. There is no leverage, no margin and no liquidation, and no price oracle decides anything.

Physical settlement
The holder pays the strike and receives the tokens (call), or delivers the tokens and receives the strike (put). Nothing is cash-settled against a price feed.
Options are NFTs
A filled offer mints an Option NFT to the buyer. Whoever holds it at exercise time gets the payout, so positions can be transferred or sold on.
Priced in ETH
Strikes and premiums are in ETH. Payouts arrive as WETH, which you can unwrap on the Positions page.
Fees fund the token
Every fee is split between $KYTE stakers, an on-chain buyback and burn, and operations. The split is verifiable on the Proof page.

How it works#

Covered call

A seller locks tokens and sets three things: a strike price in ETH, an expiry, and the premium they want. A buyer pays the premium and receives the Option NFT. Until expiry, the holder can pay the strike and take the tokens. If nobody exercises, anyone can call expire after expiry and the tokens return to the seller, who keeps the premium either way.

Cash-secured put

The mirror image. The seller locks ETH (held as WETH) equal to the strike. The holder can deliver the tokens before expiry and receive that ETH. If the option expires unused, the ETH returns to the seller.

No oracle, no auto-exercise
Kyte never reads a price. The holder decides whether exercising is worth it and sends the transaction. An option that is in the money but never exercised simply expires.

Selling an option#

  1. 1
    Pick the token and the side
    Covered call (you hold the token) or cash-secured put (you hold ETH). Only tokens listed in the AssetRegistry can be used.
  2. 2
    Set strike, expiry and premium
    Expiry must be between 1 hour and 90 days away. The premium must be at least 0.0005 ETH. The Sell page shows a Black-Scholes estimate as a starting point.
  3. 3
    Choose a fill deadline
    How long the offer stays open for buyers. It cannot be later than expiry. If it passes unfilled, you can reclaim your collateral at any time.
  4. 4
    Approve and list
    One approval for the token (calls) or WETH (puts), then createOffer. Your collateral moves into the market contract and the offer appears on the Market page.
  5. 5
    Get paid when it fills
    The premium, minus the 3% fee, is sent to you the moment a buyer fills. From then on the position runs to exercise or expiry.
Cancelling is free
An unfilled offer can be cancelled at any time with cancelUnfilled. Only gas is paid; no fee is charged until a buyer actually fills.

Buying and exercising#

  1. 1
    Buy from the Market page
    Pay the premium in ETH through the Router, which wraps it for you. You receive the Option NFT; the seller receives the premium.
  2. 2
    Hold, transfer or sell the NFT
    The position belongs to whoever holds the NFT. Transfer it like any ERC-721; the new holder gets the exercise right.
  3. 3
    Exercise before expiry
    Calls: pay the strike in ETH via exerciseWithETH and receive the tokens. Puts: approve the tokens and call exercisePut to receive the strike. A 0.1% fee on the strike applies.
  4. 4
    Or let it expire
    If you do nothing, the option expires worthless, the collateral returns to the seller and the NFT is burned.
Exercise early, not at the last block
Robinhood Chain has a single sequencer. A transaction that lands after the expiry timestamp fails, and the position is then expirable by anyone. Leave yourself a margin.
Protocol

Fees#

ActionFeePaid byWhen
Fill an offer3% of the premiumSeller (deducted from the premium)When a buyer fills
Exercise0.1% of the strikeHolderWhen the option is exercised
Cancel unfilledFree—Gas only
ExpireFree—Gas only; anyone can call it
Stake, unstake, claimFree—Gas only
Fees are frozen per position
The fee rates are written onto each position when it is created. A later governance change never affects an option that is already open. Hard caps in the contracts: at most 10% of the premium and 1% of the strike.

Fee split and buyback#

The FeeVault gathers every fee in WETH and splits it once per epoch (24 hours). Each split is an on-chain FeesSplit event, and each buyback ends in a Burned event. The Proof page lists both.

30%
$KYTE stakers
Claimable in WETH from the Stake page, pro rata to stake.
20%
Buyback and burn
Swapped for $KYTE on Uniswap v4 and burned in the same transaction.
50%
Operations
Keeper gas, infrastructure and listings, paid to the ops Safe.

Stakers always receive at least 20%: the contracts refuse a split that goes below it.

Uniswap v4 inside Kyte#

Kyte does not run its own exchange. Three parts of the protocol sit directly on Uniswap v4 on Robinhood Chain.

Buyback and burn
UniswapV4Adapter
Every epoch, 20% of fees are swapped for $KYTE straight on the v4 PoolManager and burned in the same transaction. The slippage bound is checked against the hook's TWAP, with a per-call cap on size.
KyteHook on the $KYTE/WETH pool
afterSwap
Records a price observation after every swap and exposes a 10-minute TWAP that a single block cannot move. The same hook takes 0.1% of the WETH side of each swap in that pool and sends it to the FeeVault, where it joins the normal split. Its fee rate (max 1%) and vault can only be changed by the timelock.
Price feed for the charts
Swap events
The Market and Sell charts are built from v4 Swap events on each listed token's WETH pool, plus Robinhood market quotes for stock tokens. Nothing is quoted from a private API.
Why the hook address looks mined
A v4 hook's permissions are encoded in its address, so KyteHook is deployed at a CREATE2 address with the afterInitialize, afterSwap and afterSwapReturnDelta bits set.

Rules and limits#

RuleValue
Expiry window1 hour to 90 days from listing
Fill deadlinePer offer; never later than expiry. After it passes, the seller can reclaim collateral.
Minimum premium0.0005 ETH
Minimum strikePer token, set in the AssetRegistry
Exposure capPer token and per market; new offers beyond the cap are rejected
Open offers per seller200
Eligible tokensListed tokens only. Fee-on-transfer and rebasing tokens are rejected.
PauseBlocks new offers and fills only. Cancel, exercise, expire, unstake and claim always work.
Settlement assetWETH. Unwrap to ETH from the Positions page.

Risks#

If you sell
You give up upside above the strike (calls), or you may have to buy tokens that keep falling (puts). The premium is yours regardless.
If you buy
You can lose the whole premium if the option is never worth exercising.
Timing
Exercise needs a confirmed transaction before the expiry timestamp. Do not wait for the last minute.
Token risk
Listed tokens can be volatile, illiquid, or carry issuer controls such as blocklists and pauses.
Smart contract risk
The contracts are tested, but any contract can have bugs. Only use funds you can afford to lose.
Reference

Contract addresses#

All addresses are on Robinhood Chain (chain id 4663). The current markets are the v3 set; v1 and v2 markets only settle the positions they already hold.

Protocol
AssetRegistry
Listed tokens, caps and minimum strikes
0x02f571e10B9c7303EB7A6284A7137b146e18658D
CallMarket
Covered calls: offers, fills, exercise, expiry
0xb6759D8893601BB7c1A032eC8ea40C856a6adf80
PutMarket
Cash-secured puts
0x2E2d5DfB4cf30d15688Cc2DDD30641c78DFfcb35
OptionNFT
Transferable position token
0xE0CD21A7Ed37898A5ACdF7Dc68C52259Cd63308B
Router
Buy and exercise with plain ETH
0xdD76956667E6423bAC56d2EbF827a9b0d7dBDF68
FeeVault
Collects fees, splits them once per epoch
0x78c569A1137B78cB78F42c42B4B6C2b8F1E3dDef
StakingPool
$KYTE staking and fee claims
0xD7253a90fd43507F44cF0934F3D5d7432760d17f
BuybackBurner
Buys $KYTE on Uniswap v4 and burns it
0x8A9d128247D8c4512411CF9D0CdCAc5Acf86FB95
KyteHook
Uniswap v4 hook on the $KYTE/WETH pool: TWAP and swap fee
0x77e52E93Aa0892b29a4527Af4f3a79F01cfa9044
UniswapV4Adapter
Direct PoolManager swaps for the buyback
0xFa17818515E946180b9767f9D9c40A09EE80dda6
Timelock
Governance: listings, fee changes, re-enabling
0xf8E6fAF7e0E57bc91aD5C59B84FedE2Cab842893
Guardian
Emergency pause and disable, no timelock
0x9F433eE8020cFb3521bDaE0DDA612932e1E90EF0
External
$KYTE
Protocol token
0x072D88c2F31F568C0F4B8F613692eB489541Ed45
WETH
Wrapped ETH, the quote asset
0x0Bd7D308f8E1639FAb988df18A8011f41EAcAD73
Uniswap v4 PoolManager
Singleton the hook and adapter talk to
0x8366a39CC670B4001A1121B8F6A443A643e40951
Markets v2settling only
CallMarket v2
0x15B5d324960234B193246B122C555e88E341eD72
PutMarket v2
0x1025f5b1f7549a1192226ddC0D36E1359A8D1305
OptionNFT v2
0xFA459da73EF7a9764858B2FF2AF67c61D105ABdb
AssetRegistry v2
0x02f571e10B9c7303EB7A6284A7137b146e18658D
Router v2
0xf1648a2cDE31A2F80cb5Ba8c544f7FC7af826BCd
Markets v1settling only
CallMarket v1
0x459cF18A424271A417547F6B349e962c09e492EE
PutMarket v1
0xD1a3c2Fa0E7901437929B7518AD66d71B1d676a4
OptionNFT v1
0x71B515C3786bF8897368f548d5DbBc2423E73391
AssetRegistry v1
0xcD076486FBd192e2E942dA9DB2B78817DF0d5235
Router v1
0xe17887A4BA9a373ec94a00D5F0c812fa6a994Ad4

The full list of listed tokens, with live prices, is on the Market page. Source code lives in the contracts/ folder of the repository.

Glossary#

TermMeaning
Covered callA call option backed by the actual tokens, locked in the contract.
Cash-secured putA put option backed by the strike amount in ETH, locked in the contract.
StrikeThe price, in ETH per token, at which the option can be exercised.
PremiumWhat the buyer pays the seller for the option, in ETH.
ExpiryThe timestamp after which the option can no longer be exercised.
Fill deadlineHow long an unfilled offer stays open for buyers.
Option NFTThe ERC-721 that represents a filled position. The holder has the exercise right.
EpochThe 24-hour window after which the FeeVault splits collected fees.
KeeperThe bot that expires positions, triggers the epoch split and runs the buyback.
GuardianA Safe that can pause the protocol or disable a token instantly. Re-enabling needs the timelock.
Something missing? Ask on @useKyte.
Open the market