> For the complete documentation index, see [llms.txt](https://docs.kyte.sh/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://docs.kyte.sh/getting-started/concepts.md).

# Core concepts

Calls and puts, totals, expiry, the Option NFT, epochs and WETH.

{% hint style="success" %}
**In short.** Strike and premium are **totals** in WETH for the whole lot. Every offer has an **expiry** (1 hour to 90 days) and a **fill deadline** no later than expiry. A filled option is an **ERC-721 NFT**: whoever holds it can exercise. Fees are split once per 24-hour **epoch**.
{% endhint %}

## Calls and puts

|                    | Covered call                                       | Cash-secured put                                        |
| ------------------ | -------------------------------------------------- | ------------------------------------------------------- |
| Seller locks       | `amount` of the token                              | `strike` in WETH (sent as ETH, wrapped by the Router)   |
| Buyer's right      | Pay `strike`, receive `amount` tokens              | Deliver `amount` tokens, receive `strike`               |
| Buyer profits when | Token price per unit > strike per unit (+ premium) | Token price per unit < strike per unit (− premium)      |
| Seller gives up    | Upside above the strike                            | Must buy tokens at the strike even if they keep falling |

<figure><img src="https://996751035-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FVsnNtaBRxeClOSpEHWrf%2Fuploads%2Fgit-blob-0b06176b3e078062e98f89beb5d81c967f5fffbb%2Fdiagram-payoff.png?alt=media" alt="Profit and loss of a covered call and a cash-secured put when exercised, for the holder and the seller"><figcaption><p>What each side makes or loses when the option is exercised</p></figcaption></figure>

**Break-even** is where the holder gets the premium back: strike per token + premium per token for a call, strike per token − premium per token for a put.

## Totals, not per-unit prices

On-chain, **`strike` and `premium` are totals for the whole lot**, in WETH. The website asks you for a *strike per token* and multiplies by the amount, so you never have to think in totals. Storing totals means token decimals can never cause per-unit rounding.

Example: 1,000 tokens at a strike of 0.002 ETH each is stored as `amount = 1000 × 10^decimals` (the token's base units) and `strike = 2 ETH` (`2 × 10^18` wei of WETH).

## Expiry and fill deadline

Each offer has two times:

* **Expiry**: the moment the option stops being exercisable. It must be between **1 hour** and **90 days** away.
* **Fill deadline** (offer deadline): the last moment a buyer can fill the offer. It must be in the future and **no later than expiry**. After it passes, the seller can reclaim the collateral of an unfilled offer.

Exercise requires `now < expiry`. Expire requires `now ≥ expiry`. There is no moment when both or neither are possible.

## Option NFT

Every filled option is an ERC-721 token (**OptionNFT**). Whoever holds the NFT holds the option: you can transfer it or sell it elsewhere, and the new holder can exercise. The NFT is burned on exercise or expiry. Its artwork and metadata (`tokenURI`) are generated fully on-chain as SVG.

Token ids encode the market: `id = (tag << 248) | localId`.

| Tag | Market   |
| --- | -------- |
| 1   | v1 calls |
| 2   | v1 puts  |
| 3   | v2 calls |
| 4   | v2 puts  |

## Epochs

Time is divided into **epochs of 24 hours**, aligned to 00:00 UTC (`epoch = block.timestamp / 86400`). Fees are split once per epoch, and new stake becomes active at the start of the next epoch.

## ETH and WETH

The markets hold and pay **WETH** internally. A stateless **Router** lets you pay with plain ETH: it wraps exactly what's needed, calls the market for you, refunds any excess in the same transaction, and never holds a balance.


---

# Agent Instructions
This documentation is published with GitBook. GitBook is the documentation platform designed so that both humans and AI agents can read, navigate, and reason over technical content effectively. Learn more at gitbook.com.

## Querying This Documentation
If you need additional information that is not directly available in this page, you can query the documentation by asking a question.

Perform an HTTP GET request on the following URL with the `ask` and `goal` query parameters:

```
GET https://docs.kyte.sh/getting-started/concepts.md?ask=<question>&goal=<user_goal>
```

`ask` is the immediate question: it should be specific, self-contained, and written in natural language.
`goal` is what the user is ultimately trying to achieve, the reason they need the answer. Sharing it helps GitBook give you a better, more relevant answer. A goal is most helpful when it describes the outcome the user wants rather than restating the question. For example, with `ask=how do I create an API token`, a goal like `automate deployments from our CI pipeline` lets GitBook tailor the answer to that use case.

The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
