When a NO is ready to claim their RPL rewards from having staked RPL, they have the option to:
- Withdraw the RPL to their withdrawal address
- Add the RPL to their staked RPL supply.
As you know, whenever a NO stakes more RPL, a hold is placed on their ability to withdraw RPL, even if they are above 150%.
My proposal is that when a claim-stake is performed, the 30 day withdrawal restriction only applies to the amount of RPL that was staked from the claim, not the entire balance.
User has 100 RPL balance and gets rewarded 1 RPL, the user’s RPL/ETH ratio is currently 200%. This means that they should be able to withdraw 25 RPL.
In this instance, they do a claim-stake and now have 101 RPL.
Currently, the entire 101 RPL balance will be locked for an entire claim period.
The proposal is to allow the user to withdraw RPL down to 76 RPL (75 RPL original + 1 RPL recently staked) and keep the remainder above 150% withdrawable.
Right now I’m hesitant to stake my RPL after I claim it because of this withdrawal restriction. I want to have the ability to have my RPL be somewhat liquid in case the ratio gets to a point where I wish to offload some of my RPL. I’m not willing to lose that liquidity for a less than 1% increase to my staked RPL. We should not have to make that trade off. This solves that issue.
This is doable and I don’t think it has significant downsides beyond gas. You’ll need to store a time when the last stake occurred and how much it was. If staking fewer than 28 days since the last stake you’ll also need to do something - either refresh the time for the full amount, or we’ll need to track arrays of when the most recent stakes were and how much they were. And obviously when we go to withdraw we’ll need logic to parse that. I’m not sure how all that shakes out costwise – seems we’re probably talking small benefit small cost?
I think this area in general needs work – there’s some stuff that’s here for historical reasons. I think we should essentially revisit RPL staking and withdrawing fresh. Eg, if we swapped from staked RPL at the snapshot time to staked RPL per block, we might not need a time lock of any kind. But we need to think about what that would mean for that duty in terms of eventual de-oDAOing.
TL; DR – I agree this section needs work, I’m not sure I agree that this is the specific thing that’s best.
I just wanted to post here to share I’m also very hesitant to restake my RPL. Especially after downwards volatility, there’s a growing anticipation for upward trajectory. A lot of us saw back in February how quickly price can escalate. Hopefully someone with a big brain can figure out a solution that makes sense costwise.