Skip to main content
Polygon Chain uses a validator share model for delegation. Delegators receive validator-specific ERC20 share tokens (referred to as VOL for a given validator) in exchange for staked POL, at a rate determined by the current exchange rate of the POL/VOL pair.
POL is the staking token. A delegator needs POL tokens to participate in delegation.

Technical specification

Exchange rate formula:

Methods and variables

buyVoucher

  • Transfers _amount to stakeManager and updates the timeline data structure for active stake.
  • updateValidatorState updates the timeline data structure.
  • Mints delegation shares using the current exchangeRate for _amount.
  • amountStaked tracks active stake per delegator for liquid reward calculations.

sellVoucher

  • Uses current exchangeRate and share count to calculate total amount (active stake + rewards).
  • Unbonds active stake from validator and transfers rewards to delegator.
  • Removes active stake from timeline via updateValidatorState in stakeManager.
  • delegators mapping tracks stake in the withdrawal period.

withdrawRewards

  • Calculates rewards for a delegator and transfers them.
  • Burns shares proportional to the reward amount based on exchangeRate.
  • Example: delegator with 100 shares at exchange rate 200 receives 100 tokens reward; 50 shares are burned; delegator retains 50 shares worth 100 tokens.

reStake

Moves accumulated rewards into active stake without changing the share count (exchange rate is unchanged). Only the rewards are moved into active stake for both the validator share contract and stakeManager timeline. getLiquidRewards calculates accumulated rewards. Restaked amounts are counted as active stake and cannot be withdrawn immediately.

unStakeClaimTokens

After the withdrawal period, delegators who sold their shares can claim their POL tokens. Transfers tokens to the user.

updateCommissionRate

Updates the commission percentage for the validator.

updateRewards

Called when a validator receives rewards for submitting a checkpoint. Distributes rewards between the validator and delegators.