Docs
Restaking
Restaking Rewards

Restaking Rewards

Introduction

In addition to staking rewards, the Tangle Network also offers a restaking system designed to encourage validators to execute multi-party computation (MPC) service roles. This documentation provides a detailed overview of the restaking process, reward mechanisms, and the benefits for validators and nominators participating in the Tangle blockchain network.

Eligibility

  • Validators on the Tangle blockchain can establish a restaking profile by allocating 50% of their locked and nominated stake towards restaking.
  • Nominators associated with these validators receive proportional rewards, enhancing the benefits of participating in the restaking system.

Reward Subtypes

The rewards for restakers adjust proportionally based on several factors, including the amount of tokens restaked, the number of jobs completed, and the diversity of roles engaged in restaking.

The reward distribution mechanism for restakers is bifurcated into two segments:

Active Participation Rewards

The main form of reward is the income from providing services. These are fees users pay to have restaked validators perform MPC and ZK services. Rewards are based on the validator's participation in and completion of total job opportunities, benefiting the most active and reliable restakers.

  • The total jobs completed (TJC) by all active validators are calculated.
  • Each validator's share (VS) of the rewards is determined by the proportion of their completed jobs relative to the TJC.
  • The validator reward (VR) is computed as: VR = VS × Total Rewards

Continuous Restaking Rewards:

In addition, To motivate validators to opt into MPC service roles, Tangle rewards them with additional inflationary rewards on top of their standard validation rewards, merely for restaking their tokens.Rewards are allocated in proportion to the overall restaking distribution, maintaining the incentive for continuous restaking. The reward rate for this is programatically limited to a range of 0.1% and 2%, in a similar style to the core staking rewards system of Substrate blockchains.

  • The total restake (TR) in the system is calculated by summing all validators' restaked amounts.
  • The restake-to-stake ratio (RSR) is computed as: RSR = TR / Total Stake in the Era
  • The missing restake ratio (MRR) is calculated as: MRR = Maximum Restake Ratio - RSR
  • The adjusted total rewards (ATR) are computed based on the MRR to ensure proper reward distribution.
  • Each validator's reward share (RS) is determined by their restaked amount relative to the TR.
  • The final reward for each validator is calculated as: Reward = RS × ATR

Additionally, a decay rate (dd) is used to reduce the rewards rate when restaking participation exceeds the ideal target of 25% of TNT.

Example Reward Calculation

Let's consider an example in era 100, with 20 restakers and a total role reward of 1000 TNT:

  • Active Validator Rewards:

    • 10 restakers have completed 5 jobs each.
    • 50% of the 1000 TNT (500 TNT) is equally divided among the 10 active restakers.
    • If one restaker had completed more jobs than the others, they would receive a larger share of the rewards.
  • Rewards by Restake:

    • The remaining 50% of the 1000 TNT (500 TNT) is distributed among all restakers based on their restaked amount.
    • If a restaker has restaked 100 TNT out of a total restake of 1000 TNT, they are eligible for 10% of the rewards.
    • The rewards are adjusted based on the total restake relative to the total stake in the system.

Calculation Logic for Restaking Reward

Rewards and the Restaking Profile

To begin restaking, a validator must create a restaking profile. A restaking profile involves allocating a portion of the validator's staked tokens to specific roles. There are two types of restaking profiles:

Independent Restaking Profile: The restake amounts are allocated independently to each selected role, such that:

rprole_restake(p,r)=total_restake(p)\sum_{r \in p} \text{role\_restake}(p, r) = \text{total\_restake}(p)

Shared Restaking Profile: The restake amounts are allocated collectively to all selected roles, such that:

role_restake(p,r)=total_restake(p)\text{role\_restake}(p, r) = \text{total\_restake}(p)

A validator can update their restaking profile to switch between profile types, adjust the restake amounts allocated to various roles, or add/remove roles from their profile. The specific constraints for updating a restaking profile depend on whether the profile is active or not.

Active Participation Restaking Rewards

Restaking rewards are calculated based on the validator's participation in various roles and their restaking fraction.

The reward function for a validator vv over a time interval TT is defined as:

