fuseio / FIPs

The Fuse Improvement Proposal repository
MIT License
0 stars 4 forks source link

FIP 002: Delegation rewards #2

Open bejavu opened 4 years ago

bejavu commented 4 years ago

FIP 002: Delegation rewards

Motivation

In order to get validation rights, one should stake 3M FUSE tokens. Those tokens can be directly staked by the validator or delegated to him by a delegator. Up until now, the validator needed to actively pay rewards to its delegators. Although the delegator stake can’t be taken away by the validator, the reward can.

Suggestion

The consensus contracts will split the block reward between the validator and his delegators proportionally minus a predefined fee that will go to the validator. In this case, the validator can choose its own fee, and update it from time to time, and the delegators can choose between validators for the best fees and availability.

Examples

Validator 1 has 1M FUSE tokens staked, and 2M FUSE delegated between 2 delegators, 0.5M and 1.5M. Let's assume the block reward is 3 FUSE tokens.

If the fee is 0% (meaning that the validator is taking no fee) then the rewards will be split in this manner: 1 FUSE for the validator. 2 FUSE for the delegators, 0.5 FUSE for one and 1.5 FUSE for the second.

If the fee is 5%, then the validator will receive 5% more from each delegator: 1.1 FUSE for the validator. 1.9 FUSE for the delegators, 0.475 FUSE for one and 1.425 FUSE for the second.

If the fee is 100% (meaning that the validator will take all of the reward) then all of the reward will go to the validator (as it is today): 3 FUSE for the validator. 0 FUSE for the delegators.

Future work

Exceptions and things to keep in mind

fileflume commented 4 years ago

1) How do validators change their fee % - which code/setting? 2) What's the 'relevant snapshot'? 3) "there is no proportional reward from overtaking (yet), over staking and delegating should be omitted" - does FIP 3 mean this will never happen? As long as a validator has 100k staked/delegated, they will be 'a valid staker' and get 1/100th portion of that reward cycle?

LiorRabin commented 4 years ago

Hi @fileflume.

  1. A function called setValidatorFee will be added to the Consensus contract. See here.
  2. We have a snapshot of the pending validators taken 10 times each cycle as can be seen here. The relevant snapshot is the one selected as the new validator set on cycle end.
  3. What do you mean? Reward for staking over 100k?
fileflume commented 4 years ago
3. What do you mean? Reward for staking over 100k?

Yes, how does the inflation reward get split between validators - disscusion in FIP 003

LiorRabin commented 4 years ago

https://github.com/fuseio/fuse-network/pull/7