pol staking contracts
PolygonStrategy: POL Liquid Staking Strategy
PolygonStrategy is a staking strategy that manages multiple PolygonVault contracts by tracking the balance of each and moving tokens in and out of them.
View Functions
Section titled âView FunctionsâReturns the address of the staking token (POL).
function token() public view returns (address)Return Values
Section titled âReturn Valuesâ| Name | Type | Description |
|---|---|---|
| token | address | POL token address |
stakingPool
Section titled âstakingPoolâReturns the address of the staking pool that controls this strategy.
function stakingPool() public view returns (address)Return Values
Section titled âReturn Valuesâ| Name | Type | Description |
|---|---|---|
| stakingPool | address | Staking pool address |
stakeManager
Section titled âstakeManagerâReturns the address of the Polygon stake manager contract.
function stakeManager() public view returns (address)Return Values
Section titled âReturn Valuesâ| Name | Type | Description |
|---|---|---|
| stakeManager | address | Stake manager address |
fundFlowController
Section titled âfundFlowControllerâReturns the address of the fund flow controller contract.
function fundFlowController() public view returns (address)Return Values
Section titled âReturn Valuesâ| Name | Type | Description |
|---|---|---|
| fundFlowController | address | Fund flow controller address |
validatorMEVRewardsPool
Section titled âvalidatorMEVRewardsPoolâReturns the address of the MEV rewards pool contract.
function validatorMEVRewardsPool() public view returns (address)Return Values
Section titled âReturn Valuesâ| Name | Type | Description |
|---|---|---|
| validatorMEVRewardsPool | address | MEV rewards pool address |
validatorMEVRewardsPercentage
Section titled âvalidatorMEVRewardsPercentageâReturns the percentage of MEV rewards validators will receive (basis points).
function validatorMEVRewardsPercentage() public view returns (uint256)Return Values
Section titled âReturn Valuesâ| Name | Type | Description |
|---|---|---|
| validatorMEVRewardsPercentage | uint256 | Validator MEV rewards % |
vaultImplementation
Section titled âvaultImplementationâReturns the address of the vault implementation contract.
function vaultImplementation() public view returns (address)Return Values
Section titled âReturn Valuesâ| Name | Type | Description |
|---|---|---|
| vaultImplementation | address | Vault implementation address |
validatorRemoval
Section titled âvalidatorRemovalâReturns the current validator removal state.
function validatorRemoval() public view returns (bool isActive, uint64 validatorId, uint128 queuedWithdrawals)Return Values
Section titled âReturn Valuesâ| Name | Type | Description |
|---|---|---|
| isActive | bool | If removal is active |
| validatorId | uint64 | Validator ID |
| queuedWithdrawals | uint128 | Queued withdrawals |
totalQueued
Section titled âtotalQueuedâReturns the total number of tokens queued for deposit into vaults.
function totalQueued() public view returns (uint256)Return Values
Section titled âReturn Valuesâ| Name | Type | Description |
|---|---|---|
| totalQueued | uint256 | Total queued tokens |
numVaultsUnbonding
Section titled ânumVaultsUnbondingâReturns the total number of vaults currently unbonding.
function numVaultsUnbonding() public view returns (uint256)Return Values
Section titled âReturn Valuesâ| Name | Type | Description |
|---|---|---|
| numVaultsUnbonding | uint256 | Number of vaults unbonding |
validatorWithdrawalIndex
Section titled âvalidatorWithdrawalIndexâReturns the index of validator to withdraw from on next withdrawal.
function validatorWithdrawalIndex() public view returns (uint256)Return Values
Section titled âReturn Valuesâ| Name | Type | Description |
|---|---|---|
| validatorWithdrawalIndex | uint256 | Validator withdrawal index |
canDeposit
Section titled âcanDepositâReturns the available deposit room for this strategy.
function canDeposit() public view returns (uint256)Return Values
Section titled âReturn Valuesâ| Name | Type | Description |
|---|---|---|
| canDeposit | uint256 | Available deposit room |
canWithdraw
Section titled âcanWithdrawâReturns the available withdrawal room for this strategy.
function canWithdraw() public view returns (uint256)Return Values
Section titled âReturn Valuesâ| Name | Type | Description |
|---|---|---|
| canWithdraw | uint256 | Available withdrawal room |
getTotalDeposits
Section titled âgetTotalDepositsâReturns the total amount of deposits in this strategy.
function getTotalDeposits() public view returns (uint256)Return Values
Section titled âReturn Valuesâ| Name | Type | Description |
|---|---|---|
| totalDeposits | uint256 | Total deposits |
getMaxDeposits
Section titled âgetMaxDepositsâReturns the maximum that can be deposited into this strategy.
function getMaxDeposits() public view returns (uint256)Return Values
Section titled âReturn Valuesâ| Name | Type | Description |
|---|---|---|
| maxDeposits | uint256 | Maximum deposits |
getMinDeposits
Section titled âgetMinDepositsâReturns the minimum that must remain in this strategy.
function getMinDeposits() public view returns (uint256)Return Values
Section titled âReturn Valuesâ| Name | Type | Description |
|---|---|---|
| minDeposits | uint256 | Minimum deposits |
getValidators
Section titled âgetValidatorsâReturns a list of all validators.
function getValidators() external view returns (Validator[] memory)Return Values
Section titled âReturn Valuesâ| Name | Type | Description |
|---|---|---|
| validators | Validator[] | List of validators |
getVaults
Section titled âgetVaultsâReturns a list of all vaults controlled by this contract.
function getVaults() external view returns (IPolygonVault[] memory)Return Values
Section titled âReturn Valuesâ| Name | Type | Description |
|---|---|---|
| vaults | IPolygonVault[] | List of vaults |
getDepositChange
Section titled âgetDepositChangeâReturns the deposit change since deposits were last updated.
function getDepositChange() public view returns (int)Return Values
Section titled âReturn Valuesâ| Name | Type | Description |
|---|---|---|
| depositChange | int | Change in total deposits |
getFees
Section titled âgetFeesâReturns a list of all fees and fee receivers.
function getFees() external view returns (Fee[] memory)Return Values
Section titled âReturn Valuesâ| Name | Type | Description |
|---|---|---|
| fees | Fee[] | List of fees |
Returns whether an account should receive validator rewards (used by the validator MEV rewards pool).
function staked(address _account) public view returns (uint256)Parameters
Section titled âParametersâ| Name | Type | Description |
|---|---|---|
| _account | address | Account address |
Return Values
Section titled âReturn Valuesâ| Name | Type | Description |
|---|---|---|
| staked | uint256 | 1 if eligible, 0 otherwise |
totalStaked
Section titled âtotalStakedâReturns the total number of active validators (used by the validator MEV rewards pool).
function totalStaked() public view returns (uint256)Return Values
Section titled âReturn Valuesâ| Name | Type | Description |
|---|---|---|
| totalStaked | uint256 | Number of validators |
Write Functions
Section titled âWrite Functionsâdeposit
Section titled âdepositâDeposits tokens from the staking pool into this strategy.
function deposit(uint256 _amount, bytes calldata) externalParameters
Section titled âParametersâ| Name | Type | Description |
|---|---|---|
| _amount | uint256 | Amount to deposit |
withdraw
Section titled âwithdrawâWithdraws tokens from this strategy and sends them to staking pool.
function withdraw(uint256 _amount, bytes calldata) externalParameters
Section titled âParametersâ| Name | Type | Description |
|---|---|---|
| _amount | uint256 | Amount to withdraw |
depositQueuedTokens
Section titled âdepositQueuedTokensâDeposits queued tokens into vaults.
function depositQueuedTokens(uint256[] calldata _vaultIds, uint256[] calldata _amounts) externalParameters
Section titled âParametersâ| Name | Type | Description |
|---|---|---|
| _vaultIds | uint256[] | List of vault IDs |
| _amounts | uint256[] | Amounts to deposit per vault |
Unbonds token deposits in vaults.
function unbond(uint256 _toUnbond) externalParameters
Section titled âParametersâ| Name | Type | Description |
|---|---|---|
| _toUnbond | uint256 | Amount to unbond |
forceUnbond
Section titled âforceUnbondâUnbonds token deposits in vaults (used to rebalance between vaults).
function forceUnbond(uint256[] calldata _vaultIds, uint256[] calldata _amounts) externalParameters
Section titled âParametersâ| Name | Type | Description |
|---|---|---|
| _vaultIds | uint256[] | List of vault IDs |
| _amounts | uint256[] | Amounts to unbond per vault |
unstakeClaim
Section titled âunstakeClaimâClaims and withdraws tokens from vaults that are unbonded.
function unstakeClaim(uint256[] calldata _vaultIds) externalParameters
Section titled âParametersâ| Name | Type | Description |
|---|---|---|
| _vaultIds | uint256[] | List of vault IDs |
updateDeposits
Section titled âupdateDepositsâUpdates deposit accounting and calculates fees on newly earned rewards.
function updateDeposits(bytes calldata) external returns (int256 depositChange, address[] memory receivers, uint256[] memory amounts)Return Values
Section titled âReturn Valuesâ| Name | Type | Description |
|---|---|---|
| depositChange | int256 | Change in deposits since last update |
| receivers | address[] | List of fee receivers |
| amounts | uint256[] | List of fee amounts |
restakeRewards
Section titled ârestakeRewardsâRestakes rewards in the polygon staking contract for given vaults.
function restakeRewards(uint256[] calldata _vaultIds) externalParameters
Section titled âParametersâ| Name | Type | Description |
|---|---|---|
| _vaultIds | uint256[] | List of vault IDs |
addValidator
Section titled âaddValidatorâAdds a new validator.
function addValidator(address _pool, address _rewardsReceiver) externalParameters
Section titled âParametersâ| Name | Type | Description |
|---|---|---|
| _pool | address | Validator shares pool address |
| _rewardsReceiver | address | Validator MEV rewards receiver |
queueValidatorRemoval
Section titled âqueueValidatorRemovalâQueues a validator for removal.
function queueValidatorRemoval(uint256 _validatorId) externalParameters
Section titled âParametersâ| Name | Type | Description |
|---|---|---|
| _validatorId | uint256 | Validator ID |
finalizeValidatorRemoval
Section titled âfinalizeValidatorRemovalâFinalizes a queued validator removal.
function finalizeValidatorRemoval() externalupgradeVaults
Section titled âupgradeVaultsâUpgrades vaults to a new implementation contract.
function upgradeVaults(address[] calldata _vaults, bytes[] memory _data) externalParameters
Section titled âParametersâ| Name | Type | Description |
|---|---|---|
| _vaults | address[] | List of vault addresses |
| _data | bytes[] | Encoded function calls per vault |
Adds a new fee.
function addFee(address _receiver, uint256 _feeBasisPoints) externalParameters
Section titled âParametersâ| Name | Type | Description |
|---|---|---|
| _receiver | address | Fee receiver address |
| _feeBasisPoints | uint256 | Fee in basis points |
updateFee
Section titled âupdateFeeâUpdates an existing fee.
function updateFee(uint256 _index, address _receiver, uint256 _feeBasisPoints) externalParameters
Section titled âParametersâ| Name | Type | Description |
|---|---|---|
| _index | uint256 | Fee index |
| _receiver | address | Fee receiver address |
| _feeBasisPoints | uint256 | Fee in basis points |
setValidatorMEVRewardsPool
Section titled âsetValidatorMEVRewardsPoolâSets the validator MEV rewards pool.
function setValidatorMEVRewardsPool(address _validatorMEVRewardsPool) externalParameters
Section titled âParametersâ| Name | Type | Description |
|---|---|---|
| _validatorMEVRewardsPool | address | MEV rewards pool address |
setValidatorMEVRewardsPercentage
Section titled âsetValidatorMEVRewardsPercentageâSets the percentage of MEV rewards that validators receive.
function setValidatorMEVRewardsPercentage(uint256 _validatorMEVRewardsPercentage) externalParameters
Section titled âParametersâ| Name | Type | Description |
|---|---|---|
| _validatorMEVRewardsPercentage | uint256 | Validator MEV rewards % |
setVaultImplementation
Section titled âsetVaultImplementationâSets a new vault implementation contract to be used when deploying/upgrading vaults.
function setVaultImplementation(address _vaultImplementation) externalParameters
Section titled âParametersâ| Name | Type | Description |
|---|---|---|
| _vaultImplementation | address | Vault implementation address |
setFundFlowController
Section titled âsetFundFlowControllerâSets the fund flow controller.
function setFundFlowController(address _fundFlowController) externalParameters
Section titled âParametersâ| Name | Type | Description |
|---|---|---|
| _fundFlowController | address | Fund flow controller address |