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