Post-Mortem for the Classic Staking unstaking bug fix
The bug preventing users from unstaking ZKP on Ethereum Mainnet has been fixed. Here is what happened.
Table of Contents:
We’re glad to announce that the bug preventing users from unstaking on the Ethereum Mainnet has been fixed. Users of Classic Staking on this network are now able to unstake their $ZKP and claim their staking rewards.
The recent completion of Panther’s Classic Staking program on the Ethereum Mainnet was followed by the discovery of an unfortunate bug where the RewardPool contract throws an exception at the time of unstaking tokens, making it impossible for users to unstake them.
3,555,000 $ZKP that were supposed to be staking rewards were irretrievably locked in the RewardMaster contract because of this bug. The situation denied all $ZKP stakers on Ethereum Mainnet the opportunity to access their rewards. As such, the Panther development team proposed a fix to ensure that users could receive their earned rewards as initially approved by the DAO.
Consequently, PIP-5 was issued with the Panther team’s solution and passed with 99.98% of votes. And the unstaking bug was fixed.
Then Came the Snapshot Bug
Just as we saw the proposal close with a favorable outcome and got ready to trigger its automatic execution, we discovered that the “Execute proposal” button on Snapshot.org was gone.
This happened due to a bug in the Snapshot platform’s UI.
In Snapshot, a set of data defines every transaction of each proposal, which is then represented as a hash. Anyone can see this transaction data for proposals.
Due to this bug, the hash that the Snapshot.org UI generated was incorrect. This made it impossible for smart contracts to “recognize” transactions, making the UI unable to submit them. Direct interaction with the smart contract was then required to execute the proposal.
There were two actions that we needed to take to solve this:
- Get in touch with the Snapshot.org team to help them solve this bug as soon as possible.
This involved our Senior Software Architect, Adam Spiers, collaborating with the Snapshot.org team. Adam provided support and expertise throughout the entire bug fix, which is being solved as you read this.
2. Sticking to our decentralization principles, have a non-team member who staked on Classic Staking execute the proposal manually.
If we couldn’t follow a purely decentralized approach by asking Snapshot.org to trigger the proposal, we could have an anonymous community member execute the proposal. The Panther team supported this person along the way and verified it was implemented to the letter afterward, using the code embedded in the proposal.
In the end, the outcome was satisfactory — the bug fixes were applied correctly, and now stakers of $ZKP on Ethereum Mainnet will be able to withdraw their assets and their rewards seamlessly.
Advanced Staking is on the way!
This bug fix made a dent in our projected timeline for Advanced Staking development and release. With the bug fixed, the Panther team can now focus on getting back to speed with the projected roadmap.
If you still have your $ZKP staked in Classic Staking on either Ethereum or Polygon networks, remember that you’ll have to unstake to take part in Advanced Staking.
The unstaking bug was unfortunate, and the problem was exacerbated by the Snapshot.org bug that we found.
Regardless, the Panther team has worked hard to rectify all the issues, and now it’s time to move on to the testing and launch of Advanced Staking!
Stay tuned for more news to come and how you can get involved and rewarded for helping us test.
Panther is a decentralized protocol that enables interoperable privacy in DeFi using zero-knowledge proofs.
Users can mint fully-collateralized, composable tokens called zAssets, which can be used to execute private, trusted DeFi transactions across multiple blockchains.
Panther helps investors protect their personal financial data and trading strategies, and provides financial institutions with a clear path to compliantly participate in DeFi.
Stay connected: Telegram | Twitter | LinkedIn | Website