# 🎁┃Incentive system

Camelot’s in-house incentive system, offering a robust, efficient, and user-friendly way to distribute rewards to liquidity providers. Built entirely by Camelot, this system integrates on-chain and off-chain components to provide flexibility for protocols and users to create custom campaigns tailored to their specific needs

### Key Features

* **Unified Incentive Distribution**
  * Supports v2 and v3 (with plans to support v4/Integral in the future)
* **Permissionless**
  * Any protocol can leverage the system, and it supports all tokens, including GRAIL and xGRAIL
* **Highly Customizable Campaigns**
  * Features include Blacklist/Whitelist modes, token weight adjustments, depth-based incentives, and the flexibility to evolve over time
* **Deep Partners Integration**
  * Seamlessly functions with Advanced Liquidity Managers (ALMs) and is compatible with any protocol providing liquidity to Camelot, ensuring the best possible user experience for their users
* **Streamlines reward collection**

  * Unifies the harvesting of all incentives and emissions into one simple step

  <figure><img src="/files/6Alir0OPcG6xHJ8W4g9n" alt=""><figcaption></figcaption></figure>

### How the System Works

The system is designed to handle reward distribution efficiently while allowing protocols to customize their campaigns

<figure><img src="/files/63q6cbjzQobLnX0qIIxi" alt=""><figcaption></figcaption></figure>

For instructions on setting up a campaign, refer to the [campaign creation guide](/protocol/incentive-system/campaign-creation.md)

#### **Summary Explanation**

* Campaigns are created and funds are fully managed on-chain
* An off-chain script computes rewards for LPs
  * The script operates in 4-hour epochs, calculating rewards based on criteria specified during campaign creation
  * After each epoch, it generates a new Merkle root and corresponding proofs, which are uploaded on-chain
* **Users can:**
  * Retrieve their Merkle proofs for eligible positions via our API
  * Claim pending rewards from the distributor contract at any time

#### **Rewards Eligibility and Distribution**

Users simply need to provide liquidity to be eligible for rewards - no further action is required

* **V2 Pools**
  * Rewards are distributed proportionally to liquidity ownership
* **V3 Pools**
  * Rewards are distributed based on the exact amount of fees generated during an epoch
  * Unlike similar solutions, Camelot computes the precise fees generated for every position in every epoch, ensuring:
    * Extreme accuracy in reward calculations
    * Prevention of cheating or gaming the system

{% hint style="info" %}
**Example**:\
A user provides liquidity to the ETH/USDC pool

* **V2 Pools**: The user owns 1% of the pool’s liquidity and receives 1% of the rewards.
* **V3 Pools**: The user generates 2% of the fees and earns 2% of the rewards
  {% endhint %}

#### **Campaigns Customization**

* **Blacklist/Whitelist Modes**
  * (V2 and V3) Use a blacklist to exclude specific addresses or a whitelist to include only specific addresses
* **Token Weighting**
  * (V3 only) Assign weights to specific tokens, allowing rewards to depend not just on fees generated but also on the token composition of the position - this helps incentivize positions that hold more of one token over the other
* **Depth Criteria (WIP)**
  * (V3 only) Incentivize or exclude positions based on price ranges
  * Use minimum or maximum liquidity depth to target specific ranges

{% hint style="info" %}
A campaign for the BOOP/USDC pool with weights:\
**Fees = 70%**, **TokenA (BOOP) = 20%**, and **TokenB (USDC) = 10%**, allowing rewards to depend not just on fees but also on token holdings, incentivizing positions with more BOOP
{% endhint %}

#### **Campaign Fees and Requirements**

* Tokens must be whitelisted to be used in campaigns
* Campaigns must run for at least **24 hours**
* Campaigns must distribute at least **\~$50/day** to be considered valid
* A **1% fee** is deducted from the rewards to cover infrastructure costs

{% hint style="info" %}
A protocol creates a campaign to incentivize the GRAIL/ETH pool. They choose already whitelisted USDC as the reward token. The campaign is set to run for 7 days, distributing $500 total, meeting the \~$50/day requirement. A 1% fee is deducted, leaving $495 to be distributed among liquidity providers
{% endhint %}

### **Partners and Integrations**

* **Advanced Liquidity Managers**
  * Users providing liquidity to Camelot through integrated ALMs will receive rewards transparently and directly
  * **Currently Integrated ALMs**:
    * Gamma
    * Jones
    * Beefy (WIP)
    * Steer (WIP)

{% hint style="info" %}
**Example**:\
A user provides liquidity to Camelot through Gamma (an integrated ALM). The system automatically tracks their position, and rewards are distributed directly to their wallet without the need for a manual claim
{% endhint %}

### spNFTs Migration

* Users holding liquidity in **spNFTs** will continue receiving rewards during the first month to ensure a smooth transition
* spNFT rewards will stop on **January 1st**
* Rewards won’t apply if the spNFT is part of a **Nitro Pool**

{% hint style="danger" %}
We strongly encourage migrating liquidity from spNFTs before the deadline
{% endhint %}

<figure><img src="/files/dSdfOiP2ezXlPJmVUiZS" alt=""><figcaption></figcaption></figure>


---

# Agent Instructions: Querying This Documentation

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

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://docs.camelot.exchange/protocol/incentive-system.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
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.
