TL;DR Summary
- There was a recent governance proposal fixing a rewards rounding error bug, SIP-15.
- In this SIP 15 bug fix, there was a bug migrating the reward state as part of the contract upgrade, this resulted in some users receiving more rewards than they were due in some cases.
- Once the incorrect rewards calculations appeared, Seamless Guardians temporarily paused rewards claiming to sufficiently investigate the issue.
- Now with a fix and path forward in place, governance must review and vote on this proposal to apply the fix so that reward claiming is unpaused.
- This proposal seeks to upgrade the RewardsController implementation contract again with the fixed code and introduce a new admin role/function that will allow the Seamless Guardians to apply reward state patches to the users impacted by this bug. After the reward state is fixed, the Guardians will renounce this role.
- Users will receive ALL rewards they should have accrued based on usage and participation in Seamless supply/borrow markets and Seamless is in direct contact with users who may have incorrectly claimed rewards prior to the Rewards Claim button being paused after SIP 15 was executed onchain.
Context & Motivation
After SIP 15 was executed onchain, a couple of users observed reward claiming and calculation errors. This finding prompted Eng contributors to immediately investigate, identify, and confirm there was a bug with rewards calculations. Once the bug was confirmed, rewards were temporarily paused from claiming. Now that Eng contributors have a fix and path forward in place, this proposal seeks to execute on the fix onchain which requires approval from community governance.
Proposed remediation steps:
- Deploy fixed RewardsController contract.
- Create governance proposal onchain to upgrade the RewardsProxy to use the new RewardsController implementation.
- If the proposal passes, after the timelock is executed, the Guardians will correct the incorrect user reward accruals onchain. *This must be calculated at the time the new implementation is deployed onchain to get an exact diff amount.
- Guardians will renounce this temporary admin permission permanently.
- Guardians will unpause claiming of rewards allowing users to claim rewards on the app as usual.
Additional notes:
- This temporary admin role can only adjust user reward accrual amounts (unclaimed). It has no power of the lending pool, supplied liquidity (including accrued interest) or other Seamless Protocol contracts.
Here is the github PR for the updated rewards contract, a deployed and verified version will be available onchain shortly:
Next Steps
Seamless Contributors recognize this is a timely fix and are hopeful that if there is alignment from the community to move forward, that this approach to fixing the rewards calculation could be fast tracked to reduce added time where users are unable to claim rewards. After moving to an onchain vote and waiting the necessary timelock, voting period, and cool down periods, this temporary admin access could be enabled and users can expect an ability to claim rewards on the app.
As a follow up item, we would like to request that an Eng contributor publish a Post Mortem report to the rest of community.