PIP: Full ERC-20 Functionality for Validator Share Tokens

PIP: TBA
Title: Full ERC-20 Functionality for Validator Share Tokens
Author: Pete Kim - Polygon Community Treasury Board
Description: Enable full ERC-20 functionality for Polygon validator share tokens (including approve and permit), to simplify creation of POL liquid staking tokens (LSTs) and expand the utility of staked POL.
Status: Draft
Type: Contracts
Date: 2025-07-01

Abstract

This proposal outlines an upgrade to Polygon’s staking system to give validator share tokens full ERC-20 functionality. Currently, when users delegate POL tokens to a validator, they receive validator-specific share tokens (sometimes called VOL tokens) that represent their stake. However, these share tokens are non-tradable – in particular, the approve function is disabled – which makes them unusable in DeFi smart contracts. By removing this limitation and implementing standard ERC-20 features (including the permit extension for gasless approvals per EIP-2612), we enable share tokens to be freely transferred and integrated into other contracts. This change will make the creation of liquid staking derivatives (LSTs) for POL trivial, unlocking liquidity for currently dormant staked tokens. Ultimately, the goal is to vastly expand the utility of staked POL and boost liquidity in the Polygon PoS chains and AggLayer chains such as Katana.

Motivation

Liquid staking tokens (LSTs) have seen significant adoption in other ecosystems – for example, Lido’s stETH on Ethereum and Jito’s JitoSOL on Solana are widely used in DeFi. By contrast, Polygon’s liquid staking solutions have struggled to gain traction. Multiple third-party providers (Stader’s MaticX, Ankr, Lido’s stMATIC, etc.) launched POL/MATIC LSTs, but these saw limited adoption. In fact, Lido decided to sunset its stMATIC product in June 2025 due to low usage. As of July 2025, roughly one-third of all POL tokens (~3.7 billion, about 35% of the supply) are staked in the Polygon PoS network – representing on the order of hundreds of millions of dollars (~$670M) in value. If even a portion of these staked tokens became liquid, the market capitalization of POL LSTs could rival or exceed that of established LSTs like Coinbase’s CBETH or Benqi’s sAVAX (valued around $336M and $230M respectively), and would far outsize smaller LSTs such as ether.fi’s EETH or Swell’s swETH. This indicates a huge untapped opportunity for Polygon’s DeFi ecosystem: unlocking potentially hundreds of millions in liquidity currently tied up in staking.

One key reason for the lack of POL LST adoption to date is the complexity and trust requirements in existing solutions. Without a transferable share token standard, LST providers have had to create complex workflows and custodial setups. For example, Lido’s implementation on Polygon required validators to transfer ownership of their nodes to the Lido protocol, and users had to unbond from their chosen validator to re-stake through Lido’s contracts – a cumbersome and trust-dependent process. Other providers like Stader and Ankr similarly run their own validators and custody delegated funds within their contracts to issue LSTs. These approaches introduce friction and risk, limiting user adoption.

By contrast, if Polygon’s native validator share tokens were fully ERC-20 compliant, creating a POL liquid staking token could be as simple as deploying a smart contract that wraps these share tokens. No special validator permissions or complex custody would be required. Any user could delegate to a validator normally (through the stake manager) and receive standard ERC-20 share tokens representing their stake. A third-party protocol or even a simple open-source contract could then permissionlessly accept those tokens and mint a new unified LST. Because the native share tokens themselves encode the stake, the rewards and the slashing adjustments (if slashing of delegated POL were to be enabled in the future), the LST contract’s job becomes trivial bookkeeping, rather than the heavy lifting of managing actual staking operations. In short, making share tokens composable drastically lowers the barrier to creating and using POL LSTs.

Enabling liquid staking for POL has broader implications: it can increase staking participation by reducing the opportunity cost (users can stake without sacrificing liquidity), thereby improving network security. It would also catalyze DeFi activity on Polygon by injecting a large new source of collateral and tradable assets (staked POL in liquid form) across Polygon PoS chain and the upcoming AggLayer chains. In summary, the motivation for this PIP is to modernize Polygon’s staking token design in line with industry standards (fully fungible, DeFi-compatible tokens) to unlock these benefits.

Specification

Changes to ValidatorShare Token Contract

