# Dynamic Network Fee - Economical Analysis
*Thank you fod for the feedback and help*
The below models real world numbers for [Fod's dynamic network fee proposition](https://hackmd.io/@fod/ByIuRx1A5).
This is an important step in researching this topic futher.
## Background
### Current state of network fee
Current network fee model for SSV is constant, that is, for each additional validator a user registers, a constant network fee is applied on top of what the user pays to the operators.
Constant fee is defined as,
$N_i=B\tag{1}$
Where $N_i$ is the network fee for the i'th validator a user registered. $B$ is a constant, yearly, network fee in SSV.
### Dynamic network fee
A dynamic network fee based on some centralization index was suggested and explored in [Fod's blog post](https://hackmd.io/@fod/ByIuRx1A5), increasing network fee based on how many validator shares the cluster operators (the user chose) have.
$N_i=B + P_i\tag{2}$
$P_i=\alpha*V_i^\beta\tag{3}$
[*explanation for (2)+(3)*](https://hackmd.io/@fod/ByIuRx1A5#Objective-Increase-decentralization-by-favoring-many-small-operators-over-few-large-ones).
$P_i$ is a centralization penalty sum for all the operators the user chose for a specific validator

*Penalty function that increases the network fee as the size of an operator increases.*
##
### Long term SSV holding vs. higher network fee
As fod suggested, we can introduce a way for users (registering validators) to reduce their network fee by depositing "extra" SSV into their account above what is minimally required (min liquidation threshold).
$N_i=(B + P_i)*D_{ssv}\tag{4}$
$D_{ssv}=1-\frac{(S-L)}{(S-L)-\gamma}\tag{5}$
[*explanation for (4)+(5)*](https://hackmd.io/@fod/ByIuRx1A5#Objective-Increase-network-and-market-stability-by-incentivizing-users-to-hold-more-SSV).
$D_{ssv}$ is a sublinear function that reduces the network fee, depending on the amount of SSV balance above the minimum required, in months of runway.
`Months of runway is a term indicating how much a validator costs monthly in network fee vs how much balance was deposited. e.g. a validator costs 1 SSV per month and the account balance is 4 SSV, the user has 4 months of runway.`

## Example
Let's plug in some real world numbers
[Google sheet playground](https://docs.google.com/spreadsheets/d/1y2Ah8itm1NsMR5prR7IHJZZ8LICYkTfyuw71dIjXomI/edit#gid=285058403)
| Parameter | Value |
| -------- | -------- |
| B | 1 SSV/ year |
| L | 2 |
| $\gamma$ | 20 |
| $\alpha$ | 0.00025 |
| $\beta$ | 1.5 |
The below sensitivity table shows the network fee based on 2 variables: number of shares the cluster operators have and how much stake the user has put.
Base network fee is 1 SSV per year (see the above parameter table).
We can clearly see that a user deciding to use more "centralized" operators will start to pay more and more (per validator) network fee, in the example below we can see that a user choosing heavily centralized operators (with 500 shares assigned) and no stake above the minimum will pay 279% more network fee for each validator.
Alternatively, chosing cluster operators which are not used by many AND staking 100X more SSV than the minimum could reduce the network fee 83% below the base network fee $B$
| $V_i$/S | 2 | 12 | 24 |100
| -------- | -------- | -------- |-------- |-------- |
| 10 | 1.0079 | 0.6719 | 0.4799 | **0.17** |
| 25 | 1.031 | 0.6875 | **0.49** | 0.17 |
| 100 | 1.25 | **0.83** | 0.595 | 0.211 |
| 250 | **1.988** | 1.32 | 0.94 | 0.33 |
| 500 | 3.79 | 2.53 | 1.807 | 0.64 |
## Analysis
It's clear there is an obvious economical advatage in staking SSV such that the network fee is reduced.
The immediate question then is what is the equilibrium point between paying higher network fees and staking SSV.
We first need to introduce a few new variables
| Variable | Value | Explanation |
| -------- | -------- | -------- |
| $N_{i,min}$ | $S=L, D_{ssv}=0,N_{i,min}=B+P_i$ | Fee value under min SSV balance (S=L) |
| $S_{ssv}$ | $\frac{N_i*S}{12}$ | SSV amount of stake |
The SSV staking equilibrium is:
$$
\begin{aligned}
S_{ssv}*(1-P_{change}) = N_{i,min}-N_i \\
\implies P_{change}=1-\frac{N_{i,min}-N_i}{S_{ssv}} \\
\end{aligned} \tag{6}
$$
$P_{change}$ is, in percentage, how much SSV price can drop for the user to be in equilibrium between the benefits in lower network fee and the cost of staking
If we plug the numbers from above ($N_{i,min}=~3.79$, $N_i=0.17$ $S_{ssv}=3.614$), $P_{change}=0.4514$, meaning the SSV price can drop ~45% for the equilibrium point. **Anything less than that is pure user gain**.
**Graph showing $P_{change}$ as a function of S.**

The higher $P_{change}$ is, the higher its sensitivity to SSV's price. If a user deposits the min SSV amount, he has 0 sensitivity to price as the entire SSV balance is used for network fees.
**Graph showing $N_i$ as a function of S.**

## Analysis - Greater Network
What are the implications for the greater SSV network?
The SSV DAO collects network fees to cover [development costs and prevent "free loading"](https://medium.com/@alonmuroch-65570/explaining-ssv-network-fees-6a722703c1d3). It's clear that dynamic network fees + SSV staking present a trade-off between higher DAO revenue and lower [token velocity](https://hackernoon.com/token-velocity-what-it-is-and-why-you-should-care-56ab2592b8c4) (via staking).
This trade-off is important to analyze, specifically the economic case for/ against dynamic network fees.
The model below makes the attempt of simulating an SSV network with 10K validators under different operator centralization assumptions. More specifically, distribuiting those 10K validators such that operators equally have 4,000,1,600,800,400 and 80 shares (the less shares per operators the more operators there are).
Although this does not represent a 100% real world scenario, it's close enough to demonstrate the effects of staked SSV vs. collected fees.
[Full data](https://docs.google.com/spreadsheets/d/1y2Ah8itm1NsMR5prR7IHJZZ8LICYkTfyuw71dIjXomI/edit#gid=139611599)
The Below chart plots $N_i$ as a function of $S$ (staked SSV), the higher $S$ is (e.g. 250) the lower $N_i$ is.
Notice the X-axis represents the amount of shares per operator, in other words, how centralized it is.

The lower/ higher the network fees are, the more/ less fees are collected. The below chart plots collected network fees, considering $N_i$ from the above chart.
Notice that the highest amount of collected fees is when no user stakes any SSV and operator centralization is at its highest.
For obvious reasons this scenario is not realistic as running validators on SSV will become a very expensive option.

Lastly, the chart below plots the amount of staked SSV which changes as $S$ increases. Keep in mind that when $S$ increases it lowers $N_i$ which means the staking ratio goes up but the amount of stake increases sub-linearly.

## Summary
If one of SSV's goals is to promote decentralization then dynamic network fees does that well as it creates higher "tax" on choosing centralized operators.
With the option of staking SSV to remedy the extra network fee, more developers and people will hold SSV and join the eco-system.
The downside of dynamic network fees are:
* More complexity in managing large number of validators
* Unknown dislike/ acceptance by developers
* Unknown dislike/ acceptance by operators
(Some of the downsides can be remedied by a very non aggressive dynamic fees params which change as we go)
## Open questions/ challenges
1. Sybil attack - what prevents an actor creating many operator to seemingly be seen as "not centralized"? **Potential solution: creating a new "entity" that can register operators will require posting a big (say $25K) SSV bond locked for a year. It will be very costly to sybil attack to reduce user network fees**
3. Can we think of better, more suitable, functions to represent dynamic fee goals?
4. Will large developers managing thousands of validators be "ok" with staking SSV to reduce their network fee?