Linear just means: 1 egld staked means 1 voting Power. No square roots involved.
Iâm not talking about square roots, iâm talking about n roots. In linear n = 1, in square roots n = 2
I thought a lot about it. I not found the way how to do it based on staked amount only though I have an idea how it could be done based on total claimed staking reward.
Disclaimer
I not very familiar with MultiverseX implementation details and I canât imagine how feasible my idea is as a whole at the protocol level.
Perhaps what I will describe below is complete nonsense. Or maybe it will give someone new ideas on this topic.
I do not know how much this corresponds to the vision of the MultiverseX team and community.
Nevertheless, it seems to me that the voting formula that I will describe below is the most fair.
Idea description
My idea is to use claimed staking reward instead of staked EGLD as the main variable.
Total claimed staking rewards - reflects how long (and/or how much) the user has been staking.
Using this value solves the problem with bad actors who would decide to distribute 1 EGLD to multiple accounts and stake it.
Because from the point of view of calculating the value of the vote, there would be no difference between a reward of 1 EGLD or a reward of 0.001 EGLD * 1000.
But the problem with whales (monopoly) has not yet been solved.
Therefore, to solve it, I suggest calculating the percentage ratio between the median of the userâs claimed staking reward and total claimed staking reward.
Let Rm
- is the median of the claimed staking reward across the entire network, for all time.
Let Ru
- is a claimed staking reward for a certain user for all time.
Then:
VotePower = if (Ru >= Rm) then 1 else Ru / Rm;
VotePover - will have a value from 0 to 1.
Fraud attempt case
Letâs assume that the userâs claimed taking reward may be higher than the median, and the user decides to make an unstake and stake it on a new account to increase the power of the vote.
It is potentially possible that this could work, but I donât think it might be significant enough to make an imbalance, because I assume that the median will also grow over time, especially if the majority of users do not do this.
Resulting question
Based on the above, you may have a question: does a user who staked for a while and then made an unstake and sold all his EGLD have the right to vote?
I think so, because the user once took risks and blocked his funds and benefited the network. But in contrast, his voice will fading because I assume that the median will increase.
Otherwise, only users could vote who have at least 1 staked EGLD.
My question that came to mind was:
What if you are forced to move to another walllet? (security breach or something like that)
That doesnt solve anything, sybil attack is still possible as you mentioned it. No point in using rewards when you can just simply use how much egld the wallet holds, no reason to make it more complex, there are no advantages to use that so why should we do it.
That doesnât really solve anything and introduce a variety of new issues:
- What if you donât stake much: in this case, reinvesting or claiming rewards regularily doesnât make sense due to (low, but still) transaction fees.
- What about liquid staking?
- What about when you have to move to a different wallet (compromised) or got a new hardware wallet
- It still doesnât prevent sybil attacks
No EGLD, no voting power. Why do you want to have the right to vote when you donât even have any funds invested into the platform. Not a stakeholder, no voting. Any voting outcome wouldnât affect you as you are not a user also.
And now he left, any and all new vote outcomes do not affect him anymore. So why should he vote? Itâs like being able to vote in Portugal, but living in France. Portugal doesnât affect you. At least not directly. You donât live there, you donât pay taxes there, you donât work there, why should you be allowed to vote there?
Typo
Got it. I need to rethink it. Thank @live @janniksam @drmelone for highlighting the problematic points.