> 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/protocol/revenue.md).

# Revenue and buyback

How fees reach stakers, the buyback and operations.

{% hint style="success" %}
**In short.** Every fee arrives at the FeeVault in WETH. Once per epoch, anyone can call `split()`: **30%** to the StakingPool, **20%** to the BuybackBurner, **50%** to the Ops Safe. Buybacks swap on Uniswap v4 against two on-chain price floors and burn in the same transaction.
{% endhint %}

<figure><img src="https://996751035-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FVsnNtaBRxeClOSpEHWrf%2Fuploads%2Fgit-blob-28107a41c200873f0c6b0a5e8df1252c63a8b19c%2Fdiagram-revenue.png?alt=media" alt="From fee to staker, buyback and operations"><figcaption><p>From fee to staker, buyback and operations</p></figcaption></figure>

<details>

<summary>Text version</summary>

```
 premium fee (3%) ─┐
 exercise fee (0.1%)┼──► FeeVault (WETH) ── split() once per epoch, anyone ──► 30% StakingPool.notifyReward
 KyteHook swap fee ─┘                                                    ├─► 20% BuybackBurner
                                                                         └─► 50% Ops Safe
 BuybackBurner ── keeper: buyAndBurn(wethIn ≤ maxPerCall, minOut) ──► UniswapV4Adapter ──► v4 PoolManager ──► burn
```

</details>

**Buyback safety.** `buyAndBurn` enforces two on-chain price floors, so the keeper (or anyone holding its key) can only swap at prices close to the on-chain TWAP:

1. **TWAP floor**: `minTokenOut ≥ adapter.quoteWethForToken(wethIn) × (1 − maxSlippageBps)`. The quote is the 10-minute KyteHook TWAP, checked in the same transaction.
2. **Last-price floor**: `minTokenOut ≥ wethIn × lastPrice × (1 − maxSlippageBps)`, a second, independent check against the price of the previous buyback.

The swap size per call is capped by `maxPerCall` (1 ETH at launch), so buybacks are spread over the epoch. Current `maxSlippageBps` is 500 (5%), with a hard cap of 2,000 (20%).

The keeper adds its own off-chain checks: it skips a buyback when spot and TWAP disagree by more than 3%, and it sets `minOut = quote × (1 − 1%)` by default.


---

# 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/protocol/revenue.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.
