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.
Halts and weekends
stock tokens
A stock token's quote stands still when the stock is halted and from Friday 20:00 to Sunday 20:00 New York, while the token keeps trading on chain. Kyte shows a Halted or Weekend hold badge next to the price then, with the weekend on-chain mark, read from Harmonic Agent's session oracle. Options settle at their strike regardless; only the spot you compare against is affected.
Smart contract risk
The contracts are tested, but any contract can have bugs. Only use funds you can afford to lose. The team's security self-assessment (Slither, Aderyn, manual review and on-chain checks) is published; an independent audit is planned.
Reference

Contract addresses#

All addresses are on Elysium (chain id 99901).

Protocol
AssetRegistry
Listed tokens, caps and minimum strikes
0x46C668199e07eDD479A9309B0866cD6900E88bdD
CallMarket
Covered calls: offers, fills, exercise, expiry
0x5965ab9b7FE7119d909f1e63B6Ad0e72a62715FA
PutMarket
Cash-secured puts
0xF046b23b90ca6355DFD831532778285F1d784aEa
OptionNFT
Transferable position token
0x75D101576Bf681fc231D7Cb92FD8181d424E0e2a
Router
Buy and exercise with plain ETH
0xd31d758c4Ff9002Cb1165FF980A4f446BdD343f7
FeeVault
Collects fees, splits them once per epoch
0x8Ee4A77DaEABe3B68d70a1234E4af25723414867
StakingPool
$KYTE staking and fee claims
0x69486E5cC67918aA5Bc565C4207Be4371C7FaCA6
BuybackBurner
Buys $KYTE on Uniswap v4 and burns it
0x69486E5cC67918aA5Bc565C4207Be4371C7FaCA6
KyteHook
Uniswap v4 hook on the $KYTE/WETH pool: TWAP and swap fee
not deployed
UniswapV4Adapter
Direct PoolManager swaps for the buyback
not deployed
KyteHaltGate
Reads Harmonic Agent's session oracle: is the stock behind a token trading
not deployed
PonsLister
Permissionless listing of graduated Pons launchpad tokens through the timelock
not deployed
FoboLister
Permissionless listing of FOBO tokens whose floor backs 4.2 ETH, through the timelock
not deployed
Timelock
Governance: listings, fee changes, re-enabling
0x9F2870E6B0A32546CE6A196a52c88249442FA4A6
Guardian
Emergency pause and disable, no timelock
0x194b9b6F88de75DdB2d5a6F3e55F4Fd04A950e41
External
$KYTE
Protocol token
not deployed
WETH
Wrapped ETH, the quote asset
0xbA876237B0F021A6c6D852d6c26E107997cC5E81
Uniswap v4 PoolManager
Singleton the hook and adapter talk to
0xE2e105d3F7209A9DA11f83cCf3E7398a753823F1

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