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\ \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.
$DF \geq 0.10,\ and\ DF \leq 1.00$

# Distribution

## Max Distribution

During the staking program duration
$P$
we can distribute total
$A_{max}$
amount of DAFI. This means each second, the maximum amount of DAFI we can distribute is:
$\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
$DF_{max}$
and divided by
$DF_{min}$
. We call this action Conversion Multiplier -
$CM$
, and it has some characteristics:
• $DF \in R,\ and\ 0.1 \leq DF \leq 1$
• $\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.
$D_{max} = \frac{DF_{min}}{DF_{max}}\cdot\frac{A _{max}}{P}$

## Actual Distribution

Actual distribution is the maximum distribution multiplied by demand factor.
$D = 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.
$F_u = 25\% * R$

## Fee Distribution

$F = \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 = \sum\limits_{i=0}^t R_i$

## Final Reward

$R_{final} = R\ \cdot\ \frac{DF_{latest}}{DF_{staking}} + F$