Is the validator choice not supposed to be uniform?

I’m running an experiment:

  • I have two nominators (N1 and N2) with almost the same amount (A) of CFG (1% diff).
  • N1 delegates to 4 validators.
  • N2 delegates to 14 validators.
  • N2 is receiving about 30% more rewards than N1, even though they have the same amount staked.

If the validator choice is proportional to the amount staked and actually uniform, and the reward distribution is also proportional, then N1 and N2 should be getting the same rewards.
If you delegate 10 CFG to 1 validator or 1 CFG to 10 validators (1 each), you should get the same rewards, if everything is proportional and uniform.

Where is the flaw here? Is the protocol actually not supposed to be uniform?

For how long have you been nominating?

And have you checked the validator commissions are the same?

If N1 is staking to validators that are not oversubscribed but N2 is then they will see different rewards. Each validator gets a fixed reward which is then split among all nominations. If you nominate a validator that has 10M CFG nominated you will receive 1/2 the rewards of what you will get if you nominate a validator that has 5M nominated total.

This is a good resources that explains NPoS: Staking · Polkadot Wiki

@Ritskes About 1 month. The commissions are actually lower for N1: avg 8% and >9% for N2.

@lucasvo I don’t understand why that’s the case. Sure, for a single block the reward value is the same, and indeed I’ll receive 1/2 reward value if I nominate 10M validator instead of 5M validator per block reward, but 10M validator should receive double number of rewards, so I’m back to 2/2 reward value compared to 5M validator.
Say these are the only two validators (V10 and V5), and each block reward is R. Out of 3 blocks, V10 will receive 2 rewards, and V5 will receive 1.

  • If I have 1M on validator 10M, I’ll receive (R/10)*2
  • If I have 1M on validator 5M, I’ll receive (R/5)*1
    Which is the same.

The Polkadot docs do mention it tries to incentivize more distributed staking, but it’s not as clear (as usual) regarding how that’s achieved.

This is where your math is wrong. Polkadot’s Nominated Proof of Stake does not distribute rewards to validators depending on how much they nominated but instead rewards are fixed per slot. That’s how Polkadot incentivizes distribution across all nodes: people nominating more to one node than to another is a disadvantage over all nodes having a close to equal state.

Ah ok, got it, thanks @lucasvo

How does that prevent from 10M validator spawning a bunch of much smaller validators to then increase its number of rewards though? This seems quite Sybil fragile?

This is something validators can do and if you look on the polkadot validator set there are a certain validators that run many nodes. However there is significant cluster risk if you nominate more than one validator so there generally should be a bias for a more diverse validator set.

Eth2.0 distributes proportionally with stake but also puts a very low maximum on the stake per node so it effectively achieves the same thing: stake should be distributed very evenly across nodes.

I don’t really understand this part. Isn’t the whole point to incentivize stake distribution among more validators, as you just said in the sentence following the one I quoted?

Sure, Eth2 achieves the same and is actually proportional, so the incentives are aligned. What I don’t get here is why are validators not spawning a bunch of min stake validators, since the reward is the same regardless the stake.

A lot of these questions are discussed in the Polkadot PoS discussions, have you read the wiki I shared and the links it cointains? That’s probably where you can find an answer to the mechanisms at play.

1 Like