FundFlowController: Chainlink Vault Deposits and Unbonding
The FundFlowController manages deposits and withdrawals for Chainlink staking vaults in the OperatorVCS and CommunityVCS. Specifically, it calculates vault deposit/withdrawal order, calculates the current state of accounting across vault groups, and periodically unbonds vaults in the Chainlink staking contract to ensure there are always funds available to withdraw.
View Functions
Section titled âView FunctionsâoperatorVCS
Section titled âoperatorVCSâReturns the address of the Operator VCS
function operatorVCS() public view returns (address)Return Values
Section titled âReturn Valuesâ| Name | Type | Description |
|---|---|---|
| operatorVCS | address | Address of Operator VCS |
communityVCS
Section titled âcommunityVCSâReturns the address of the Community VCS
function communityVCS() public view returns (address)Return Values
Section titled âReturn Valuesâ| Name | Type | Description |
|---|---|---|
| communityVCS | address | Address of Community VCS |
unbondingPeriod
Section titled âunbondingPeriodâReturns the duration of the unbonding period in the Chainlink staking contract
function unbondingPeriod() public view returns (uint64)Return Values
Section titled âReturn Valuesâ| Name | Type | Description |
|---|---|---|
| unbondingPeriod | uint64 | Unbonding period |
claimPeriod
Section titled âclaimPeriodâReturns the duration of the claim period in the Chainlink staking contract
function claimPeriod() public view returns (uint64)Return Values
Section titled âReturn Valuesâ| Name | Type | Description |
|---|---|---|
| claimPeriod | uint64 | Claim period |
numVaultGroups
Section titled ânumVaultGroupsâReturns the total number of vault groups
function numVaultGroups() public view returns (uint64)Return Values
Section titled âReturn Valuesâ| Name | Type | Description |
|---|---|---|
| numVaultGroups | uint64 | Number of vault groups |
curUnbondedVaultGroup
Section titled âcurUnbondedVaultGroupâReturns the index of current unbonded vault group
function curUnbondedVaultGroup() public view returns (uint64)Return Values
Section titled âReturn Valuesâ| Name | Type | Description |
|---|---|---|
| curUnbondedVaultGroup | uint64 | Current unbonded vault group |
timeOfLastUpdateByGroup
Section titled âtimeOfLastUpdateByGroupâReturns the time that a vault group was last unbonded
function timeOfLastUpdateByGroup() public view returns (uint64)Parameters
Section titled âParametersâ| Name | Type | Description |
|---|---|---|
| vaultGroup | uint64 | Index of vault group |
Return Values
Section titled âReturn Valuesâ| Name | Type | Description |
|---|---|---|
| timeOfLastUpdate | uint64 | Time of last update for selected group |
getDepositData
Section titled âgetDepositDataâReturns encoded vault deposit order for each strategy
Return data should be passed to the priority pool when depositing into the staking pool
function getDepositData(uint256 _toDeposit) external view returns (bytes[])Parameters
Section titled âParametersâ| Name | Type | Description |
|---|---|---|
| _toDeposit | uint256 | amount to deposit |
Return Values
Section titled âReturn Valuesâ| Name | Type | Description |
|---|---|---|
| depositData | bytes[] | list of encoded vault deposit data |
getWithdrawalData
Section titled âgetWithdrawalDataâReturns encoded vault withdrawal order for each strategy
Return data should be passed to the priority pool when withdrawing from the staking pool
function getWithdrawalData(uint256 _toWithdraw) external view returns (bytes[])Parameters
Section titled âParametersâ| Name | Type | Description |
|---|---|---|
| _toWithdraw | uint256 | amount to withdraw |
Return Values
Section titled âReturn Valuesâ| Name | Type | Description |
|---|---|---|
| withdrawalData | bytes[] | list of encoded vault withdrawal data |
claimPeriodActive
Section titled âclaimPeriodActiveâReturns whether claim period is active
Funds can only be withdrawn while the claim period is active
function claimPeriodActive() external view returns (bool)Return Values
Section titled âReturn Valuesâ| Name | Type | Description |
|---|---|---|
| isActive | bool | true if claim period is active, false otherwise |
shouldUpdateVaultGroups
Section titled âshouldUpdateVaultGroupsâReturns whether vault groups should be updated.
function shouldUpdateVaultGroups() external view returns (bool)Return Values
Section titled âReturn Valuesâ| Name | Type | Description |
|---|---|---|
| shouldUpdate | bool | true if vault groups should be updated, false otherwise |
Write Functions
Section titled âWrite FunctionsâupdateVaultGroups
Section titled âupdateVaultGroupsâExecutes a vault group update
Re-unbonds all vaults in the current vault group and increments the current vault group
to the next one which will have just entered the claim period
an update is needed once per claim period right after the claim period expires for the
current vault group
function updateVaultGroups() externalupdateOperatorVaultGroupAccounting
Section titled âupdateOperatorVaultGroupAccountingâCalculates and updates totalDepositRoom and totalUnbonded for a list of operator vault groups
Used to correct minor accounting errors that result from the removal or slashing
of operators in the Chainlink staking contract
function updateOperatorVaultGroupAccounting(uint256[] _vaultGroups) externalParameters
Section titled âParametersâ| Name | Type | Description |
|---|---|---|
| _vaultGroups | uint256[] | list of vault groups |
delegateVaults
Section titled âdelegateVaultsâDelegates to an address for a group of vaults.
function delegateVaults(address[] _vaults, address _to, bytes32 _rights, bool _enable) externalParameters
Section titled âParametersâ| Name | Type | Description |
|---|---|---|
| _vaults | address[] | List of vault addresses |
| _to | address | Address to delegate to |
| _rights | bytes32 | Rights to grant |
| _enable | bool | Whether to enable or revoke delegation |
withdrawTokenRewards
Section titled âwithdrawTokenRewardsâWithdraws non-LINK token rewards from a group of vaults.
function withdrawTokenRewards(address[] _vaults, address[] _tokens) externalParameters
Section titled âParametersâ| Name | Type | Description |
|---|---|---|
| _vaults | address[] | List of vault addresses |
| _tokens | address[] | List of tokens to withdraw |
setNonLINKRewardReceiver
Section titled âsetNonLINKRewardReceiverâSets the address of reward receiver for non-LINK vault rewards.
function setNonLINKRewardReceiver(address _nonLINKRewardReceiver) externalParameters
Section titled âParametersâ| Name | Type | Description |
|---|---|---|
| _nonLINKRewardReceiver | address | Address of reward receiver |