# King Protocol
## Weight Calculation Problem
As part of a multi-protocol governance process, each protocol needs to be assigned a *weight* relative to other protocols. This *Weight* will be used to allocate resources such as governance power.
### Overview of Process

* Inputs: Onchain Data
* Parameter: $p$, a *power* parameter
* Output: Final
To determine the weight for the $k$th Protocol, the current process design is:
1. **(Grade)** Bawed on *Onchain Data*, determine a *Grade_k* for the protocol. Convert *Grade* to a predefined *GradeWeight_k*, (e.g. "A" = 1.0, etc.)
2. **(Expected Revenue)** Based on *Onchain Data*, calculate *Expected Revenue (ExpectedValue)_{k}* for the protocol.
3. **(Initial Weight)** Calculate the initial weight for Project $k$ as ${InitWeight}_k = {GradeWeight}_k * (ExpRev)_{k}^p.$
4. **(Total Weight)** Add up all the initial weights for all protocols.
$TotalWeight = Sum(InitWeights)$ or
$TotalWeight = \displaystyle\sum_{k=1}^{N} {InitWeight}_k$
5. **(Final Weight)** To calculate the final weight of the protocol, divide its InitialWeight by TotalWeight. $Weight_k = \displaystyle\frac{InitialWeight_k}{TotalWeight}.$
### Subproblem 1: Grading Weights
**Need:**
A *grading function* that can take onchain data and convert it to a letter grade, e.g. "A", "B", etc.
**Need:** A *grade point function* - a way to convert letter grades to numerical values, e.g. "A" = 1.0, "B" = 0.7, etc.
### Subproblem 2: Expected Revenue
**Need:** Given onchain data, need a way to calculate Expected Revenue for the protocol.
## Initial Exploration of Allocation Mechanism
We can start with an initial exploration of the allocation mechanism with some simplified assumptions:
* there are no protocol grades (all weights are 1.0)
* there are only two partners, so one protocol has $p \in [0,1]$ for the $ExpectedValue$, and the other has $(1-p)$
Exploring the effect of $p$ on the overall shape:
<iframe src="https://www.desmos.com/calculator/mfbrlnyysj?embed" width="500" height="500" style="border: 1px solid #ccc" frameborder=0></iframe>
Some reasonable initial heuristics:
* **Gain:** $G(x) = \displaystyle\frac{f(x)}{x}$. This is like a "volume measurement" that represents how much amplification the protocol gets in terms of rewards. Protocols with lower ExpectedValue get more gain, which is expected behavior. Optimizing this function is a proxy for gaming the system.
* **Percentage Gain:** $H(x) = \displaystyle\frac{f(x) - x}{x}$. This is akin to an error formula in the physical sciences. It measures how much gain the protocol gets (in terms of allocation), as a percentage of its ExpectedValue. Useful for measuring "bang for your buck" in terms of gaming the system.
## Key Questions, Edge Cases, and Scenarios
1. **Mob Rule Problem.** Suppose there is one strong protocol, and many weaker ones. Is it possible for the weaker ones to collude and overwhelm the stronger one?
2. **Dictatorship Problem.** Under what circumstances is it possible for a single protocol to exert influence sufficient to make others irrelevant?
3. **Grade Error.** No grading system is perfect. What are the consequences of mis-assigning one or several grades?
## Test Cases
1. **One exceptionally strong protocol.**
There is one "A" protocol which is expected to generate far more revenue than the others.
What should its weight be?
2. **Mismatch between grade and expected revenue.**
The process has a mismatch between the grades and expected revenue, e.g. there is an "A" protocol that isn't expected to have much revenue, and a "C" one that is.
What would the ideal resolution be?