Technical Document

For geeks that care.

Demand Factor

In V1, we have chosen Price and TVL as the demand metrics. The chosen target levels are $0.18, and soon 500M, for Price and TVL respectively. The TVL metric will only be added in Q4 after launching, due to oracle-feed requirements.

DF=0.75  PPbaseline+0.25  TVLTVLbaselineDF = 0.75\ \cdot\ \frac{P}{P_{baseline}} + 0.25\ \cdot\ \frac{TVL}{TVL_{baseline}}

And to make sure demand factor does not go out of control, we have introduced some limitations for demand factor.

DF0.10, and DF1.00DF \geq 0.10,\ and\ DF \leq 1.00

Distribution

Max Distribution

During the staking program duration PP we can distribute total AmaxA_{max} amount of DAFI. This means each second, the maximum amount of DAFI we can distribute is:

AmaxP\frac{A_{max}}{P}

However, we need to convert users' reward at the end using reward multiplication. This means at the most extreme case, reward will be multiplied by DFmaxDF_{max} and divided byDFminDF_{min}. We call this action Conversion Multiplier - CMCM , and it has some characteristics:

  • DFR, and 0.1DF1DF \in R,\ and\ 0.1 \leq DF \leq 1

  • CMR,and 0.01CM10  CMmax=10\Rightarrow CM\in R, and\ 0.01 \leq CM \leq10 \ \Rightarrow\ CM_{max} = 10

To make sure the total distributed DAFI will never become greater than Max DAFI, the maximum distribution per second needs to acknowledge the multiplier.

Dmax=DFminDFmaxAmaxPD_{max} = \frac{DF_{min}}{DF_{max}}\cdot\frac{A _{max}}{P}

Actual Distribution

Actual distribution is the maximum distribution multiplied by demand factor.

D=DmaxDFD = D_{max} \cdot DF

Fees

Fee Deposited

Every time users claim their rewards, 25% of their rewards will be deducted and distributed to other stakers.

Fu=25%RF_u = 25\% * R

Fee Distribution

F=i=0tFiF = \sum\limits_{i=0}^t F_i

Reward

Users' rewards are the accumulated amounts of reward every time demand factor changes. The actual implementation is similar to other staking programs like Sushi's MasterChef.

R=i=0tRiR = \sum\limits_{i=0}^t R_i

Final Reward

Rfinal=R  DFlatestDFstaking+FR_{final} = R\ \cdot\ \frac{DF_{latest}}{DF_{staking}} + F

Last updated