CurveConvexSynthChef
Inherits: IProtocolSynthChef, Initializable, UUPSUpgradeable, AccessControlUpgradeable, OwnableUpgradeable
A contract for managing interactions with Curve Finance and Convex Finance for yield farming purposes.
This contract provides functionalities to interact with Curve pools, deposit and withdraw LP tokens, harvest rewards, and more.
State Variables
masterChef
Address of the Entangle MasterChef contract.
ADMIN
Role identifier for the admin.
MASTER
Role identifier for the master.
WETH
Address of the Wrapped Ether (WETH) contract.
convexBooster
Address of the Convex booster contract.
pools
Mapping from Entangle internal pool ID to Curve pool details.
isPoolInitialized
Mapping to track if a pool is initialized.
Functions
isPoolExist
Modifier to ensure that the LP token exists.
onlyCompounder
Modifier to restrict function access to the Compounder.
constructor
initialize
Initializes the CurveConvexSynthChef contract with initial parameters.
This function is called during deployment to set up initial configuration.
Parameters
Name | Type | Description |
---|---|---|
|
| The address of the admin role for managing contract administration. |
|
| The address of the Entangle MasterChef contract. |
|
| Array of Entangle internal pool IDs. |
|
| Array of Pool struct data containing Curve pool information. |
_authorizeUpgrade
addPool
Adds a new Curve pool to the contract.
This function can only be called by the admin.
Parameters
Name | Type | Description |
---|---|---|
|
| Entangle internal poolId. |
|
| Information required to communicate with Curve. |
reinvest
Reinvests LP tokens into the farm.
This function can only be called by the Compounder and requires a valid pool ID.
Parameters
Name | Type | Description |
---|---|---|
|
| Entangle internal poolId. |
Returns
Name | Type | Description |
---|---|---|
|
| amountLPs The amount of LP tokens reinvested. |
_optimalDeposit
Calculates the optimal amount of LP tokens to deposit into the farm.
This function computes the deposit amounts for each token in the pool based on the current balances.
Parameters
Name | Type | Description |
---|---|---|
|
| Entangle internal poolId. |
Returns
Name | Type | Description |
---|---|---|
|
| amountLPs The optimal amount of LP tokens to deposit. |
withdraw
Withdraws LP tokens from the farm and removes liquidity.
This function transfers the withdrawn tokens to the recipient address.
Parameters
Name | Type | Description |
---|---|---|
|
| Entangle internal poolId. |
|
| Amount of LP tokens to withdraw. |
|
| Address to receive the withdrawn tokens. |
depositLP
Deposits LP tokens into the farm.
This function can only be called by the MASTER and requires a valid pool ID.
Parameters
Name | Type | Description |
---|---|---|
|
| Entangle internal poolId. |
|
| Amount of LP tokens to deposit. |
withdrawLP
Withdraws LP tokens from the farm and transfers them to the Entangle MasterChef.
This function can only be called by the MASTER and requires a valid pool ID.
Parameters
Name | Type | Description |
---|---|---|
|
| Entangle internal poolId. |
|
| Amount of LP tokens to withdraw. |
harvest
Accrues rewards and transfers them to the Compounder.
This function can only be called by the Compounder and requires a valid pool ID.
Parameters
Name | Type | Description |
---|---|---|
|
| Entangle internal poolId. |
Returns
Name | Type | Description |
---|---|---|
|
| Array of reward tokens transferred. |
|
| Array of reward amounts transferred. |
getTotalLpBalance
Retrieves the total balance of LP tokens on the farm.
This function returns the LP token balance of this contract for a given pool ID.
Parameters
Name | Type | Description |
---|---|---|
|
| Entangle internal poolId. |
Returns
Name | Type | Description |
---|---|---|
|
| Balance of LP tokens of this contract. |
getPoolTokens
Retrieves the addresses of tokens in a pool.
This function returns an array of pool token addresses for a given pool ID.
Parameters
Name | Type | Description |
---|---|---|
|
| Entangle internal poolId. |
Returns
Name | Type | Description |
---|---|---|
|
| Array of pool token addresses. |
lpTokenAddress
Retrieves the LP token address for a given pool ID.
This function returns the address of the LP token for a specified pool ID.
Parameters
Name | Type | Description |
---|---|---|
|
| Entangle internal poolId. |
Returns
Name | Type | Description |
---|---|---|
|
| Address of the LP token. |
getAvailableRewards
Retrieves the available rewards for a given pool ID.
This function returns the amount of rewards available for claiming for a specified pool ID.
Parameters
Name | Type | Description |
---|---|---|
|
| Entangle internal poolId. |
Returns
Name | Type | Description |
---|---|---|
|
| Amount of rewards available. |
getPool
Retrieves the details of a pool for a given pool ID.
This function returns the details of the pool including LP token, convex ID, Curve pool, and Convex reward contract.
Parameters
Name | Type | Description |
---|---|---|
|
| Entangle internal poolId. |
Returns
Name | Type | Description |
---|---|---|
|
| Pool struct containing the details of the pool. |
_ensureAllowance
Ensures that the contract has sufficient allowance to spend tokens.
This function ensures that the contract has the required allowance to spend tokens.
Parameters
Name | Type | Description |
---|---|---|
|
| Address of the token. |
|
| Address of the spender. |
|
| Amount of tokens to spend. |
receive
Errors
CurveConvexSynthChef__E1
PoolId already exists : CurveConvexSynthChef
CurveConvexSynthChef__E2
PoolId doesnot exist : CurveConvexSynthChef
CurveConvexSynthChef__E3
Amount eq 0 : CurveConvexSynthChef
CurveConvexSynthChef__E4
Withdraw unsuc : CurveConvexSynthChef
CurveConvexSynthChef__E5
Pool token balance eq 0 : CurveConvexSynthChef
CurveConvexSynthChef__NotACompounder
Caller is not Entangle's Compounder
Structs
Pool
Struct representing Curve pool details.
Last updated