Analysing Moonbeam Network Staking Rewards

Luke Bjorn Scerri
Simply Staking
Published in
3 min readJul 11, 2023

In this article, we will go over how the precise amount of staking reward is calculated and distributed among collators and delegators on the moonbeam chain. We will break down the collator’s rewards into a part that comes from delegations and a part that comes from just running a collator.

The motivation for writing this article is that the moonbeam docs (https://docs.moonbeam.network/learn/features/staking/) were not sufficient enough to understand where rewards are coming from. One thing that they don’t mention is that there is a system of points and that collators earn points for proposing blocks, which affects how much they earn individually.

Background

Collators and delegators earn their rewards for their work done in the previous 2 rounds, with every round of 1800 blocks, which is 6 hours long, i.e if for example a collator is started on round 241, it will begin receiving rewards on round 243 for its work in round 241. Each round has a total amount of rewards allocated that is distributed among collators and delegators. This amount depends on variables such as the inflation on-chain, as shown below in one of the tests from the Moonbeam source code.

One of the moonbeam tests, computing totalRoundIssuance

The variable totalRoundIssuance holds how much reward is distributed in the round. This is referred to as ‘annual inflation’ in the Moonbeam docs. Notice that it also depends on totalStaked which is the total amount of staked tokens from all collators and delegators in the round.

For clarity, we can say that the total round issuance is the sum of all individual rewards earned by collators and delegators in that particular round.

Distributing the total round issuance

The total round issuance is divided as follows.

  • Collators — 20%
  • Delegators — 50%
  • Parachain bond reserve — 30%

The 20% allocated for collators is further divided among the individual collators depending on how many points they earned during the round.

Collators earn points when they propose a block and each collator has an equal chance of proposing the next block. If you divide the number of points earned by a collator by the total number of points awarded during the round, you get the proportion share of the 20% an individual collator gets. This means that an individual collator will earn precisely

totalRoundIssuance * 20% * (awarded points during round / total awarded points during round)

for their work during the round. This excludes the collator’s reward for their own delegation. The reward that delegators receive can be expressed as follows:

totalRoundIssuance * 50% * (awarded points during round / total awarded points during round) * (delegator stake / total collator stake)

Where awarded points during round is the number of points acquired by the collator selected by the delegator, total awarded points during round is the total amount of points all collators earned, delegator stake is the amount of Glimmer(GLMR) tokens staked by the delegator with the particular collator and total collator stake is the total amount of Glimmer tokens locked with the collator, including the collator’s self-delegation.

Individual collator’s earnings

Since collators can delegate to themselves, by reusing the above expressions, it can be calculated that the reward earned by a collator in each round is expressed like this:

totalRoundIssuance * 20% * (awarded points during round / total awarded points during round) + totalRoundIssuance * 50% * (awarded points during round / total awarded points during round) * (number of self bonded tokens / total collator stake)

Here is a code snippet that uses polkadot-js to demonstrate all this.

Code snippet computing the collator reward breakdown

--

--