Delegatable provides functionality for probity to delegate the VP Token voting power that it holds to price providers in the FTSO system. It also provides functionality for users to claim rewards based on user's balance that is held within the VP asset manager's contract.


Note: Please read FTSO's delegation system to fully understand the delegation process.
Delegatable's main purpose is to delegate the VP token balance that VP asset manager is holding to price provider in FTSO system and allow the users who deposit the tokens to receive a share of the reward received by the FTSO system based on their vault balance.
The voting power is delegation can be set through governance only and can be split among multiple different data provider each getting a percentage of the total vote power held within the contract.
In order for users to claim the reward, the contract needs to first claim reward from FTSO system by calling claimReward, then users will be able to claim reward for each epoch based on their vault balance minus recent deposits. This is because FTSO system works on snapshot system, the deposits for current epoch will not provide reward until the end of next epoch.


External Methods

function claimReward(uint256 epochToEnd)
Allow the contract to claim reward from FTSO reward manager. It'll claim all claimable epochs unless epochToEnd is non zero
function userCollectReward(uint256 epochToEnd)
Allow user to collect reward based on their vault balance minus the recent deposits for the epoch. It'll claim all claimable epochs unless epochToEnd is non zero
function changeDataProviders(address[] providers, uint256[] pcts)
Allow the delegation of vote power to data providers with a specific percentage set for each.
Note: This function can only be called by "gov" address