DistributedCollective / Sovryn-smart-contracts

Smart contracts for the Sovryn protocol and external integrations
https://live.sovryn.app/
Apache License 2.0
124 stars 46 forks source link

Governance: Enable perpetual staking #182

Open john-light opened 3 years ago

john-light commented 3 years ago

JonnyPickles#2315 in Discord offered an interesting comment:

When user-selected staking period ends SOV becomes unstaked. I think the community and the protocol would both prefer SOV to stay staked and earning fees until the user unstakes... We want more people to be staked in more situations. Not less.

What if we changed the staking mechanism to something like this: users can "stake" their SOV for an indefinite period of time. Their voting power for their staked SOV would be equal to 1 voting power per 1 SOV staked, and they can unstake at any time with no penalty. However, the user can multiply their voting power if they lock their staked SOV for a given duration. Locking would multiply their voting power using the current quadratic formula we use to calculate voting power based on staking duration. Once their lock duration expires, their SOV is unlocked but remains staked, so they can continue earning staking rewards just at the lower 1:1 voting power level.

jonny-pickles commented 3 years ago

Thanks for writing this up. I'll offer a slightly different option. What if we still required a lock period to be set at the beginning but just allowed the SOV to remain staked at the end of the period at the 1:1 ratio? That way we still are incentivizing people to lock up their tokens but not penalizing them for not taking an action immediately upon period-end.

john-light commented 3 years ago

What if we still required a lock period to be set at the beginning but just allowed the SOV to remain staked at the end of the period at the 1:1 ratio? That way we still are incentivizing people to lock up their tokens but not penalizing them for not taking an action immediately upon period-end.

My thinking is that someone could easily get around it by locking for like a day and letting it expire. So might as well just have 1:1 be the baseline up front and allow users to increase from there as desired.

jonny-pickles commented 3 years ago

Yeah that makes sense. It would be a barrier but a super flimsy one.