Each validator on Polygon has an associated ValidatorShare contract that issues ERC-20 share tokens to delegators. We propose the following modifications to the ValidatorShare contract implementation:

  • Enable Standard ERC-20 Approval: Remove the inheritance of ERC20NonTradable. Currently _approve() is overridden to revert ("disabled"), which prevents use of approve and consequently transferFrom. After this change, the share token should behave like a normal ERC-20: holders can call approve(spender, amount) to grant allowances, and other contracts can call transferFrom on their behalf up to the approved amount. This change restores the crucial approve/transferFrom functionality that allows tokens to be used by smart contracts.
  • ERC-20 Metadata: Implement the standard name(), symbol(), and decimals() functions for the share token:
    • symbol(): Return a symbol string in the format dPOL[ID], where [ID] is the validator’s ID. For example, the share token for validator ID 1 would return "dPOL[1]". This clearly identifies the token as “delegated POL” tied to a specific validator.
    • name(): Return a descriptive name such as Delegated POL [ID]. For validator 1, this would be "Delegated POL [1]". This makes it easy in interfaces to recognize the token as POL staked with a given validator.
    • decimals(): Return 18, matching the industry standard and the POL’s decimal places.
  • Permit (EIP-2612): Implement the permit function as defined in ERC-2612. This function allows a holder to approve an allowance via an off-chain signature, enabling gasless approvals and one-transaction deposit flows. By supporting permit, dApps can seamlessly integrate share tokens with improved UX (no need for a separate approve transaction from users).
  • Preserve Automatic Reward-Claim on Transfer: Currently, whenever share tokens are transferred (e.g. when a delegator unstakes or moves tokens), the contract triggers a claim of any pending rewards for both the sender and recipient addresses. This behavior should be retained for all transfers, whether initiated by transfer or transferFrom. In practice, this means the overridden _transfer function in ValidatorShare will continue to call the internal reward withdrawal routine for the sender and receiver before updating balances. Preserving this ensures that rewards aren’t “left behind” or unevenly distributed when shares move between addresses – it maintains the invariant that each address’s share balance corresponds to a fully updated claim on underlying POL at transfer time. Any smart contract that accepts deposits of share tokens MUST take this into account and handle balance changes in POL.

Aside from the above changes, the core logic of ValidatorShare remains the same. After this proposal, each validator’s share token will simply be a fully-fledged ERC-20, with the added convenience of permit. This aligns Polygon’s staking tokens with standard token conventions and DeFi expectations.

Rationale

Why enable transfers and approvals now?

When Polygon’s staking contracts were originally designed, validator share tokens were made non-transferrable avoid potential complications of potential fraud by a rogue validator and secondary trading. The share tokens were meant to be an invisible implementation detail. The very first implementation did not even allow simple transfers between EOAs, which was later enabled to allow key rotations. Given the maturity of Polygon’s ecosystem and its decentralized validator network, and the community’s interest in liquid staking, the benefits of making share tokens composable now clearly outweigh the original reasons for non-transferability.

Ease of creating POL LSTs

Enabling ERC-20 functionality allows for a very straightforward implementation of a POL liquid staking token (LST). We sketch one possible design (for illustration, not as a strict specification):

  • Imagine a new token contract called sPOL (staked POL). This contract accepts deposits of any validator’s share tokens (dPOL[ID]). When a user deposits, the contract mints sPOL equal in value to the current POL value of the share tokens. Note that the exchange rate is currently a one-to-one ratio, but that may change if slashing of delegated POL were to be enabled in the future.
  • The smart contract must account for the fact that, as specified, any pending rewards for both the user and the contract are claimed when the tokens are transferred. Therefore, an additional transferFrom and a restake call may be required to handle newly claimed POL rewards.
  • The sPOL contract would hold the underlying share tokens in a pool. It could then periodically re-stake rewards on all those validator shares by calling each restake() for the tokens it holds. This operation compounds the rewards back into the stake, increasing the value of the pool. The sPOL token itself could be designed as a rebasing token (similar to Lido’s stETH) that increases user balances as rewards accrue. The exchange rate for sPOL/POL should remain close to one-to-one. However, if slashing is enabled, the market rate may temporarily deviate when slashing occurs until the next rebase.
  • For broader usability, a wrapped version wsPOL could be provided, analogous to Lido’s wstETH. wsPOL would be a non-rebasing ERC-20 that represents a share in the sPOL pool (its price in sPOL/POL would increase as rewards accrue, rather than the quantity). This is often useful in DeFi contexts and can be more tax-efficient for users in certain jurisdictions. This is also similar to Rocket Pool’s rETH model. The deposit/redemption logic in the smart contract handles the exchange rate.
  • The sPOL contract does not support converting sPOL back into validator share tokens. Instead, users can unstake and receive POL tokens. During the unbonding period, an NFT may be issued to represent the pending withdrawal until the final claim is made. The choice of which validator to unbond from is left to the implementation, but it is suggested to prioritize unbonding from the validator with the highest delegated amount — only up to the point it becomes the second highest — then continue in descending order to promote decentralization.
  • The sPOL contract may receive airdrops, such as those from Polygon-incubated projects distributed to POL stakers. Ideally, the airdropping entity should account for LSTs and distribute tokens to LST holders in the same way as to ordinary delegators. However, the governing entity behind the LST should also be capable of managing airdrops received by the sPOL contract.

