Rewards Mechanism
Explanation of Moni.xyz rewards mechanism
Rounds
The primary mechanism of the staking system will consist of rounds, each round will have an established duration, initially 1 day.
Round finalization
The operator will call for ending the round and the following actions will take place at UTC midnight:
Staked funds will be frozen
The round will not accept new stakers
The round will not accept withdraws
Oracle call will get how many rewards were generated by the Compound staking mechanism and divide the number of tokens generated by the Staking Gates by this number.
The compound rewards generated by a real staking protocol will be represented by the following formula:
Given a round between a and b:
and the total points emitted by the existing content creators will be represented by:
The price per point emitted will be:
The Oracle will persist the pricePerToken for the roundId
A new round will be launched and this will freeze the current round's accumulated points and will allow the influencer to start accumulating new points for the new round
New stakers and withdrawal will be resumed
Influencers can withdraw past round's gains by requesting a completed round withdraw
In order to generate a round withdrawal of earnings the contract will multiply the points earned by the pricePerPoint, so the total earning by the user u in the interval a, b will be:
After calculating earnings, the contract will mark the round roundId as paid for user u to prevent paying twice, then it will transfer the funds from the PayerContract.
Examples
For day 0:
Total staked = 100_000_000 USDC
Total points generated = 1000
Total interest earned by staking using a Compound protocol: 5479 USDC (2% APR)
Price per point: 5479 / 1000 = 5,47900
If only one influencer got staked in the total pool, the influencer will earn:
Total points generated * Price per point = Total interest earned by staking using Compound = 5479 USDC
If two influencers participated in the pool with 30/70, that’s:
Alice: 700 points earned
Bob: 300 points earned
Alice earnings will be 700*5,47900 = 3835,3 USDC
Bob earnings will be 300*5,47900= 1643,7 USDC
Notes
Between rounds, the tokens staked by users will pass from one round to another without the need for interaction. The only thing that will change is the points accumulated by content creators (it will be reset to 0) and the pricePerPoint that will be persisted.
Users can withdraw the balance only if the round is not paused, not finalizing and the threshold of time of the Gate is met.
An influencer can batch request withdrawal of rounds
This will create a request that will only iterate over rounds that are not paid and whose points balance is greater than zero.
Points are an abstraction that can be represented by real tokens
The emission of points per second is not relevant since the pricePerPoint is calculated and assigned for each round.
Last updated