PIP-19: Update Polygon PoS Native Token to POL

PIP-19: Update Polygon PoS Native Token to POL

Authors: Will Schwab, Daniel Gretzke, Dhairya Sethi, Zero Ekkusu

Type: Contracts

Table of Contents:

  • Abstract
  • Motivation
  • Definitions
  • Specification
  • Backward Compatibility
  • Security Considerations
  • Copyright

Abstract

This proposal calls for upgrading the native token of the Polygon PoS network from MATIC (0x7d1afa7b718fb893db30a3abc0cfc608aacfebb0) to POL (0x455e53CBB86018Ac2B8092FdCd39d8444aFFC3F6) in a method that ensures maximum backward compatibility. The authors recommend this by upgrading the PoS Plasma Bridge Contract (0x401f6c983ea34274ec46f84d70b31c151321188b) to a new implementation that:

  • Converts all the MATIC in the bridge to POL
  • Fulfills all withdrawal requests for the native asset of Polygon PoS Chain with POL
  • Credits all deposits in POL or MATIC with the native asset of the Polygon PoS chain.

This proposed upgrade will not change any contracts on the Polygon PoS Network. Likewise, the native tokenā€™s properties will remain unchanged. All contracts will function as designed. The native asset of the Polygon PoS chain will change from being a claim on the Plasma Bridgeā€™s MATIC, to a claim on the Plasma Bridgeā€™s POL.

MATIC will still be an operational ERC20 token on Ethereum throughout this phase. Similarly, staking rewards for validators will remain denominated in MATIC until further technical upgrades are proposed and, if welcomed by the community, then implemented.

Motivation

The native token is the token used by users of the Polygon PoS network to pay gas fees in order to transact. The present native token is redeemable for MATIC which was set as the native token upon genesis of the Polygon PoS network. Now that POL (0x455e53CBB86018Ac2B8092FdCd39d8444aFFC3F6), the updated successor of MATIC, has been proposed, the authors propose setting it as the native token of the network via an upgrade of the Plasma Bridge in a maximally backward compatible manner.

Definitions

Plasma Bridge: Polygon Plasma is the official bridge used to bridge MATIC tokens from Ethereum to Polygon chain. Withdrawals have a required 7-day delay. This delay is designed to allow users to challenge a malicious withdrawal.

Specification

Upgrade the DepositManagerProxy contract to a new implementation at 0xb00aa68b87256E2F22058fB2Ba3246EEc54A44fc.

The address of the DepositManagerProxy will remain the same at: 0x401F6c983eA34274ec46f84D70b31C151321188b

This change in the DepositManager will make sure both POL and MATIC can be bridged for PoS gas tokens (172):

// new: auto-migrate MATIC to POL
if (_token == matic) {
    _migrateMatic(_amountOrToken);
}
// new: bridge POL as MATIC, child chain behaviour does not change
else if (_token == registry.contractMap(keccak256("pol"))) {
    _token = matic;
}

Here we change the transferAssets function to only pay out POL, when MATIC is withdrawn from PoS (81):

// new: pay out POL when MATIC is withdrawn
if (_token == registry.contractMap(keccak256("matic"))) {
    require(
        IERC20(registry.contractMap(keccak256("pol"))).transfer(_user, _amountOrNFTId),
        "TRANSFER_FAILED"
    );
} else {
    require(IERC20(_token).transfer(_user, _amountOrNFTId), "TRANSFER_FAILED");
}

INFO: when calling the processExits function of the WithdrawManager, we still need to use the MATIC token address as input for now!

Backward Compatibility

Contracts that expect to receive MATIC from the Plasma bridge on Ethereum may be affected.

Security Considerations

This upgrade adjusts a core contract of the Polygon Ecosystem, all proper security procedures including necessary audits will be taken, and should be carefully reviewed prior to activation.

References

Copyright

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

10 Likes

Good development, hopefully this will be the beginning of many things to go

3 Likes

may I ask is the migration is done via the POS plasma bridge according to PIP-19? To migrate MATIC on Ethereum, users will need to deposit MATIC to the bridge to get POL?

1 Like

there is a separate migration contract where you can swap your MATIC for POL. No bridge is required to migrate your tokens

5 Likes

POL as described is just efficient ! The whole plan and proposal is just genius. Iā€™m 100% in for that!

1 Like

How will this impact users who have been staking their MATIC on validators? At some point validators will need to upgrade, will I have to unstake and covert via the bridge upon doing so?

1 Like

If you have been delegating to a certain validator, you will need to undelegate your tokens and convert them to POL using the migration contract.

4 Likes

Will the native token name on the PoS Chain be updated as ā€œPOLā€ when the contract change is done on the bridge?

A name change is not planned in this set of upgrades, as the PoS network will be entirely unaffected by them.

This looks great! I really appreciate the maximally backward compatible manner of this upgrade :clap:

  • It sounds like the answer is no, but will there be any changes made to the FxRoot contract or the CheckpointManager on L1?
  • Will the existing checkpoint system for PoS messages continue to work the same?
  • Will there be any downtime with any part of the chain/ecosystem during the upgrade?
  • Is there a rough date when this is expected to take place?

FX root is not upgradeable, so no changes could ever be made to that contract. But MATIC is only transferred using the plasma bridge, so there will be no changes to FX Portal at this point in time. the checkpoint manager is also not affected by these upgrades.

This upgrade does not modify the consensus of the PoS chain so all messages continue to work the same as before

There should be no downtime, the PoS chain will continue to operate as usual.

Not that Iā€™m aware of


But generally speaking, this is just the first set of upgrades. Future PIPs will outline changes and upgrades that might affect bridges or the PoS network so keep an eye out for those if you would be affected by them.

3 Likes

Sharing an initial implementation of PIP-19, would love community feedback on this approach, especially from developers whose code may be effected by this change.

3 Likes

@gretzke I think the implementation looks good! I have two follow up questions based on the FAQ:

  • Bridging POL to Ethereum**: when bridging native tokens (POL), the bridge will always disburse POL tokens.

My understanding is that POL does not exist on L2. However, this statement seems to imply that POL is a native token on L2. Is it correct to say that POL will not be an (official) token on L2?

if an existing contract relies on receiving MATIC from a bridge and receives POL instead, this might result in locked funds

Similarly, this is true only on L1, correct?

Your understanding is correct. first and foremost, nothing changes on the Polygon POS side of things with this upgrade from a technical perspective. We are only upgrading our token from MATIC to POL on L1, but the native token stays the same native token on POS. Currently everyone calls this native token MATIC, in the future this native token will probably be called POL. So there is a transition period until social consensus settles for a new name. But because we are migrating all tokens in the bridge from MATIC to POL, we also call the native token POL on POS, because when you bridge it to L1 you will receive the POL token.

Regarding your second question, your assumption is also correct.

2 Likes

Thank you @gretzke . Good luck with the upgrade!

Any information on how the migration from MATIC to POL will look like for token holders, will it be available on https://wallet.polygon.technology/ ?

We donā€™t provide a UI to migrate your MATIC to POL, however DEX aggregators like Paraswap are already integrating the migration contract:
https://twitter.com/paraswap/status/1717258807796019523

Polygon will not provide a UI to migrate MATIC to POL. Why is that so?

Isnā€™t it a huge security risk for all current $MATIC holders, as they will need to use third-party integrations (such as Paraswap) in order to migrate the token? Or am I missing something?

There are numerous UIs that will allow migration, and the POL FAQ will include a list of those UIs that have integrated the official POL contracts

1 Like