In this scenario, the heavy lifting is handled by Polygon’s core component itself, not the implementation of the LST. The sPOL contract doesn’t need special rights with validators or the stake manager – it simply holds transferable ERC-20 tokens and calls public functions like any user could. This is a much simpler and safer design than previous solutions that required complex trusted setup or voluntary participation of validators.

Ideally, the Polygon ecosystem will establish a community-governed, canonical implementation of an LST in order to avoid fragmentation.

Backwards Compatibility

From a protocol perspective, these changes are mostly additive. Existing delegators will simply find that their dPOL share tokens are now composable. If a user takes no action, their stake is unaffected – they continue earning rewards as before.

Contract Upgrade

A new ValidatorShare implementation contract will need to be deployed and the existing ValidatorShareProxy contract for each validator should point to the new implementation. The upgrade must ensure that all existing validator share contracts receive the new logic and the new implementation must ensure that the original storage layout remain unaffected.

Decimal Places

The previous contract lacked a decimals function, causing wallet frontends to display a huge number. This behavior only affects frontend display; the balance function will continue returning the same value after the upgrade. While this change is unlikely to impact existing integrations, it is noted here for completeness.

Security Considerations

Converting share tokens into freely transferable ERC-20s introduces new vectors to consider, mostly analogous to the risks of any fungible token in DeFi, but some specific to staking:

  • Allowance Misuse: Once approve is enabled, share token holders must exercise caution just as with any ERC-20 – approving a malicious contract could put their tokens at risk. If an attacker tricks a user into approving a large amount, the attacker could call transferFrom to take the user’s staked tokens (i.e., their share tokens). Users and dApps should treat share tokens with the same security precautions as they do POL itself and other ERC-20 tokens.
  • Slashing and Risk Exposure: Although slashing is currently disabled for Polygon staking, it could be enabled in the future. If that happens, LSTs derived from validator share tokens may need to socialize any resulting losses among holders, similar to how other LSTs handle such events.
  • Governance: An LST smart contract may accumulate a significant amount of delegated POL, potentially giving it substantial influence in a token-based governance system. Any such governance mechanism should account for this possibility and ensure that voting rights are attributed to the LST holders, rather than the contract itself.

References

  1. Polygon Knowledge Base – Delegation via validator shares
  2. Polygon GitHub - ValidatorShare.sol
  3. Coingecko - Top Liquid Staking Coins by Market Cap

Copyright

All copyrights and related rights in this work are waived under CC0 1.0 Universal.

3 Likes

We believe this is a great upgrade.

While Polygon’s DPoS model inherently differs from Ethereum’s PoS system, we don’t foresee this upgrade introducing significant additional risks to users or validators. Rather, it unlocks valuable liquidity currently dormant in staked tokens and simplifies integrations within DeFi.

Additionally, observing Ethereum’s Lido transitioning from V2 to V3, there is an emerging trend allowing users more flexibility in choosing their validator sets. Leveraging Polygon’s existing DPoS structure, we envision a future state where such refined validator selection could be seamlessly integrated. Thus, this proposal can be seen as essential groundwork toward a more sophisticated and flexible LST design on Polygon.

1 Like

Similar proposal in the thread below for reference:

https://forum.polygon.technology/t/pol-liquid-staking/20771

Happy to support adding this proposal to the repository and assigning a PIP number.

I like this spec because is fixes the main issue with my previous proposal on LST POL about choosing winners.

Basically, instead of enshrining a single LST and giving the overhead of that to the DAO or Polygon (limiting competition or innovation) we can make the VOL a normal token would just make it 100x easier for others to build LSTs on top of.
Benefit: market forces for innovation, but also increase available capital. Win win.

I’d be curious to hear what Stakehouse thinks, since they are the only ones still running a staked POL product as far as I can tell.

Polygon should definitely do this, I’m strongly in support and retract my previous proposal in favor of this one. What would be the next step? Security review of the spec and upgrade?

Nice work on the spec @pete!!!

Good proposal. Especially the core execution and independency from third party LST