> For the complete documentation index, see [llms.txt](https://chocolateswap-1.gitbook.io/chocolateswap/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://chocolateswap-1.gitbook.io/chocolateswap/intro/chocolate-factory.md).

# Chocolate Factory

Chocolateswap Factory utilize a specific strategy that is applied to a pool on a third-party farm. Tokens deposited in a Chocolateswap Factory are automatically reinvested into the farm and the resulting rewards are automatically compounded.

Third-party farms offer rewards for holding or "staking" certain tokens. These rewards are typically paid in the native token of the farm. Our smart contracts automatically exchange these rewards for the staked tokens and reinvest them back into the farm. This process of receiving and reinvesting rewards leads to compound interest on the staked tokens.

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

### Auto-Compound:

When a compound operation is performed on a Factory, the assets of all users in the Factory are compounded. This compounding may occur if any of the following conditions are met:

* Upon making a deposit.
* When a withdrawal is made.
* During an incentive compound operation.
* During a community compound operation.
* If the amount of pending rewards reaches 0.3% and is higher than the cost of the compound transaction.

**Chocolateswap's Factory** decentralizes the process of executing a compound operation. Any individual can perform a compound and receive a reward in return. The reward paid to those who execute compounds, known as "vault bounty hunters," is 0.3% of the assets waiting to be harvested. If the value of these assets exceeds the cost of the compound transaction, it becomes financially viable for anyone to execute the compound.

### Recipient Tokens

Chocolateswap's Factory utilize recipient tokens. When you make a deposit in one of these vaults, you will receive a token representing your deposit. When you request a withdrawal, this token will be removed (or "burned") from your wallet. This system allows for integration with other protocols and enables users to move their deposits to cold storage wallets if desired.