R(v,T)=payout(T)×(rαr×dist(v,r,T)+(1rαr)×frestake(v))R(v, T) = \texttt{payout}(T) \times \left(\sum_{r} \alpha_r \times \texttt{dist}(v, r, T) + \left(1 - \sum_{r} \alpha_r\right) \times f_{\texttt{restake}}(v)\right)

where:

ExpressionDescription
payout(T)\texttt{payout}(T)The total amount of tokens to be distributed as restaking rewards over the time interval TT.
αr\alpha_rThe weight assigned to role rr in the reward distribution (rαr1\sum_{r} \alpha_r \leq 1).
dist(v,r,T)\texttt{dist}(v, r, T)The fraction of jobs with role rr completed by validator vv over the time interval TT.
frestake(v)f_\texttt{restake}(v)The fraction of total restake by validator vv.

The total payout for a given time interval TT is calculated as:

payout(T)=INPoS(x)×total_supply\texttt{payout}(T) = I_{\texttt{NPoS}}(x) \times \texttt{total\_supply}

where:

ExpressionDescription
INPoS(x)I_{\texttt{NPoS}}(x)The annual inflation rate for restaking rewards, which depends on the current staking rate xx.
total_supply\text{total\_supply}The total token supply (100 million TNT).

Continous Restaking Rewards (Annual Restaking Inflation Rate)

The annual inflation rate for restaking rewards is dynamic and designed to incentivize a target staking rate of 25% of the total token supply. The inflation rate is calculated using the following piecewise function:

INPoS(x)={I0+(IidealI0)×xχideal,for 0<xχideal I0+(IidealI0)×2(χidealx)/d,for χideal<x1I_\texttt{NPoS}(x) = \begin{cases} I_0 + (I_\texttt{ideal} - I_0) \times \frac{x}{\chi_\texttt{ideal}}, & \text{for } 0 < x \leq \chi_\texttt{ideal} \ I_0 + (I_\texttt{ideal} - I_0) \times 2^{(\chi_\texttt{ideal} - x) / d}, & \text{for } \chi_\texttt{ideal} < x \leq 1 \end{cases}

where:

ExpressionDescription
xxThe staking rate (ratio of the total amount of tokens staked to the total token supply)
χideal\chi_{\text{ideal}}The ideal staking rate (25% or 0.25)
I0I_0The minimum inflation rate when the staking rate is close to zero (0.1% or 0.001)
IidealI_{\text{ideal}}The maximum inflation rate when the staking rate equals the ideal staking rate (2% or 0.02)
ddThe decay rate, which determines how quickly the inflation rate decreases when the staking rate exceeds the ideal rate (suggested value: 0.05)

Calculating Total Restaking Rewards: Combined participation and continuous restaking

To estimate a validator's restaking rewards, the following inputs are required:

  1. The validator's restaking profile (independent or shared)
  2. The total amount of tokens restaked by the validator total_restake\texttt{total\_restake}
  3. The amount of tokens restaked by the validator for each role rr role_restake(r)\texttt{role\_restake}(r)
  4. The fraction of jobs with each role rr completed by the validator dist(v,r,T)\texttt{dist}(v, r, T)
  5. The total token supply total_supply\texttt{total\_supply}
  6. The current staking rate xx
  7. The weights assigned to each role rr αr\alpha_r

With these inputs, the restaking rewards can be calculated using the following steps:

  1. Calculate the annual inflation rate for restaking rewards INPoS(x)I_\texttt{NPoS}(x) using the piecewise function based on the current staking rate (xx)

  2. Calculate the total payout for the time interval TT payout(T)\texttt{payout}(T) using the formula:

INPoS(x)×total_supplyI_\texttt{NPoS}(x) \times \texttt{total\_supply}

  1. Calculate the validator's restaking reward R(v,T)R(v, T) using the reward function:

R(v,T)=payout(T)×(rαr×dist(v,r,T)+(1rαr)×frestake(v))R(v, T) = \texttt{payout}(T) \times \left(\sum_{r} \alpha_r \times \texttt{dist}(v, r, T) + \left(1 - \sum_{r} \alpha_r\right) \times f_\texttt{restake}(v)\right)