# Bonus Rewards

### What are bonus rewards?

Bonus rewards are incentives for users deposited in a specific prize vault. A rewards program can be created by anyone and set for any prize vault, awarding any ERC20 token.

If a prize vault has rewards that are currently being distributed, a "bonus rewards" APR will be displayed alongside its prize yield on the app.

### Claiming Bonus Rewards

Bonus rewards can be claimed from the app's [Account](https://app.cabana.fi/account) page if you are eligible for any. Eligibility is simply being deposited in the vault rewards are set for, during the time they are being distributed!

While you can claim these rewards while the rewards program is ongoing, claiming once when the program is over might make more sense gas-wise.

{% hint style="warning" %}
Once a rewards program is over for a given prize vault, users have 60 days to claim their rewards if they haven't yet. Any remaining rewards still in the rewards contract after that period can be claimed back by the program's deployer.
{% endhint %}

### How are bonus reward APRs calculated?

In short, we use the amount of value being distributed as rewards in the next few draws, extrapolated over a period of 1 year and divided by a prize vault's TVL. This determines an estimated APR for the state of bonus rewards of a prize vault.

The exact equation used to calculate a rewards program APR for a vault as it is currently displayed on the app is as follows:

$$
\text{APR} = \frac{TokenRewards\_N ; \* ; \frac{NumYearlyDraws}{N} ; \* ; RewardTokenPrice}{ShareTokenTotalSupply ; \* ; ShareTokenPrice} ; \* ; 100
$$

"TokenRewards" are the number of tokens expected to be distributed in the next "N" number of draws.

On the Cabana app, "N" is currently set to 7.

The implementation of the bonus reward APR calculation can be found [here](https://github.com/GenerationSoftware/pooltogether-client-monorepo/blob/main/packages/hyperstructure-react-hooks/src/vaults/useVaultPromotionsApr.ts).

### Reward Token Whitelist

Since anyone can create these bonus rewards using any ERC20 token, it is important to users that the Cabana app only displays tokens that actually hold value, can be exchanged, doesn't direct them to scam apps, etc. The token whitelist for each network is currently as follows:

#### Ethereum

* USDC (`0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48`)
* WETH (`0xC02aaA39b223FE8D0A0e5C4F27eAD9083C756Cc2`)
* DAI (`0x6B175474E89094C44Da98b954EedeAC495271d0F`)
* POOL (`0x0cEC1A9154Ff802e7934Fc916Ed7Ca50bDE6844e`)

#### Optimism

* OP (`0x4200000000000000000000000000000000000042`)
* USDC (`0x0b2C639c533813f4Aa9D7837CAf62653d097Ff85`)
* USDC.e (`0x7F5c764cBc14f9669B88837ca1490cCa17c31607`)
* WETH (`0x4200000000000000000000000000000000000006`)
* DAI (`0xDA10009cBd5D07dd0CeCc66161FC93D7c9000da1`)
* POOL (`0x395Ae52bB17aef68C2888d941736A71dC6d4e125`)

#### Base

* USDC (`0x833589fcd6edb6e08f4c7c32d4f71b54bda02913`)
* WETH (`0x4200000000000000000000000000000000000006`)
* DAI (`0x50c5725949a6f0c72e6c4a641f24049a917db0cb`)
* POOL (`0xd652C5425aea2Afd5fb142e120FeCf79e18fafc3`)
* WELL (`0xA88594D404727625A9437C3f886C7643872296AE`)
* HIGHER (`0x0578d8A44db98B23BF096A382e016e29a5Ce0ffe`)
* BASED (`0x32E0f9d26D1e33625742A52620cC76C1130efde6`)

#### Arbitrum

* USDC (`0xaf88d065e77c8cC2239327C5EDb3A432268e5831`)
* USDC.e (`0xFF970A61A04b1cA14834A43f5dE4533eBDDB5CC8`)
* WETH (`0x82aF49447D8a07e3bd95BD0d56f35241523fBab1`)
* DAI (`0xDA10009cBd5D07dd0CeCc66161FC93D7c9000da1`)
* POOL (`0xCF934E2402A5e072928a39a956964eb8F2B5B79C`)
* ARB (`0x912CE59144191C1204E64559FE8253a0e49E6548`)

#### Scroll

* USDC (`0x06eFdBFf2a14a7c8E15944D1F4A48F9F95F663A4`)
* WETH (`0x5300000000000000000000000000000000000004`)
* DAI (`0xcA77eB3fEFe3725Dc33bccB54eDEFc3D9f764f97`)
* POOL (`0xF9Af83FC41e0cc2af2fba93644D542Df6eA0F2b7`)

#### Gnosis

* WXDAI (`0xe91D153E0b41518A2Ce8Dd3D7944Fa863463a97d`)
* WETH (`0x6A023CCd1ff6F2045C3309768eAd9E68F978f6e1`)
* POOL (`0x216a7d520992eD198593A16e0b17c784c9cdc660`)

{% hint style="info" %}
Want us to whitelist a token not currently on this list? Get in touch through the [PoolTogether Discord](https://pooltogether.com/discord) or send us an email at `contact@g9software.xyz`.
{% endhint %}


---

# 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.cabana.fi/cabana-app/bonus-rewards.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.
