Reward Distribution

Introduction

Reward distribution plays a crucial role in ensuring network security, decentralization, and alignment of incentives among participants. This documentation provides a detailed overview of the reward distribution system in our network, focusing on Logarithmic Reward and Time-Based Rewards algorithms.

Section 1: Logarithmic Reward Algorithm

This algorithm aims to encourage smaller stakers by making rewards proportional to the logarithm of the stake. It diminishes the power of large stakeholders.

1.1 Mathematical Formula

The reward for a particular stakeholder is calculated as:

R=Rtotal×log(Sindividual)ilog(S[i])R = R_{\text{total}} \times \frac{\log(S_{\text{individual}})}{\sum_{i} \log(S[i])}

1.2 Parameters

  • Total Reward: The entire reward pool.

  • Stakeholder's Stake: Amount staked by an individual stakeholder.

  • all individual stakes: A collection of stakes from all stakeholders.

1.3 Code Example

#include <cmath>
#include <vector>

double logarithmicReward(double totalReward, double individualStake, std::vector<double> allStakes) {
  double sumLogs = 0;
  for(auto& stake : allStakes) {
    sumLogs += std::log(stake);
  }
  return totalReward * (std::log(individualStake) / sumLogs);
}

Section 2: Time-Based Rewards Algorithm

This model encourages long-term holding by granting rewards based on the amount of time a stakeholder keeps their stakes.

2.1 Mathematical Formula

The reward is calculated as:

R=Rtotal×Sindividual×TindividualiST[i].stake×ST[i].timeR = R_{\text{total}} \times \frac{S_{\text{individual}} \times T_{\text{individual}}}{\sum_{i} ST[i].\text{stake} \times ST[i].\text{time}}

2.2 Parameters

  • Total Reward: The entire reward pool.

  • Stakeholder's Stake: Amount staked by an individual stakeholder.

  • Stakeholder's Time: Duration of the stakeholder's staking.

  • all individual Stake * Time: A collection of the products of stakes and time from all stakeholders.

2.3 Code Example

#include <vector>

double timeBasedReward(double totalReward, double individualStake, double individualTime, std::vector<std::pair<double, double>> allStakesTimes) {
  double sumProduct = 0;
  for(auto& stakeTime : allStakesTimes) {
    sumProduct += stakeTime.first * stakeTime.second;
  }
  return totalReward * (individualStake * individualTime / sumProduct);
}

Section 3: Reward Sources

The rewards come from various sources:

  • Transaction costs from stablecoins and asset tokens.

  • Interest from overcollateralized and uncollateralized loans.

  • Smart contract fees.

Section 4: EntryPoint Rewards

Entry points receive a small portion (x%) of the staking rewards. This is deflationary and diminishes until the entry points earn like a normal validator.

4.1 Mechanism to Determine x%

[Insert the chapter or details related to how the x% factor is determined]

Section 5: Delegated Proof of Stake (DPoS)

The entire reward distribution model is based on a DPoS algorithm, ensuring a balance between decentralization, scalability, and security.

Conclusion

The described reward distribution strategy effectively balances various stakeholders' interests, promotes long-term holding, and mitigates large stakeholders' undue influence. By employing Logarithmic and Time-Based Rewards algorithms and by carefully aligning sources and mechanisms of rewards, the system fosters a resilient and fair network economy.

Additional Ideas for Improvement

  1. Dynamic Adjustment of Parameters: Implement mechanisms to dynamically adjust parameters based on network conditions to ensure robustness.

  2. Multi-Level Reward Tiers: Introduce different reward tiers based on stakeholders' contributions or activities to further align incentives.

    Let's categorize stakeholders into 3 tiers:

    1. Bronze,

    2. Silver,

    3. Gold,

    Each with its own reward multiplier.

  3. Hybrid Reward System: Combining different staking algorithms to create a more balanced and nuanced reward distribution system.

Hybrid Reward System

To combine the logarithmic and time-based reward systems:

Rhybrid=ω×Rlog+(1ω)×RtimeR_{\text{hybrid}} = \omega \times R_{\text{log}} + (1-\omega) \times R_{\text{time}}

Where:

  • RhybridRhybrid represents the reward from the combined system.

  • ωω is the weight assigned to the logarithmic reward. If ω=0.7ω=0.7, it means 70% of the reward is based on the logarithmic reward and 30% on the time-based reward.

  • RlogRlog is the reward from the logarithmic staking system.

  • RtimeRtime is the reward from the time-based staking system.

To combine everything into a single system:

Rfinal=Rtotal×Mtier×(ω×fdynamic(Stotal)×log(Sindividual)ilog(S[i])+(1ω)×Sindividual×TindividualiST[i].stake×ST[i].time)R_{\text{final}} = R_{\text{total}} \times M_{\text{tier}} \times \left( \omega \times \frac{f_{\text{dynamic}}(S_{\text{total}}) \times \log(S_{\text{individual}})}{\sum_{i} \log(S[i])} + (1-\omega) \times \frac{S_{\text{individual}} \times T_{\text{individual}}}{\sum_{i} ST[i].\text{stake} \times ST[i].\text{time}} \right)

Where:

  • RtotalRtotal is the total reward pool available for distribution.

  • MtierMtier is the reward multiplier based on the tier (Bronze, Silver, Gold) of the staker.

  • fdynamicfdynamic is a function that adjusts parameters dynamically based on network conditions.

  • StotalStotal is the total amount staked in the network.

  • SindividualSindividual is the amount staked by an individual participant.

  • TindividualTindividual is the time duration for which the participant staked.

Last updated

Logo