Weight session selection by staked amount

I’ve been thinking about this since Luis piped up on the node runners call yesterday about weighting sessions being complicated and causing state bloat. But aren’t we overcomplicating it here.

Why weight session chance and not just scale rewards?. Instead of it adjusting the session chance. Keep session chance completely random still and just scale the rewards. Floor your stake to 15k bins and weight the rewards based on the floored value.

reward = NUM_RELAYS * RelaysToTokensMultiplier * (FLOOR/MINSTAKE)

Where min stake is 15k and floor is FLOOR(Stake,min stake ). This would remove all the complexity and not overload highly staked nodes with excess sessions thus reducing end user experience and it is laterally a few lines of code changed in RewardForRelays() as far as I can see (pocket-core/reward.go at 8ad860a86be1cb9b891c1b6f244f3511d56a9949 · pokt-network/pocket-core · GitHub)

Something like:

validator := k.GetValidator(ctx,address)
stake := validator.getTokens()
flooredStake := stake.Sub(stake.Mod(minStake))
weight := flooredStake.Div(minstake)
coins := k.RelaysToTokensMultiplier(ctx).Mul(relays).Mul(weight)

3 Likes