Proposal #4 - Polygon Staking Rewards Bug Fix
The Panther team strongly recommends voting in favor of this proposed fix to anyone who wants the Polygon staking rewards to be distributed fairly as previously approved.
With the fix applied, stakers will receive the same high APYs which were previously displayed on the staking app. For example, for the first 30 minutes, APY was over 1,320%, and for the first 6 hours, it was over 290%.
It is also important to note that all staked tokens are completely safe and unaffected. The bug only affects distribution of rewards on Polygon. Nothing on the Ethereum mainnet is affected.
The recent deployment of Panther’s staking program on the Polygon network was quickly followed by discovery of an unfortunate bug where the
MaticRewardPoolcontract incorrectly computes the rewards to vest at any given moment, acting as if no rewards have ever been vested. This is problematic as it causes the contract to accrue rewards at a much higher and faster rate than initially planned, exhausting almost all of the 2 million ZKP pool by Thursday, March 10th.
Of course this goes against DAO proposal #3, whereby rewards should vest linearly over 56 days. The bug unfairly denies all ZKP holders the opportunity they should have had to accrue rewards at any time during the 56 day period.
As such, the Panther development team is proposing the below fix to ensure rewards are vested and redeemable at the schedule originally approved by the DAO.
As per the existing DAO governance structure, voting power is calculated by snapshot.org taking a snapshot of the total number of ZKP tokens staked (and/or received via delegation) on both Ethereum and Polygon at the time when the proposal was created.
The Panther team proposes a solution rescuing existing rewards, and "upgrading" the existing contracts to correct the bug, with the following actions:
- 2.Create a fresh vesting pool of 2M ZKP tokens on the Ethereum Mainnet, minted from the total 450M $ZKP allocated for protocol rewards.
- 3.Bridge the newly minted 2M $ZKP to a new
RewardTreasurycontract on Polygon.
RewardTreasuryto allow its tokens to be spent by a new
- 5.Replace the existing
StakeRewardAdvisercontract for both
unstakeactions with this new
StakeRewardControllercontract, which automatically reclaims prematurely vested rewards, and distributes fairly accrued rewards to both existing and future stakers as specified by the previously approved terms of DAO proposal #3.There will be a period for the switchover from the old contract to the new one. It ends if / when the proposal is executed, at which point any stakes newly created during this period will lose their accrued rewards. This will not affect stakes created before the switchover period commenced.
- 6.Reinstate display of (corrected) reward figures in the staking app UI.
Since the fix is both time-critical and complex to implement, it may prove impossible to reliably achieve the above via the Reality.eth mechanism used to execute previous proposals.
Therefore two fallback actions are proposed, to ensure the safety of the allocated reward tokens:
- 1.If necessary, add a temporary guard to the DAO multisig which would prevent execution of some or all of the steps above.
- 2.If necessary, execute some or all of the steps above via signers of the DAO multisig, rather than via Reality.eth, in accordance with point 8 of the DAO launch proposal, which states:"To protect, take corrective actions, and minimize the risks caused by smart contract bugs, etc. This proposal will allow a set of signers of the DAO multisig to have an overrule power."
However, it is considered highly undesirable to invoke this overrule power without first seeking DAO approval via a democratic process. Therefore this proposal solicits the DAO's authorization to implement the above actions utilizing DAO multisig signers rather than an executable proposal, if that should be necessary.