BaseStrategy

Git Source

Inherits: Initializable, OwnableUpgradeable, ReentrancyGuardUpgradeable

Author: Sperax Foundation

Contract acts as a single interface for implementing specific yield-earning strategies.

State Variables

vault

address public vault;

withdrawSlippage

uint16 public withdrawSlippage;

depositSlippage

uint16 public depositSlippage;

harvestIncentiveRate

assetsMapped

rewardTokenAddress

assetToPToken

gap

Functions

onlyVault

onlyVaultOrOwner

constructor

updateVault

Update the linked vault contract.

Parameters

Name
Type
Description

_newVault

address

Address of the new Vault.

updateHarvestIncentiveRate

Updates the HarvestIncentive rate for the user.

Parameters

Name
Type
Description

_newRate

uint16

new Desired rate.

recoverERC20

A function to recover any erc20 token sent to this strategy mistakenly.

Only callable by owner.

reverts if amount > balance.

Parameters

Name
Type
Description

token

address

Address of the token.

receiver

address

Receiver of the token.

amount

uint256

Amount to be recovered.

deposit

Deposit an amount of asset into the platform.

Parameters

Name
Type
Description

_asset

address

Address for the asset.

_amount

uint256

Units of asset to deposit.

withdraw

Withdraw an amount of asset from the platform.

Parameters

Name
Type
Description

_recipient

address

Address to which the asset should be sent.

_asset

address

Address of the asset.

_amount

uint256

Units of asset to withdraw.

Returns

Name
Type
Description

amountReceived

uint256

The actual amount received.

withdrawToVault

Withdraw an amount of asset from the platform to vault.

Parameters

Name
Type
Description

_asset

address

Address of the asset.

_amount

uint256

Units of asset to withdraw.

collectInterest

Withdraw the interest earned of asset from the platform.

Parameters

Name
Type
Description

_asset

address

Address of the asset.

collectReward

Collect accumulated reward token and send to Vault.

checkBalance

Get the amount of a specific asset held in the strategy, excluding the interest.

Curve: assuming balanced withdrawal.

Parameters

Name
Type
Description

_asset

address

Address of the asset.

Returns

Name
Type
Description

uint256

uint256 Balance of _asset in the strategy.

checkAvailableBalance

Get the amount of a specific asset held in the strategy, excluding the interest and any locked liquidity that is not available for instant withdrawal.

Curve: assuming balanced withdrawal.

Parameters

Name
Type
Description

_asset

address

Address of the asset.

Returns

Name
Type
Description

uint256

uint256 Available balance inside the strategy for _asset.

checkInterestEarned

AAVE: Get the interest earned on a specific asset. Curve: Get the total interest earned.

Curve: to avoid double-counting, _asset has to be of index 'entryTokenIndex'.

Parameters

Name
Type
Description

_asset

address

Address of the asset.

Returns

Name
Type
Description

uint256

uint256 Amount of interest earned.

checkRewardEarned

Get the amount of claimable reward.

Returns

Name
Type
Description

RewardData[]

struct array of type RewardData (address token, uint256 amount).

checkLPTokenBalance

Get the total LP token balance for a asset.

Parameters

Name
Type
Description

_asset

address

Address of the asset.

supportsCollateral

Check if an asset/collateral is supported.

Parameters

Name
Type
Description

_asset

address

Address of the asset.

Returns

Name
Type
Description

bool

bool Whether asset is supported.

updateSlippage

Change to a new depositSlippage & withdrawSlippage.

Parameters

Name
Type
Description

_depositSlippage

uint16

Slippage tolerance for allocation.

_withdrawSlippage

uint16

Slippage tolerance for withdrawal.

_initialize

Initialize the base properties of the strategy.

Parameters

Name
Type
Description

_vault

address

Address of the USDs Vault.

_depositSlippage

uint16

Allowed max slippage for Deposit.

_withdrawSlippage

uint16

Allowed max slippage for withdraw.

_setPTokenAddress

Provide support for asset by passing its pToken address. Add to internal mappings and execute the platform specific, abstract method _abstractSetPToken.

Parameters

Name
Type
Description

_asset

address

Address for the asset.

_pToken

address

Address for the corresponding platform token.

_removePTokenAddress

Remove a supported asset by passing its index. This method can only be called by the system owner.

Parameters

Name
Type
Description

_assetIndex

uint256

Index of the asset to be removed.

Returns

Name
Type
Description

asset

address

address which is removed.

_splitAndSendReward

Splits and sends the accumulated rewards to harvestor and yield receiver.

Sends the amount to harvestor as per harvestIncentiveRate and sends the rest to yield receiver.

Parameters

Name
Type
Description

_token

address

Address of the reward token.

_yieldReceiver

address

Address of the yield receiver.

_harvestor

address

Address of the harvestor.

_amount

uint256

to be split and sent.

Returns

Name
Type
Description

uint256

uint256 Harvested amount sent to yield receiver.

_abstractSetPToken

Call the necessary approvals for the underlying strategy.

Parameters

Name
Type
Description

_asset

address

Address of the asset.

_pToken

address

Address of the corresponding receipt token.

Events

VaultUpdated

YieldReceiverUpdated

PTokenAdded

PTokenRemoved

Deposit

Withdrawal

SlippageUpdated

HarvestIncentiveCollected

HarvestIncentiveRateUpdated

InterestCollected

RewardTokenCollected

Errors

CallerNotVault

CallerNotVaultOrOwner

PTokenAlreadySet

InvalidIndex

CollateralNotSupported

InvalidAssetLpPair

CollateralAllocated

Structs

RewardData