Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

FIP 002: Delegation rewards #2

Open
bejavu opened this issue Jan 2, 2020 · 4 comments
Open

FIP 002: Delegation rewards #2

bejavu opened this issue Jan 2, 2020 · 4 comments
Labels
done Deployed on Fuse mainnet

Comments

@bejavu
Copy link
Contributor

bejavu commented Jan 2, 2020

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

  • Now we can make a simple UI that rank the validators based on several attributes such as fee and availability.
  • We can make an easy delegation UI to a chosen validator from that list.

Exceptions and things to keep in mind

  • All of the calculation should be taken from the relevant snapshot and not from the current state to avoid exploits.
  • Since staking limits are exactly 3M and there is no proportional reward from overtaking (yet), over staking and delegating should be omitted. Meaning that if someone is staking 3M already, no one can delegate to him any more to avoid splitting the block reward with him.
@fileflume
Copy link

fileflume commented Jan 2, 2020

  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
Copy link
Contributor

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
Copy link

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
Copy link
Contributor

fuseio/fuse-network#7

@LiorRabin LiorRabin added done Deployed on Fuse mainnet testnet Deployed on Fuse testnet and removed testnet Deployed on Fuse testnet labels Jan 29, 2020
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
done Deployed on Fuse mainnet
Projects
None yet
Development

No branches or pull requests

3 participants