---
# System prepended metadata

title: '**04. Compound Tokens**'
tags: [Smart Contracts, Functions, Done]

---

# **04. Compound Tokens**
###### tags: `Done`, `Functions`, `Smart Contracts`

**Purpose:**
* Understand how Compound tokens are compounded on 3.Finance.
* Define smart contract requirements for each Compound token. 

Content:

> Definitions
> References
> Journeys:
>> **Curve** Compound Deposit Pool and Emissions
>> **Convex** Compound Deposit Pool and Emissions
>> **Bent** Compound Deposit Pool and Emissions


## Definitions

* An **asset-stack** is a standalone product within 3.Finance. Each asset-stack should be clearly differentiated within the construction of 3.Finance. (Only 1 asset-stack will exist for MVP, that shall be the '**Curve Asset-Stack**')
* The **Curve asset-stack** is made of 3 '**Compound tokens**'. These are: CRV, CVX and BENT. (Plus any derivatives mentioned in the Journeys below)
* **Compound tokens** are tokens that are favoured by 3.Finance. These favoured tokens make the foundation for 3.Finance tokens and NFTs. These tokens will be auto-compounded.
* **Liquid tokens** are tokens that are not favoured by 3.Finance. These unfavroued tokens are used to boost the deposit balance of those Compound tokens.
* **Compound Deposit Pools** or **CDPs** are pools where compound tokens are deposited and auto-compounded. 
* **Liquid Deposit Pools** or **LDPs** are pools where liquid tokens are deposited.
* **Rewards** are tokens received by other protocols that are not yet in the 3.Finance ecosystem.
* **Emissions** are tokens received as rewards for depositing liquidity. Emissions are received by external protocols and are within the 3.Finance ecosystem.
* **Compound Emissions** are tokens received as rewards and are of the format of '**Compound tokens**'.
* **Liquid Emissions** are tokens received as rewards and are of the format of '**Liquid tokens**'.
* **Flagged tokens** are tokens that, when deposited, have impositions applied that prevent or delay withdrawals of the underlying asset. Each of the curve asset-stack tokens also happen to be flagged tokens.
* The **Streaming** contract referrs to the smart contract that receives rewards from external protocols and streams them to wallets with associated deposits within the 3.Finance eco syste, as Emissions on a pro-rata basis over a 7 calander day period. 
* A **Signal** is when a user, during the harvest process; selects a specific direction they wish emissions to be harvested.
* The **Signals** contract referrs to the smart contract that registers how each connected wallet has directed their emissions during their **last** harvest. This **Signal** is then used by other functions when harvesting on behalf of other registered wallets. 
* A **Registered Wallet** is a wallet that has once connected to and transacted on or via the 3.Finance protocol and is therefore, for all intents and purposes: registered with the protocol. 


## References

