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.
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.
Selling an option#
- 1Pick the token and the sideCovered call (you hold the token) or cash-secured put (you hold ETH). Only tokens listed in the
AssetRegistrycan be used. - 2Set strike, expiry and premiumExpiry 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.
- 3Choose a fill deadlineHow 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.
- 4Approve and listOne 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. - 5Get paid when it fillsThe premium, minus the 3% fee, is sent to you the moment a buyer fills. From then on the position runs to exercise or expiry.
cancelUnfilled. Only gas is paid; no fee is charged until a buyer actually fills.Buying and exercising#
- 1Buy from the Market pagePay the premium in ETH through the
Router, which wraps it for you. You receive the Option NFT; the seller receives the premium. - 2Hold, transfer or sell the NFTThe position belongs to whoever holds the NFT. Transfer it like any ERC-721; the new holder gets the exercise right.
- 3Exercise before expiryCalls: pay the strike in ETH via
exerciseWithETHand receive the tokens. Puts: approve the tokens and callexercisePutto receive the strike. A 0.1% fee on the strike applies. - 4Or let it expireIf you do nothing, the option expires worthless, the collateral returns to the seller and the NFT is burned.
Fees#
| Action | Fee | Paid by | When |
|---|---|---|---|
| Fill an offer | 3% of the premium | Seller (deducted from the premium) | When a buyer fills |
| Exercise | 0.1% of the strike | Holder | When the option is exercised |
| Cancel unfilled | Free | — | Gas only |
| Expire | Free | — | Gas only; anyone can call it |
| Stake, unstake, claim | Free | — | Gas only |
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.
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.
PoolManager and burned in the same transaction. The slippage bound is checked against the hook's TWAP, with a per-call cap on size.FeeVault, where it joins the normal split. Its fee rate (max 1%) and vault can only be changed by the timelock.Swap events on each listed token's WETH pool, plus Robinhood market quotes for stock tokens. Nothing is quoted from a private API.KyteHook is deployed at a CREATE2 address with the afterInitialize, afterSwap and afterSwapReturnDelta bits set.Rules and limits#
| Rule | Value |
|---|---|
| Expiry window | 1 hour to 90 days from listing |
| Fill deadline | Per offer; never later than expiry. After it passes, the seller can reclaim collateral. |
| Minimum premium | 0.0005 ETH |
| Minimum strike | Per token, set in the AssetRegistry |
| Exposure cap | Per token and per market; new offers beyond the cap are rejected |
| Open offers per seller | 200 |
| Eligible tokens | Listed tokens only. Fee-on-transfer and rebasing tokens are rejected. |
| Pause | Blocks new offers and fills only. Cancel, exercise, expire, unstake and claim always work. |
| Settlement asset | WETH. Unwrap to ETH from the Positions page. |
Risks#
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.
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#
| Term | Meaning |
|---|---|
| Covered call | A call option backed by the actual tokens, locked in the contract. |
| Cash-secured put | A put option backed by the strike amount in ETH, locked in the contract. |
| Strike | The price, in ETH per token, at which the option can be exercised. |
| Premium | What the buyer pays the seller for the option, in ETH. |
| Expiry | The timestamp after which the option can no longer be exercised. |
| Fill deadline | How long an unfilled offer stays open for buyers. |
| Option NFT | The ERC-721 that represents a filled position. The holder has the exercise right. |
| Epoch | The 24-hour window after which the FeeVault splits collected fees. |
| Keeper | The bot that expires positions, triggers the epoch split and runs the buyback. |
| Guardian | A Safe that can pause the protocol or disable a token instantly. Re-enabling needs the timelock. |