Currently ADX pending to be unlocked is not slashed which is suboptimal since claim() does not affect them
Solutions:
burn pending to be unclocked ADX right after validator's own stake, effectively leaving bonded stakers last
keep the shares (do not burn them), and then when you exit, allow you to claim UP TO the unlocking ADX amount by burning shares real time
This means that you incur rewards but only if you’re slashed which seems fair
We need to be careful with two things.
users calling the fn with too little shares leading to the adx allowance being burnt; we can mitigate by not burning the entire adx allowance
users readding adx to gain shares and exploiting the matured allowance
DECIDED, DOING THIS: when requesting unbond, store both tokens and shares but do not burn shares
when it matures, allow the user to burn that entire share amount, but only receive up to the amount of tokens that was stored
this cuts users out of rewards, but still lets them bear the risk - except if the pool is penalized but then recovers through rewards - in which case the user neither gains nor loses
will have to be limited to 1 request at a time and also store time - cause otherwise the user may submit multiple which would allow them to unstake later staked tokens early or just lock all the shares that are waiting to prevent them from getting requested again
keep the current setup - burn shares on the spot, use pendingToUnlock, but also store shares and at unlocking if the shares are worth less ADX, give that amount (therefore distributing the lost tokens to others)
problem with this is that the share value calculation loses it's meaning because the shares are already burnt - so it will calc a higher value
Currently ADX pending to be unlocked is not slashed which is suboptimal since
claim()
does not affect themSolutions:
will have to be limited to 1 request at a time and also store time - cause otherwise the user may submit multiple which would allow them to unstake later staked tokens earlyor just lock all the shares that are waiting to prevent them from getting requested againpendingToUnlock
, but also store shares and at unlocking if the shares are worth less ADX, give that amount (therefore distributing the lost tokens to others)