3.Finance **Asset Flow Map** (https://miro.com/app/board/uXjVPXa0dtg=/?share_link_id=456845024215)

> Special reference to Steps 1-3

3.Finance **Prototype / First deposit** (https://www.figma.com/proto/lVrpND7e5XHDwQyKqGnkcD/3.finance?page-id=1403%3A677828&node-id=1421%3A474240&viewport=25%2C347%2C0.09&scaling=min-zoom&starting-point-node-id=1421%3A474240)

> Special reference to sample first deposit


## Journeys

### The Curve CDP

#### (Curve) Depositing / 1 token / Flagged
1. As a user, I wish to deposit liquidity into the **Curve Compound Deposit Pool** on 3.Finance to compound my Curve position.
2. I select the Curve CDP, to open that pools Action drawer.
3. As I do not yet have a position, the '**Details**' tab is displayed by default. 
4. I select the '**Action**' tab and by default, the first view I get is the '**Zap**' view.
5. As my wallet already contains the compound token: CRV, I select the '**Deposit**' button to get the '**deposit**' view.
6. The '**deposit**' view displays each of the tokens that are accepted by this pool: **CRV**, **sdCRV** and **sdCRV-gauge**. *(**Note:** 3sdCRV is not accepted as these tokens represent existing deposits)*
7. The curve CDP recognises I have CRV in my wallet. As CRV is a flagged token, I am prompted with a warning: the CRV will be permanently converted to sdCRV and that withdrawals of the underlying rely upon secondary markets. **Note:** sdCRV and sdCRV-gauge are not flagged tokens. They are not flagged because they have already undergone the process that otherwise restricts or complicates the underlying assets withdrawal. 
8. I select to confirm the prompt and in doing so, this automatically activates and auto-selects the CRV option within the list of displayed tokens.
9. I enter the amount of CRV I wish to deposit, I select the '**Deposit**' button at the bottom of the page and sign the resulting transaction(s). The following then occurs:

* CRV is withdrawn from the connected wallet and either swapped 1:1 for sdCRV via Stake DAO's Liquid Locker or swapped for sdCRV via the sdCRV/CRV pool on Curve.fi. (Which ever offers the most sdCRV)
    * Here CRV is converted to sdCRV, the balance is staked in the Stake DAO CRV Locker. sdCRV-guage tokens are received. 
    * The sdCRV-guage tokens received from Stake DAO are then deposited in the Curve CDP on 3.Finance.
    * The connected wallet receives 3sdCRV LP tokens. 

**Note:**
- My wallet 3sdCRV balance will be reflected on the UI as CRV and be equal to the equivalent number of controlled (underlying) CRV.
- CRV, sdCRV, sdCRV-guage or 3sdCRV deposits are subject to a lock-up period. Withdrawals will not be possible until this lock-up period has elapsed.

#### (Curve) Depositing / 1 token / Unflagged
1. I return to the Curve C.D.P and select it. It's Action drawer opens. 
2. As I now have a position in the pool, the '**Actions**' tab is displayed by default.
3. My wallet now contains the compound tokens: sdCRV or sdCRV-guage.
4. I select the compound token from the list of accepted tokens.
5. I select '**Max**' to deposit the full balance from my connected wallet. 
6. I then select the '**Deposit**' button at the bottom of the page and sign the resulting transaction(s). The following then occurs:

* If sdCRV was selected: 
    * sdCRV will be moved from the connected wallet and deposited into Stake DAO's CRV locker to retrieve sdCRV-guage tokens. 
    * The sdCRV-guage tokens will in turn be deposited into the Curve C.D.P on 3.Finance and;
    * The connected wallet will receive 3sdCRV LP tokens.

* If sdCRV-guage was selected: 
    * sdCRV-guage tokens will be moved from the connected wallet and be immediately deposited into the Curve C.D.P on 3.Finance and;
    * The connected wallet will receive 3sdCRV LP tokens.

**Note:**
- CRV, sdCRV or sdCRV-guage deposits are subject to a lock-up period. Withdrawals will not be possible until this lock-up period has elapsed.

#### (Curve) Depositing / 2 or more tokens / Flagged
1. I return to the Curve C.D.P and select it. It's Action drawer opens. 
2. As I now have a position in the pool, the '**Actions**' tab is displayed by default.
3. My wallet now contains the compound tokens: CRV, sdCRV and/or sdCRV-guage.
4. The '**Deposit**' view displays each of the tokens that are accepted by this pool: CRV, sdCRV and sdCRV-gauge.
5. The curve CDP recognises I have CRV in my wallet. As CRV is a flagged token, I am prompted with a warning: the CRV will be permanently converted to sdCRV and that withdrawals of the underlying rely upon secondary markets. **Note:** sdCRV and sdCRV-gauge are not flagged tokens. They are not flagged because they have already undergone the process that otherwise restricts the underlying assets withdrawal. 
6. I select to confirm the prompt and doing so automatically activates and selects the CRV option within the list of displayed tokens.
7. I continue to select each of the compound tokens from the list of accepted tokens.
8. Upon selecting the second token, the UI updates and removes the '**amount entry field**' and replaces it with a prompt stating that when depositing 2 or more tokens, the full balance of each token will be deposited and if this was not acceptable, each token should be deposited separately.
6. Agreeing to this prompt, I select the '**Deposit**' button at the bottom of the page and sign the resulting transaction(s). The following then occurs:

* If CRV was selected: 
    * CRV will be converted to sdCRV by means of either a 1:1 swap on Stake DAO or swapping via the sdCRV/CRV pool on Curve.fi, which ever yields the greatest number of sdCRV. 
    * The sdCRV will then be deposited into the Stake DAO CRV locker to retrieve sdCRV-guage tokens.
    * The sdCRV-guage tokens will in turn be deposited into the Curve C.D.P on 3.Finance and;
    * The connected wallet will receive 3sdCRV LP tokens.

* If sdCRV was selected: 
    * sdCRV will be moved from the connected wallet and deposited into Stake DAO's CRV locker to retrieve sdCRV-guage tokens. 
    * The sdCRV-guage tokens will in turn be deposited into the Curve C.D.P on 3.Finance and;
    * The connected wallet will receive 3sdCRV LP tokens.

* If sdCRV-guage was selected: 
    * sdCRV-guage tokens will be immediately deposited into the Curve C.D.P on 3.Finance and;
    * The connected wallet will receive 3sdCRV LP tokens.

**Note:**
- CRV, sdCRV and sdCRV-guage deposits are subject to a lock-up period. Withdrawals will not be possible until this lock-up period has elapsed.

#### (Curve) Depositing / 2 or more tokens / Unflagged
1. I return to the Curve C.D.P and select it. It's Action drawer opens. 
2. As I now have a position in the pool, the '**Actions**' tab is displayed by default.
3. My wallet now contains each of the compound tokens: sdCRV and/or sdCRV-guage.
4. I select each of the compound token from the list of accepted tokens.
5. Upon selecting the second token, the UI updates and removes the '**amount entry field**' and replaces it with a prompt stating that when depositing 2 or more tokens, the full balance of each token will be deposited and if this was not acceptable, each token should be deposited separately.
6. Agreeing to this prompt, I select the '**Deposit**' button at the bottom of the page and sign the resulting transaction(s). The following then occurs:

* If sdCRV was selected: 
    * sdCRV will be moved from the connected wallet and deposited into Stake DAO's CRV locker to retrieve sdCRV-guage tokens. 
    * The sdCRV-guage tokens will in turn be deposited into the Curve C.D.P on 3.Finance and;
    * The connected wallet will receive 3sdCRV LP tokens.

* If sdCRV-guage was selected: 
    * sdCRV-guage tokens will be immediately deposited into the Curve C.D.P on 3.Finance and;
    * The connected wallet will receive 3sdCRV LP tokens.

**Note:** 
- CRV, sdCRV and sdCRV-guage deposits are subject to a lock-up period. Withdrawals will not be possible until this lock-up period has elapsed.

#### Withdrawing: Curve C.D.P LP tokens
1. I return to the Curve C.D.P and select it. It's Action drawer opens. 
2. As I now have a position in the pool, the '**Actions**' tab is displayed by default.
3. I select the '**Withdraw**' tab and the UI updates to refelct withdrawal options.
4. The withdrawal options allow me to withdraw my Curve CDP positions in the following formats: sdCRV-guage, sdCRV or CRV.
5. The estimated balances I would receive are displayed adjacent to each format.
6. The format with the highest balance will have a prompt in the form of the copy: '**Best**' along with a '**Flag**' icon reflected against it. 
7. The format with the lowest balance will be muted in colour.
8. I am only allowed to select one option. 
9. I select an option and a '**amount entry field**' is revealed.
10. I enter a desired amount and proceed to select the '**Withdraw**' button and sign the subsequent transaction. The following then occurs:

* If sdCRV-guage is selected:
    * 3sdCRV LP tokens will be moved from the connected wallet and burned to release sdCRV-guage tokens.
    * The connected wallet receives these sdCRV-guage tokens. 

* If sdCRV is selected:
    * 3sdCRV LP tokens will be moved from the connected wallet and burned to release sdCRV-guage tokens.
    * sdCRV gauge tokens are used to unstake sdCRV from the Stake DAO CRV Locker.
    * The connected wallet receives these sdCRV tokens.

* If CRV is selected:
    * 3sdCRV LP tokens will be moved from the connected wallet and burned to release sdCRV-guage tokens.
    * sdCRV gauge tokens are used to unstake sdCRV from the Stake DAO CRV Locker. sdCRV is received.
    * sdCRV is then swapped for CRV via the sdCRV/CRV pool on Curve.fi.
    * The connected wallet receives the resulting CRV balance.

#### Harvesting: CRV, sdCRV or sdCRV-guage tokens.
**Note:** For all intents and purposes, the aforementioned tokens in the title above are considered the same as they are each reflected within the same group: '**Curve Emissions**' and so the balance reflected in the UI will be the sum of each token.
1. As a user, I navigate to the '**Emissions**' space and am presented with a list of each emisssion (token) I have accrued as rewards from my deposits. Emissions are itemised within groups. Compound and Liquid groups. 
2. I see I have accrued tokens within '**Curve**' emissions.
3. I select the '**Curve**' emissions card to reveal its Action drawer.
4. As I have an accrued balance of Curve emissions, the '**Action**' tab is selected by default.
5. As the 'Action' tab is selected, the '**Harvest**' tab within actions is selected by default. (A '**Claim**' tab is also visible)
6. I choose to harvest my Curve emissions. Scanning my options, I see that there are two directions I can push my emisssions. These are: 
    * The Curve CDP or
    * The 3Fi Collateral Wallet
7. If the 3Fi Collateral Wallet is disabled, this is because I do not yet have any 3Fi tokens associated with my connected wallet. (As 3Fi tokens or within 3Fi NFTs) I then proceed to select the '**Harvest**' button and sign the subsequent transaction. The following then occurs:
    * As I do not have any 3Fi tokens associated with my connected wallet, I am only able to harvest from the 3.Finance '**Streaming**' contract (See definitions for details), in the following manner:
        * The CRV, sdCRV and/or sdCRV-gauge tokens accrued by my connected wallet ONLY are deposited into the Curve C.D.P and undergo the processes described in those above relevant sections of this document.
        * If this is my first harvest, my '**Signal**' is recorded on the '**Signals contract'**. (See definitions for details)
        * If this is not my first harvest but the **Signal** I have selected does not differ from the **Signal** during my last harvest, no updates are made to the **Signals contract**. 
8. If the 3Fi Collateral Wallet is enabled, this is because I have 3Fi tokens associated with my connected wallet. (As 3Fi tokens or within 3Fi NFTs) I then proceed to select to direct my Curve emissions towards the 3Fi Collateral Wallet, then the '**Harvest**' button and sign the subsequent transaction. The following then occurs:
    * As I have 3Fi tokens associated with my connected wallet but I do not have a MolAi NFT associated with my connected wallet, I am only able to harvest from the 3.Finance '**Streaming**' contract (See definitions for details), in the following manner:
        * If I do not change the direction signalled in my last harvest, then:
            * The CRV, sdCRV and/or sdCRV-gauge tokens accrued by my connected wallet AND all connected wallets signaling the same are deposited into the Curve C.D.P and undergo the processes described in those above relevant sections of this document.
            * LP positions of each wallet associated to the Curve CDP will be updated to reflect the emissions received and deposited by this action. 
        * If this is my first harvest OR I change the direction signalled in my last harvest, then:
            * The CRV, sdCRV and/or sdCRV-gauge tokens accrued by my connected wallet ONLY are deposited into the Curve C.D.P and undergo the processes described in those above relevant sections of this document.
            * My directed (if my first harvest) or updated (if changed from last harvest) '**Signal**' is recorded on the '**Signals contract'**. (See definitions for details)
    * As I have 3Fi tokens associated with my connected wallet AND I have a MolAi NFT associated with my connected wallet, I am only able to harvest from the 3.Finance '**Streaming**' contract (See definitions for details), in the following manner:
        * If I do not change the direction signalled in my last harvest, then:
            * All rewards accrued by 3.Finance on Stake DAO are claimed and each token received is added to the '**Streaming contract**' applicable for each token received.
            * A 1% fee is applied to each of the tokens received.
            * A percentage of the fee will be directed to the connected wallet performing the Harvest. (% to be initially specified by SirConrad and editable in the future by the community)
            * A percentage of the fee will be directed to the designated 3.Finance treasury wallet. (% to be initially specified by SirConrad and editable in the future by the community)
            * Then; the CRV, sdCRV and/or sdCRV-gauge tokens accrued by my connected wallet AND all connected wallets signaling the same are deposited into the Curve C.D.P and undergo the processes described in those above relevant sections of this document.
            * LP positions of each wallet associated to the Curve CDP will be updated to reflect the emissions received and deposited by this action. 
        * If this is my first harvest OR I change the direction signalled in my last harvest, then:
            * The CRV, sdCRV and/or sdCRV-gauge tokens accrued by my connected wallet ONLY are deposited into the Curve C.D.P and undergo the processes described in those above relevant sections of this document.
            * My directed (if my first harvest) or updated (if changed from last harvest) '**Signal**' is recorded on the '**Signals contract'**. (See definitions for details)

> **Question**: Will gas be effected by those users harvesting the '**Streaming contract**' on behalf of all other associated wallets? Or is this transaction likely to incur the same gas cost as if harvesting for one's own wallet?

#### Claiming: Curve Emissions
**Note:** For all intents and purposes, the aforementioned tokens in the title above are considered the same as they are each reflected within the same group: 'Curve Emissions' and so the balance reflected in the UI will be the sum of each token.
1. As a user, I navigate to the '**Emissions**' space and am presented with a list of each emisssion (token) I have accrued as rewards from my deposits. Emissions are itemised within groups. Compound and Liquid groups. 
2. I see I have accrued tokens within '**Curve**' emissions.
3. I select the '**Curve**' emissions card to reveal its Action drawer.
4. As I have an accrued balance of Curve emissions, the '**Action**' tab is selected by default.
5. As the 'Action' tab is selected, the '**Harvest**' tab within actions is selected by default. (A '**Claim**' tab is also visible at this livel)
6. I choose to select the '**Claim**' tab. The drawer UI updates.
7. I read within the '**Claim**' drawer that as the selected emission is a '**Compound token**', I am unable to claim it. That, if I wish to withdraw a compound token, I must do so from the '**Deposits**' space. I then have two options:
    * Navigate to the Deposits / Withdraw via a link provided, or
    * Navigate to Harvest from within the active and current drawer.


### The Convex CDP

#### (Convex) Depositing / 1 token / Flagged
1. As a user, I wish to deposit liquidity into the **Convex Compound Deposit Pool** on 3.Finance to compound my Convex position.
2. I select the Convex CDP, to open that pools Action drawer.
3. As I do not yet have a position, the '**Details**' tab is displayed by default. 
4. I select the '**Action**' tab and by default, the first view I get is the '**Zap**' view.
5. As my wallet already contains the compound token: CVX, I select the '**Deposit**' button to get the '**deposit**' view.
6. The '**deposit**' view displays each of the tokens that are accepted by this pool: **CVX** and **vlBCVX**. *(**Note:** 3vlBCVX is not accepted as these tokens represent existing deposits)*
7. The convex CDP recognises I have CVX in my wallet. As CVX is a flagged token, I am prompted with a warning: the CVX will be permanently converted to vlBCVX and that withdrawals of the underlying rely upon secondary markets. **Note:** vlBCVX and 3vlBCVX are not flagged tokens. They are not flagged because they have already undergone the process that otherwise restricts or complicates the underlying assets withdrawal. 
8. I select to confirm the prompt and in doing so, this automatically activates and auto-selects the CVX option within the list of displayed tokens.
9. I enter the amount of CVX I wish to deposit, I select the '**Deposit**' button at the bottom of the page and sign the resulting transaction(s). The following then occurs:
10. CVX is withdrawn from the connected wallet and either swapped 1:1 for vlBCVX via Bent Finance's converter or swapped for vlBCVX via the vlBCVX/CVX pool on Curve.fi. (Which ever offers the most vlBCVX)
11. Now CVX is converted to vlBCVX, the balance is staked in the Single Sided vlBCVX pool on BentFinance.com. vlBCVX LP tokens are received. 
12. The vlBCVX tokens received from Bent Finance are then deposited in the Convex CDP on 3.Finance.
13. The connected wallet receives 3vlBCVX LP tokens.

**Note:**
- My wallet 3vlBCVX balance will be reflected on the UI as CVX and be equal to the equivalent number of controlled (underlying) CVX.

#### (Convex) Depositing / 1 token / Unflagged
1. I return to the Convex C.D.P and select it. It's Action drawer opens. 
2. As I now have a position in the pool, the '**Actions**' tab is displayed by default.
3. My wallet now contains the compound token: vlBCVX.
4. I select the compound token from the list of accepted tokens.
5. I select '**Max**' to deposit the full balance from my connected wallet. 
6. I then select the '**Deposit**' button at the bottom of the page and sign the resulting transaction(s). The following then occurs:
* If vlBCVX was selected: these will be deposited into the Single Sided vlBCVX pool on BentFinance.com. vlBCVX LP tokens will be received.
    * The vlBCVX LP tokens will in turn be deposited into the Convex C.D.P on 3.Finance and
    * The connected wallet will receive 3vlBCVX LP tokens.


#### (Convex) Depositing / 2 or more tokens / Flagged
1. I return to the Convex C.D.P and select it. It's Action drawer opens. 
2. As I now have a position in the pool, the '**Actions**' tab is displayed by default.
3. My wallet now contains the compound tokens: CVX and/or vlBCVX.
4. The '**Deposit**' view displays each of the tokens that are accepted by this pool: CVX and vlBCVX.
5. The Convex CDP recognises I have CVX in my wallet. As CVX is a flagged token, I am prompted with a warning: the CVX will be permanently converted to vlBCVX and that withdrawals of the underlying rely upon secondary markets. **Note:** vlBCVX is not a  flagged tokens. It is not flagged because it has already undergone the process that otherwise restricts the underlying assets withdrawal. 
6. I select to confirm the prompt and doing so automatically activates and selects the CVX option within the list of displayed tokens.
7. I continue to select each of the compound tokens from the list of accepted tokens.
8. Upon selecting the second token, the UI updates and removes the '**amount entry field**' and replaces it with a prompt stating that when depositing 2 or more tokens, the full balance of each token will be deposited and if this was not acceptable, each token should be deposited separately.
6. Agreeing to this prompt, I select the '**Deposit**' button at the bottom of the page and sign the resulting transaction(s). The following then occurs:
* If CVX was selected: these will be converted to vlBCVX by means of either a 1:1 swap on Bent Finance or swapping via the vlBCVX/CVX pool on Curve.fi, which ever yields the greatest number of vlBCVX. 
    * The vlBCVX will then be deposited into the Single Sided pool on BentFinance.com to retrieve vlBCVX LP tokens.
    * The vlBCVX LP tokens will in turn be deposited into the Convex C.D.P on 3.Finance and
    * The connected wallet will receive 3vlBCVX LP tokens.
* If vlBCVX was selected: these will be deposited into the Single Sided pool on BentFinance.com to retrieve vlBCVX LP tokens. 
    * The vlBCVX LP tokens will in turn be deposited into the Convex C.D.P on 3.Finance and
    * The connected wallet will receive 3vlBCVX LP tokens.

**Note:**
- vlBCVX or vlBCVX LP tokens are to be treated as the same within the UI. If the user has one or both vlBCVX and vlBCVX LP tokens, their balances are to be combined. vlBCVX is first to be staked as described above and then together with the LP balance, deposited into 3.Finance as described above. 

#### (Convex) Depositing / 2 or more tokens / Unflagged
This is not posible because there are only 2 accepted tokens in the list: CVX and vlBCVX. Therefore, refer to either of the following two sections for details:

* (Convex) Depositing / 2 or more tokens / Flagged or
* (Convex) Depositing / 1 token / Unflagged

#### Withdrawing: Convex C.D.P LP tokens
1. I return to the Convex C.D.P and select it. It's Action drawer opens. 
2. As I now have a position in the pool, the '**Actions**' tab is displayed by default.
3. I select the '**Withdraw**' tab and the UI updates to refelct withdrawal options.
4. The withdrawal options allow me to withdraw my Convex CDP positions in the following formats: vlBCVX or CVX.
5. The estimated balances I would receive are displayed adjacent to each format.
6. The format with the highest balance will have a prompt in the form of the copy: '**Best**' along with a '**Flag**' icon reflected against it. 
7. The format with the lowest balance will be muted in colour.
8. I am only allowed to select one option. 
9. I select an option and a '**amount entry field**' is revealed.
10. I enter a desired amount and proceed to select the '**Withdraw**' button and sign the subsequent transaction. The following then occurs:

* If vlBCVX is selected:
    * 3vlBCVX LP tokens will be moved from the connected wallet and burned to release vlBCVX tokens.
    * The connected wallet receives these vlBCVX tokens.

* If CVX is selected:
    * 3vlBCVX LP tokens will be moved from the connected wallet and burned to release vlBCVX (LP) tokens.
    * vlBCVX (LP) tokens are used to unstake vlBCVX from the Single Sided vlBCVX pool on BentFinance.com. vlBCVX is received.
    * vlBCVX is then swapped for CVX via the vlBCVX/CVX pool on Curve.fi.
    * The connected wallet receives the resulting CVX balance.

#### Harvesting: CVX or vlBCVX tokens.
**Note:** For all intents and purposes, the aforementioned tokens in the title above are considered the same as they are each reflected within the same group: '**Convex Emissions**' and so the balance reflected in the UI will be the sum of each token.
1. As a user, I navigate to the '**Emissions**' space and am presented with a list of each emisssion (token) I have accrued as rewards from my deposits. Emissions are itemised within groups. Compound and Liquid groups. 
2. I see I have accrued tokens within '**Convex**' emissions.
3. I select the '**Convex**' emissions card to reveal its Action drawer.
4. As I have an accrued balance of Convex emissions, the '**Action**' tab is selected by default.
5. As the 'Action' tab is selected, the '**Harvest**' tab within actions is selected by default. (A '**Claim**' tab is also visible at this livel)
6. I choose to harvest my Convex emissions. Scanning my options, I see that there is only one directions I can push my emisssions. This is: 
    * The Convex CDP.
7. If I do not yet have any 3Fi tokens associated with my connected wallet. (As 3Fi tokens or within 3Fi NFTs) I then proceed to select the '**Harvest**' button and sign the subsequent transaction. The following then occurs:
    * As I do not have any 3Fi tokens associated with my connected wallet, I am only able to harvest from the 3.Finance '**Streaming**' contract (See definitions for details), in the following manner:
        * The CVX and/or vlBCVX tokens accrued by my connected wallet ONLY are deposited into the Convex C.D.P and undergo the processes described in those above relevant sections of this document.
        * If this is my first harvest, my '**Signal**' is recorded on the '**Signals contract'**. (See definitions for details)
        * If this is not my first harvest but the **Signal** I have selected does not differ from the **Signal** during my last harvest, no updates are made to the **Signals contract**. 
8. If I have 3Fi tokens associated with my connected wallet. (As 3Fi tokens or within 3Fi NFTs) I then proceed to select the '**Harvest**' button and sign the subsequent transaction. The following then occurs::
    * As I have 3Fi tokens associated with my connected wallet but I do not have a MolAi NFT associated with my connected wallet, I am only able to harvest from the 3.Finance '**Streaming**' contract (See definitions for details), in the following manner:
        * If I do not change the direction signalled in my last harvest, then:
            * The CVX and/or vlBCVX tokens accrued by my connected wallet AND all connected wallets signaling the same are deposited into the Convex C.D.P and undergo the processes described in those above relevant sections of this document.
            * LP positions of each wallet associated to the Convex CDP will be updated to reflect the emissions received and deposited by this action. 
        * If this is my first harvest OR I change the direction signalled in my last harvest, then:
            * The CVX and/or vlBCVX tokens accrued by my connected wallet ONLY are deposited into the Convex C.D.P and undergo the processes described in those above relevant sections of this document.
            * My directed (if my first harvest) or updated (if changed from last harvest) '**Signal**' is recorded on the '**Signals contract'**. (See definitions for details)
    * As I have 3Fi tokens associated with my connected wallet AND I have a MolAi NFT associated with my connected wallet, I am only able to harvest from the 3.Finance '**Streaming**' contract (See definitions for details), in the following manner:
        * If I do not change the direction signalled in my last harvest, then:
            * All rewards accrued by 3.Finance on Bent Finance are claimed and each token received is added to the '**Streaming contract**' applicable for each token received.
            * A 1% fee is applied to each of the tokens received.
            * A percentage of the fee will be directed to the connected wallet performing the Harvest. (% to be initially specified by SirConrad and editable in the future by the community)
            * A percentage of the fee will be directed to the designated 3.Finance treasury wallet. (% to be initially specified by SirConrad and editable in the future by the community)
            * Then; the CVX and/or vlBCVX tokens accrued by my connected wallet AND all connected wallets signaling the same are deposited into the Convex C.D.P and undergo the processes described in those above relevant sections of this document.
            * LP positions of each wallet associated to the Convex CDP will be updated to reflect the emissions received and deposited by this action. 
        * If this is my first harvest OR I change the direction signalled in my last harvest, then:
            * The CVX and/or vlBCVX tokens accrued by my connected wallet ONLY are deposited into the Convex C.D.P and undergo the processes described in those above relevant sections of this document.
            * My directed (if my first harvest) or updated (if changed from last harvest) '**Signal**' is recorded on the '**Signals contract'**. (See definitions for details)

> **Question**: Will gas be effected by those users harvesting the '**Streaming contract**' on behalf of all other associated wallets? Or is this transaction likely to incur the same gas cost as if harvesting for one's own wallet?

#### Claiming: Convex Emissions
**Note:** For all intents and purposes, the aforementioned tokens in the title above are considered the same as they are each reflected within the same group: 'Convex Emissions' and so the balance reflected in the UI will be the sum of each token.
1. As a user, I navigate to the '**Emissions**' space and am presented with a list of each emisssion (token) I have accrued as rewards from my deposits. Emissions are itemised within groups. Compound and Liquid groups. 
2. I see I have accrued tokens within '**Convex**' emissions.
3. I select the '**Convex**' emissions card to reveal its Action drawer.
4. As I have an accrued balance of Convex emissions, the '**Action**' tab is selected by default.
5. As the 'Action' tab is selected, the '**Harvest**' tab within actions is selected by default. (A '**Claim**' tab is also visible at this livel)
6. I choose to select the '**Claim**' tab. The drawer UI updates.
7. I read within the '**Claim**' drawer that as the selected emission is a '**Compound token**', I am unable to claim it. That, if I wish to withdraw a compound token, I must do so from the '**Deposits**' space. I then have two options:
    * Navigate to the Deposits / Withdraw via a link provided, or
    * Navigate to Harvest from within the active and current drawer.


### The Bent CDP

#### (Bent) Depositing / 1 token / Flagged
1. As a user, I wish to deposit liquidity into the **Bent Compound Deposit Pool** on 3.Finance to compound my Bent position.
2. I select the Bent CDP, to open that pools Action drawer.
3. As I do not yet have a position, the '**Details**' tab is displayed by default. 
4. I select the '**Action**' tab and by default, the first view I get is the '**Zap**' view.
5. As my wallet already contains the compound token: BENT, I select the '**Deposit**' button to get the '**deposit**' view.
6. The '**deposit**' view displays each of the tokens that are accepted by this pool: **BENT** and **vlBENT**. *(**Note:** 3vlBENT is not accepted as these tokens represent existing deposits)*
7. The Bent CDP recognises I have BENT in my wallet. As BENT is a flagged token, I am prompted with a warning: the BENT will be locked for a period of time as vlBENT. **Note:** vlBENT is not a flagged token. It is not flagged because it has already undergone the process that otherwise restricts or complicates the underlying assets withdrawal. 
8. I select to confirm the prompt and in doing so, this automatically activates and auto-selects the BENT option within the list of displayed tokens.
9. I enter the amount of BENT I wish to deposit, I select the '**Deposit**' button at the bottom of the page and sign the resulting transaction(s). The following then occurs:
10. BENT is withdrawn from the connected wallet and deposited into the locker on BentFinance.com.
11. Here BENT is converted to vlBENT and the vlBENT (LP) tokens are received. 
12. The vlBENT tokens received from Bent Finance are then deposited in the Bent CDP on 3.Finance.
13. The connected wallet receives 3vlBENT LP tokens.

**Note:**
- My wallet 3vlBENT balance will be reflected on the UI as BENT and be equal to the equivalent number of controlled (underlying) BENT.
- BENT, vlBENT and 3vlBENT deposits are subject to a lock-up period. Withdrawals will not be possible until this lock-up period has elapsed.

#### (Bent) Depositing / 1 token / Unflagged
1. I return to the Bent C.D.P and select it. It's Action drawer opens. 
2. As I now have a position in the pool, the '**Actions**' tab is displayed by default.
3. My wallet now contains the compound token: vlBENT.
4. I select the compound token from the list of accepted tokens.
5. I select '**Max**' to deposit the full balance from my connected wallet. 
6. I then select the '**Deposit**' button at the bottom of the page and sign the resulting transaction(s). The following then occurs:
* If vlBENT was selected: these will be deposited into the Bent C.D.P on 3.Finance and
* The connected wallet will receive 3vlBENT LP tokens.


#### (Bent) Depositing / 2 or more tiens / Flagged
1. I return to the Bent C.D.P and select it. It's Action drawer opens. 
2. As I now have a position in the pool, the '**Actions**' tab is displayed by default.
3. My wallet now contains the compound tokens: BENT and/or vlBENT.
4. The '**Deposit**' view displays each of the tokens that are accepted by this pool: BENT and vlBENT.
5. The Bent CDP recognises I have BENT in my wallet. As BENT is a flagged token, I am prompted with a warning: the BENT will be locked for a period of time as vlBENT. **Note:** vlBENT is not a  flagged tokens. It is not flagged because it has already undergone the process that otherwise restricts the underlying assets withdrawal. 
6. I select to confirm the prompt and doing so automatically activates and selects the BENT option within the list of displayed tokens.
7. I continue to select each of the compound tokens from the list of accepted tokens.
8. Upon selecting the second token, the UI updates and removes the '**amount entry field**' and replaces it with a prompt stating that when depositing 2 or more tokens, the full balance of each token will be deposited and if this was not acceptable, each token should be deposited separately.
6. Agreeing to this prompt, I select the '**Deposit**' button at the bottom of the page and sign the resulting transaction(s). The following then occurs:
    * BENT is withdrawn from the connected wallet and deposited into the locker on BentFinance.com.
    * Here BENT is converted to vlBENT and the vlBENT (LP) tokens are received. 
    * The vlBENT tokens received from Bent Finance are then deposited in the Bent CDP on 3.Finance.
    * The connected wallet receives 3vlBENT LP tokens.

**Note:**
- BENT and vlBENT deposits are subject to a lock-up period. Withdrawals will not be possible until this lock-up period has elapsed.

#### (Bent) Depositing / 2 or more tokens / Unflagged
This is not posible because there are only 2 accepted tokens in the list: BENT and vlBENT. Therefore, refer to either of the following two sections for details:

* (Bent) Depositing / 2 or more tokens / Flagged or
* (Bent) Depositing / 1 token / Unflagged

#### Withdrawing: Bent C.D.P LP tokens
1. I return to the Bent C.D.P and select it. It's Action drawer opens. 
2. As I now have a position in the pool, the '**Actions**' tab is displayed by default.
3. I select the '**Withdraw**' tab and the UI updates to refelct withdrawal options.
4. The withdrawal options allow me to withdraw my Bent CDP positions in the following formats: vlBENT or BENT.
5. The estimated balances I would receive are displayed adjacent to each format.
6. The format with the highest balance will have a prompt in the form of the copy: '**Best**' along with a '**Flag**' icon reflected against it. 
7. The format with the lowest balance will be muted in colour.
8. I am only allowed to select one option. 
9. I select an option and a '**amount entry field**' is revealed.
10. I enter a desired amount and proceed to select the '**Withdraw**' button and sign the subsequent transaction. The following then occurs:

* If vlBENT is selected:
    * 3vlBENT LP tokens will be moved from the connected wallet and burned to release vlBENT tokens.
    * The connected wallet receives these vlBENT tokens.

* If BENT is selected:
    * 3vlBENT LP tokens will be moved from the connected wallet and burned to release vlBENT tokens.
    * vlBENT tokens are used to unstake BENT from the Bent Finance BENT locker.
    * The connected wallet receives the resulting BENT balance.

#### Harvesting: BENT or vlBENT tokens.
**Note:** For all intents and purposes, the aforementioned tokens in the title above are considered the same as they are each reflected within the same group: '**Bent Emissions**' and so the balance reflected in the UI will be the sum of each token.
1. As a user, I navigate to the '**Emissions**' space and am presented with a list of each emisssion (token) I have accrued as rewards from my deposits. Emissions are itemised within groups. Compound and Liquid groups. 
2. I see I have accrued tokens within '**Bent**' emissions.
3. I select the '**Bent**' emissions card to reveal its Action drawer.
4. As I have an accrued balance of Bent emissions, the '**Action**' tab is selected by default.
5. As the 'Action' tab is selected, the '**Harvest**' tab within actions is selected by default. (A '**Claim**' tab is also visible at this livel)
6. I choose to harvest my Bent emissions. Scanning my options, I see that there is only one directions I can push my emisssions. This is: 
    * The Bent CDP.
7. If I do not yet have any 3Fi tokens associated with my connected wallet. (As 3Fi tokens or within 3Fi NFTs) I then proceed to select the '**Harvest**' button and sign the subsequent transaction. The following then occurs:
    * As I do not have any 3Fi tokens associated with my connected wallet, I am only able to harvest from the 3.Finance '**Streaming**' contract (See definitions for details), in the following manner:
        * The BENT and/or vlBENT tokens accrued by my connected wallet ONLY are deposited into the Bent C.D.P and undergo the processes described in those above relevant sections of this document.
        * If this is my first harvest, my '**Signal**' is recorded on the '**Signals contract'**. (See definitions for details)
        * If this is not my first harvest but the **Signal** I have selected does not differ from the **Signal** during my last harvest, no updates are made to the **Signals contract**. 
8. If I have 3Fi tokens associated with my connected wallet. (As 3Fi tokens or within 3Fi NFTs) I then proceed to select the '**Harvest**' button and sign the subsequent transaction. The following then occurs::
    * As I have 3Fi tokens associated with my connected wallet but I do not have a MolAi NFT associated with my connected wallet, I am only able to harvest from the 3.Finance '**Streaming**' contract (See definitions for details), in the following manner:
        * If I do not change the direction signalled in my last harvest, then:
            * The BENT and/or vlBENT tokens accrued by my connected wallet AND all connected wallets signaling the same are deposited into the Bent C.D.P and undergo the processes described in those above relevant sections of this document.
            * LP positions of each wallet associated to the Bent CDP will be updated to reflect the emissions received and deposited by this action. 
        * If this is my first harvest OR I change the direction signalled in my last harvest, then:
            * The BENT and/or vlBENT tokens accrued by my connected wallet ONLY are deposited into the Bent C.D.P and undergo the processes described in those above relevant sections of this document.
            * My directed (if my first harvest) or updated (if changed from last harvest) '**Signal**' is recorded on the '**Signals contract'**. (See definitions for details)
    * As I have 3Fi tokens associated with my connected wallet AND I have a MolAi NFT associated with my connected wallet, I am only able to harvest from the 3.Finance '**Streaming**' contract (See definitions for details), in the following manner:
        * If I do not change the direction signalled in my last harvest, then:
            * All rewards accrued by 3.Finance on Bent Finance are claimed and each token received is added to the '**Streaming contract**' applicable for each token received.
            * A 1% fee is applied to each of the tokens received.
            * A percentage of the fee will be directed to the connected wallet performing the Harvest. (% to be initially specified by SirConrad and editable in the future by the community)
            * A percentage of the fee will be directed to the designated 3.Finance treasury wallet. (% to be initially specified by SirConrad and editable in the future by the community)
            * Then; the BENT and/or vlBENT tokens accrued by my connected wallet AND all connected wallets signaling the same are deposited into the Bent C.D.P and undergo the processes described in those above relevant sections of this document.
            * LP positions of each wallet associated to the Bent CDP will be updated to reflect the emissions received and deposited by this action. 
        * If this is my first harvest OR I change the direction signalled in my last harvest, then:
            * The BENT and/or vlBENT tokens accrued by my connected wallet ONLY are deposited into the Bent C.D.P and undergo the processes described in those above relevant sections of this document.
            * My directed (if my first harvest) or updated (if changed from last harvest) '**Signal**' is recorded on the '**Signals contract'**. (See definitions for details)

> **Question**: Will gas be effected by those users harvesting the '**Streaming contract**' on behalf of all other associated wallets? Or is this transaction likely to incur the same gas cost as if harvesting for one's own wallet?

#### Claiming: Bent Emissions
**Note:** For all intents and purposes, the aforementioned tokens in the title above are considered the same as they are each reflected within the same group: 'Bent Emissions' and so the balance reflected in the UI will be the sum of each token.
1. As a user, I navigate to the '**Emissions**' space and am presented with a list of each emisssion (token) I have accrued as rewards from my deposits. Emissions are itemised within groups. Compound and Liquid groups. 
2. I see I have accrued tokens within '**Bent**' emissions.
3. I select the '**Bent**' emissions card to reveal its Action drawer.
4. As I have an accrued balance of Bent emissions, the '**Action**' tab is selected by default.
5. As the 'Action' tab is selected, the '**Harvest**' tab within actions is selected by default. (A '**Claim**' tab is also visible at this livel)
6. I choose to select the '**Claim**' tab. The drawer UI updates.
7. I read within the '**Claim**' drawer that as the selected emission is a '**Compound token**', I am unable to claim it. That, if I wish to withdraw a compound token, I must do so from the '**Deposits**' space. I then have two options:
    * Navigate to the Deposits / Withdraw via a link provided, or
    * Navigate to Harvest from within the active and current drawer.