What's the explicit pos reward mechanism?

Hi, I have read the doc, it seems many mechanisms are just under consideration and not clear enough. I have the following questions:

  1. What’s the source of the validator rewards? The rewards come from some reserved fundings or just publish new coins every year?
  2. As you say the reward of validator become valid after about 30 seconds, is this a block generation time or several blocks, what’s the exact mechanism here?
  3. The single validator reward rate will become less as the total staking of the network become more, does this mechanism written in the code, or intervened by third parts, such as some foundation.
  4. What are the factors affect how the rewards distributed between different validators? Only the staking amount of validators, any other factor? like staking period or validator ranks?
  5. As an end user who delegates to our node, the profits and service charge are automatic calculated and distributed by the network?
  6. As an end user who delegates to our node, Does he need to wait a while when he withdraws his token? How long will he wait?
  7. As an end user, how to choose delegators? Is there a list, what’s the URL address?

Thanks for your time, appreciated!

Hey @asdf

Haha, yeah we’re definitely aware that our documentation still needs some work. Thanks for taking the time to go through it regardless. Scheduling to have that cleaned up sometime before mainnet launch if possible. Regarding your queries, responses provided below:

  1. What’s the source of the validator rewards? The rewards come from some reserved fundings or just publish new coins every year?

Validators keep half of the transaction fees (the other half are burned) along with a protocol reward from a reasonable network inflation rate.

The rewards come from token inflation. Upon initial mainnet launch, the interest rate
will be higher, and relatively aligned with other staking protocols (somewhere between 5-15%) where inflation is dynamic and depends on the number of circulating tokens bonded at any given moment. The inflation gradually reduces to a consistent ~1.5% over several. A graph which depicts various scenarios for clarity is provided here.

  1. As you say the reward of validator become valid after about 30 seconds, is this a block generation time or several blocks, what’s the exact mechanism here?

Ideally it could take around 4 seconds over the course of several blocks. Each block currenlty takes about 0.8sec (though we’re aiming to reduce it to 0.4sec). Our consensus works like this: every time a node votes on a particular fork they commit to NOT voting on a contradicting fork that doesn’t contain the same history for X duration. The more they commit to the same fork, the value X exponentially increases (i.e. starts at a lockout of 2, then 4, then 8, 16, 32). Essentially a lockout for voting. Rewards are only provided to validators after they reach a certain lockout period, and lockouts reset if you decide to vote on a contradicting fork.

Currently it’s tuned such that once lockouts reach 32, that’s when the reward will be provided to validators. A rough diagram has been provided below to show the how the vote lockout grows as a node commits to the same fork over 5 voting rounds (aka blocks), and the average duration of each block.

Lockout = 2-----------4-----------8-----------16-----------32
Block#/Voting Round# = 1-----------2-----------3-----------4------------5
Time = 0.8sec----1.6sec----2.4sec----3.2sec----4sec

In this example above, the rewards would be provided every 4 seconds. But obviously in practice this could be longer if the node either decides not to vote for one round, or if it turns out the node was voting on the wrong fork and had to reset it’s lockout by changing forks.

For a visual explanation, here’s an explainer video we did with the guys down at NEAR Protocol. You can skip to 23:18min where we discuss fork selection.

  1. The single validator reward rate will become less as the total staking of the network become more, does this mechanism written in the code, or intervened by third parts, such as some foundation.

It’s written into the code.

  1. What are the factors affect how the rewards distributed between different validators? Only the staking amount of validators, any other factor? like staking period or validator ranks?

Only the staking amount at this time.

  1. As an end user who delegates to our node, the profits and service charge are automatic calculated and distributed by the network?

Yes, the intent is to eventually have the profits automatically distributed after the service charge (nominated by respective validator) has been adjusted for. I’ll need to double check, but from memory the current version doesn’t have this implemented yet, and is all still done manually.

  1. As an end user who delegates to our node, Does he need to wait a while when he withdraws his token? How long will he wait?

Yes, there’s a cooldown period, which we’ve defined here in our documentation. I’ve provided an extract for convenience: a duration of time following the submission of a ‘withdrawal’ transaction. During this period, validation responsibilities have been removed and the funds continue to be inaccessible. Accumulated rewards should be delivered at the end of this period, along with the return of the initial deposit.

We have NOT locked down exactly how long the cooldown period will be just yet.

  1. As an end user, how to choose delegators? Is there a list, what’s the URL address?

As an MVP we’re developing a validator explorer/dashboard internally. An early iteration of this will be released for Tour De SOL. The explorer/dashboard will show a list of all active validators on the network including their approximate geographic location as well. The URL isn’t available right now, but keep an eye on our Discord, we’ll announce there first when it’s ready.

The other method is via the upcoming Tour De SOL event, where validators will have an opportunity to familiarise themselves with Solana, test out their hardware setups and put it to the test. I imagine the outputs of this will be some tangible results, which could be beneficial for validators looking to attract end-users who want to stake their Solana tokens.