file icon

How XRD staking emissions rewards & penalties are calculated - general

A fixed amount of XRD tokens are automatically emitted by the Radix Protocol at each epoch’s end (such that emissions occur at a rate where roughly 300m XRD per year are minted). These emissions are generated as an incentive for those staking and running the validator nodes that power the Radix Public Network.The emitted XRD for an epoch are first allocated across the validator node-runners in proportion to the relative amount of stake delegated to them. If a validator node has, for example, 1% of the stake, then 1% of the epoch’s emissions tokens are initially allocated to that node.

After calculating the amount each validator is due, the Radix Protocol deposits the XRD into the “staked” pool (inside a vault) inside the relevant validator component, without affecting the supply of Liquid Stake Units.  This effectively increases the value of all issued Liquid Stake Units for that validator as the LSUs are backed by more XRD. 

However, the system deposits the emitted XRD only to the validators which successfully participated in all consensus rounds in which their turn as a leader was up (during the given epoch). If a particular validator fails (even once) to make a due transaction proposal, their entire share of XRD emitted that epoch is effectively burned. This penalty is severe on purpose; a high participation rate is necessary for the best possible network performance. But remember that the penalties only apply to the rewards for a single epoch (roughly 5 minutes).

Note: Because only validators in the “top 100” with the most stake actually participate in consensus for the epoch, only those top 100 nodes can create rewards for their delegators.

After any penalties are deducted, the node-runner’s validator fee is then deducted. The validator component simply funnels the appropriate percentage of the emissions to a separate “vault” (a container inside a component that holds resources), which can only be accessed by the holder of the validator owner badge. This whole system is best illustrated by an example, so let’s walk through the steps.

A Practical Example

Alice’s validator component has 500 XRD currently staked to it, and 100 Liquid Stake Units (let’s shorten that to LSU here) held by various parties on the network.  This means that each LSU is worth 5 XRD if unstaked (500 XRD / 100 supply = 5 XRD).  Her validator fee is set at 50% (this is extremely high, but we’ll use this number to keep the arithmetic easy).

Bob comes in and stakes an additional 500 XRD.  This brings the “staked” pool up to 1,000 XRD, and the contribution of 500 XRD represents 50% of the new total.  Hence, the validator component will mint an additional 100 LSU and return them to Bob.  This brings the total supply of LSU up to 200, of which Bob now has half.  This makes sense, since his contribution makes up half the amount of XRD in the stake pool.  Note that all the existing stakers are not impacted by this action…the value of one LSU is still 5 XRD if unstaked (1,000 XRD / 200 supply = 5 XRD).

Now let’s have a round of emissions, and again we’ll make the numbers artificially high for the sake of easy math.

At the end of the epoch, the network rules determine that Alice’s validator is due to earn 10 XRD from emissions.  The system creates 10 XRD and calls the system-access-only deposit method on Alice’s validator component, sending in that bucket of XRD.  The logic of the deposit method sees that her fee is set at 50%, so it takes 5 XRD and sets it aside in a separate vault, where Alice can claim it at any point in the future.  The remaining 5 XRD goes to the “staked” pool, bringing the pool total up to 1,005 XRD.

The supply of LSU has not changed, but since there is more XRD in the pool, the value of each LSU associated with Alice’s validator goes up.  The new value is 5.025 XRD per token (1,005 XRD / 200 supply = 5.025 XRD).  Bob still has the same number of LSU as before (100), but if he unstakes it all he’ll receive 502.5 XRD (2.5 more than he initially staked). 

If Bob does unstake everything, again this won’t impact the other stakers.  502.5 XRD will be moved to the “unstaked” pool (to be later claimed by Bob), and the 100 LSU he sent in will be burned.  Alice’s validator component will then have 502.5 XRD (1,005 XRD - 502.5 XRD unstaked = 502.5 XRD), and a supply of 100 LSU (200 before unstake - 100 burned = 100).  Each LSU will still be worth 5.025 XRD per token, as expected (502.5 XRD / 100 supply = 5.025 XRD).

No need to internalize that whole process!  Suffice to say, Liquid Stake Units from validators which are earning emissions will earn their proportion of those rewards, regardless of where and how they are held, and the staking/unstaking actions of others on the same validator won’t impact the value.

Further reading: